@haklex/rich-renderer-katex 0.0.65 → 0.0.66

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 CHANGED
@@ -1,40 +1,58 @@
1
1
  # @haklex/rich-renderer-katex
2
2
 
3
- KaTeX 数学公式编辑节点。
3
+ KaTeX math expression edit nodes for inline and block-level mathematical typesetting.
4
4
 
5
- ## 安装
5
+ > **Note:** This package only provides edit nodes. Static rendering of KaTeX expressions is built into `@haklex/rich-editor` directly.
6
+
7
+ ## Installation
6
8
 
7
9
  ```bash
8
- pnpm add @haklex/rich-renderer-katex @haklex/rich-editor katex
10
+ pnpm add @haklex/rich-renderer-katex
9
11
  ```
10
12
 
11
- ## 导出
12
-
13
- ```ts
14
- export { KaTeXBlockEditNode } from './KaTeXBlockEditNode'
15
- export { KaTeXInlineEditNode } from './KaTeXInlineEditNode'
16
- export { KaTeXEditDecorator } from './KaTeXEditDecorator'
13
+ ## Peer Dependencies
17
14
 
18
- export const katexEditNodes: Array<Klass<LexicalNode>>
19
- ```
15
+ | Package | Version |
16
+ | --- | --- |
17
+ | `lexical` | `^0.41.0` |
18
+ | `@lexical/react` | `^0.41.0` |
19
+ | `react` | `>=19` |
20
+ | `react-dom` | `>=19` |
21
+ | `katex` | `>=0.16.0` (optional) |
20
22
 
21
- ## 使用
23
+ ## Usage
22
24
 
23
25
  ```tsx
24
26
  import { katexEditNodes } from '@haklex/rich-renderer-katex'
25
- import { RichEditor } from '@haklex/rich-editor'
26
27
 
27
- <RichEditor extraNodes={[...katexEditNodes]} />
28
+ // Register edit nodes in your editor config
29
+ const editorConfig = {
30
+ nodes: [
31
+ ...katexEditNodes,
32
+ // ...other nodes
33
+ ],
34
+ }
28
35
  ```
29
36
 
30
- ## 依赖
37
+ ## Exports
31
38
 
32
- ```json
33
- {
34
- "@haklex/rich-editor": "workspace:*",
35
- "katex": ">=0.16.0"
36
- }
37
- ```
39
+ ### Nodes and Decorators
40
+
41
+ - `KaTeXBlockEditNode` — Edit node for block-level math expressions
42
+ - `KaTeXInlineEditNode` — Edit node for inline math expressions
43
+ - `KaTeXEditDecorator` — Shared edit decorator for KaTeX rendering
44
+ - `katexEditNodes` — Array of all KaTeX edit nodes for convenient registration
45
+
46
+ ### Sub-path Exports
47
+
48
+ | Path | Description |
49
+ | --- | --- |
50
+ | `@haklex/rich-renderer-katex` | Full exports |
51
+ | `@haklex/rich-renderer-katex/style.css` | Stylesheet |
52
+
53
+ ## Part of Haklex
54
+
55
+ This package is part of the [Haklex](../../README.md) rich editor ecosystem.
38
56
 
39
57
  ## License
40
58
 
@@ -1,4 +1,4 @@
1
- import { KaTeXBlockNode, SerializedKaTeXBlockNode } from '@haklex/rich-editor';
1
+ import { KaTeXBlockNode, SerializedKaTeXBlockNode } from '@haklex/rich-editor/nodes';
2
2
  import { EditorConfig, LexicalEditor } from 'lexical';
3
3
  import { ReactElement } from 'react';
