@haklex/rich-renderer-katex 0.0.64 → 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.64",
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.64",
33
- "@haklex/rich-editor-ui": "0.0.64",
34
- "@haklex/rich-style-token": "0.0.64"
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",
@@ -40,7 +40,7 @@
40
40
  "@vanilla-extract/css": "^1.18.0",
41
41
  "@vanilla-extract/recipes": "^0.5.7",
42
42
  "@vanilla-extract/vite-plugin": "^5.1.4",
43
- "katex": "^0.16.33",
43
+ "katex": "^0.16.37",
44
44
  "lexical": "^0.41.0",
45
45
  "react": "^19.2.4",
46
46
  "react-dom": "^19.2.4",
@@ -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"
package/LICENSE DELETED
@@ -1,28 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Innei
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
22
-
23
-
24
- Additional Terms and Conditions
25
-
26
- ----------------
27
-
28
- Use of this software is governed by the terms of MIT and, in addition, by the terms and conditions described in the additional file (ADDITIONAL_TERMS.md). By using this software, you agree to abide by these additional terms and conditions.