@haklex/rich-editor 0.0.70 → 0.0.72
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.
- package/README.md +2 -1
- package/dist/{AlertQuoteEditNode-AgVEMFEi.js → AlertQuoteEditNode-CHdvQnOr.js} +3 -2
- package/dist/{MermaidPlugin-CIQbyjXF.js → MermaidPlugin-DjLUVZvB.js} +2 -2
- package/dist/{SubmitShortcutPlugin-BRK63XHl.js → SubmitShortcutPlugin-Cc2wXgH5.js} +4 -4
- package/dist/commands-entry.mjs +3 -3
- package/dist/components/renderers/TagRenderer.d.ts +6 -0
- package/dist/components/renderers/TagRenderer.d.ts.map +1 -0
- package/dist/{config-QGdXDSW9.js → config-DcR_yktp.js} +14 -13
- package/dist/config-edit.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/index.mjs +8 -8
- package/dist/{node-registry-CSRSWJ0q.js → node-registry-B2U2_LrI.js} +5 -4
- package/dist/nodes/TagNode.d.ts +24 -0
- package/dist/nodes/TagNode.d.ts.map +1 -0
- package/dist/nodes/shared.d.ts.map +1 -1
- package/dist/nodes-entry.d.ts +2 -0
- package/dist/nodes-entry.d.ts.map +1 -1
- package/dist/nodes-entry.mjs +28 -25
- package/dist/plugins-entry.mjs +2 -2
- package/dist/rich-editor.css +1 -1
- package/dist/static-entry.d.ts +2 -0
- package/dist/static-entry.d.ts.map +1 -1
- package/dist/static-entry.mjs +21 -14
- package/dist/{theme-CRza9nbF.js → theme-CYsyGmCL.js} +139 -23
- package/dist/types/renderer-config.d.ts +3 -0
- package/dist/types/renderer-config.d.ts.map +1 -1
- package/dist/utils/tag-color.d.ts +2 -0
- package/dist/utils/tag-color.d.ts.map +1 -0
- package/package.json +5 -6
package/README.md
CHANGED
|
@@ -10,10 +10,11 @@ pnpm add @haklex/rich-editor lexical @lexical/react react react-dom
|
|
|
10
10
|
|
|
11
11
|
## Peer Dependencies
|
|
12
12
|
|
|
13
|
+
`@lexical/code` is provided transitively via `lexical-code-no-prism`. You only need to install it yourself if your app imports `@lexical/code` directly.
|
|
14
|
+
|
|
13
15
|
| Package | Version | Required |
|
|
14
16
|
| --- | --- | --- |
|
|
15
17
|
| `@base-ui/react` | `^1.1.0` | Yes |
|
|
16
|
-
| `@lexical/code` | `^0.41.0` | Yes |
|
|
17
18
|
| `@lexical/extension` | `^0.41.0` | Yes |
|
|
18
19
|
| `@lexical/link` | `^0.41.0` | Yes |
|
|
19
20
|
| `@lexical/list` | `^0.41.0` | Yes |
|
|
@@ -12,7 +12,7 @@ import { LinkPlugin } from "@lexical/react/LexicalLinkPlugin";
|
|
|
12
12
|
import { ListPlugin } from "@lexical/react/LexicalListPlugin";
|
|
13
13
|
import { LexicalNestedComposer } from "@lexical/react/LexicalNestedComposer";
|
|
14
14
|
import { RichTextPlugin } from "@lexical/react/LexicalRichTextPlugin";
|
|
15
|
-
import {
|
|
15
|
+
import { q as $isAlertQuoteNode, r as AlertRenderer, S as SpoilerNode, M as MentionNode, F as FootnoteNode, k as KaTeXInlineNode, T as TagNode, s as AlertQuoteNode, n as editorTheme } from "./theme-CYsyGmCL.js";
|
|
16
16
|
import { a as RendererWrapper } from "./KaTeXRenderer-C8jv_5xr.js";
|
|
17
17
|
import { CodeNode } from "@lexical/code";
|
|
18
18
|
import { HorizontalRuleNode } from "@lexical/extension";
|
|
@@ -179,7 +179,8 @@ const NESTED_EDITOR_NODES = [
|
|
|
179
179
|
SpoilerNode,
|
|
180
180
|
MentionNode,
|
|
181
181
|
FootnoteNode,
|
|
182
|
-
KaTeXInlineNode
|
|
182
|
+
KaTeXInlineNode,
|
|
183
|
+
TagNode
|
|
183
184
|
];
|
|
184
185
|
function createContentEditor() {
|
|
185
186
|
return createEditor({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
|
|
2
2
|
import { createCommand, $insertNodes, COMMAND_PRIORITY_EDITOR } from "lexical";
|
|
3
3
|
import { useEffect } from "react";
|
|
4
|
-
import { $ as $createAlertQuoteEditNode } from "./AlertQuoteEditNode-
|
|
5
|
-
import { $ as $createImageNode,
|
|
4
|
+
import { $ as $createAlertQuoteEditNode } from "./AlertQuoteEditNode-CHdvQnOr.js";
|
|
5
|
+
import { $ as $createImageNode, t as $createKaTeXInlineNode, v as $createKaTeXBlockNode, b as $createMermaidNode } from "./theme-CYsyGmCL.js";
|
|
6
6
|
const INSERT_ALERT_COMMAND = createCommand("INSERT_ALERT");
|
|
7
7
|
function AlertPlugin() {
|
|
8
8
|
const [editor] = useLexicalComposerContext();
|
|
@@ -9,13 +9,13 @@ import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext
|
|
|
9
9
|
import { useEffect, createContext, use, useRef, useState, useMemo, useCallback } from "react";
|
|
10
10
|
import { $isQuoteNode, QuoteNode, $createQuoteNode, DRAG_DROP_PASTE } from "@lexical/rich-text";
|
|
11
11
|
import { KEY_ARROW_DOWN_COMMAND, $getSelection, $isRangeSelection, $isDecoratorNode, $isElementNode, $isRootNode, $isParagraphNode, $createParagraphNode, COMMAND_PRIORITY_CRITICAL, KEY_ENTER_COMMAND, $isNodeSelection, KEY_BACKSPACE_COMMAND, COMMAND_PRIORITY_HIGH, KEY_DELETE_COMMAND, KEY_ARROW_UP_COMMAND, $isTextNode, $createNodeSelection, $setSelection, $getRoot, COMMAND_PRIORITY_EDITOR, COMMAND_PRIORITY_LOW, $createTextNode, $createLineBreakNode, PASTE_COMMAND, $insertNodes, createEditor, $parseSerializedNode, createState, $getState, $addUpdateTag, $setState, $nodesOfType } from "lexical";
|
|
12
|
-
import { b as setCodeBlockCursorIntent, g as getResolvedEditNodes, $ as $createBannerEditNode, d as $createCodeBlockEditNode } from "./node-registry-
|
|
12
|
+
import { b as setCodeBlockCursorIntent, g as getResolvedEditNodes, $ as $createBannerEditNode, d as $createCodeBlockEditNode } from "./node-registry-B2U2_LrI.js";
|
|
13
13
|
import { HorizontalRuleNode, $createHorizontalRuleNode, INSERT_HORIZONTAL_RULE_COMMAND } from "@lexical/extension";
|
|
14
14
|
import { HORIZONTAL_RULE_BLOCK_TRANSFORMER as HORIZONTAL_RULE_BLOCK_TRANSFORMER$1, GIT_ALERT_TRANSFORMER as GIT_ALERT_TRANSFORMER$1, CONTAINER_TRANSFORMER as CONTAINER_TRANSFORMER$1, FOOTNOTE_TRANSFORMER as FOOTNOTE_TRANSFORMER$1, FOOTNOTE_SECTION_TRANSFORMER as FOOTNOTE_SECTION_TRANSFORMER$1, KATEX_INLINE_TRANSFORMER as KATEX_INLINE_TRANSFORMER$1, KATEX_BLOCK_TRANSFORMER as KATEX_BLOCK_TRANSFORMER$1, MENTION_TRANSFORMER as MENTION_TRANSFORMER$1, RUBY_TRANSFORMER as RUBY_TRANSFORMER$1, SPOILER_TRANSFORMER as SPOILER_TRANSFORMER$1, INSERT_TRANSFORMER, SUPERSCRIPT_TRANSFORMER, SUBSCRIPT_TRANSFORMER, IMAGE_BLOCK_TRANSFORMER, VIDEO_BLOCK_TRANSFORMER, CODE_BLOCK_NODE_TRANSFORMER, LINK_CARD_BLOCK_TRANSFORMER, MERMAID_BLOCK_TRANSFORMER, TABLE_BLOCK_TRANSFORMER } from "@haklex/rich-headless/transformers";
|
|
15
15
|
import { CHECK_LIST, TRANSFORMERS, QUOTE, CODE, $convertFromMarkdownString } from "@lexical/markdown";
|
|
16
|
-
import { $ as $createAlertQuoteEditNode } from "./AlertQuoteEditNode-
|
|
17
|
-
import {
|
|
18
|
-
import { r as CodeBlockNode, n as BannerNode, D as DetailsNode, s as $createDetailsNode, F as FootnoteSectionNode,
|
|
16
|
+
import { $ as $createAlertQuoteEditNode } from "./AlertQuoteEditNode-CHdvQnOr.js";
|
|
17
|
+
import { s as AlertQuoteNode, F as FootnoteNode, w as $createFootnoteNode, k as KaTeXInlineNode, K as KaTeXBlockNode, t as $createKaTeXInlineNode, v as $createKaTeXBlockNode, M as MentionNode, a as $createMentionNode, o as extractTextContent, S as SpoilerNode, x as $createSpoilerNode, $ as $createImageNode, O as OPEN_IMAGE_UPLOAD_DIALOG_COMMAND } from "./theme-CYsyGmCL.js";
|
|
18
|
+
import { r as CodeBlockNode, n as BannerNode, D as DetailsNode, s as $createDetailsNode, F as FootnoteSectionNode, d as $isFootnoteSectionNode, $ as $createFootnoteSectionNode, e as $isGridContainerNode, R as RubyNode, c as $createRubyNode } from "./config-DcR_yktp.js";
|
|
19
19
|
import { MarkdownShortcutPlugin } from "@lexical/react/LexicalMarkdownShortcutPlugin";
|
|
20
20
|
import { nanoid } from "nanoid";
|
|
21
21
|
import { Dialog, DialogPopup, DialogTitle, SegmentedControl, ActionButton, ActionBar } from "@haklex/rich-editor-ui";
|
package/dist/commands-entry.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a, b, c, d, e } from "./MermaidPlugin-
|
|
2
|
-
import { O,
|
|
1
|
+
import { a, b, c, d, e } from "./MermaidPlugin-DjLUVZvB.js";
|
|
2
|
+
import { O, o } from "./theme-CYsyGmCL.js";
|
|
3
3
|
function collectCommandItems(editor) {
|
|
4
4
|
const items = [];
|
|
5
5
|
const nodes = editor._nodes;
|
|
@@ -21,5 +21,5 @@ export {
|
|
|
21
21
|
e as INSERT_MERMAID_COMMAND,
|
|
22
22
|
O as OPEN_IMAGE_UPLOAD_DIALOG_COMMAND,
|
|
23
23
|
collectCommandItems,
|
|
24
|
-
|
|
24
|
+
o as extractTextContent
|
|
25
25
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/TagRenderer.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,+BAMrD;AACD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -7,7 +7,7 @@ import { LinkNode, AutoLinkNode } from "@lexical/link";
|
|
|
7
7
|
import { ListNode, ListItemNode } from "@lexical/list";
|
|
8
8
|
import { HeadingNode, QuoteNode } from "@lexical/rich-text";
|
|
9
9
|
import { TableNode, TableCellNode, TableRowNode } from "@lexical/table";
|
|
10
|
-
import { u as useNestedContentRenderer,
|
|
10
|
+
import { u as useNestedContentRenderer, o as extractTextContent, S as SpoilerNode, M as MentionNode, k as KaTeXInlineNode, K as KaTeXBlockNode, I as ImageNode, s as AlertQuoteNode, F as FootnoteNode, l as MermaidNode, T as TagNode } from "./theme-CYsyGmCL.js";
|
|
11
11
|
import { DecoratorNode, $insertNodes, ElementNode, $createTextNode } from "lexical";
|
|
12
12
|
import { createElement, createContext, use, useState, useRef, useEffect, useCallback } from "react";
|
|
13
13
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1196,7 +1196,8 @@ const customNodes = [
|
|
|
1196
1196
|
GridContainerNode,
|
|
1197
1197
|
BannerNode,
|
|
1198
1198
|
MermaidNode,
|
|
1199
|
-
RubyNode
|
|
1199
|
+
RubyNode,
|
|
1200
|
+
TagNode
|
|
1200
1201
|
];
|
|
1201
1202
|
const allNodes = [
|
|
1202
1203
|
...builtinNodes,
|
|
@@ -1212,17 +1213,17 @@ export {
|
|
|
1212
1213
|
LinkCardNode as L,
|
|
1213
1214
|
RubyNode as R,
|
|
1214
1215
|
VideoNode as V,
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
$
|
|
1219
|
-
$
|
|
1220
|
-
$
|
|
1221
|
-
$
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1216
|
+
$createGridContainerNode as a,
|
|
1217
|
+
$createLinkCardNode as b,
|
|
1218
|
+
$createRubyNode as c,
|
|
1219
|
+
$isFootnoteSectionNode as d,
|
|
1220
|
+
$isGridContainerNode as e,
|
|
1221
|
+
$isLinkCardNode as f,
|
|
1222
|
+
$isRubyNode as g,
|
|
1223
|
+
BANNER_TYPES as h,
|
|
1224
|
+
allNodes as i,
|
|
1225
|
+
builtinNodes as j,
|
|
1226
|
+
customNodes as k,
|
|
1226
1227
|
$isBannerNode as l,
|
|
1227
1228
|
BannerRenderer as m,
|
|
1228
1229
|
BannerNode as n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-edit.d.ts","sourceRoot":"","sources":["../src/config-edit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"config-edit.d.ts","sourceRoot":"","sources":["../src/config-edit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAqBjD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAkBrD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAGlD,CAAA"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAoBjD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAYlD,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAkBjD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAG9C,CAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { F as FootnotePlugin, O as OnChangePlugin, S as SubmitShortcutPlugin, E as EditorRefPlugin, a as AutoFocusPlugin, d as ImageUploadProvider, g as defaultImageUpload, C as CorePlugins, I as ImageUploadPlugin, L as LinkFaviconPlugin, c as BlockIdPlugin, f as blockIdState } from "./SubmitShortcutPlugin-
|
|
1
|
+
import { F as FootnotePlugin, O as OnChangePlugin, S as SubmitShortcutPlugin, E as EditorRefPlugin, a as AutoFocusPlugin, d as ImageUploadProvider, g as defaultImageUpload, C as CorePlugins, I as ImageUploadPlugin, L as LinkFaviconPlugin, c as BlockIdPlugin, f as blockIdState } from "./SubmitShortcutPlugin-Cc2wXgH5.js";
|
|
2
2
|
import { L, P, u } from "./PresentDialogContext-DmwCjSHw.js";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
-
import { s as setResolvedEditNodes, a as allEditNodes } from "./node-registry-
|
|
5
|
-
import { I as ImagePlugin, K as KaTeXPlugin, A as AlertPlugin, M as MermaidPlugin } from "./MermaidPlugin-
|
|
4
|
+
import { s as setResolvedEditNodes, a as allEditNodes } from "./node-registry-B2U2_LrI.js";
|
|
5
|
+
import { I as ImagePlugin, K as KaTeXPlugin, A as AlertPlugin, M as MermaidPlugin } from "./MermaidPlugin-DjLUVZvB.js";
|
|
6
6
|
import { PortalThemeProvider } from "@haklex/rich-style-token";
|
|
7
7
|
import { LexicalComposer } from "@lexical/react/LexicalComposer";
|
|
8
8
|
import { LexicalErrorBoundary } from "@lexical/react/LexicalErrorBoundary";
|
|
9
9
|
import { HistoryPlugin } from "@lexical/react/LexicalHistoryPlugin";
|
|
10
10
|
import { RichTextPlugin } from "@lexical/react/LexicalRichTextPlugin";
|
|
11
|
-
import { C as ColorSchemeProvider } from "./config-
|
|
12
|
-
import { u as u2 } from "./config-
|
|
11
|
+
import { C as ColorSchemeProvider } from "./config-DcR_yktp.js";
|
|
12
|
+
import { u as u2 } from "./config-DcR_yktp.js";
|
|
13
13
|
import { R as RendererConfigProvider } from "./KaTeXRenderer-C8jv_5xr.js";
|
|
14
14
|
import { F, u as u3, b, d, e, f, g } from "./KaTeXRenderer-C8jv_5xr.js";
|
|
15
|
-
import {
|
|
16
|
-
import { N, u as u4,
|
|
15
|
+
import { n as editorTheme } from "./theme-CYsyGmCL.js";
|
|
16
|
+
import { N, u as u4, p } from "./theme-CYsyGmCL.js";
|
|
17
17
|
import { ContentEditable as ContentEditable$1 } from "@lexical/react/LexicalContentEditable";
|
|
18
18
|
/* empty css */
|
|
19
19
|
import { b as clsx, g as getVariantClass } from "./shared.css-DNuMYx6Q.js";
|
|
@@ -301,7 +301,7 @@ export {
|
|
|
301
301
|
b as useFootnoteDefinitions,
|
|
302
302
|
d as useFootnoteDisplayNumber,
|
|
303
303
|
u4 as useNestedContentRenderer,
|
|
304
|
-
|
|
304
|
+
p as useOptionalNestedContentRenderer,
|
|
305
305
|
u as usePresentDialog,
|
|
306
306
|
e as useRendererConfig,
|
|
307
307
|
f as useRendererMode,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { l as $isBannerNode, m as BannerRenderer, n as BannerNode, o as normalizeBannerType, p as $isCodeBlockNode, q as CodeBlockRenderer, r as CodeBlockNode, F as FootnoteSectionNode,
|
|
5
|
-
import { N as NESTED_EDITOR_NODES, A as AlertQuoteEditNode } from "./AlertQuoteEditNode-
|
|
4
|
+
import { l as $isBannerNode, m as BannerRenderer, n as BannerNode, o as normalizeBannerType, p as $isCodeBlockNode, q as CodeBlockRenderer, r as CodeBlockNode, F as FootnoteSectionNode, e as $isGridContainerNode, G as GridContainerNode, j as builtinNodes, V as VideoNode, L as LinkCardNode, D as DetailsNode, R as RubyNode } from "./config-DcR_yktp.js";
|
|
5
|
+
import { N as NESTED_EDITOR_NODES, A as AlertQuoteEditNode } from "./AlertQuoteEditNode-CHdvQnOr.js";
|
|
6
6
|
import { $getNodeByKey, $insertNodes, createEditor, $getSelection, $isNodeSelection, $isElementNode, $isDecoratorNode, $createNodeSelection, $setSelection, $createParagraphNode, $nodesOfType, $getRoot } from "lexical";
|
|
7
7
|
import { Flag, LayoutGrid, Plus, Minus } from "lucide-react";
|
|
8
8
|
import { useCallback, createElement, useState, useEffect } from "react";
|
|
@@ -15,7 +15,7 @@ import { ListPlugin } from "@lexical/react/LexicalListPlugin";
|
|
|
15
15
|
import { LexicalNestedComposer } from "@lexical/react/LexicalNestedComposer";
|
|
16
16
|
import { RichTextPlugin } from "@lexical/react/LexicalRichTextPlugin";
|
|
17
17
|
import { a as RendererWrapper, b as useFootnoteDefinitions } from "./KaTeXRenderer-C8jv_5xr.js";
|
|
18
|
-
import {
|
|
18
|
+
import { n as editorTheme, S as SpoilerNode, M as MentionNode, k as KaTeXInlineNode, K as KaTeXBlockNode, I as ImageNode, F as FootnoteNode, l as MermaidNode, T as TagNode } from "./theme-CYsyGmCL.js";
|
|
19
19
|
import { useLexicalNodeSelection } from "@lexical/react/useLexicalNodeSelection";
|
|
20
20
|
const codeBlockCursorIntentMap = /* @__PURE__ */ new Map();
|
|
21
21
|
function setCodeBlockCursorIntent(nodeKey, placement) {
|
|
@@ -740,7 +740,8 @@ const customEditNodes = [
|
|
|
740
740
|
GridEditNode,
|
|
741
741
|
BannerEditNode,
|
|
742
742
|
MermaidNode,
|
|
743
|
-
RubyNode
|
|
743
|
+
RubyNode,
|
|
744
|
+
TagNode
|
|
744
745
|
];
|
|
745
746
|
const allEditNodes = [
|
|
746
747
|
...builtinNodes,
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DOMConversionMap, DOMExportOutput, EditorConfig, LexicalEditor, LexicalNode, NodeKey, SerializedTextNode, TextNode } from 'lexical';
|
|
2
|
+
import { CommandItemConfig } from '../types/slash-menu';
|
|
3
|
+
export type SerializedTagNode = Omit<SerializedTextNode, 'type'> & {
|
|
4
|
+
type: 'tag';
|
|
5
|
+
};
|
|
6
|
+
export declare class TagNode extends TextNode {
|
|
7
|
+
static commandItems: CommandItemConfig[];
|
|
8
|
+
static getType(): string;
|
|
9
|
+
static clone(node: TagNode): TagNode;
|
|
10
|
+
static importDOM(): DOMConversionMap | null;
|
|
11
|
+
constructor(text: string, key?: NodeKey);
|
|
12
|
+
createDOM(config: EditorConfig): HTMLElement;
|
|
13
|
+
updateDOM(prevNode: this, dom: HTMLElement, config: EditorConfig): boolean;
|
|
14
|
+
exportDOM(_editor: LexicalEditor): DOMExportOutput;
|
|
15
|
+
getText(): string;
|
|
16
|
+
canInsertTextBefore(): boolean;
|
|
17
|
+
canInsertTextAfter(): boolean;
|
|
18
|
+
isTextEntity(): true;
|
|
19
|
+
static importJSON(serializedNode: SerializedTagNode): TagNode;
|
|
20
|
+
exportJSON(): SerializedTagNode;
|
|
21
|
+
}
|
|
22
|
+
export declare function $createTagNode(text: string): TagNode;
|
|
23
|
+
export declare function $isTagNode(node: LexicalNode | null | undefined): node is TagNode;
|
|
24
|
+
//# sourceMappingURL=TagNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagNode.d.ts","sourceRoot":"","sources":["../../src/nodes/TagNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,kBAAkB,EACnB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAgB,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG5D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG;IACjE,IAAI,EAAE,KAAK,CAAA;CACZ,CAAA;AAED,qBAAa,OAAQ,SAAQ,QAAQ;IACnC,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE,CAevC;IAED,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAIpC,MAAM,CAAC,SAAS,IAAI,gBAAgB,GAAG,IAAI;gBAgB/B,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO;IAIvC,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW;IAO5C,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO;IAY1E,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,eAAe;IASlD,OAAO,IAAI,MAAM;IAIjB,mBAAmB,IAAI,OAAO;IAI9B,kBAAkB,IAAI,OAAO;IAI7B,YAAY,IAAI,IAAI;IAIpB,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,iBAAiB,GAAG,OAAO;IAS7D,UAAU,IAAI,iBAAiB;CAOhC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,OAAO,CAEjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/nodes/shared.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/nodes/shared.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAQjD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAiBzD,CAAA"}
|
package/dist/nodes-entry.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export type { SerializedFootnoteSectionNode } from './nodes/FootnoteSectionNode'
|
|
|
23
23
|
export { $createFootnoteSectionNode, $isFootnoteSectionNode, FootnoteSectionNode, } from './nodes/FootnoteSectionNode';
|
|
24
24
|
export type { AlertType } from './nodes/AlertQuoteNode';
|
|
25
25
|
export { ALERT_LABELS, ALERT_TYPES } from './nodes/AlertQuoteNode';
|
|
26
|
+
export type { SerializedTagNode } from './nodes/TagNode';
|
|
27
|
+
export { $createTagNode, $isTagNode, TagNode } from './nodes/TagNode';
|
|
26
28
|
export type { BannerType } from './nodes/BannerNode';
|
|
27
29
|
export { BANNER_LABELS, BANNER_TYPES } from './nodes/BannerNode';
|
|
28
30
|
//# sourceMappingURL=nodes-entry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes-entry.d.ts","sourceRoot":"","sources":["../src/nodes-entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9E,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG1F,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtF,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtF,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG1E,YAAY,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGnE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"nodes-entry.d.ts","sourceRoot":"","sources":["../src/nodes-entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9E,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG1F,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtF,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtF,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG1E,YAAY,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAGtE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/nodes-entry.mjs
CHANGED
|
@@ -1,44 +1,47 @@
|
|
|
1
|
-
import { $,
|
|
2
|
-
import { F as F2, a as a2, c as c2, g as g2, s } from "./node-registry-
|
|
3
|
-
import { N } from "./AlertQuoteEditNode-
|
|
4
|
-
import { $ as $2, c as c3, d as d2, f as f2, g as g3, h as h2, i as i2, j as j2,
|
|
1
|
+
import { $, a, b, c, d, e, f, g, B, h, F, G, L, R, i, j, k } from "./config-DcR_yktp.js";
|
|
2
|
+
import { F as F2, a as a2, c as c2, g as g2, s } from "./node-registry-B2U2_LrI.js";
|
|
3
|
+
import { N } from "./AlertQuoteEditNode-CHdvQnOr.js";
|
|
4
|
+
import { $ as $2, a as a3, b as b2, c as c3, d as d2, e as e2, f as f2, g as g3, h as h2, i as i2, A, j as j2, I, K, k as k2, M, l, T } from "./theme-CYsyGmCL.js";
|
|
5
5
|
export {
|
|
6
6
|
$ as $createFootnoteSectionNode,
|
|
7
|
-
|
|
7
|
+
a as $createGridContainerNode,
|
|
8
8
|
$2 as $createImageNode,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
9
|
+
b as $createLinkCardNode,
|
|
10
|
+
a3 as $createMentionNode,
|
|
11
|
+
b2 as $createMermaidNode,
|
|
12
|
+
c as $createRubyNode,
|
|
13
|
+
c3 as $createTagNode,
|
|
14
|
+
d as $isFootnoteSectionNode,
|
|
15
|
+
e as $isGridContainerNode,
|
|
16
|
+
d2 as $isImageNode,
|
|
17
|
+
e2 as $isKaTeXBlockNode,
|
|
18
|
+
f2 as $isKaTeXInlineNode,
|
|
19
|
+
f as $isLinkCardNode,
|
|
20
|
+
g3 as $isMentionNode,
|
|
21
|
+
h2 as $isMermaidNode,
|
|
22
|
+
g as $isRubyNode,
|
|
23
|
+
i2 as $isTagNode,
|
|
22
24
|
A as ALERT_LABELS,
|
|
23
|
-
|
|
25
|
+
j2 as ALERT_TYPES,
|
|
24
26
|
B as BANNER_LABELS,
|
|
25
|
-
|
|
27
|
+
h as BANNER_TYPES,
|
|
26
28
|
F2 as FootnoteSectionEditNode,
|
|
27
29
|
F as FootnoteSectionNode,
|
|
28
30
|
G as GridContainerNode,
|
|
29
31
|
I as ImageNode,
|
|
30
32
|
K as KaTeXBlockNode,
|
|
31
|
-
|
|
33
|
+
k2 as KaTeXInlineNode,
|
|
32
34
|
L as LinkCardNode,
|
|
33
35
|
M as MentionNode,
|
|
34
|
-
|
|
36
|
+
l as MermaidNode,
|
|
35
37
|
N as NESTED_EDITOR_NODES,
|
|
36
38
|
R as RubyNode,
|
|
39
|
+
T as TagNode,
|
|
37
40
|
a2 as allEditNodes,
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
i as allNodes,
|
|
42
|
+
j as builtinNodes,
|
|
40
43
|
c2 as customEditNodes,
|
|
41
|
-
|
|
44
|
+
k as customNodes,
|
|
42
45
|
g2 as getResolvedEditNodes,
|
|
43
46
|
s as setResolvedEditNodes
|
|
44
47
|
};
|
package/dist/plugins-entry.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A, a, b, B, c, C, E, F, H, I, d, L, M, e, O, S, f, g, u } from "./SubmitShortcutPlugin-
|
|
2
|
-
import { A as A2, I as I2, K, M as M2 } from "./MermaidPlugin-
|
|
1
|
+
import { A, a, b, B, c, C, E, F, H, I, d, L, M, e, O, S, f, g, u } from "./SubmitShortcutPlugin-Cc2wXgH5.js";
|
|
2
|
+
import { A as A2, I as I2, K, M as M2 } from "./MermaidPlugin-DjLUVZvB.js";
|
|
3
3
|
export {
|
|
4
4
|
A as ALL_TRANSFORMERS,
|
|
5
5
|
A2 as AlertPlugin,
|
package/dist/rich-editor.css
CHANGED
|
@@ -1 +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}._13h71jk0{--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}._13h71jk1{--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}._13h71jk2{--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 ._13h71jk0,[data-theme=dark] ._13h71jk0,.dark._13h71jk0,[data-theme=dark]._13h71jk0,.dark ._13h71jk1,[data-theme=dark] ._13h71jk1,.dark._13h71jk1,[data-theme=dark]._13h71jk1,.dark ._13h71jk2,[data-theme=dark] ._13h71jk2,.dark._13h71jk2,[data-theme=dark]._13h71jk2{--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 r8uj4t1{to{--rc-hl-highlighted: 1}}@keyframes r8uj4t2{0%{background-color:#ef44443d}to{background-color:transparent}}.r8uj4t0{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}.r8uj4t0 .rich-paragraph{margin:0 0 1em;line-height:var(--rc-line-height)}.r8uj4t0 .rich-text-bold{font-weight:700}.r8uj4t0 .rich-text-italic{font-style:italic}.r8uj4t0 .rich-text-underline{text-decoration:underline}.r8uj4t0 .rich-text-strikethrough{text-decoration:line-through}.r8uj4t0 .rich-text-superscript{vertical-align:super;font-size:.8em}.r8uj4t0 .rich-text-subscript{vertical-align:sub;font-size:.8em}.r8uj4t0 .rich-text-code{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)}.r8uj4t0 mark{background:transparent}.r8uj4t0 .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] .r8uj4t0 .rich-text-highlight{--rc-hl-lightness: .35}.r8uj4t0 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6){position:relative}.r8uj4t0 .rich-heading-anchor{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}.r8uj4t0 .rich-heading-anchor svg{flex-shrink:0}.r8uj4t0 :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}.r8uj4t0 :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{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)}[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"}.r8uj4t0 .rich-heading-h1{font-size:2em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.5em;margin-bottom:.5em}.r8uj4t0 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.4em;margin-bottom:.45em}.r8uj4t0 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.3em;margin-bottom:.4em}.r8uj4t0 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.2em;margin-bottom:.35em}.r8uj4t0 .rich-heading-h5{font-size:1em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.1em;margin-bottom:.3em}.r8uj4t0 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1em;margin-bottom:.25em;color:var(--rc-text)}.r8uj4t0 .rich-link{color:var(--rc-link);text-decoration:none;transition:color .2s ease}.r8uj4t0 .rich-link:hover{text-decoration:underline}.r8uj4t0 .rich-link[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}.r8uj4t0 .rich-link-favicon{display:inline-flex;align-items:center;margin-right:.15em;vertical-align:-.125em}.r8uj4t0 .rich-link-favicon img{width:1em;height:1em;border-radius:2px;object-fit:contain}.r8uj4t0 .rich-link-favicon svg{width:.9em;height:.9em}.r8uj4t0 .rich-list-ol{list-style-type:decimal;padding-left:var(--rc-space-lg);margin-bottom:1em}.r8uj4t0 .rich-list-ul{list-style-type:disc;padding-left:var(--rc-space-lg);margin-bottom:1em}.r8uj4t0 .rich-list-item{margin-bottom:.25em}.r8uj4t0 .rich-list-nested-item{list-style-type:none}.r8uj4t0 .rich-list-nested-item .rich-list-ol{list-style-type:lower-alpha}.r8uj4t0 .rich-list-nested-item .rich-list-ul{list-style-type:circle}.r8uj4t0 .rich-checklist{list-style-type:none;padding-left:0}.r8uj4t0 .rich-list-item.rich-list-item-checked,.r8uj4t0 .rich-list-item.rich-list-item-unchecked{--rc-cb-size: 1.125rem;position:relative;padding-left:2em;list-style-type:none;outline:none}.r8uj4t0 .rich-list-item.rich-list-item-unchecked:before,.r8uj4t0 .rich-list-item.rich-list-item-checked: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:2px solid color-mix(in oklab,var(--rc-text-secondary) 60%,transparent);border-radius:var(--rc-radius-sm);box-sizing:border-box;cursor:pointer;vertical-align:middle;color:var(--rc-text);background-color:transparent;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}[contenteditable=true] .r8uj4t0 .rich-list-item.rich-list-item-unchecked:hover:before{border-color:color-mix(in oklab,var(--rc-text-secondary) 80%,transparent)}.r8uj4t0 .rich-list-item.rich-list-item-unchecked:after,.r8uj4t0 .rich-list-item.rich-list-item-checked:after{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);background-color:#fff;box-sizing:border-box;display:block;pointer-events:none;transform:rotate(45deg);transform-origin:center;transition:clip-path .25s cubic-bezier(.34,1.56,.64,1),opacity .15s}.r8uj4t0 .rich-list-item.rich-list-item-checked:before{background-color:var(--rc-accent);border-color:var(--rc-accent);box-shadow:0 0 0 1px var(--rc-accent)}.r8uj4t0 .rich-list-item.rich-list-item-checked:after{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1;transform:rotate(45deg) scale(.7)}.r8uj4t0 .rich-list-item-checked{text-decoration:line-through;color:var(--rc-text-secondary)}.r8uj4t0 .rich-quote{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}.r8uj4t0 .rich-quote:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:var(--rc-radius-sm);background-color:var(--rc-quote-border)}.r8uj4t0 .rich-quote>.rich-paragraph:first-child{margin-top:0}.r8uj4t0 .rich-quote>.rich-paragraph:last-child{margin-bottom:0}.r8uj4t0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}.r8uj4t0 .rich-table-scrollable-wrapper{overflow-x:auto}.r8uj4t0 .rich-table{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}.r8uj4t0 .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}.r8uj4t0 .rich-table-cell:last-child{border-right:none}.r8uj4t0 .rich-table tbody tr:last-child .rich-table-cell{border-bottom:none}.r8uj4t0 .rich-table-cell .rich-paragraph{margin:0;padding:0;line-height:inherit}.r8uj4t0 .rich-table-cell>:first-child{margin-top:0}.r8uj4t0 .rich-table-cell>:last-child{margin-bottom:0}.r8uj4t0 .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;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}.r8uj4t0 .rich-table-cell-header:last-child{border-right:none}.r8uj4t0 .rich-table-cell-header .rich-paragraph{margin:0;padding:0;line-height:inherit}.r8uj4t0 .rich-table-cell-header>:first-child{margin-top:0}.r8uj4t0 .rich-table-cell-header>:last-child{margin-bottom:0}.r8uj4t0 img{max-width:100%;height:auto;border-radius:var(--rc-radius-md)}.r8uj4t0 .rich-spoiler{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] .rich-spoiler{background-color:color-mix(in srgb,var(--rc-text) 30%,transparent);color:inherit;user-select:auto;cursor:text}.r8uj4t0 .rich-spoiler:hover,.r8uj4t0 .rich-spoiler-revealed{background-color:transparent;color:inherit;user-select:auto}.r8uj4t0 .rich-ruby{ruby-position:over;ruby-align:center}.r8uj4t0 .rich-ruby-rt{font-size:.58em;line-height:1;color:var(--rc-text-secondary);user-select:none}[contenteditable=true] .rich-ruby[data-ruby]{position:relative;display:inline-block;padding-top:.72em;line-height:1.2}[contenteditable=true] .rich-ruby[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}.r8uj4t0 .rich-footnote{vertical-align:super;font-size:.8em}.r8uj4t0 .rich-footnote-ref{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}.r8uj4t0 .rich-footnote-ref:hover{filter:brightness(.96)}.r8uj4t0 .rich-footnote-highlight{animation:r8uj4t2 1.2s ease-out}.r8uj4t0 .rich-footnote-ref-wrapper{position:relative;display:inline}.r8uj4t0 .rich-footnote-section{margin-top:var(--rc-space-lg)}.r8uj4t0 .rich-footnote-section-divider{border:none;border-top:1px solid var(--rc-border);margin:var(--rc-space-lg) 0 var(--rc-space-md)}.r8uj4t0 .rich-footnote-section-list{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}.r8uj4t0 .rich-footnote-section-item{margin-bottom:var(--rc-space-sm);padding-left:var(--rc-space-xs)}.r8uj4t0 .rich-footnote-back-ref{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)}.r8uj4t0 .rich-footnote-back-ref:hover{opacity:.7}.r8uj4t0 .rich-footnote-section-item-edit{display:flex;align-items:center;gap:var(--rc-space-sm);list-style-type:none}.r8uj4t0 .rich-footnote-section-item-num{flex-shrink:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-small);font-weight:600;min-width:1.5em}.r8uj4t0 .rich-footnote-section-item-input{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}.r8uj4t0 .rich-footnote-section-item-input:focus{border-color:var(--rc-accent)}.r8uj4t0 .rich-footnote-section-item-remove{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}.r8uj4t0 .rich-footnote-section-item-remove:hover{color:#ef4444;background-color:#ef44441a}.rich-drag-handle{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}.rich-drag-handle:hover{opacity:1;background-color:var(--rc-fill-secondary)}.rich-drag-handle:active{cursor:grabbing}.rich-drop-indicator{position:absolute;height:2px;background-color:var(--rc-accent);border-radius:1px;pointer-events:none;z-index:10}.r8uj4t0 .rich-alert{margin:2em 0;padding:0 1em;background-color:transparent;border:none;border-radius:0}.r8uj4t0>*:first-child,.r8uj4t0 .rich-editor__content>*:first-child{margin-top:0}.r8uj4t0>*:last-child,.r8uj4t0 .rich-editor__content>*:last-child{margin-bottom:0}@supports (animation-timeline: view()){.r8uj4t0 .rich-text-highlight{--rc-hl-highlighted: 0;animation:r8uj4t1 steps(1) both;animation-timeline:view();animation-range:entry 100% cover 10%}}.v10dui0{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.75;color:var(--rc-text)}.v10dui0 .rich-paragraph{margin-top:1.5em;margin-bottom:1.5em}.v10dui0 .rich-heading-h1{color:var(--rc-text);font-weight:800;font-size:3em;margin-top:0;margin-bottom:.8333333333333334em;line-height:1}.v10dui0 .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}.v10dui0 .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}.v10dui0 .rich-heading-h4{color:var(--rc-text);font-weight:600;margin-top:2em;margin-bottom:.5em;line-height:1.5625}.v10dui0 .rich-heading-h2+*,.v10dui0 .rich-heading-h3+*,.v10dui0 .rich-heading-h4+*{margin-top:0}.v10dui0 .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:"“""”""‘""’"}.v10dui0 .rich-quote .rich-paragraph:first-of-type:before{content:open-quote}.v10dui0 .rich-quote .rich-paragraph:last-of-type:after{content:close-quote}.v10dui0 .rich-quote .rich-paragraph:first-child{margin-top:0}.v10dui0 .rich-quote .rich-paragraph:last-child{margin-bottom:0}.v10dui0 .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)}.v10dui0 .rich-text-code:before,.v10dui0 .rich-text-code:after{content:"`";color:var(--rc-text-secondary);opacity:.5}.v10dui0 .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}.v10dui0 .rich-code-block pre{padding:1em 1.5em;margin:0}.v10dui0 .rich-list-ul,.v10dui0 .rich-list-ol{margin-top:1.5em;margin-bottom:1.5em;padding-left:1.75em}.v10dui0 .rich-list-item{margin-top:.75em;margin-bottom:.75em;padding-left:.5em}.v10dui0 .rich-list-item .rich-paragraph{margin-top:1em;margin-bottom:1em}.v10dui0 .rich-list-item>.rich-paragraph:first-child{margin-top:1.5em}.v10dui0 .rich-list-item>.rich-paragraph:last-child{margin-bottom:1.5em}.v10dui0 .rich-list-ul .rich-list-ul,.v10dui0 .rich-list-ul .rich-list-ol,.v10dui0 .rich-list-ol .rich-list-ul,.v10dui0 .rich-list-ol .rich-list-ol{margin-top:1em;margin-bottom:1em}.v10dui0 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.5}.v10dui0 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.v10dui0 .rich-image{margin-top:2em;margin-bottom:2em}.v10dui0 .rich-image>*{margin-top:0;margin-bottom:0}.v10dui0 .rich-image figcaption{color:var(--rc-text-secondary);font-size:.875em;line-height:1.5;margin-top:1em}.v10dui0 .rich-hr{border-color:var(--rc-hr-border);border-top-width:1px;width:60px;margin:3.5em auto}.v10dui0 .rich-hr+*{margin-top:0}.v10dui0 .rich-link{font-weight:500;text-decoration:underline}.v10dui0 .rich-banner,.v10dui0 .rich-code-snippet,.v10dui0 .rich-details{margin:2em 0}.v10dui0>*:first-child{margin-top:0}.v10dui0>*:last-child{margin-bottom:0}._14ko36c0{font-size:var(--rc-font-size-base);line-height:var(--rc-line-height)}._14ko36c0 .rich-paragraph{margin-bottom:.6em}._14ko36c0 .rich-heading-h1{font-size:1.35em;font-weight:700;margin-top:.8em;margin-bottom:.3em}._14ko36c0 .rich-heading-h2{font-size:1.2em;font-weight:700;margin-top:.7em;margin-bottom:.25em}._14ko36c0 .rich-heading-h3{font-size:1.1em;font-weight:600;margin-top:.6em;margin-bottom:.2em}._14ko36c0 .rich-heading-h4{font-size:1em;font-weight:600;margin-top:.5em;margin-bottom:.15em}._14ko36c0 .rich-heading-h5{font-size:.9em;font-weight:600;margin-top:.45em;margin-bottom:.1em}._14ko36c0 .rich-heading-h6{font-size:.85em;font-weight:600;margin-top:.4em;margin-bottom:.1em}._14ko36c0 .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}._14ko36c0 .rich-quote:before{width:3px}._14ko36c0 .rich-list-ol,._14ko36c0 .rich-list-ul{margin-bottom:.6em;padding-left:var(--rc-space-md)}._14ko36c0 .rich-list-item{margin-bottom:.1em}._14ko36c0 .rich-code-block{margin:var(--rc-space-sm) 0;border-radius:var(--rc-radius-sm);font-size:var(--rc-font-size-small)}._14ko36c0 .rich-code-block pre{padding:var(--rc-space-sm)}._14ko36c0 .line:before{display:none!important}._14ko36c0 .rich-table{margin:var(--rc-space-sm) 0;font-size:var(--rc-font-size-small)}._14ko36c0 .rich-table-cell,._14ko36c0 .rich-table-cell-header{padding:var(--rc-space-xs) var(--rc-space-sm)}._14ko36c0 .rich-image{margin:var(--rc-space-sm) 0}._14ko36c0 .rich-image figcaption{font-size:var(--rc-font-size-small)}._14ko36c0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}._14ko36c0 .rich-alert{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:var(--rc-space-lg);margin:var(--rc-space-sm) 0}._14ko36c0 .rich-katex-block{padding:var(--rc-space-sm) 0;margin:var(--rc-space-sm) 0}.ys4fw90{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.8;color:var(--rc-text)}.ys4fw90>.rich-paragraph,.ys4fw90 .rich-editor__content>.rich-paragraph,.ys4fw90 .rich-content__body>.rich-paragraph{margin-top:1.25em;margin-bottom:1.25em;line-height:1.8}.ys4fw90>.rich-paragraph:first-of-type,.ys4fw90 .rich-editor__content>.rich-paragraph:first-of-type,.ys4fw90 .rich-content__body>.rich-paragraph:first-of-type{margin-top:0;margin-bottom:2rem}.ys4fw90>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.ys4fw90 .rich-editor__content>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.ys4fw90 .rich-content__body>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child{margin-inline-start:2rem}.ys4fw90>.rich-paragraph:first-of-type:first-letter,.ys4fw90 .rich-content__body>.rich-paragraph:first-of-type:first-letter{float:left;font-size:2.4em;margin-right:.2em;line-height:1}.ys4fw90 .rich-editor__content>.rich-paragraph:first-of-type:first-letter{font-size:1.5em;font-weight:700;color:var(--rc-accent)}.ys4fw90>.rich-paragraph:last-child,.ys4fw90 .rich-editor__content>.rich-paragraph:last-child,.ys4fw90 .rich-content__body>.rich-paragraph:last-child{margin-bottom:0}.ys4fw90 .rich-text-bold{font-family:var(--rc-font-family);font-weight:600;color:var(--rc-text)}.ys4fw90 .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)}.ys4fw90 .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)}.ys4fw90 .rich-heading-h2+*{margin-top:0}.ys4fw90 .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)}.ys4fw90 .rich-heading-h3+*{margin-top:0}.ys4fw90 .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)}.ys4fw90 .rich-heading-h4+*{margin-top:0}.ys4fw90 .rich-heading-h5{font-size:1em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.ys4fw90 .rich-heading-h5+*{margin-top:0}.ys4fw90 .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}.ys4fw90 .rich-heading-h6+*{margin-top:0}.ys4fw90 .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}.ys4fw90 .rich-quote:before{display:none}.ys4fw90 .rich-quote .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.ys4fw90 .rich-link{font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s ease}.ys4fw90 .rich-link:hover{text-decoration-thickness:2px}.ys4fw90 .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)}.ys4fw90 .rich-list-ol,.ys4fw90 .rich-list-ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.ys4fw90 .rich-list-ol{list-style-type:decimal}.ys4fw90 .rich-list-ul{list-style-type:disc}.ys4fw90 .rich-list-item{margin-top:.5em;margin-bottom:.5em;padding-left:.375em}.ys4fw90 .rich-list-item::marker{color:var(--rc-text-secondary)}.ys4fw90 .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}.ys4fw90 .rich-code-block pre{padding:.8571429em 1.1428571em;margin:0}.ys4fw90 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.ys4fw90 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.ys4fw90 .rich-table .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.ys4fw90 .rich-image{margin-top:2em;margin-bottom:2em}.ys4fw90 .rich-image img{border-radius:var(--rc-radius-md)}.ys4fw90 .rich-image figcaption{font-size:.875em;line-height:1.4285714;margin-top:.8571429em;color:var(--rc-text-secondary);text-align:center}.ys4fw90 .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}.ys4fw90 .rich-katex-block{margin-top:1.6em;margin-bottom:1.6em;overflow-x:auto;padding:1em 0}.ys4fw90 .rich-spoiler{border-radius:var(--rc-radius-sm);padding-inline:.25em}.ys4fw90>*:first-child{margin-top:0}.ys4fw90>*:last-child{margin-bottom:0}@keyframes _1x58dbf0{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes _1x58dbf6{to{transform:rotate(360deg)}}.rich-image-upload-dragging{position:relative;border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-accent) 6%,transparent)}.rich-image-upload-dragging .rich-editor__content{outline:2px dashed color-mix(in srgb,var(--rc-accent) 48%,transparent);outline-offset:-2px}._1x58dbf1{position:absolute;right:.75rem;bottom:.75rem;z-index:25;display:flex;flex-direction:column;align-items:flex-end;gap:.375rem;pointer-events:none}._1x58dbf2{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .625rem;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border);background-color:color-mix(in srgb,var(--rc-bg) 95%,transparent);color:var(--rc-text);font-size:var(--rc-font-size-xs);line-height:1.2;box-shadow:var(--rc-shadow-top-bar);animation:_1x58dbf0 .12s ease-out}._1x58dbf4{border-color:color-mix(in srgb,var(--rc-accent) 35%,transparent)}._1x58dbf5{border-color:color-mix(in srgb,var(--rc-alert-caution) 45%,transparent);color:var(--rc-alert-caution)}._1x58dbf7{width:12px;height:12px;border-radius:50%;border:2px solid color-mix(in srgb,var(--rc-text-secondary) 35%,transparent);border-top-color:color-mix(in srgb,var(--rc-text) 65%,transparent);animation:_1x58dbf6 .75s linear infinite}._1x58dbf8._1x58dbf8{padding:0;gap:0;width:min(560px,calc(100vw - 2rem));overflow:hidden}._1x58dbf9{padding:.875rem 1rem .75rem;border-bottom:1px solid var(--rc-border)}._1x58dbfa{font-size:var(--rc-font-size-md);font-weight:600;color:var(--rc-text)}._1x58dbfb{display:flex;flex-direction:column;gap:.875rem;padding:.875rem 1rem}._1x58dbfc{display:flex;align-items:center;gap:.5rem}._1x58dbfd{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--rc-radius-md);border:1.5px dashed var(--rc-border);min-height:190px;padding:1.2rem;color:var(--rc-text-secondary);cursor:pointer;transition:border-color .15s ease,background-color .15s ease,color .15s ease}._1x58dbfd:hover{border-color:color-mix(in srgb,var(--rc-accent) 35%,transparent);background-color:color-mix(in srgb,var(--rc-accent) 6%,transparent);color:var(--rc-text)}._1x58dbff{border-color:color-mix(in srgb,var(--rc-accent) 55%,transparent);background-color:color-mix(in srgb,var(--rc-accent) 8%,transparent);color:var(--rc-text);transform:scale(1.01)}._1x58dbfg{cursor:progress;opacity:.9}._1x58dbfh{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-text) 6%,transparent)}._1x58dbfi{font-size:var(--rc-font-size-sm);font-weight:600;color:var(--rc-text)}._1x58dbfj{font-size:var(--rc-font-size-xs);color:var(--rc-text-secondary);text-align:center}._1x58dbfk{display:none}._1x58dbfl{display:flex;flex-direction:column;align-items:center;gap:.5rem}._1x58dbfm{display:inline-flex;align-items:center;gap:.375rem;font-size:var(--rc-font-size-sm);color:var(--rc-text)}._1x58dbfn{display:flex;align-items:center;gap:.5rem}._1x58dbfo{width:100%;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border);background-color:var(--rc-bg);color:var(--rc-text);height:34px;padding:0 .625rem;font-size:var(--rc-font-size-sm);outline:none;transition:border-color .15s ease}._1x58dbfo:focus{border-color:color-mix(in srgb,var(--rc-accent) 50%,transparent)}._1x58dbfo::placeholder{color:var(--rc-text-secondary)}._1x58dbfp{border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:hidden;background-color:color-mix(in srgb,var(--rc-text) 2%,transparent)}._1x58dbfq{display:block;width:100%;max-height:220px;object-fit:cover}._1x58dbfr{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--rc-font-size-xs);color:var(--rc-text-secondary)}._1x58dbfs{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-top:1px solid var(--rc-border);background-color:color-mix(in srgb,var(--rc-text) 2%,transparent);padding:.65rem 1rem}.b94s950{position:relative;max-width:var(--rc-max-width);margin:0 auto;flex:1;min-height:0;width:100%}.b94s951{outline:none;min-height:100px;width:100%;padding:var(--ce-padding-top, 12px) var(--rc-space-md) 12px var(--rc-space-md)}.b94s952{position:absolute;top:var(--ce-padding-top, 12px);left:var(--rc-space-md);color:var(--rc-text-secondary);pointer-events:none;user-select:none}.r8uj4t0 .rich-katex-inline{display:inline;padding:0 2px;vertical-align:middle}.r8uj4t0 .rich-katex-block{display:block;text-align:center;padding:var(--rc-space-md) 0;overflow-x:auto;margin:var(--rc-space-md) 0}.r8uj4t0 .rich-katex-fallback{font-family:var(--rc-font-mono);font-size:.9em;color:var(--rc-code-text);background-color:var(--rc-code-bg);padding:2px 6px;border-radius:var(--rc-radius-sm)}.r8uj4t0 .rich-details{margin:var(--rc-space-md) 0;border:none;background-color:transparent;interpolate-size:allow-keywords}.r8uj4t0 .rich-details-summary{display:flex;align-items:center;gap:var(--rc-space-sm);cursor:pointer;user-select:none;padding:var(--rc-space-xs) 0;color:var(--rc-text);font-weight:500;font-size:1em;line-height:var(--rc-line-height);list-style:none;outline:none;border-radius:var(--rc-radius-sm);transition:opacity .2s ease,color .2s ease,box-shadow .2s ease}.r8uj4t0 .rich-details-summary:hover{opacity:.82}.r8uj4t0 .rich-details-summary:focus-visible{box-shadow:0 0 0 2px var(--rc-accent-light)}.r8uj4t0 .rich-details-summary::-webkit-details-marker{display:none}.r8uj4t0 .rich-details-summary::marker{content:"";display:none}.r8uj4t0 .rich-details-summary-text{flex:1;min-width:0}.r8uj4t0 .rich-details-chevron{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;flex-shrink:0;color:var(--rc-text-tertiary);transform-origin:center;transition:transform .35s cubic-bezier(.4,0,.2,1),color .2s ease}.r8uj4t0 .rich-details-summary:hover .rich-details-chevron{color:var(--rc-text-secondary)}.r8uj4t0 .rich-details[open] .rich-details-chevron{color:var(--rc-accent);transform:rotate(90deg)}.r8uj4t0 .rich-details::details-content{display:block;height:0;overflow:hidden;opacity:0;content-visibility:hidden;transition:height .4s cubic-bezier(.4,0,.2,1),opacity .4s cubic-bezier(.4,0,.2,1),content-visibility .4s cubic-bezier(.4,0,.2,1) allow-discrete}.r8uj4t0 .rich-details[open]::details-content{height:auto;opacity:1;content-visibility:visible}.r8uj4t0 .rich-details-content{margin-top:var(--rc-space-xs);padding:var(--rc-space-sm) var(--rc-space-md);color:var(--rc-text-secondary);background-color:color-mix(in srgb,var(--rc-accent) 6%,var(--rc-bg-secondary));border-radius:var(--rc-radius-md)}.r8uj4t0 .rich-details-content>.rich-paragraph:first-child{margin-top:0}.r8uj4t0 .rich-details-content>.rich-paragraph:last-child{margin-bottom:0}.r8uj4t0 .rich-grid-container{position:relative;margin:var(--rc-space-md) 0}.r8uj4t0 .rich-grid-toolbar{position:absolute;top:-36px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:2px;padding:4px 6px;border-radius:var(--rc-radius-md);pointer-events:none;background:var(--rc-bg);border:1px solid var(--rc-border);box-shadow:var(--rc-shadow-top-bar);z-index:10;user-select:none;white-space:nowrap;opacity:0;transition:opacity .15s ease}.r8uj4t0 .rich-grid-container:hover .rich-grid-toolbar,.r8uj4t0 .rich-grid-container:focus-within .rich-grid-toolbar{opacity:1;pointer-events:auto}.r8uj4t0 .rich-grid-toolbar-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--rc-text-secondary);flex-shrink:0}.r8uj4t0 .rich-grid-col-btn{display:flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:var(--rc-radius-sm);border:none;background:transparent;cursor:pointer;font-size:12px;font-weight:500;color:var(--rc-text-secondary);line-height:1;transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-grid-col-btn:hover{background-color:var(--rc-fill-secondary);color:var(--rc-text)}.r8uj4t0 .rich-grid-col-btn-active{background:var(--rc-fill);font-weight:600;color:var(--rc-text)}.r8uj4t0 .rich-grid-toolbar-divider{width:1px;height:16px;background:var(--rc-border);margin:0 2px;flex-shrink:0}.r8uj4t0 .rich-grid-action-btn{display:flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:var(--rc-radius-sm);border:none;background:transparent;cursor:pointer;color:var(--rc-text-secondary);transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-grid-action-btn:hover{background-color:var(--rc-fill-secondary);color:var(--rc-text)}.r8uj4t0 .rich-grid-inner{display:grid;gap:var(--rc-space-md)}.r8uj4t0 .rich-grid-cell{min-width:0}.r8uj4t0 .rich-grid-cell-editable{outline:none}
|
|
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}._13h71jk0{--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}._13h71jk1{--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}._13h71jk2{--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 ._13h71jk0,[data-theme=dark] ._13h71jk0,.dark._13h71jk0,[data-theme=dark]._13h71jk0,.dark ._13h71jk1,[data-theme=dark] ._13h71jk1,.dark._13h71jk1,[data-theme=dark]._13h71jk1,.dark ._13h71jk2,[data-theme=dark] ._13h71jk2,.dark._13h71jk2,[data-theme=dark]._13h71jk2{--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 r8uj4t1{to{--rc-hl-highlighted: 1}}@keyframes r8uj4t2{0%{background-color:#ef44443d}to{background-color:transparent}}.r8uj4t0{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}.r8uj4t0 .rich-paragraph{margin:0 0 1em;line-height:var(--rc-line-height)}.r8uj4t0 .rich-text-bold{font-weight:700}.r8uj4t0 .rich-text-italic{font-style:italic}.r8uj4t0 .rich-text-underline{text-decoration:underline}.r8uj4t0 .rich-text-strikethrough{text-decoration:line-through;opacity:.65}.r8uj4t0 .rich-text-superscript{vertical-align:super;font-size:.8em}.r8uj4t0 .rich-text-subscript{vertical-align:sub;font-size:.8em}.r8uj4t0 .rich-text-code{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)}.r8uj4t0 mark{background:transparent}.r8uj4t0 .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] .r8uj4t0 .rich-text-highlight{--rc-hl-lightness: .35}.r8uj4t0 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6){position:relative}.r8uj4t0 .rich-heading-anchor{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}.r8uj4t0 .rich-heading-anchor svg{flex-shrink:0}.r8uj4t0 :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}.r8uj4t0 :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{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)}[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"}.r8uj4t0 .rich-heading-h1{font-size:2em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.5em;margin-bottom:.5em}.r8uj4t0 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.4em;margin-bottom:.45em}.r8uj4t0 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.3em;margin-bottom:.4em}.r8uj4t0 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.2em;margin-bottom:.35em}.r8uj4t0 .rich-heading-h5{font-size:1em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.1em;margin-bottom:.3em}.r8uj4t0 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1em;margin-bottom:.25em;color:var(--rc-text)}.r8uj4t0 .rich-link{color:var(--rc-link);text-decoration:none;transition:color .2s ease}.r8uj4t0 .rich-link:hover{text-decoration:underline}.r8uj4t0 .rich-link[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}.r8uj4t0 .rich-link-favicon{display:inline-flex;align-items:center;margin-right:.15em;vertical-align:-.125em}.r8uj4t0 .rich-link-favicon img{width:1em;height:1em;border-radius:2px;object-fit:contain}.r8uj4t0 .rich-link-favicon svg{width:.9em;height:.9em}.r8uj4t0 .rich-list-ol{list-style-type:decimal;padding-left:var(--rc-space-lg);margin-bottom:1em}.r8uj4t0 .rich-list-ul{list-style-type:disc;padding-left:var(--rc-space-lg);margin-bottom:1em}.r8uj4t0 .rich-list-item{margin-bottom:.25em}.r8uj4t0 .rich-list-nested-item{list-style-type:none}.r8uj4t0 .rich-list-nested-item .rich-list-ol{list-style-type:lower-alpha}.r8uj4t0 .rich-list-nested-item .rich-list-ul{list-style-type:circle}.r8uj4t0 .rich-checklist{list-style-type:none;padding-left:0}.r8uj4t0 .rich-list-item.rich-list-item-checked,.r8uj4t0 .rich-list-item.rich-list-item-unchecked{--rc-cb-size: 1.125rem;position:relative;padding-left:2em;list-style-type:none;outline:none}.r8uj4t0 .rich-list-item.rich-list-item-unchecked:before,.r8uj4t0 .rich-list-item.rich-list-item-checked: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:2px solid color-mix(in oklab,var(--rc-text-secondary) 60%,transparent);border-radius:var(--rc-radius-sm);box-sizing:border-box;cursor:pointer;vertical-align:middle;color:var(--rc-text);background-color:transparent;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}[contenteditable=true] .r8uj4t0 .rich-list-item.rich-list-item-unchecked:hover:before{border-color:color-mix(in oklab,var(--rc-text-secondary) 80%,transparent)}.r8uj4t0 .rich-list-item.rich-list-item-unchecked:after,.r8uj4t0 .rich-list-item.rich-list-item-checked:after{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);background-color:#fff;box-sizing:border-box;display:block;pointer-events:none;transform:rotate(45deg);transform-origin:center;transition:clip-path .25s cubic-bezier(.34,1.56,.64,1),opacity .15s}.r8uj4t0 .rich-list-item.rich-list-item-checked:before{background-color:var(--rc-accent);border-color:var(--rc-accent);box-shadow:0 0 0 1px var(--rc-accent)}.r8uj4t0 .rich-list-item.rich-list-item-checked:after{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1;transform:rotate(45deg) scale(.7)}.r8uj4t0 .rich-list-item-checked{text-decoration:line-through;color:var(--rc-text-secondary)}.r8uj4t0 .rich-quote{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}.r8uj4t0 .rich-quote:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:var(--rc-radius-sm);background-color:var(--rc-quote-border)}.r8uj4t0 .rich-quote>.rich-paragraph:first-child{margin-top:0}.r8uj4t0 .rich-quote>.rich-paragraph:last-child{margin-bottom:0}.r8uj4t0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}.r8uj4t0 .rich-table-scrollable-wrapper{overflow-x:auto}.r8uj4t0 .rich-table{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}.r8uj4t0 .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}.r8uj4t0 .rich-table-cell:last-child{border-right:none}.r8uj4t0 .rich-table tbody tr:last-child .rich-table-cell{border-bottom:none}.r8uj4t0 .rich-table-cell .rich-paragraph{margin:0;padding:0;line-height:inherit}.r8uj4t0 .rich-table-cell>:first-child{margin-top:0}.r8uj4t0 .rich-table-cell>:last-child{margin-bottom:0}.r8uj4t0 .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;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}.r8uj4t0 .rich-table-cell-header:last-child{border-right:none}.r8uj4t0 .rich-table-cell-header .rich-paragraph{margin:0;padding:0;line-height:inherit}.r8uj4t0 .rich-table-cell-header>:first-child{margin-top:0}.r8uj4t0 .rich-table-cell-header>:last-child{margin-bottom:0}.r8uj4t0 img{max-width:100%;height:auto;border-radius:var(--rc-radius-md)}.r8uj4t0 .rich-spoiler{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] .rich-spoiler{background-color:color-mix(in srgb,var(--rc-text) 30%,transparent);color:inherit;user-select:auto;cursor:text}.r8uj4t0 .rich-spoiler:hover,.r8uj4t0 .rich-spoiler-revealed{background-color:transparent;color:inherit;user-select:auto}.r8uj4t0 .rich-tag{display:inline-block;border-radius:999px;padding-inline:.75em;font-size:var(--rc-font-size-small);line-height:1.6;vertical-align:baseline}.r8uj4t0 .rich-ruby{ruby-position:over;ruby-align:center}.r8uj4t0 .rich-ruby-rt{font-size:.58em;line-height:1;color:var(--rc-text-secondary);user-select:none}[contenteditable=true] .rich-ruby[data-ruby]{position:relative;display:inline-block;padding-top:.72em;line-height:1.2}[contenteditable=true] .rich-ruby[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}.r8uj4t0 .rich-footnote{vertical-align:super;font-size:.8em}.r8uj4t0 .rich-footnote-ref{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}.r8uj4t0 .rich-footnote-ref:hover{filter:brightness(.96)}.r8uj4t0 .rich-footnote-highlight{animation:r8uj4t2 1.2s ease-out}.r8uj4t0 .rich-footnote-ref-wrapper{position:relative;display:inline}.r8uj4t0 .rich-footnote-section{margin-top:var(--rc-space-lg)}.r8uj4t0 .rich-footnote-section-divider{border:none;border-top:1px solid var(--rc-border);margin:var(--rc-space-lg) 0 var(--rc-space-md)}.r8uj4t0 .rich-footnote-section-list{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}.r8uj4t0 .rich-footnote-section-item{margin-bottom:var(--rc-space-sm);padding-left:var(--rc-space-xs)}.r8uj4t0 .rich-footnote-back-ref{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)}.r8uj4t0 .rich-footnote-back-ref:hover{opacity:.7}.r8uj4t0 .rich-footnote-section-item-edit{display:flex;align-items:center;gap:var(--rc-space-sm);list-style-type:none}.r8uj4t0 .rich-footnote-section-item-num{flex-shrink:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-small);font-weight:600;min-width:1.5em}.r8uj4t0 .rich-footnote-section-item-input{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}.r8uj4t0 .rich-footnote-section-item-input:focus{border-color:var(--rc-accent)}.r8uj4t0 .rich-footnote-section-item-remove{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}.r8uj4t0 .rich-footnote-section-item-remove:hover{color:#ef4444;background-color:#ef44441a}.rich-drag-handle{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}.rich-drag-handle:hover{opacity:1;background-color:var(--rc-fill-secondary)}.rich-drag-handle:active{cursor:grabbing}.rich-drop-indicator{position:absolute;height:2px;background-color:var(--rc-accent);border-radius:1px;pointer-events:none;z-index:10}.r8uj4t0 .rich-alert{margin:2em 0;padding:0 1em;background-color:transparent;border:none;border-radius:0}.r8uj4t0>*:first-child,.r8uj4t0 .rich-editor__content>*:first-child{margin-top:0}.r8uj4t0>*:last-child,.r8uj4t0 .rich-editor__content>*:last-child{margin-bottom:0}@supports (animation-timeline: view()){.r8uj4t0 .rich-text-highlight{--rc-hl-highlighted: 0;animation:r8uj4t1 steps(1) both;animation-timeline:view();animation-range:entry 100% cover 10%}}.v10dui0{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.75;color:var(--rc-text)}.v10dui0 .rich-paragraph{margin-top:1.5em;margin-bottom:1.5em}.v10dui0 .rich-heading-h1{color:var(--rc-text);font-weight:800;font-size:3em;margin-top:0;margin-bottom:.8333333333333334em;line-height:1}.v10dui0 .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}.v10dui0 .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}.v10dui0 .rich-heading-h4{color:var(--rc-text);font-weight:600;margin-top:2em;margin-bottom:.5em;line-height:1.5625}.v10dui0 .rich-heading-h2+*,.v10dui0 .rich-heading-h3+*,.v10dui0 .rich-heading-h4+*{margin-top:0}.v10dui0 .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:"“""”""‘""’"}.v10dui0 .rich-quote .rich-paragraph:first-of-type:before{content:open-quote}.v10dui0 .rich-quote .rich-paragraph:last-of-type:after{content:close-quote}.v10dui0 .rich-quote .rich-paragraph:first-child{margin-top:0}.v10dui0 .rich-quote .rich-paragraph:last-child{margin-bottom:0}.v10dui0 .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)}.v10dui0 .rich-text-code:before,.v10dui0 .rich-text-code:after{content:"`";color:var(--rc-text-secondary);opacity:.5}.v10dui0 .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}.v10dui0 .rich-code-block pre{padding:1em 1.5em;margin:0}.v10dui0 .rich-list-ul,.v10dui0 .rich-list-ol{margin-top:1.5em;margin-bottom:1.5em;padding-left:1.75em}.v10dui0 .rich-list-item{margin-top:.75em;margin-bottom:.75em;padding-left:.5em}.v10dui0 .rich-list-item .rich-paragraph{margin-top:1em;margin-bottom:1em}.v10dui0 .rich-list-item>.rich-paragraph:first-child{margin-top:1.5em}.v10dui0 .rich-list-item>.rich-paragraph:last-child{margin-bottom:1.5em}.v10dui0 .rich-list-ul .rich-list-ul,.v10dui0 .rich-list-ul .rich-list-ol,.v10dui0 .rich-list-ol .rich-list-ul,.v10dui0 .rich-list-ol .rich-list-ol{margin-top:1em;margin-bottom:1em}.v10dui0 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.5}.v10dui0 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.v10dui0 .rich-image{margin-top:2em;margin-bottom:2em}.v10dui0 .rich-image>*{margin-top:0;margin-bottom:0}.v10dui0 .rich-image figcaption{color:var(--rc-text-secondary);font-size:.875em;line-height:1.5;margin-top:1em}.v10dui0 .rich-hr{border-color:var(--rc-hr-border);border-top-width:1px;width:60px;margin:3.5em auto}.v10dui0 .rich-hr+*{margin-top:0}.v10dui0 .rich-link{font-weight:500;text-decoration:underline}.v10dui0 .rich-banner,.v10dui0 .rich-code-snippet,.v10dui0 .rich-details{margin:2em 0}.v10dui0>*:first-child{margin-top:0}.v10dui0>*:last-child{margin-bottom:0}._14ko36c0{font-size:var(--rc-font-size-base);line-height:var(--rc-line-height)}._14ko36c0 .rich-paragraph{margin-bottom:.6em}._14ko36c0 .rich-heading-h1{font-size:1.35em;font-weight:700;margin-top:.8em;margin-bottom:.3em}._14ko36c0 .rich-heading-h2{font-size:1.2em;font-weight:700;margin-top:.7em;margin-bottom:.25em}._14ko36c0 .rich-heading-h3{font-size:1.1em;font-weight:600;margin-top:.6em;margin-bottom:.2em}._14ko36c0 .rich-heading-h4{font-size:1em;font-weight:600;margin-top:.5em;margin-bottom:.15em}._14ko36c0 .rich-heading-h5{font-size:.9em;font-weight:600;margin-top:.45em;margin-bottom:.1em}._14ko36c0 .rich-heading-h6{font-size:.85em;font-weight:600;margin-top:.4em;margin-bottom:.1em}._14ko36c0 .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}._14ko36c0 .rich-quote:before{width:3px}._14ko36c0 .rich-list-ol,._14ko36c0 .rich-list-ul{margin-bottom:.6em;padding-left:var(--rc-space-md)}._14ko36c0 .rich-list-item{margin-bottom:.1em}._14ko36c0 .rich-code-block{margin:var(--rc-space-sm) 0;border-radius:var(--rc-radius-sm);font-size:var(--rc-font-size-small)}._14ko36c0 .rich-code-block pre{padding:var(--rc-space-sm)}._14ko36c0 .line:before{display:none!important}._14ko36c0 .rich-table{margin:var(--rc-space-sm) 0;font-size:var(--rc-font-size-small)}._14ko36c0 .rich-table-cell,._14ko36c0 .rich-table-cell-header{padding:var(--rc-space-xs) var(--rc-space-sm)}._14ko36c0 .rich-image{margin:var(--rc-space-sm) 0}._14ko36c0 .rich-image figcaption{font-size:var(--rc-font-size-small)}._14ko36c0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}._14ko36c0 .rich-alert{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:var(--rc-space-lg);margin:var(--rc-space-sm) 0}._14ko36c0 .rich-katex-block{padding:var(--rc-space-sm) 0;margin:var(--rc-space-sm) 0}.ys4fw90{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.8;color:var(--rc-text)}.ys4fw90>.rich-paragraph,.ys4fw90 .rich-editor__content>.rich-paragraph,.ys4fw90 .rich-content__body>.rich-paragraph{margin-top:1.25em;margin-bottom:1.25em;line-height:1.8}.ys4fw90>.rich-paragraph:first-of-type,.ys4fw90 .rich-editor__content>.rich-paragraph:first-of-type,.ys4fw90 .rich-content__body>.rich-paragraph:first-of-type{margin-top:0;margin-bottom:2rem}.ys4fw90>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.ys4fw90 .rich-editor__content>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.ys4fw90 .rich-content__body>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child{margin-inline-start:2rem}.ys4fw90>.rich-paragraph:first-of-type:first-letter,.ys4fw90 .rich-content__body>.rich-paragraph:first-of-type:first-letter{float:left;font-size:2.4em;margin-right:.2em;line-height:1}.ys4fw90 .rich-editor__content>.rich-paragraph:first-of-type:first-letter{font-size:1.5em;font-weight:700;color:var(--rc-accent)}.ys4fw90>.rich-paragraph:last-child,.ys4fw90 .rich-editor__content>.rich-paragraph:last-child,.ys4fw90 .rich-content__body>.rich-paragraph:last-child{margin-bottom:0}.ys4fw90 .rich-text-bold{font-family:var(--rc-font-family);font-weight:600;color:var(--rc-text)}.ys4fw90 .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)}.ys4fw90 .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)}.ys4fw90 .rich-heading-h2+*{margin-top:0}.ys4fw90 .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)}.ys4fw90 .rich-heading-h3+*{margin-top:0}.ys4fw90 .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)}.ys4fw90 .rich-heading-h4+*{margin-top:0}.ys4fw90 .rich-heading-h5{font-size:1em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.ys4fw90 .rich-heading-h5+*{margin-top:0}.ys4fw90 .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}.ys4fw90 .rich-heading-h6+*{margin-top:0}.ys4fw90 .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}.ys4fw90 .rich-quote:before{display:none}.ys4fw90 .rich-quote .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.ys4fw90 .rich-link{font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s ease}.ys4fw90 .rich-link:hover{text-decoration-thickness:2px}.ys4fw90 .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)}.ys4fw90 .rich-list-ol,.ys4fw90 .rich-list-ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.ys4fw90 .rich-list-ol{list-style-type:decimal}.ys4fw90 .rich-list-ul{list-style-type:disc}.ys4fw90 .rich-list-item{margin-top:.5em;margin-bottom:.5em;padding-left:.375em}.ys4fw90 .rich-list-item::marker{color:var(--rc-text-secondary)}.ys4fw90 .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}.ys4fw90 .rich-code-block pre{padding:.8571429em 1.1428571em;margin:0}.ys4fw90 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.ys4fw90 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.ys4fw90 .rich-table .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.ys4fw90 .rich-image{margin-top:2em;margin-bottom:2em}.ys4fw90 .rich-image img{border-radius:var(--rc-radius-md)}.ys4fw90 .rich-image figcaption{font-size:.875em;line-height:1.4285714;margin-top:.8571429em;color:var(--rc-text-secondary);text-align:center}.ys4fw90 .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}.ys4fw90 .rich-katex-block{margin-top:1.6em;margin-bottom:1.6em;overflow-x:auto;padding:1em 0}.ys4fw90 .rich-spoiler{border-radius:var(--rc-radius-sm);padding-inline:.25em}.ys4fw90>*:first-child{margin-top:0}.ys4fw90>*:last-child{margin-bottom:0}@keyframes _1x58dbf0{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes _1x58dbf6{to{transform:rotate(360deg)}}.rich-image-upload-dragging{position:relative;border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-accent) 6%,transparent)}.rich-image-upload-dragging .rich-editor__content{outline:2px dashed color-mix(in srgb,var(--rc-accent) 48%,transparent);outline-offset:-2px}._1x58dbf1{position:absolute;right:.75rem;bottom:.75rem;z-index:25;display:flex;flex-direction:column;align-items:flex-end;gap:.375rem;pointer-events:none}._1x58dbf2{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .625rem;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border);background-color:color-mix(in srgb,var(--rc-bg) 95%,transparent);color:var(--rc-text);font-size:var(--rc-font-size-xs);line-height:1.2;box-shadow:var(--rc-shadow-top-bar);animation:_1x58dbf0 .12s ease-out}._1x58dbf4{border-color:color-mix(in srgb,var(--rc-accent) 35%,transparent)}._1x58dbf5{border-color:color-mix(in srgb,var(--rc-alert-caution) 45%,transparent);color:var(--rc-alert-caution)}._1x58dbf7{width:12px;height:12px;border-radius:50%;border:2px solid color-mix(in srgb,var(--rc-text-secondary) 35%,transparent);border-top-color:color-mix(in srgb,var(--rc-text) 65%,transparent);animation:_1x58dbf6 .75s linear infinite}._1x58dbf8._1x58dbf8{padding:0;gap:0;width:min(560px,calc(100vw - 2rem));overflow:hidden}._1x58dbf9{padding:.875rem 1rem .75rem;border-bottom:1px solid var(--rc-border)}._1x58dbfa{font-size:var(--rc-font-size-md);font-weight:600;color:var(--rc-text)}._1x58dbfb{display:flex;flex-direction:column;gap:.875rem;padding:.875rem 1rem}._1x58dbfc{display:flex;align-items:center;gap:.5rem}._1x58dbfd{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--rc-radius-md);border:1.5px dashed var(--rc-border);min-height:190px;padding:1.2rem;color:var(--rc-text-secondary);cursor:pointer;transition:border-color .15s ease,background-color .15s ease,color .15s ease}._1x58dbfd:hover{border-color:color-mix(in srgb,var(--rc-accent) 35%,transparent);background-color:color-mix(in srgb,var(--rc-accent) 6%,transparent);color:var(--rc-text)}._1x58dbff{border-color:color-mix(in srgb,var(--rc-accent) 55%,transparent);background-color:color-mix(in srgb,var(--rc-accent) 8%,transparent);color:var(--rc-text);transform:scale(1.01)}._1x58dbfg{cursor:progress;opacity:.9}._1x58dbfh{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-text) 6%,transparent)}._1x58dbfi{font-size:var(--rc-font-size-sm);font-weight:600;color:var(--rc-text)}._1x58dbfj{font-size:var(--rc-font-size-xs);color:var(--rc-text-secondary);text-align:center}._1x58dbfk{display:none}._1x58dbfl{display:flex;flex-direction:column;align-items:center;gap:.5rem}._1x58dbfm{display:inline-flex;align-items:center;gap:.375rem;font-size:var(--rc-font-size-sm);color:var(--rc-text)}._1x58dbfn{display:flex;align-items:center;gap:.5rem}._1x58dbfo{width:100%;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border);background-color:var(--rc-bg);color:var(--rc-text);height:34px;padding:0 .625rem;font-size:var(--rc-font-size-sm);outline:none;transition:border-color .15s ease}._1x58dbfo:focus{border-color:color-mix(in srgb,var(--rc-accent) 50%,transparent)}._1x58dbfo::placeholder{color:var(--rc-text-secondary)}._1x58dbfp{border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:hidden;background-color:color-mix(in srgb,var(--rc-text) 2%,transparent)}._1x58dbfq{display:block;width:100%;max-height:220px;object-fit:cover}._1x58dbfr{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--rc-font-size-xs);color:var(--rc-text-secondary)}._1x58dbfs{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-top:1px solid var(--rc-border);background-color:color-mix(in srgb,var(--rc-text) 2%,transparent);padding:.65rem 1rem}.b94s950{position:relative;max-width:var(--rc-max-width);margin:0 auto;flex:1;min-height:0;width:100%}.b94s951{outline:none;min-height:100px;width:100%;padding:var(--ce-padding-top, 12px) var(--rc-space-md) 12px var(--rc-space-md)}.b94s952{position:absolute;top:var(--ce-padding-top, 12px);left:var(--rc-space-md);color:var(--rc-text-secondary);pointer-events:none;user-select:none}.r8uj4t0 .rich-katex-inline{display:inline;padding:0 2px;vertical-align:middle}.r8uj4t0 .rich-katex-block{display:block;text-align:center;padding:var(--rc-space-md) 0;overflow-x:auto;margin:var(--rc-space-md) 0}.r8uj4t0 .rich-katex-fallback{font-family:var(--rc-font-mono);font-size:.9em;color:var(--rc-code-text);background-color:var(--rc-code-bg);padding:2px 6px;border-radius:var(--rc-radius-sm)}.r8uj4t0 .rich-details{margin:var(--rc-space-md) 0;border:none;background-color:transparent;interpolate-size:allow-keywords}.r8uj4t0 .rich-details-summary{display:flex;align-items:flex-start;gap:var(--rc-space-sm);cursor:pointer;user-select:none;padding:var(--rc-space-xs) 0;color:var(--rc-text);font-weight:500;font-size:1em;line-height:var(--rc-line-height);list-style:none;outline:none;border-radius:var(--rc-radius-sm);transition:opacity .2s ease,color .2s ease,box-shadow .2s ease}.r8uj4t0 .rich-details-summary:hover{opacity:.82}.r8uj4t0 .rich-details-summary:focus-visible{box-shadow:0 0 0 2px var(--rc-accent-light)}.r8uj4t0 .rich-details-summary::-webkit-details-marker{display:none}.r8uj4t0 .rich-details-summary::marker{content:"";display:none}.r8uj4t0 .rich-details-summary-text{flex:1;min-width:0}.r8uj4t0 .rich-details-chevron{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;position:relative;top:.125rem;flex-shrink:0;color:var(--rc-text-tertiary);transform-origin:center;transition:transform .35s cubic-bezier(.4,0,.2,1),color .2s ease}.r8uj4t0 .rich-details-summary:hover .rich-details-chevron{color:var(--rc-text-secondary)}.r8uj4t0 .rich-details[open] .rich-details-chevron{color:var(--rc-accent);transform:rotate(90deg)}.r8uj4t0 .rich-details::details-content{display:block;height:0;overflow:hidden;opacity:0;content-visibility:hidden;transition:height .4s cubic-bezier(.4,0,.2,1),opacity .4s cubic-bezier(.4,0,.2,1),content-visibility .4s cubic-bezier(.4,0,.2,1) allow-discrete}.r8uj4t0 .rich-details[open]::details-content{height:auto;opacity:1;content-visibility:visible}.r8uj4t0 .rich-details-content{margin-top:var(--rc-space-xs);padding:var(--rc-space-sm) var(--rc-space-xl);color:var(--rc-text-secondary);background-color:color-mix(in srgb,var(--rc-accent) 6%,var(--rc-bg-secondary));border-radius:var(--rc-radius-md)}.r8uj4t0 .rich-details-content>.rich-paragraph:first-child{margin-top:0}.r8uj4t0 .rich-details-content>.rich-paragraph:last-child{margin-bottom:0}.r8uj4t0 .rich-grid-container{position:relative;margin:var(--rc-space-md) 0}.r8uj4t0 .rich-grid-toolbar{position:absolute;top:-36px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:2px;padding:4px 6px;border-radius:var(--rc-radius-md);pointer-events:none;background:var(--rc-bg);border:1px solid var(--rc-border);box-shadow:var(--rc-shadow-top-bar);z-index:10;user-select:none;white-space:nowrap;opacity:0;transition:opacity .15s ease}.r8uj4t0 .rich-grid-container:hover .rich-grid-toolbar,.r8uj4t0 .rich-grid-container:focus-within .rich-grid-toolbar{opacity:1;pointer-events:auto}.r8uj4t0 .rich-grid-toolbar-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--rc-text-secondary);flex-shrink:0}.r8uj4t0 .rich-grid-col-btn{display:flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:var(--rc-radius-sm);border:none;background:transparent;cursor:pointer;font-size:12px;font-weight:500;color:var(--rc-text-secondary);line-height:1;transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-grid-col-btn:hover{background-color:var(--rc-fill-secondary);color:var(--rc-text)}.r8uj4t0 .rich-grid-col-btn-active{background:var(--rc-fill);font-weight:600;color:var(--rc-text)}.r8uj4t0 .rich-grid-toolbar-divider{width:1px;height:16px;background:var(--rc-border);margin:0 2px;flex-shrink:0}.r8uj4t0 .rich-grid-action-btn{display:flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:var(--rc-radius-sm);border:none;background:transparent;cursor:pointer;color:var(--rc-text-secondary);transition:color .15s ease,background-color .15s ease}.r8uj4t0 .rich-grid-action-btn:hover{background-color:var(--rc-fill-secondary);color:var(--rc-text)}.r8uj4t0 .rich-grid-inner{display:grid;gap:var(--rc-space-md)}.r8uj4t0 .rich-grid-cell{min-width:0}.r8uj4t0 .rich-grid-cell-editable{outline:none}
|
package/dist/static-entry.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { LinkFavicon } from './components/LinkFavicon';
|
|
2
2
|
export type { RubyRendererProps } from './components/renderers/RubyRenderer';
|
|
3
3
|
export { RubyRenderer } from './components/renderers/RubyRenderer';
|
|
4
|
+
export type { TagRendererProps } from './components/renderers/TagRenderer';
|
|
5
|
+
export { getTagBgColor, TagRenderer } from './components/renderers/TagRenderer';
|
|
4
6
|
export type { RendererKey } from './components/RendererWrapper';
|
|
5
7
|
export { createRendererDecoration, RendererWrapper } from './components/RendererWrapper';
|
|
6
8
|
export { getVariantClass } from './components/utils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static-entry.d.ts","sourceRoot":"","sources":["../src/static-entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnF,YAAY,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,wCAAwC,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACzF,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"static-entry.d.ts","sourceRoot":"","sources":["../src/static-entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnF,YAAY,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,wCAAwC,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACzF,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC"}
|
package/dist/static-entry.mjs
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { L, P, u } from "./PresentDialogContext-DmwCjSHw.js";
|
|
2
2
|
import { R } from "./RubyRenderer-DbeobSoH.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { m as getTagBgColor } from "./theme-CYsyGmCL.js";
|
|
5
|
+
import { N, n, o, u as u2, p } from "./theme-CYsyGmCL.js";
|
|
6
|
+
import { F, R as R2, a, c, u as u3, b, d, e, f, g } from "./KaTeXRenderer-C8jv_5xr.js";
|
|
7
|
+
import { a as a2, c as c2, g as g2, n as n2, r } from "./shared.css-DNuMYx6Q.js";
|
|
8
|
+
import { C, i, j, k, u as u4 } from "./config-DcR_yktp.js";
|
|
7
9
|
import { articleTheme, commentTheme, noteTheme, vars } from "@haklex/rich-style-token/styles";
|
|
10
|
+
function TagRenderer({ text }) {
|
|
11
|
+
return /* @__PURE__ */ jsx("span", { className: "rich-tag", style: { backgroundColor: getTagBgColor(text) }, children: text });
|
|
12
|
+
}
|
|
8
13
|
export {
|
|
9
14
|
C as ColorSchemeProvider,
|
|
10
15
|
F as FootnoteDefinitionsProvider,
|
|
@@ -14,26 +19,28 @@ export {
|
|
|
14
19
|
R2 as RendererConfigProvider,
|
|
15
20
|
a as RendererWrapper,
|
|
16
21
|
R as RubyRenderer,
|
|
17
|
-
|
|
22
|
+
TagRenderer,
|
|
23
|
+
i as allNodes,
|
|
18
24
|
articleTheme,
|
|
19
25
|
a2 as articleVariant,
|
|
20
|
-
|
|
26
|
+
j as builtinNodes,
|
|
21
27
|
commentTheme,
|
|
22
28
|
c2 as commentVariant,
|
|
23
29
|
c as createRendererDecoration,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
k as customNodes,
|
|
31
|
+
n as editorTheme,
|
|
32
|
+
o as extractTextContent,
|
|
33
|
+
getTagBgColor,
|
|
27
34
|
g2 as getVariantClass,
|
|
28
35
|
noteTheme,
|
|
29
|
-
|
|
36
|
+
n2 as noteVariant,
|
|
30
37
|
r as richContent,
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
u4 as useColorScheme,
|
|
39
|
+
u3 as useFootnoteContent,
|
|
33
40
|
b as useFootnoteDefinitions,
|
|
34
41
|
d as useFootnoteDisplayNumber,
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
u2 as useNestedContentRenderer,
|
|
43
|
+
p as useOptionalNestedContentRenderer,
|
|
37
44
|
u as usePresentDialog,
|
|
38
45
|
e as useRendererConfig,
|
|
39
46
|
f as useRendererMode,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { DecoratorNode, createCommand, $insertNodes, $getSelection, $isRangeSelection, $getNodeByKey, ElementNode } from "lexical";
|
|
4
|
+
import { DecoratorNode, createCommand, $insertNodes, $getSelection, $isRangeSelection, $getNodeByKey, ElementNode, TextNode } from "lexical";
|
|
5
5
|
import { createContext, use, createElement, useState, useCallback, useEffect, useMemo } from "react";
|
|
6
6
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
7
7
|
import { a as RendererWrapper, c as createRendererDecoration, h as FootnoteStaticRenderer, j as decodeThumbHash, K as KaTeXRenderer } from "./KaTeXRenderer-C8jv_5xr.js";
|
|
8
|
-
import { OctagonAlert, TriangleAlert, MessageSquareWarning, Lightbulb, Info, ImageIcon, Sigma, Workflow } from "lucide-react";
|
|
8
|
+
import { OctagonAlert, TriangleAlert, MessageSquareWarning, Lightbulb, Info, ImageIcon, Sigma, Workflow, Tag } from "lucide-react";
|
|
9
9
|
const NestedContentRendererContext = createContext(
|
|
10
10
|
null
|
|
11
11
|
);
|
|
@@ -849,6 +849,118 @@ class SpoilerNode extends ElementNode {
|
|
|
849
849
|
function $createSpoilerNode() {
|
|
850
850
|
return new SpoilerNode();
|
|
851
851
|
}
|
|
852
|
+
function stringToHue(str) {
|
|
853
|
+
let hash = 0;
|
|
854
|
+
for (let i = 0; i < str.length; i++) {
|
|
855
|
+
hash = str.charCodeAt(i) + ((hash << 5) - hash);
|
|
856
|
+
}
|
|
857
|
+
const hue = hash % 360;
|
|
858
|
+
return hue < 0 ? hue + 360 : hue;
|
|
859
|
+
}
|
|
860
|
+
function getTagBgColor(text) {
|
|
861
|
+
const hue = stringToHue(text);
|
|
862
|
+
const sat = 70 + hue % 21;
|
|
863
|
+
const light = 40 + hue % 31;
|
|
864
|
+
const bgSat = sat > 30 ? sat - 30 : 0;
|
|
865
|
+
const bgLight = light < 80 ? light + 20 : 100;
|
|
866
|
+
return `hsla(${hue}, ${bgSat}%, ${bgLight}%, 0.7)`;
|
|
867
|
+
}
|
|
868
|
+
const _TagNode = class _TagNode extends TextNode {
|
|
869
|
+
static getType() {
|
|
870
|
+
return "tag";
|
|
871
|
+
}
|
|
872
|
+
static clone(node) {
|
|
873
|
+
return new _TagNode(node.__text, node.__key);
|
|
874
|
+
}
|
|
875
|
+
static importDOM() {
|
|
876
|
+
return {
|
|
877
|
+
span: () => ({
|
|
878
|
+
conversion: (domNode) => {
|
|
879
|
+
if (!(domNode instanceof HTMLElement)) return null;
|
|
880
|
+
if (!domNode.classList.contains("rich-tag")) return null;
|
|
881
|
+
return {
|
|
882
|
+
node: $createTagNode(domNode.textContent ?? "")
|
|
883
|
+
};
|
|
884
|
+
},
|
|
885
|
+
priority: 2
|
|
886
|
+
})
|
|
887
|
+
};
|
|
888
|
+
}
|
|
889
|
+
constructor(text, key) {
|
|
890
|
+
super(text, key);
|
|
891
|
+
}
|
|
892
|
+
createDOM(config) {
|
|
893
|
+
const element = super.createDOM(config);
|
|
894
|
+
element.classList.add("rich-tag");
|
|
895
|
+
element.style.backgroundColor = getTagBgColor(this.getTextContent());
|
|
896
|
+
return element;
|
|
897
|
+
}
|
|
898
|
+
updateDOM(prevNode, dom, config) {
|
|
899
|
+
const updated = super.updateDOM(prevNode, dom, config);
|
|
900
|
+
dom.classList.add("rich-tag");
|
|
901
|
+
if (prevNode.__text !== this.__text) {
|
|
902
|
+
dom.style.backgroundColor = getTagBgColor(this.__text);
|
|
903
|
+
}
|
|
904
|
+
return updated;
|
|
905
|
+
}
|
|
906
|
+
exportDOM(_editor) {
|
|
907
|
+
const element = document.createElement("span");
|
|
908
|
+
element.className = "rich-tag";
|
|
909
|
+
element.style.backgroundColor = getTagBgColor(this.getTextContent());
|
|
910
|
+
element.textContent = this.getTextContent();
|
|
911
|
+
return { element };
|
|
912
|
+
}
|
|
913
|
+
getText() {
|
|
914
|
+
return this.getTextContent();
|
|
915
|
+
}
|
|
916
|
+
canInsertTextBefore() {
|
|
917
|
+
return false;
|
|
918
|
+
}
|
|
919
|
+
canInsertTextAfter() {
|
|
920
|
+
return false;
|
|
921
|
+
}
|
|
922
|
+
isTextEntity() {
|
|
923
|
+
return true;
|
|
924
|
+
}
|
|
925
|
+
static importJSON(serializedNode) {
|
|
926
|
+
const node = $createTagNode(serializedNode.text ?? "");
|
|
927
|
+
node.setFormat(serializedNode.format ?? 0);
|
|
928
|
+
node.setDetail(serializedNode.detail ?? 0);
|
|
929
|
+
node.setMode(serializedNode.mode ?? "normal");
|
|
930
|
+
node.setStyle(serializedNode.style ?? "");
|
|
931
|
+
return node;
|
|
932
|
+
}
|
|
933
|
+
exportJSON() {
|
|
934
|
+
return {
|
|
935
|
+
...super.exportJSON(),
|
|
936
|
+
type: "tag",
|
|
937
|
+
version: 1
|
|
938
|
+
};
|
|
939
|
+
}
|
|
940
|
+
};
|
|
941
|
+
__publicField(_TagNode, "commandItems", [
|
|
942
|
+
{
|
|
943
|
+
title: "Tag",
|
|
944
|
+
icon: createElement(Tag, { size: 20 }),
|
|
945
|
+
description: "Insert a tag",
|
|
946
|
+
keywords: ["tag", "label", "badge"],
|
|
947
|
+
section: "INLINE",
|
|
948
|
+
placement: ["slash", "toolbar"],
|
|
949
|
+
group: "insert",
|
|
950
|
+
onSelect: (editor, queryString) => {
|
|
951
|
+
editor.update(() => {
|
|
952
|
+
$insertNodes([$createTagNode(queryString || "tag")]);
|
|
953
|
+
});
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
]);
|
|
957
|
+
let TagNode = _TagNode;
|
|
958
|
+
function $createTagNode(text) {
|
|
959
|
+
return new TagNode(text);
|
|
960
|
+
}
|
|
961
|
+
function $isTagNode(node) {
|
|
962
|
+
return node instanceof TagNode;
|
|
963
|
+
}
|
|
852
964
|
const editorTheme = {
|
|
853
965
|
text: {
|
|
854
966
|
bold: "rich-text-bold",
|
|
@@ -900,25 +1012,29 @@ export {
|
|
|
900
1012
|
NestedContentRendererProvider as N,
|
|
901
1013
|
OPEN_IMAGE_UPLOAD_DIALOG_COMMAND as O,
|
|
902
1014
|
SpoilerNode as S,
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
$
|
|
906
|
-
$
|
|
907
|
-
|
|
908
|
-
$
|
|
909
|
-
$
|
|
910
|
-
$
|
|
911
|
-
$
|
|
912
|
-
$
|
|
913
|
-
ALERT_TYPES as
|
|
914
|
-
KaTeXInlineNode as
|
|
915
|
-
MermaidNode as
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
$
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
1015
|
+
TagNode as T,
|
|
1016
|
+
$createMentionNode as a,
|
|
1017
|
+
$createMermaidNode as b,
|
|
1018
|
+
$createTagNode as c,
|
|
1019
|
+
$isImageNode as d,
|
|
1020
|
+
$isKaTeXBlockNode as e,
|
|
1021
|
+
$isKaTeXInlineNode as f,
|
|
1022
|
+
$isMentionNode as g,
|
|
1023
|
+
$isMermaidNode as h,
|
|
1024
|
+
$isTagNode as i,
|
|
1025
|
+
ALERT_TYPES as j,
|
|
1026
|
+
KaTeXInlineNode as k,
|
|
1027
|
+
MermaidNode as l,
|
|
1028
|
+
getTagBgColor as m,
|
|
1029
|
+
editorTheme as n,
|
|
1030
|
+
extractTextContent as o,
|
|
1031
|
+
useOptionalNestedContentRenderer as p,
|
|
1032
|
+
$isAlertQuoteNode as q,
|
|
1033
|
+
AlertRenderer as r,
|
|
1034
|
+
AlertQuoteNode as s,
|
|
1035
|
+
$createKaTeXInlineNode as t,
|
|
1036
|
+
useNestedContentRenderer as u,
|
|
1037
|
+
$createKaTeXBlockNode as v,
|
|
1038
|
+
$createFootnoteNode as w,
|
|
1039
|
+
$createSpoilerNode as x
|
|
924
1040
|
};
|
|
@@ -10,6 +10,7 @@ import { LinkCardRendererProps } from '../components/renderers/LinkCardRenderer'
|
|
|
10
10
|
import { MentionRendererProps } from '../components/renderers/MentionRenderer';
|
|
11
11
|
import { MermaidRendererProps } from '../components/renderers/MermaidRenderer';
|
|
12
12
|
import { RubyRendererProps } from '../components/renderers/RubyRenderer';
|
|
13
|
+
import { TagRendererProps } from '../components/renderers/TagRenderer';
|
|
13
14
|
import { VideoRendererProps } from '../components/renderers/VideoRenderer';
|
|
14
15
|
export interface CodeFile {
|
|
15
16
|
code: string;
|
|
@@ -64,6 +65,8 @@ export interface RendererConfig {
|
|
|
64
65
|
Mermaid?: ComponentType<MermaidRendererProps>;
|
|
65
66
|
/** Custom renderer for ruby annotations */
|
|
66
67
|
Ruby?: ComponentType<RubyRendererProps>;
|
|
68
|
+
/** Custom renderer for inline tag badges */
|
|
69
|
+
Tag?: ComponentType<TagRendererProps>;
|
|
67
70
|
/** Custom renderer for video embeds */
|
|
68
71
|
Video?: ComponentType<VideoRendererProps>;
|
|
69
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-config.d.ts","sourceRoot":"","sources":["../../src/types/renderer-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAEhF,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACxC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,wCAAwC;IACxC,MAAM,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC5C,+DAA+D;IAC/D,SAAS,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAClD,6DAA6D;IAC7D,WAAW,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACtD,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAChD,sDAAsD;IACtD,eAAe,CAAC,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAC9D,0CAA0C;IAC1C,OAAO,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC9C,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAChD,gDAAgD;IAChD,OAAO,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC9C,2CAA2C;IAC3C,OAAO,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC9C,2CAA2C;IAC3C,IAAI,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACxC,uCAAuC;IACvC,KAAK,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC3C"}
|
|
1
|
+
{"version":3,"file":"renderer-config.d.ts","sourceRoot":"","sources":["../../src/types/renderer-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AACpG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAEhF,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACxC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,wCAAwC;IACxC,MAAM,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC5C,+DAA+D;IAC/D,SAAS,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAClD,6DAA6D;IAC7D,WAAW,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACtD,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAChD,sDAAsD;IACtD,eAAe,CAAC,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAC9D,0CAA0C;IAC1C,OAAO,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC9C,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAChD,gDAAgD;IAChD,OAAO,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC9C,2CAA2C;IAC3C,OAAO,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC9C,2CAA2C;IAC3C,IAAI,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACxC,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACtC,uCAAuC;IACvC,KAAK,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag-color.d.ts","sourceRoot":"","sources":["../../src/utils/tag-color.ts"],"names":[],"mappings":"AASA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOlD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haklex/rich-editor",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.72",
|
|
4
4
|
"description": "Core rich text editor based on Lexical",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -46,14 +46,14 @@
|
|
|
46
46
|
],
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@base-ui/react": "^1.1.0",
|
|
49
|
+
"@lexical/code": "npm:lexical-code-no-prism@0.41.0",
|
|
49
50
|
"nanoid": "^5.1.6",
|
|
50
51
|
"thumbhash": "^0.1.1",
|
|
51
|
-
"@haklex/rich-editor-ui": "0.0.
|
|
52
|
-
"@haklex/rich-headless": "0.0.
|
|
53
|
-
"@haklex/rich-style-token": "0.0.
|
|
52
|
+
"@haklex/rich-editor-ui": "0.0.72",
|
|
53
|
+
"@haklex/rich-headless": "0.0.72",
|
|
54
|
+
"@haklex/rich-style-token": "0.0.72"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
56
|
-
"@lexical/code": "^0.41.0",
|
|
57
57
|
"@lexical/extension": "^0.41.0",
|
|
58
58
|
"@lexical/link": "^0.41.0",
|
|
59
59
|
"@lexical/list": "^0.41.0",
|
|
@@ -77,7 +77,6 @@
|
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
79
|
"@base-ui/react": "^1.1.0",
|
|
80
|
-
"@lexical/code": "^0.41.0",
|
|
81
80
|
"@lexical/extension": "^0.41.0",
|
|
82
81
|
"@lexical/link": "^0.41.0",
|
|
83
82
|
"@lexical/list": "^0.41.0",
|