4
4
  export declare class KaTeXBlockEditNode extends KaTeXBlockNode {
@@ -1 +1 @@
1
- {"version":3,"file":"KaTeXBlockEditNode.d.ts","sourceRoot":"","sources":["../src/KaTeXBlockEditNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAEd,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAKzC,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB;IAI1D,MAAM,CAAC,UAAU,CACf,cAAc,EAAE,wBAAwB,GACvC,kBAAkB;IAIrB,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAYtE"}
1
+ {"version":3,"file":"KaTeXBlockEditNode.d.ts","sourceRoot":"","sources":["../src/KaTeXBlockEditNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1F,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAK1C,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB;IAI1D,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,wBAAwB,GAAG,kBAAkB;IAI/E,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAYtE"}
@@ -1,9 +1,9 @@
1
1
  import { ReactElement } from 'react';
2
2
  interface KaTeXEditDecoratorProps {
3
- nodeKey: string;
4
- equation: string;
5
- displayMode: boolean;
6
3
  children: ReactElement;
4
+ displayMode: boolean;
5
+ equation: string;
6
+ nodeKey: string;
7
7
  }
8
8
  export declare function KaTeXEditDecorator({ nodeKey, equation, displayMode, children, }: KaTeXEditDecoratorProps): import("react/jsx-runtime").JSX.Element;
9
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"KaTeXEditDecorator.d.ts","sourceRoot":"","sources":["../src/KaTeXEditDecorator.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAUzC,UAAU,uBAAuB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,YAAY,CAAA;CACvB;AASD,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,GACT,EAAE,uBAAuB,2CAoZzB"}
1
+ {"version":3,"file":"KaTeXEditDecorator.d.ts","sourceRoot":"","sources":["../src/KaTeXEditDecorator.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAM1C,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,GACT,EAAE,uBAAuB,2CAwWzB"}
@@ -1,4 +1,4 @@
1
- import { KaTeXInlineNode, SerializedKaTeXInlineNode } from '@haklex/rich-editor';
1
+ import { KaTeXInlineNode, SerializedKaTeXInlineNode } from '@haklex/rich-editor/nodes';
2
2
  import { EditorConfig, LexicalEditor } from 'lexical';
3
3
  import { ReactElement } from 'react';
4
4
  export declare class KaTeXInlineEditNode extends KaTeXInlineNode {
@@ -1 +1 @@
1
- {"version":3,"file":"KaTeXInlineEditNode.d.ts","sourceRoot":"","sources":["../src/KaTeXInlineEditNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEf,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAKzC,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB;IAI5D,MAAM,CAAC,UAAU,CACf,cAAc,EAAE,yBAAyB,GACxC,mBAAmB;IAItB,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAYtE"}
1
+ {"version":3,"file":"KaTeXInlineEditNode.d.ts","sourceRoot":"","sources":["../src/KaTeXInlineEditNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAK1C,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB;IAI5D,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,yBAAyB,GAAG,mBAAmB;IAIjF,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAYtE"}
package/dist/index.mjs CHANGED
@@ -1,11 +1,12 @@
1
- import { $isKaTeXInlineNode, $isKaTeXBlockNode, KaTeXRenderer, KaTeXBlockNode, createRendererDecoration, KaTeXInlineNode } from "@haklex/rich-editor";
1
+ import { $isKaTeXInlineNode, $isKaTeXBlockNode, KaTeXBlockNode, KaTeXInlineNode } from "@haklex/rich-editor/nodes";
2
+ import { KaTeXRenderer, createRendererDecoration } from "@haklex/rich-editor/renderers";
2
3
  import { useState, useRef, useCallback, useEffect, useMemo, createElement } from "react";
3
4
  import { jsxs, jsx } from "react/jsx-runtime";
4
- import { Popover, PopoverTrigger, PopoverPanel, AnimatedTabs } from "@haklex/rich-editor-ui";
5
+ import { Popover, PopoverTrigger, PopoverPanel, AnimatedTabs, ActionButton, ActionBar } from "@haklex/rich-editor-ui";
5
6
  import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
6
7
  import { $getNodeByKey } from "lexical";
7
8
  import { Terminal, Trash2, Check, Copy, RotateCcw, Search } from "lucide-react";
8
- var semanticClassNames = { editWrapper: "rich-katex-edit-wrapper", panel: "rich-katex-editor-panel", header: "rich-katex-editor-header", headerLeft: "rich-katex-editor-header-left", iconWrap: "rich-katex-editor-icon-wrap", title: "rich-katex-editor-title", headerRight: "rich-katex-editor-header-right", mode: "rich-katex-editor-mode", deleteButton: "rich-katex-editor-delete", tabs: "rich-katex-editor-tabs", bodyScrollArea: "rich-katex-editor-body-scroll-area", body: "rich-katex-editor-body", field: "rich-katex-editor-field", label: "rich-katex-editor-label", inputWrap: "rich-katex-editor-input-wrap", textarea: "rich-katex-editor-textarea", inputActions: "rich-katex-editor-input-actions", actionButton: "rich-katex-editor-action-btn", preview: "rich-katex-editor-preview", previewEmpty: "rich-katex-editor-preview-empty", snippetSearchWrap: "rich-katex-editor-snippet-search-wrap", snippetSearchIcon: "rich-katex-editor-snippet-search-icon", snippetSearchInput: "rich-katex-editor-snippet-search-input", snippetGroups: "rich-katex-editor-snippet-groups", snippetGroup: "rich-katex-editor-snippet-group", snippetGroupLabel: "rich-katex-editor-snippet-group-label", snippetList: "rich-katex-editor-snippet-list", snippetButton: "rich-katex-editor-snippet-button", snippetMeta: "rich-katex-editor-snippet-meta", snippetName: "rich-katex-editor-snippet-name", snippetHint: "rich-katex-editor-snippet-hint", snippetPreview: "rich-katex-editor-snippet-preview", snippetsPlaceholder: "rich-katex-editor-snippets-placeholder", footer: "rich-katex-editor-footer", charCount: "rich-katex-editor-charcount", footerActions: "rich-katex-editor-footer-actions", footerButton: "rich-katex-editor-btn", footerButtonPrimary: "rich-katex-editor-btn-primary" };
9
+ var semanticClassNames = { editWrapper: "rich-katex-edit-wrapper", panel: "rich-katex-editor-panel", header: "rich-katex-editor-header", headerLeft: "rich-katex-editor-header-left", iconWrap: "rich-katex-editor-icon-wrap", title: "rich-katex-editor-title", headerRight: "rich-katex-editor-header-right", mode: "rich-katex-editor-mode", deleteButton: "rich-katex-editor-delete", tabs: "rich-katex-editor-tabs", bodyScrollArea: "rich-katex-editor-body-scroll-area", body: "rich-katex-editor-body", field: "rich-katex-editor-field", label: "rich-katex-editor-label", inputWrap: "rich-katex-editor-input-wrap", textarea: "rich-katex-editor-textarea", inputActions: "rich-katex-editor-input-actions", preview: "rich-katex-editor-preview", previewEmpty: "rich-katex-editor-preview-empty", snippetSearchWrap: "rich-katex-editor-snippet-search-wrap", snippetSearchIcon: "rich-katex-editor-snippet-search-icon", snippetSearchInput: "rich-katex-editor-snippet-search-input", snippetGroups: "rich-katex-editor-snippet-groups", snippetGroup: "rich-katex-editor-snippet-group", snippetGroupLabel: "rich-katex-editor-snippet-group-label", snippetList: "rich-katex-editor-snippet-list", snippetButton: "rich-katex-editor-snippet-button", snippetMeta: "rich-katex-editor-snippet-meta", snippetName: "rich-katex-editor-snippet-name", snippetHint: "rich-katex-editor-snippet-hint", snippetPreview: "rich-katex-editor-snippet-preview", snippetsPlaceholder: "rich-katex-editor-snippets-placeholder", footer: "rich-katex-editor-footer", charCount: "rich-katex-editor-charcount" };
9
10
  var editWrapper = "mkenhu0";
10
11
  var panel = "mkenhu1";
11
12
  var header = "mkenhu2";
@@ -23,27 +24,23 @@ var label = "mkenhud";
23
24
  var inputWrap = "mkenhue";
24
25
  var textarea = "mkenhuf";
25
26
  var inputActions = "mkenhug";
26
- var actionButton = "mkenhuh";
27
- var preview = "mkenhui";
28
- var previewEmpty = "mkenhuj";
29
- var snippetSearchWrap = "mkenhuk";
30
- var snippetSearchIcon = "mkenhul";
31
- var snippetSearchInput = "mkenhum";
32
- var snippetGroups = "mkenhun";
33
- var snippetGroup = "mkenhuo";
34
- var snippetGroupLabel = "mkenhup";
35
- var snippetList = "mkenhuq";
36
- var snippetButton = "mkenhur";
37
- var snippetMeta = "mkenhus";
38
- var snippetName = "mkenhut";
39
- var snippetHint = "mkenhuu";
40
- var snippetPreview = "mkenhuv";
41
- var snippetsPlaceholder = "mkenhuw";
42
- var footer = "mkenhux";
43
- var charCount = "mkenhuy";
44
- var footerActions = "mkenhuz";
45
- var footerButton = "mkenhu10";
46
- var footerButtonPrimary = "mkenhu11";
27
+ var preview = "mkenhuh";
28
+ var previewEmpty = "mkenhui";
29
+ var snippetSearchWrap = "mkenhuj";
30
+ var snippetSearchIcon = "mkenhuk";
31
+ var snippetSearchInput = "mkenhul";
32
+ var snippetGroups = "mkenhum";
33
+ var snippetGroup = "mkenhun";
34
+ var snippetGroupLabel = "mkenhuo";
35
+ var snippetList = "mkenhup";
36
+ var snippetButton = "mkenhuq";
37
+ var snippetMeta = "mkenhur";
38
+ var snippetName = "mkenhus";
39
+ var snippetHint = "mkenhut";
40
+ var snippetPreview = "mkenhuu";
41
+ var snippetsPlaceholder = "mkenhuv";
42
+ var footer = "mkenhuw";
43
+ var charCount = "mkenhux";
47
44
  const CURSOR_TOKEN = "__cursor__";
48
45
  const katexSnippets = [
49
46
  {
@@ -140,12 +137,7 @@ function insertSnippetAtSelection(value, template, selectionStart, selectionEnd)
140
137
  selectionEnd: nextCursorPosition
141
138
  };
142
139
  }
143
- const SNIPPET_CATEGORY_ORDER = [
144
- "Basic",
145
- "Greek",
146
- "Operators",
147
- "Structures"
148
- ];
140
+ const SNIPPET_CATEGORY_ORDER = ["Basic", "Greek", "Operators", "Structures"];
149
141
  function KaTeXEditDecorator({
150
142
  nodeKey,
151
143
  equation,
@@ -207,7 +199,7 @@ function KaTeXEditDecorator({
207
199
  const handleCopy = useCallback(() => {
208
200
  navigator.clipboard.writeText(value);
209
201
  setCopied(true);
210
- setTimeout(() => setCopied(false), 2e3);
202
+ setTimeout(setCopied, 2e3, false);
211
203
  }, [value]);
212
204
  const handleReset = useCallback(() => {
213
205
  setValue(equation);
@@ -236,16 +228,11 @@ function KaTeXEditDecorator({
236
228
  },
237
229
  [value]
238
230
  );
239
- const filteredSnippets = useMemo(
240
- () => filterKaTeXSnippets(snippetQuery),
241
- [snippetQuery]
242
- );
231
+ const filteredSnippets = useMemo(() => filterKaTeXSnippets(snippetQuery), [snippetQuery]);
243
232
  const groupedSnippets = useMemo(
244
233
  () => SNIPPET_CATEGORY_ORDER.map((category) => ({
245
234
  category,
246
- items: filteredSnippets.filter(
247
- (snippet) => snippet.category === category
248
- )
235
+ items: filteredSnippets.filter((snippet) => snippet.category === category)
249
236
  })).filter((group) => group.items.length > 0),
250
237
  [filteredSnippets]
251
238
  );
@@ -285,331 +272,230 @@ function KaTeXEditDecorator({
285
272
  /* @__PURE__ */ jsxs(
286
273
  PopoverPanel,
287
274
  {
275
+ className: `${panel} ${semanticClassNames.panel}`,
288
276
  side: "bottom",
289
277
  sideOffset: 8,
290
- className: `${panel} ${semanticClassNames.panel}`,
291
278
  children: [
292
279
  /* @__PURE__ */ jsxs("div", { className: `${header} ${semanticClassNames.header}`, children: [
293
- /* @__PURE__ */ jsxs(
294
- "div",
295
- {
296
- className: `${headerLeft} ${semanticClassNames.headerLeft}`,
297
- children: [
298
- /* @__PURE__ */ jsx(
299
- "div",
300
- {
301
- className: `${iconWrap} ${semanticClassNames.iconWrap}`,
302
- children: /* @__PURE__ */ jsx(Terminal, { size: 12 })
303
- }
304
- ),
305
- /* @__PURE__ */ jsx(
306
- "span",
307
- {
308
- className: `${title} ${semanticClassNames.title}`,
309
- children: "Math Editor"
310
- }
311
- )
312
- ]
313
- }
314
- ),
315
- /* @__PURE__ */ jsxs(
316
- "div",
317
- {
318
- className: `${headerRight} ${semanticClassNames.headerRight}`,
319
- children: [
320
- /* @__PURE__ */ jsx(
321
- "span",
322
- {
323
- className: `${mode} ${semanticClassNames.mode}`,
324
- children: displayMode ? "Block" : "Inline"
325
- }
326
- ),
327
- /* @__PURE__ */ jsx(
328
- "button",
329
- {
330
- className: `${deleteButton} ${semanticClassNames.deleteButton}`,
331
- type: "button",
332
- onClick: handleDelete,
333
- title: "Delete node",
334
- children: /* @__PURE__ */ jsx(Trash2, { size: 14 })
335
- }
336
- )
337
- ]
338
- }
339
- )
280
+ /* @__PURE__ */ jsxs("div", { className: `${headerLeft} ${semanticClassNames.headerLeft}`, children: [
281
+ /* @__PURE__ */ jsx("div", { className: `${iconWrap} ${semanticClassNames.iconWrap}`, children: /* @__PURE__ */ jsx(Terminal, { size: 12 }) }),
282
+ /* @__PURE__ */ jsx("span", { className: `${title} ${semanticClassNames.title}`, children: "Math Editor" })
283
+ ] }),
284
+ /* @__PURE__ */ jsxs("div", { className: `${headerRight} ${semanticClassNames.headerRight}`, children: [
285
+ /* @__PURE__ */ jsx("span", { className: `${mode} ${semanticClassNames.mode}`, children: displayMode ? "Block" : "Inline" }),
286
+ /* @__PURE__ */ jsx(
287
+ "button",
288
+ {
289
+ className: `${deleteButton} ${semanticClassNames.deleteButton}`,
290
+ title: "Delete node",
291
+ type: "button",
292
+ onClick: handleDelete,
293
+ children: /* @__PURE__ */ jsx(Trash2, { size: 14 })
294
+ }
295
+ )
296
+ ] })
340
297
  ] }),
341
298
  /* @__PURE__ */ jsx(
342
299
  AnimatedTabs,
343
300
  {
301
+ className: `${tabs} ${semanticClassNames.tabs}`,
302
+ value: activeTab,
344
303
  tabs: [
345
304
  { id: "editor", label: "Editor" },
346
305
  { id: "snippets", label: "Snippets" }
347
306
  ],
348
- value: activeTab,
349
- onChange: (id) => setActiveTab(id),
350
- className: `${tabs} ${semanticClassNames.tabs}`
307
+ onChange: (id) => setActiveTab(id)
351
308
  }
352
309
  ),
353
- /* @__PURE__ */ jsxs(
354
- "div",
355
- {
356
- className: `${bodyScrollArea} ${semanticClassNames.bodyScrollArea}`,
357
- children: [
358
- activeTab === "editor" && /* @__PURE__ */ jsxs("div", { className: `${body} ${semanticClassNames.body}`, children: [
359
- /* @__PURE__ */ jsxs(
360
- "div",
310
+ /* @__PURE__ */ jsxs("div", { className: `${bodyScrollArea} ${semanticClassNames.bodyScrollArea}`, children: [
311
+ activeTab === "editor" && /* @__PURE__ */ jsxs("div", { className: `${body} ${semanticClassNames.body}`, children: [
312
+ /* @__PURE__ */ jsxs("div", { className: `${field} ${semanticClassNames.field}`, children: [
313
+ /* @__PURE__ */ jsx("label", { className: `${label} ${semanticClassNames.label}`, children: "LaTeX Input" }),
314
+ /* @__PURE__ */ jsxs("div", { className: `${inputWrap} ${semanticClassNames.inputWrap}`, children: [
315
+ /* @__PURE__ */ jsx(
316
+ "textarea",
361
317
  {
362
- className: `${field} ${semanticClassNames.field}`,
363
- children: [
364
- /* @__PURE__ */ jsx(
365
- "label",
366
- {
367
- className: `${label} ${semanticClassNames.label}`,
368
- children: "LaTeX Input"
369
- }
370
- ),
371
- /* @__PURE__ */ jsxs(
372
- "div",
373
- {
374
- className: `${inputWrap} ${semanticClassNames.inputWrap}`,
375
- children: [
376
- /* @__PURE__ */ jsx(
377
- "textarea",
378
- {
379
- ref: inputRef,
380
- className: `${textarea} ${semanticClassNames.textarea}`,
381
- value,
382
- onChange: (e) => {
383
- setValue(e.target.value);
384
- syncSelection(e.target);
385
- },
386
- onKeyDown: handleKeyDown,
387
- onSelect: (e) => syncSelection(e.currentTarget),
388
- onClick: (e) => syncSelection(e.currentTarget),
389
- onKeyUp: (e) => syncSelection(e.currentTarget),
390
- rows: displayMode ? 4 : 3,
391
- spellCheck: false,
392
- autoComplete: "off",
393
- autoCorrect: "off",
394
- autoCapitalize: "off",
395
- placeholder: "e.g. \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}"
396
- }
397
- ),
398
- /* @__PURE__ */ jsxs(
399
- "div",
400
- {
401
- className: `${inputActions} ${semanticClassNames.inputActions}`,
402
- children: [
403
- /* @__PURE__ */ jsx(
404
- "button",
405
- {
406
- className: `${actionButton} ${semanticClassNames.actionButton}`,
407
- type: "button",
408
- onClick: handleCopy,
409
- title: "Copy LaTeX",
410
- disabled: !value.trim(),
411
- children: copied ? /* @__PURE__ */ jsx(Check, { size: 12, style: { color: "#22c55e" } }) : /* @__PURE__ */ jsx(Copy, { size: 12 })
412
- }
413
- ),
414
- /* @__PURE__ */ jsx(
415
- "button",
416
- {
417
- className: `${actionButton} ${semanticClassNames.actionButton}`,
418
- type: "button",
419
- onClick: handleReset,
420
- title: "Reset",
421
- disabled: value === equation,
422
- children: /* @__PURE__ */ jsx(RotateCcw, { size: 12 })
423
- }
424
- )
425
- ]
426
- }
427
- )
428
- ]
429
- }
430
- )
431
- ]
318
+ autoCapitalize: "off",
319
+ autoComplete: "off",
320
+ autoCorrect: "off",
321
+ className: `${textarea} ${semanticClassNames.textarea}`,
322
+ placeholder: "e.g. \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}",
323
+ ref: inputRef,
324
+ rows: displayMode ? 4 : 3,
325
+ spellCheck: false,
326
+ value,
327
+ onClick: (e) => syncSelection(e.currentTarget),
328
+ onKeyDown: handleKeyDown,
329
+ onKeyUp: (e) => syncSelection(e.currentTarget),
330
+ onSelect: (e) => syncSelection(e.currentTarget),
331
+ onChange: (e) => {
332
+ setValue(e.target.value);
333
+ syncSelection(e.target);
334
+ }
432
335
  }
433
336
  ),
434
337
  /* @__PURE__ */ jsxs(
435
338
  "div",
436
339
  {
437
- className: `${field} ${semanticClassNames.field}`,
340
+ className: `${inputActions} ${semanticClassNames.inputActions}`,
438
341
  children: [
439
342
  /* @__PURE__ */ jsx(
440
- "label",
343
+ ActionButton,
441
344
  {
442
- className: `${label} ${semanticClassNames.label}`,
443
- children: "Preview"
345
+ icon: true,
346
+ disabled: !value.trim(),
347
+ size: "sm",
348
+ title: "Copy LaTeX",
349
+ onClick: handleCopy,
350
+ children: copied ? /* @__PURE__ */ jsx(Check, { size: 12, style: { color: "#22c55e" } }) : /* @__PURE__ */ jsx(Copy, { size: 12 })
444
351
  }
445
352
  ),
446
353
  /* @__PURE__ */ jsx(
447
- "div",
354
+ ActionButton,
448
355
  {
449
- className: `${preview} ${semanticClassNames.preview}`,
450
- children: value.trim() ? /* @__PURE__ */ jsx(KaTeXRenderer, { equation: value, displayMode }) : /* @__PURE__ */ jsx(
451
- "span",
452
- {
453
- className: `${previewEmpty} ${semanticClassNames.previewEmpty}`,
454
- children: "Enter a formula"
455
- }
456
- )
356
+ icon: true,
357
+ disabled: value === equation,
358
+ size: "sm",
359
+ title: "Reset",
360
+ onClick: handleReset,
361
+ children: /* @__PURE__ */ jsx(RotateCcw, { size: 12 })
457
362
  }
458
363
  )
459
364
  ]
460
365
  }
461
366
  )
462
- ] }),
463
- activeTab === "snippets" && /* @__PURE__ */ jsxs("div", { className: `${body} ${semanticClassNames.body}`, children: [
464
- /* @__PURE__ */ jsxs(
465
- "div",
367
+ ] })
368
+ ] }),
369
+ /* @__PURE__ */ jsxs("div", { className: `${field} ${semanticClassNames.field}`, children: [
370
+ /* @__PURE__ */ jsx("label", { className: `${label} ${semanticClassNames.label}`, children: "Preview" }),
371
+ /* @__PURE__ */ jsx("div", { className: `${preview} ${semanticClassNames.preview}`, children: value.trim() ? /* @__PURE__ */ jsx(KaTeXRenderer, { displayMode, equation: value }) : /* @__PURE__ */ jsx(
372
+ "span",
373
+ {
374
+ className: `${previewEmpty} ${semanticClassNames.previewEmpty}`,
375
+ children: "Enter a formula"
376
+ }
377
+ ) })
378
+ ] })
379
+ ] }),
380
+ activeTab === "snippets" && /* @__PURE__ */ jsxs("div", { className: `${body} ${semanticClassNames.body}`, children: [
381
+ /* @__PURE__ */ jsxs(
382
+ "div",
383
+ {
384
+ className: `${snippetSearchWrap} ${semanticClassNames.snippetSearchWrap}`,
385
+ children: [
386
+ /* @__PURE__ */ jsx(
387
+ Search,
388
+ {
389
+ className: `${snippetSearchIcon} ${semanticClassNames.snippetSearchIcon}`,
390
+ size: 14
391
+ }
392
+ ),
393
+ /* @__PURE__ */ jsx(
394
+ "input",
395
+ {
396
+ autoComplete: "off",
397
+ className: `${snippetSearchInput} ${semanticClassNames.snippetSearchInput}`,
398
+ placeholder: "Search snippets: frac, matrix, sum...",
399
+ type: "text",
400
+ value: snippetQuery,
401
+ onChange: (e) => setSnippetQuery(e.target.value)
402
+ }
403
+ )
404
+ ]
405
+ }
406
+ ),
407
+ groupedSnippets.length > 0 ? /* @__PURE__ */ jsx(
408
+ "div",
409
+ {
410
+ className: `${snippetGroups} ${semanticClassNames.snippetGroups}`,
411
+ children: groupedSnippets.map((group) => /* @__PURE__ */ jsxs(
412
+ "section",
466
413
  {
467
- className: `${snippetSearchWrap} ${semanticClassNames.snippetSearchWrap}`,
414
+ className: `${snippetGroup} ${semanticClassNames.snippetGroup}`,
468
415
  children: [
469
416
  /* @__PURE__ */ jsx(
470
- Search,
417
+ "div",
471
418
  {
472
- size: 14,
473
- className: `${snippetSearchIcon} ${semanticClassNames.snippetSearchIcon}`
419
+ className: `${snippetGroupLabel} ${semanticClassNames.snippetGroupLabel}`,
420
+ children: group.category
474
421
  }
475
422
  ),
476
423
  /* @__PURE__ */ jsx(
477
- "input",
424
+ "div",
478
425
  {
479
- className: `${snippetSearchInput} ${semanticClassNames.snippetSearchInput}`,
480
- type: "text",
481
- value: snippetQuery,
482
- onChange: (e) => setSnippetQuery(e.target.value),
483
- placeholder: "Search snippets: frac, matrix, sum...",
484
- autoComplete: "off"
485
- }
486
- )
487
- ]
488
- }
489
- ),
490
- groupedSnippets.length > 0 ? /* @__PURE__ */ jsx(
491
- "div",
492
- {
493
- className: `${snippetGroups} ${semanticClassNames.snippetGroups}`,
494
- children: groupedSnippets.map((group) => /* @__PURE__ */ jsxs(
495
- "section",
496
- {
497
- className: `${snippetGroup} ${semanticClassNames.snippetGroup}`,
498
- children: [
499
- /* @__PURE__ */ jsx(
500
- "div",
501
- {
502
- className: `${snippetGroupLabel} ${semanticClassNames.snippetGroupLabel}`,
503
- children: group.category
504
- }
505
- ),
506
- /* @__PURE__ */ jsx(
507
- "div",
426
+ className: `${snippetList} ${semanticClassNames.snippetList}`,
427
+ children: group.items.map((snippet) => /* @__PURE__ */ jsxs(
428
+ "button",
508
429
  {
509
- className: `${snippetList} ${semanticClassNames.snippetList}`,
510
- children: group.items.map((snippet) => /* @__PURE__ */ jsxs(
511
- "button",
512
- {
513
- className: `${snippetButton} ${semanticClassNames.snippetButton}`,
514
- type: "button",
515
- onClick: () => handleInsertSnippet(snippet.template),
516
- children: [
517
- /* @__PURE__ */ jsxs(
518
- "div",
430
+ className: `${snippetButton} ${semanticClassNames.snippetButton}`,
431
+ type: "button",
432
+ onClick: () => handleInsertSnippet(snippet.template),
433
+ children: [
434
+ /* @__PURE__ */ jsxs(
435
+ "div",
436
+ {
437
+ className: `${snippetMeta} ${semanticClassNames.snippetMeta}`,
438
+ children: [
439
+ /* @__PURE__ */ jsx(
440
+ "span",
441
+ {
442
+ className: `${snippetName} ${semanticClassNames.snippetName}`,
443
+ children: snippet.title
444
+ }
445
+ ),
446
+ /* @__PURE__ */ jsx(
447
+ "span",
448
+ {
449
+ className: `${snippetHint} ${semanticClassNames.snippetHint}`,
450
+ children: snippet.template.replace(CURSOR_TOKEN, "")
451
+ }
452
+ )
453
+ ]
454
+ }
455
+ ),
456
+ /* @__PURE__ */ jsx(
457
+ "span",
458
+ {
459
+ className: `${snippetPreview} ${semanticClassNames.snippetPreview}`,
460
+ children: /* @__PURE__ */ jsx(
461
+ KaTeXRenderer,
519
462
  {
520
- className: `${snippetMeta} ${semanticClassNames.snippetMeta}`,
521
- children: [
522
- /* @__PURE__ */ jsx(
523
- "span",
524
- {
525
- className: `${snippetName} ${semanticClassNames.snippetName}`,
526
- children: snippet.title
527
- }
528
- ),
529
- /* @__PURE__ */ jsx(
530
- "span",
531
- {
532
- className: `${snippetHint} ${semanticClassNames.snippetHint}`,
533
- children: snippet.template.replace(CURSOR_TOKEN, "")
534
- }
535
- )
536
- ]
537
- }
538
- ),
539
- /* @__PURE__ */ jsx(
540
- "span",
541
- {
542
- className: `${snippetPreview} ${semanticClassNames.snippetPreview}`,
543
- children: /* @__PURE__ */ jsx(
544
- KaTeXRenderer,
545
- {
546
- equation: snippet.previewEquation,
547
- displayMode: false
548
- }
549
- )
463
+ displayMode: false,
464
+ equation: snippet.previewEquation
550
465
  }
551
466
  )
552
- ]
553
- },
554
- snippet.id
555
- ))
556
- }
557
- )
558
- ]
559
- },
560
- group.category
561
- ))
562
- }
563
- ) : /* @__PURE__ */ jsxs(
564
- "div",
565
- {
566
- className: `${snippetsPlaceholder} ${semanticClassNames.snippetsPlaceholder}`,
567
- children: [
568
- "No snippets match “",
569
- snippetQuery.trim(),
570
- "”"
467
+ }
468
+ )
469
+ ]
470
+ },
471
+ snippet.id
472
+ ))
473
+ }
474
+ )
571
475
  ]
572
- }
573
- )
574
- ] })
575
- ]
576
- }
577
- ),
476
+ },
477
+ group.category
478
+ ))
479
+ }
480
+ ) : /* @__PURE__ */ jsxs(
481
+ "div",
482
+ {
483
+ className: `${snippetsPlaceholder} ${semanticClassNames.snippetsPlaceholder}`,
484
+ children: [
485
+ "No snippets match “",
486
+ snippetQuery.trim(),
487
+ "”"
488
+ ]
489
+ }
490
+ )
491
+ ] })
492
+ ] }),
578
493
  /* @__PURE__ */ jsxs("div", { className: `${footer} ${semanticClassNames.footer}`, children: [
579
- /* @__PURE__ */ jsx(
580
- "span",
581
- {
582
- className: `${charCount} ${semanticClassNames.charCount}`,
583
- children: value.trim() ? `${value.length} chars` : "Enter a formula"
584
- }
585
- ),
586
- /* @__PURE__ */ jsxs(
587
- "div",
588
- {
589
- className: `${footerActions} ${semanticClassNames.footerActions}`,
590
- children: [
591
- /* @__PURE__ */ jsx(
592
- "button",
593
- {
594
- className: `${footerButton} ${semanticClassNames.footerButton}`,
595
- type: "button",
596
- onClick: cancel,
597
- children: "Cancel"
598
- }
599
- ),
600
- /* @__PURE__ */ jsx(
601
- "button",
602
- {
603
- className: `${footerButton} ${semanticClassNames.footerButton} ${footerButtonPrimary} ${semanticClassNames.footerButtonPrimary}`,
604
- type: "button",
605
- onClick: commit,
606
- disabled: !value.trim(),
607
- children: "Save"
608
- }
609
- )
610
- ]
611
- }
612
- )
494
+ /* @__PURE__ */ jsx("span", { className: `${charCount} ${semanticClassNames.charCount}`, children: value.trim() ? `${value.length} chars` : "Enter a formula" }),
495
+ /* @__PURE__ */ jsxs(ActionBar, { children: [
496
+ /* @__PURE__ */ jsx(ActionButton, { size: "md", variant: "ghost", onClick: cancel, children: "Cancel" }),
497
+ /* @__PURE__ */ jsx(ActionButton, { disabled: !value.trim(), size: "md", variant: "accent", onClick: commit, children: "Save" })
498
+ ] })
613
499
  ] })
614
500
  ]
615
501
  }
@@ -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}.x1ktjw0{--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}.x1ktjw1{--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}.x1ktjw2{--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: 8px}.dark .x1ktjw0,[data-theme=dark] .x1ktjw0,.dark.x1ktjw0,[data-theme=dark].x1ktjw0,.dark .x1ktjw1,[data-theme=dark] .x1ktjw1,.dark.x1ktjw1,[data-theme=dark].x1ktjw1,.dark .x1ktjw2,[data-theme=dark] .x1ktjw2,.dark.x1ktjw2,[data-theme=dark].x1ktjw2{--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)}.mkenhu0{cursor:pointer;border-radius:var(--rc-radius-sm);transition:background-color .15s ease}.mkenhu0:hover{background-color:var(--rc-accent-light)}.mkenhu1{width:min(420px,90vw);padding:0;overflow:hidden;box-shadow:var(--rc-shadow-modal);font-family:var(--rc-font-family)}.mkenhu2{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent)}.mkenhu3{display:flex;align-items:center;gap:8px}.mkenhu4{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--rc-radius-sm);background-color:var(--rc-accent-light);color:var(--rc-accent)}.mkenhu5{font-weight:600;font-size:var(--rc-font-size-md);color:var(--rc-text)}.mkenhu6{display:flex;align-items:center;gap:4px}.mkenhu7{font-size:var(--rc-font-size-2xs);font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--rc-text-secondary);padding:1px 6px;border-radius:var(--rc-radius-sm);background-color:var(--rc-bg-secondary)}.mkenhu8{display:flex;align-items:center;justify-content:center;appearance:none;border:none;background:none;color:var(--rc-text-secondary);cursor:pointer;width:28px;height:28px;border-radius:var(--rc-radius-sm);transition:color .15s ease,background-color .15s ease;flex-shrink:0}.mkenhu8:hover{color:var(--rc-alert-caution);background-color:color-mix(in srgb,var(--rc-alert-caution) 10%,transparent)}.mkenhu9{padding:0 16px}.mkenhua{max-height:320px;overflow-y:auto;overflow-x:hidden;flex-shrink:0}.mkenhub{padding:12px;display:flex;flex-direction:column;gap:12px}.mkenhuc{display:flex;flex-direction:column}.mkenhud{font-size:var(--rc-font-size-2xs);font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--rc-text-secondary);margin-bottom:6px;padding-left:2px}.mkenhue{position:relative}.mkenhuf{display:block;width:100%;padding:10px 56px 10px 12px;font-family:var(--rc-font-mono);font-size:var(--rc-font-size-md);line-height:1.5;background-color:color-mix(in srgb,var(--rc-bg-secondary) 30%,transparent);color:var(--rc-text);border:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent);border-radius:var(--rc-radius-md);outline:none;resize:none;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}.mkenhuf::placeholder{color:color-mix(in srgb,var(--rc-text-secondary) 50%,transparent)}.mkenhuf:focus{border-color:color-mix(in srgb,var(--rc-accent) 50%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--rc-accent) 25%,transparent)}.mkenhug{position:absolute;right:6px;top:6px;display:flex;gap:2px}.mkenhuh{display:flex;align-items:center;justify-content:center;appearance:none;border:none;background:none;color:color-mix(in srgb,var(--rc-text-secondary) 60%,transparent);cursor:pointer;width:24px;height:24px;border-radius:var(--rc-radius-sm);transition:color .15s ease,background-color .15s ease}.mkenhuh:hover{color:var(--rc-text);background-color:var(--rc-fill-secondary)}.mkenhuh:disabled{opacity:.3;cursor:default;pointer-events:none}.mkenhui{border:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent);border-radius:var(--rc-radius-md);padding:var(--rc-space-md);min-height:60px;display:flex;align-items:center;justify-content:center;overflow-x:auto;background-color:var(--rc-bg)}.mkenhuj{color:color-mix(in srgb,var(--rc-text-secondary) 50%,transparent);font-size:var(--rc-font-size-md)}.mkenhuk{position:relative}.mkenhul{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:color-mix(in srgb,var(--rc-text-secondary) 70%,transparent);pointer-events:none}.mkenhum{width:100%;height:34px;padding:0 12px 0 32px;border-radius:var(--rc-radius-md);border:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent);background-color:color-mix(in srgb,var(--rc-bg-secondary) 24%,transparent);color:var(--rc-text);outline:none;box-sizing:border-box;font-size:var(--rc-font-size-sm)}.mkenhum::placeholder{color:color-mix(in srgb,var(--rc-text-secondary) 55%,transparent)}.mkenhum:focus{border-color:color-mix(in srgb,var(--rc-accent) 45%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--rc-accent) 18%,transparent)}.mkenhun{display:flex;flex-direction:column;gap:12px}.mkenhuo{display:flex;flex-direction:column;gap:6px}.mkenhup{font-size:var(--rc-font-size-2xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--rc-text-secondary);padding-left:2px}.mkenhuq{display:flex;flex-direction:column;gap:6px}.mkenhur{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;border:1px solid color-mix(in srgb,var(--rc-border) 55%,transparent);border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-bg-secondary) 18%,transparent);padding:10px 12px;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,transform .15s ease}.mkenhur:hover{border-color:color-mix(in srgb,var(--rc-accent) 30%,var(--rc-border));background-color:color-mix(in srgb,var(--rc-accent-light) 30%,var(--rc-bg-secondary));transform:translateY(-1px)}.mkenhus{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.mkenhut{font-size:var(--rc-font-size-sm);font-weight:600;color:var(--rc-text)}.mkenhuu{font-size:var(--rc-font-size-2xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mkenhuv{display:inline-flex;align-items:center;justify-content:center;min-width:72px;min-height:32px;padding:0 8px;border-radius:var(--rc-radius-sm);background-color:var(--rc-bg);color:var(--rc-text);overflow:hidden;flex-shrink:0}.mkenhuw{color:var(--rc-text-secondary);font-size:var(--rc-font-size-sm);text-align:center;padding:var(--rc-space-lg) var(--rc-space-md);border:1px dashed color-mix(in srgb,var(--rc-border) 60%,transparent);border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-bg-secondary) 16%,transparent)}.mkenhux{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent);background-color:color-mix(in srgb,var(--rc-bg-secondary) 20%,transparent)}.mkenhuy{color:var(--rc-text-secondary);font-size:var(--rc-font-size-2xs);font-family:var(--rc-font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.mkenhuz{display:flex;align-items:center;gap:8px}.mkenhu10{appearance:none;border:none;background:none;color:var(--rc-text-secondary);cursor:pointer;padding:4px 10px;border-radius:var(--rc-radius-sm);font-size:var(--rc-font-size-xs);font-weight:500;line-height:1.4;height:28px;display:inline-flex;align-items:center;transition:color .15s ease,background-color .15s ease}.mkenhu10:hover{color:var(--rc-text);background-color:var(--rc-fill-secondary)}.mkenhu11{background-color:var(--rc-accent);color:#fff}.mkenhu11:hover{background-color:var(--rc-accent);filter:brightness(.9);color:#fff}.mkenhu11:disabled{opacity:.5;cursor:default;pointer-events: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}.x1ktjw0{--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}.x1ktjw1{--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}.x1ktjw2{--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: 8px}.dark .x1ktjw0,[data-theme=dark] .x1ktjw0,.dark.x1ktjw0,[data-theme=dark].x1ktjw0,.dark .x1ktjw1,[data-theme=dark] .x1ktjw1,.dark.x1ktjw1,[data-theme=dark].x1ktjw1,.dark .x1ktjw2,[data-theme=dark] .x1ktjw2,.dark.x1ktjw2,[data-theme=dark].x1ktjw2{--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)}.mkenhu0{cursor:pointer;border-radius:var(--rc-radius-sm);transition:background-color .15s ease}.mkenhu0:hover{background-color:var(--rc-accent-light)}.mkenhu1{width:min(420px,90vw);padding:0;overflow:hidden;box-shadow:var(--rc-shadow-modal);font-family:var(--rc-font-family)}.mkenhu2{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent)}.mkenhu3{display:flex;align-items:center;gap:8px}.mkenhu4{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--rc-radius-sm);background-color:var(--rc-accent-light);color:var(--rc-accent)}.mkenhu5{font-weight:600;font-size:var(--rc-font-size-md);color:var(--rc-text)}.mkenhu6{display:flex;align-items:center;gap:4px}.mkenhu7{font-size:var(--rc-font-size-2xs);font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--rc-text-secondary);padding:1px 6px;border-radius:var(--rc-radius-sm);background-color:var(--rc-bg-secondary)}.mkenhu8{display:flex;align-items:center;justify-content:center;appearance:none;border:none;background:none;color:var(--rc-text-secondary);cursor:pointer;width:28px;height:28px;border-radius:var(--rc-radius-sm);transition:color .15s ease,background-color .15s ease;flex-shrink:0}.mkenhu8:hover{color:var(--rc-alert-caution);background-color:color-mix(in srgb,var(--rc-alert-caution) 10%,transparent)}.mkenhu9{padding:0 16px}.mkenhua{max-height:320px;overflow-y:auto;overflow-x:hidden;flex-shrink:0}.mkenhub{padding:12px;display:flex;flex-direction:column;gap:12px}.mkenhuc{display:flex;flex-direction:column}.mkenhud{font-size:var(--rc-font-size-2xs);font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--rc-text-secondary);margin-bottom:6px;padding-left:2px}.mkenhue{position:relative}.mkenhuf{display:block;width:100%;padding:10px 56px 10px 12px;font-family:var(--rc-font-mono);font-size:var(--rc-font-size-md);line-height:1.5;background-color:color-mix(in srgb,var(--rc-bg-secondary) 30%,transparent);color:var(--rc-text);border:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent);border-radius:var(--rc-radius-md);outline:none;resize:none;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}.mkenhuf::placeholder{color:color-mix(in srgb,var(--rc-text-secondary) 50%,transparent)}.mkenhuf:focus{border-color:color-mix(in srgb,var(--rc-accent) 50%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--rc-accent) 25%,transparent)}.mkenhug{position:absolute;right:6px;top:6px;display:flex;gap:2px}.mkenhuh{border:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent);border-radius:var(--rc-radius-md);padding:var(--rc-space-md);min-height:60px;display:flex;align-items:center;justify-content:center;overflow-x:auto;background-color:var(--rc-bg)}.mkenhui{color:color-mix(in srgb,var(--rc-text-secondary) 50%,transparent);font-size:var(--rc-font-size-md)}.mkenhuj{position:relative}.mkenhuk{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:color-mix(in srgb,var(--rc-text-secondary) 70%,transparent);pointer-events:none}.mkenhul{width:100%;height:34px;padding:0 12px 0 32px;border-radius:var(--rc-radius-md);border:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent);background-color:color-mix(in srgb,var(--rc-bg-secondary) 24%,transparent);color:var(--rc-text);outline:none;box-sizing:border-box;font-size:var(--rc-font-size-sm)}.mkenhul::placeholder{color:color-mix(in srgb,var(--rc-text-secondary) 55%,transparent)}.mkenhul:focus{border-color:color-mix(in srgb,var(--rc-accent) 45%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--rc-accent) 18%,transparent)}.mkenhum{display:flex;flex-direction:column;gap:12px}.mkenhun{display:flex;flex-direction:column;gap:6px}.mkenhuo{font-size:var(--rc-font-size-2xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--rc-text-secondary);padding-left:2px}.mkenhup{display:flex;flex-direction:column;gap:6px}.mkenhuq{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;border:1px solid color-mix(in srgb,var(--rc-border) 55%,transparent);border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-bg-secondary) 18%,transparent);padding:10px 12px;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,transform .15s ease}.mkenhuq:hover{border-color:color-mix(in srgb,var(--rc-accent) 30%,var(--rc-border));background-color:color-mix(in srgb,var(--rc-accent-light) 30%,var(--rc-bg-secondary));transform:translateY(-1px)}.mkenhur{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.mkenhus{font-size:var(--rc-font-size-sm);font-weight:600;color:var(--rc-text)}.mkenhut{font-size:var(--rc-font-size-2xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mkenhuu{display:inline-flex;align-items:center;justify-content:center;min-width:72px;min-height:32px;padding:0 8px;border-radius:var(--rc-radius-sm);background-color:var(--rc-bg);color:var(--rc-text);overflow:hidden;flex-shrink:0}.mkenhuv{color:var(--rc-text-secondary);font-size:var(--rc-font-size-sm);text-align:center;padding:var(--rc-space-lg) var(--rc-space-md);border:1px dashed color-mix(in srgb,var(--rc-border) 60%,transparent);border-radius:var(--rc-radius-md);background-color:color-mix(in srgb,var(--rc-bg-secondary) 16%,transparent)}.mkenhuw{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid color-mix(in srgb,var(--rc-border) 60%,transparent);background-color:color-mix(in srgb,var(--rc-bg-secondary) 20%,transparent)}.mkenhux{color:var(--rc-text-secondary);font-size:var(--rc-font-size-2xs);font-family:var(--rc-font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}
@@ -1,16 +1,16 @@
1
1
  export declare const CURSOR_TOKEN = "__cursor__";
2
2
  export interface KaTeXSnippet {
3
- id: string;
4
- title: string;
5
- template: string;
6
- previewEquation: string;
7
3
  category: 'Basic' | 'Greek' | 'Operators' | 'Structures';
4
+ id: string;
8
5
  keywords: string[];
6
+ previewEquation: string;
7
+ template: string;
8
+ title: string;
9
9
  }
10
10
  export interface SnippetInsertionResult {
11
- value: string;
12
- selectionStart: number;
13
11
  selectionEnd: number;
12
+ selectionStart: number;
13
+ value: string;
14
14
  }
15
15
  export declare const katexSnippets: KaTeXSnippet[];
16
16
  export declare function filterKaTeXSnippets(query: string): KaTeXSnippet[];
@@ -1 +1 @@
1
- {"version":3,"file":"snippets.d.ts","sourceRoot":"","sources":["../src/snippets.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAAe,CAAA;AAExC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,CAAA;IACxD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,EAiEvC,CAAA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CAoBjE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,sBAAsB,CAmBxB"}
1
+ {"version":3,"file":"snippets.d.ts","sourceRoot":"","sources":["../src/snippets.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,eAAe,CAAC;AAEzC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,CAAC;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,EAiEvC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CAoBjE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,GAC1B,sBAAsB,CAexB"}
@@ -16,7 +16,6 @@ export declare const semanticClassNames: {
16
16
  readonly inputWrap: "rich-katex-editor-input-wrap";
17
17
  readonly textarea: "rich-katex-editor-textarea";
18
18
  readonly inputActions: "rich-katex-editor-input-actions";
19
- readonly actionButton: "rich-katex-editor-action-btn";
20
19
  readonly preview: "rich-katex-editor-preview";
21
20
  readonly previewEmpty: "rich-katex-editor-preview-empty";
22
21
  readonly snippetSearchWrap: "rich-katex-editor-snippet-search-wrap";
@@ -34,9 +33,6 @@ export declare const semanticClassNames: {
34
33
  readonly snippetsPlaceholder: "rich-katex-editor-snippets-placeholder";
35
34
  readonly footer: "rich-katex-editor-footer";
36
35
  readonly charCount: "rich-katex-editor-charcount";
37
- readonly footerActions: "rich-katex-editor-footer-actions";
38
- readonly footerButton: "rich-katex-editor-btn";
39
- readonly footerButtonPrimary: "rich-katex-editor-btn-primary";
40
36
  };
41
37
  export declare const editWrapper: string;
42
38
  export declare const panel: string;
@@ -55,7 +51,6 @@ export declare const label: string;
55
51
  export declare const inputWrap: string;
56
52
  export declare const textarea: string;
57
53
  export declare const inputActions: string;
58
- export declare const actionButton: string;
59
54
  export declare const preview: string;
60
55
  export declare const previewEmpty: string;
61
56
  export declare const snippetSearchWrap: string;
@@ -73,7 +68,4 @@ export declare const snippetPreview: string;
73
68
  export declare const snippetsPlaceholder: string;
74
69
  export declare const footer: string;
75
70
  export declare const charCount: string;
76
- export declare const footerActions: string;
77
- export declare const footerButton: string;
78
- export declare const footerButtonPrimary: string;
79
71
  //# sourceMappingURL=styles.css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../src/styles.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCrB,CAAA;AAEV,eAAO,MAAM,WAAW,QAStB,CAAA;AAEF,eAAO,MAAM,KAAK,QAMhB,CAAA;AAEF,eAAO,MAAM,MAAM,QAMjB,CAAA;AAEF,eAAO,MAAM,UAAU,QAIrB,CAAA;AAEF,eAAO,MAAM,QAAQ,QASnB,CAAA;AAEF,eAAO,MAAM,KAAK,QAIhB,CAAA;AAEF,eAAO,MAAM,WAAW,QAItB,CAAA;AAEF,eAAO,MAAM,IAAI,QASf,CAAA;AAEF,eAAO,MAAM,YAAY,QAoBvB,CAAA;AAEF,eAAO,MAAM,IAAI,QAEf,CAAA;AAEF,eAAO,MAAM,cAAc,QAKzB,CAAA;AAEF,eAAO,MAAM,IAAI,QAKf,CAAA;AAEF,eAAO,MAAM,KAAK,QAGhB,CAAA;AAEF,eAAO,MAAM,KAAK,QAQhB,CAAA;AAEF,eAAO,MAAM,SAAS,QAEpB,CAAA;AAEF,eAAO,MAAM,QAAQ,QAyBnB,CAAA;AAEF,eAAO,MAAM,YAAY,QAMvB,CAAA;AAEF,eAAO,MAAM,YAAY,QAwBvB,CAAA;AAEF,eAAO,MAAM,OAAO,QAUlB,CAAA;AAEF,eAAO,MAAM,YAAY,QAGvB,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAE5B,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAO5B,CAAA;AAEF,eAAO,MAAM,kBAAkB,QAoB7B,CAAA;AAEF,eAAO,MAAM,aAAa,QAIxB,CAAA;AAEF,eAAO,MAAM,YAAY,QAIvB,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAO5B,CAAA;AAEF,eAAO,MAAM,WAAW,QAItB,CAAA;AAEF,eAAO,MAAM,aAAa,QAqBxB,CAAA;AAEF,eAAO,MAAM,WAAW,QAMtB,CAAA;AAEF,eAAO,MAAM,WAAW,QAItB,CAAA;AAEF,eAAO,MAAM,WAAW,QAOtB,CAAA;AAEF,eAAO,MAAM,cAAc,QAYzB,CAAA;AAEF,eAAO,MAAM,mBAAmB,QAQ9B,CAAA;AAEF,eAAO,MAAM,MAAM,QAOjB,CAAA;AAEF,eAAO,MAAM,SAAS,QAQpB,CAAA;AAEF,eAAO,MAAM,aAAa,QAIxB,CAAA;AAEF,eAAO,MAAM,YAAY,QAqBvB,CAAA;AAEF,eAAO,MAAM,mBAAmB,QAe9B,CAAA"}
1
+ {"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../src/styles.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrB,CAAA;AAEV,eAAO,MAAM,WAAW,QAStB,CAAA;AAEF,eAAO,MAAM,KAAK,QAMhB,CAAA;AAEF,eAAO,MAAM,MAAM,QAMjB,CAAA;AAEF,eAAO,MAAM,UAAU,QAIrB,CAAA;AAEF,eAAO,MAAM,QAAQ,QASnB,CAAA;AAEF,eAAO,MAAM,KAAK,QAIhB,CAAA;AAEF,eAAO,MAAM,WAAW,QAItB,CAAA;AAEF,eAAO,MAAM,IAAI,QASf,CAAA;AAEF,eAAO,MAAM,YAAY,QAoBvB,CAAA;AAEF,eAAO,MAAM,IAAI,QAEf,CAAA;AAEF,eAAO,MAAM,cAAc,QAKzB,CAAA;AAEF,eAAO,MAAM,IAAI,QAKf,CAAA;AAEF,eAAO,MAAM,KAAK,QAGhB,CAAA;AAEF,eAAO,MAAM,KAAK,QAQhB,CAAA;AAEF,eAAO,MAAM,SAAS,QAEpB,CAAA;AAEF,eAAO,MAAM,QAAQ,QAyBnB,CAAA;AAEF,eAAO,MAAM,YAAY,QAMvB,CAAA;AAEF,eAAO,MAAM,OAAO,QAUlB,CAAA;AAEF,eAAO,MAAM,YAAY,QAGvB,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAE5B,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAO5B,CAAA;AAEF,eAAO,MAAM,kBAAkB,QAoB7B,CAAA;AAEF,eAAO,MAAM,aAAa,QAIxB,CAAA;AAEF,eAAO,MAAM,YAAY,QAIvB,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAO5B,CAAA;AAEF,eAAO,MAAM,WAAW,QAItB,CAAA;AAEF,eAAO,MAAM,aAAa,QAqBxB,CAAA;AAEF,eAAO,MAAM,WAAW,QAMtB,CAAA;AAEF,eAAO,MAAM,WAAW,QAItB,CAAA;AAEF,eAAO,MAAM,WAAW,QAOtB,CAAA;AAEF,eAAO,MAAM,cAAc,QAYzB,CAAA;AAEF,eAAO,MAAM,mBAAmB,QAQ9B,CAAA;AAEF,eAAO,MAAM,MAAM,QAOjB,CAAA;AAEF,eAAO,MAAM,SAAS,QAQpB,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@haklex/rich-renderer-katex",
3
3
  "type": "module",
4
- "version": "0.0.65",
4
+ "version": "0.0.66",
5
5
  "description": "KaTeX math renderer for haklex rich editor",
6
6
  "license": "MIT",
7
7
  "exports": {
@@ -29,9 +29,9 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "lucide-react": "^0.577.0",
32
- "@haklex/rich-editor": "0.0.65",
33
- "@haklex/rich-editor-ui": "0.0.65",
34
- "@haklex/rich-style-token": "0.0.65"
32
+ "@haklex/rich-editor": "0.0.66",
33
+ "@haklex/rich-editor-ui": "0.0.66",
34
+ "@haklex/rich-style-token": "0.0.66"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@lexical/react": "^0.41.0",
@@ -51,6 +51,11 @@
51
51
  "publishConfig": {
52
52
  "access": "public"
53
53
  },
54
+ "repository": {
55
+ "type": "git",
56
+ "url": "https://github.com/Innei/haklex.git",
57
+ "directory": "packages/rich-renderer-katex"
58
+ },
54
59
  "scripts": {
55
60
  "build": "vite build",
56
61
  "dev:build": "vite build --watch"