@haklex/rich-ext-excalidraw 0.50.0 → 0.50.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ExcalidrawDisplayRenderer.d.ts","sourceRoot":"","sources":["../src/ExcalidrawDisplayRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,EAAE,EAAE,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAajF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,SAAS,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;AAE5E,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,6BAA6B,CA+CvE,CAAC"}
1
+ {"version":3,"file":"ExcalidrawDisplayRenderer.d.ts","sourceRoot":"","sources":["../src/ExcalidrawDisplayRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,EAAE,EAAE,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAajF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,SAAS,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;AAE5E,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,6BAA6B,CAgDvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExcalidrawEditRenderer.d.ts","sourceRoot":"","sources":["../src/ExcalidrawEditRenderer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiB,EAAE,EAAE,MAAM,OAAO,CAAC;AAY/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACrC;AAyZD,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CA6HlE,CAAC"}
1
+ {"version":3,"file":"ExcalidrawEditRenderer.d.ts","sourceRoot":"","sources":["../src/ExcalidrawEditRenderer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiB,EAAE,EAAE,MAAM,OAAO,CAAC;AAY/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACrC;AAyZD,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CA8HlE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=display.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.test.d.ts","sourceRoot":"","sources":["../src/display.test.tsx"],"names":[],"mappings":""}
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { a as ExcalidrawNode, c as ExcalidrawDisplayRenderer, i as $isExcalidrawNode, l as _defineProperty, n as ExcalidrawExpandShell, o as EXCALIDRAW_NODE_KEY, r as $createExcalidrawNode, s as ExcalidrawSSRRenderer, t as EXCALIDRAW_BLOCK_TRANSFORMER, u as __exportAll } from "./transformer-C2e_qiIg.js";
2
- import { A as excalidrawEditorContainer, C as excalidrawDialogCanvas, D as excalidrawDialogTitle, E as excalidrawDialogMeta, I as excalidrawStatusDot, L as ExcalidrawConfigProvider, M as excalidrawHeaderActions, N as excalidrawHeaderClose, O as excalidrawEditLabel, R as useExcalidrawConfig, S as excalidrawConfirmBtnPrimary, a as serializeSnapshot, b as excalidrawConfirmBtn, f as ExcalidrawEmptyState, g as excalidrawActionBarBtn, i as parseSnapshot, j as excalidrawFullscreenPopup, k as excalidrawEditOverlay, l as Scene, m as ExcalidrawLoadingState, n as useExcalidrawData, o as countElements, p as ExcalidrawErrorState, r as isLocalScenePath, s as toScene, t as useExcalidrawFont, w as excalidrawDialogHeader, x as excalidrawConfirmBtnDanger, y as excalidrawConfirmActions } from "./useExcalidrawFont-DAmoYxvU.js";
1
+ import { a as ExcalidrawNode, c as ExcalidrawDisplayRenderer, i as $isExcalidrawNode, l as _defineProperty, n as ExcalidrawExpandShell, o as EXCALIDRAW_NODE_KEY, r as $createExcalidrawNode, s as ExcalidrawSSRRenderer, t as EXCALIDRAW_BLOCK_TRANSFORMER, u as __exportAll } from "./transformer-CbJAOPsv.js";
2
+ import { A as excalidrawEditorContainer, C as excalidrawDialogCanvas, D as excalidrawDialogTitle, E as excalidrawDialogMeta, I as excalidrawStatusDot, L as ExcalidrawConfigProvider, M as excalidrawHeaderActions, N as excalidrawHeaderClose, O as excalidrawEditLabel, R as useExcalidrawConfig, S as excalidrawConfirmBtnPrimary, a as serializeSnapshot, b as excalidrawConfirmBtn, f as ExcalidrawEmptyState, g as excalidrawActionBarBtn, i as parseSnapshot, j as excalidrawFullscreenPopup, k as excalidrawEditOverlay, l as Scene, m as ExcalidrawLoadingState, n as useExcalidrawData, o as countElements, p as ExcalidrawErrorState, r as isLocalScenePath, s as toScene, t as useExcalidrawFont, w as excalidrawDialogHeader, x as excalidrawConfirmBtnDanger, y as excalidrawConfirmActions } from "./useExcalidrawFont-D_lnfKV8.js";
3
3
  import { Suspense, createElement, lazy, useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
5
  import { useColorScheme } from "@haklex/rich-editor/static";
@@ -444,7 +444,7 @@ var ExcalidrawEditorDialogContent = ({ dismiss, ExcalidrawComponent, initialData
444
444
  var ExcalidrawEditRenderer = ({ snapshot, onSnapshotChange }) => {
445
445
  const theme = useColorScheme();
446
446
  const { saveSnapshot } = useExcalidrawConfig();
447
- const { snapshot: initialData, loading: dataLoading, error: dataError, retry, baseRef, baseData } = useExcalidrawData(snapshot);
447
+ const { snapshot: initialData, loading: dataLoading, error: dataError, retry, retryable, baseRef, baseData } = useExcalidrawData(snapshot);
448
448
  const [editedData, setEditedData] = useState();
449
449
  const [editorLoading, setEditorLoading] = useState(false);
450
450
  const excalidrawRef = useRef(null);
@@ -523,7 +523,7 @@ var ExcalidrawEditRenderer = ({ snapshot, onSnapshotChange }) => {
523
523
  className: excalidrawEditorContainer,
524
524
  children: /* @__PURE__ */ jsx(ExcalidrawErrorState, {
525
525
  message: dataError,
526
- onRetry: retry
526
+ onRetry: retryable ? retry : void 0
527
527
  })
528
528
  });
529
529
  return /* @__PURE__ */ jsxs("div", {
@@ -1,2 +1,2 @@
1
- :root{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#f5f5f5;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:1.25em;--rc-flow-list:.375em;--rc-flow-block:2em;--rc-flow-heading:2em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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-font-size-code:.8125em;--rc-font-size-caption:.8125em;--rc-line-height:1.75;--rc-line-height-tight:1.35;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}:root.dark,[data-theme=dark]{--rc-text:#ededed;--rc-text-secondary:#c2c2c2;--rc-text-tertiary:#8a8a8a;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#2e2e2e;--rc-border-subtle:#1f1f1f;--rc-accent:#60a5fa;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#1a1a1a;--rc-code-header-bg:#212121;--rc-hr-border:#2e2e2e;--rc-quote-border:color-mix(in oklab, var(--rc-text) 22%, transparent);--rc-quote-bg:#262626;--rc-alert-info:#7aa7e0;--rc-alert-warning:#e0a458;--rc-alert-tip:#6cbf8f;--rc-alert-caution:#ef7d7d;--rc-alert-important:#a78bfa;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}._6anxnj0{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#f5f5f5;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:1.25em;--rc-flow-list:.375em;--rc-flow-block:2em;--rc-flow-heading:2em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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-font-size-code:.8125em;--rc-font-size-caption:.8125em;--rc-line-height:1.75;--rc-line-height-tight:1.35;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}._6anxnj1{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#f5f5f5;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:.5em;--rc-flow-list:.375em;--rc-flow-block:2em;--rc-flow-heading:2em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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-font-size-code:.8125em;--rc-font-size-caption:.8125em;--rc-line-height:1.85;--rc-line-height-tight:1.35;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--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}._6anxnj2{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#fafafa;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:2px;--rc-space-sm:4px;--rc-space-md:10px;--rc-space-lg:16px;--rc-space-xl:20px;--rc-flow-paragraph:.6em;--rc-flow-list:.25em;--rc-flow-block:1em;--rc-flow-heading:1em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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-font-size-code:.9286em;--rc-font-size-caption:.9286em;--rc-line-height:1.6;--rc-line-height-tight:1.3;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:3px;--rc-radius-md:6px;--rc-radius-lg:12px}._6anxnj3{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#fafafa;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:.75em;--rc-flow-list:.25em;--rc-flow-block:1em;--rc-flow-heading:1em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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:15px;--rc-font-size-small:13px;--rc-font-size-code:.8667em;--rc-font-size-caption:.8667em;--rc-line-height:1.65;--rc-line-height-tight:1.3;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}.dark ._6anxnj0,[data-theme=dark] ._6anxnj0,.dark._6anxnj0,[data-theme=dark]._6anxnj0,.dark ._6anxnj1,[data-theme=dark] ._6anxnj1,.dark._6anxnj1,[data-theme=dark]._6anxnj1,.dark ._6anxnj2,[data-theme=dark] ._6anxnj2,.dark._6anxnj2,[data-theme=dark]._6anxnj2,.dark ._6anxnj3,[data-theme=dark] ._6anxnj3,.dark._6anxnj3,[data-theme=dark]._6anxnj3{--rc-text:#ededed;--rc-text-secondary:#c2c2c2;--rc-text-tertiary:#8a8a8a;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#2e2e2e;--rc-border-subtle:#1f1f1f;--rc-accent:#60a5fa;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#1a1a1a;--rc-code-header-bg:#212121;--rc-hr-border:#2e2e2e;--rc-quote-border:color-mix(in oklab, var(--rc-text) 22%, transparent);--rc-quote-bg:#262626;--rc-alert-info:#7aa7e0;--rc-alert-warning:#e0a458;--rc-alert-tip:#6cbf8f;--rc-alert-caution:#ef7d7d;--rc-alert-important:#a78bfa;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}@keyframes _1c3wdzl5{0%{background-position:200% 0,0 0}to{background-position:-200% 0,0 0}}._1c3wdzl0,._1c3wdzl1{aspect-ratio:16/9;width:100%;margin:var(--rc-flow-block) 0;border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);background-color:var(--rc-bg);position:relative;overflow:hidden}._1c3wdzl1:focus-within{border-color:var(--rc-accent)}._1c3wdzl2{aspect-ratio:16/9;width:100%;margin:var(--rc-flow-block) 0;border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);background-color:var(--rc-bg);background-image:radial-gradient(var(--rc-border) 1px, transparent 1px);background-size:16px 16px;position:relative;overflow:hidden}._1c3wdzl3{font-family:var(--rc-font-family-sans);color:var(--rc-text-tertiary);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl4{width:20px;height:20px;color:var(--rc-text-quaternary)}._1c3wdzl6{font-family:var(--rc-font-family-sans);color:var(--rc-text-tertiary);background-image:linear-gradient(90deg, transparent, color-mix(in oklab, var(--rc-text) 4%, transparent), transparent), radial-gradient(var(--rc-border) 1px, transparent 1px);background-size:200% 100%,16px 16px;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;animation:1.6s linear infinite _1c3wdzl5;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl7{font-family:var(--rc-font-family-sans);color:var(--rc-text-tertiary);background-image:radial-gradient(var(--rc-border) 1px, transparent 1px);background-size:16px 16px;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl8{font-family:var(--rc-font-family-sans);color:var(--rc-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl9{width:20px;height:20px;color:var(--rc-alert-caution)}._1c3wdzla{-webkit-appearance:none;appearance:none;border:1px solid var(--rc-border);background:var(--rc-bg);color:var(--rc-text-secondary);font:inherit;cursor:pointer;border-radius:6px;padding:4px 12px;font-size:12px}._1c3wdzla:hover{color:var(--rc-text);background-color:var(--rc-fill-tertiary)}._1c3wdzl1 .Island,.excalidraw--view-mode .dropdown-menu-button{display:none!important}._1c3wdzlb._1c3wdzlb{background:var(--rc-bg);border:none;border-radius:0;flex-direction:column;gap:0;width:100vw;max-width:100vw;height:100vh;max-height:100vh;margin:0;padding:0;display:flex;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden;transform:none}._1c3wdzlb._1c3wdzlb[data-open],._1c3wdzlb._1c3wdzlb[data-closed]{animation:none}._1c3wdzlc{border-bottom:1px solid var(--rc-border);flex-shrink:0;align-items:center;gap:10px;height:48px;padding:0 12px 0 16px;display:flex}._1c3wdzld{flex:1;align-items:center;gap:4px;display:flex}._1c3wdzle{border-radius:50%;flex-shrink:0;width:8px;height:8px;transition:background-color .3s}._1c3wdzlf{font-size:var(--rc-font-size-md);color:var(--rc-text);font-weight:600;line-height:1}._1c3wdzlg{font-size:var(--rc-font-size-sm);color:var(--rc-text-secondary);border-left:1px solid var(--rc-border);padding-left:10px;line-height:1}._1c3wdzlh{align-items:center;gap:2px;margin-left:auto;display:flex}._1c3wdzli{width:32px;height:32px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-left:8px;transition:background .15s,color .15s;display:flex}._1c3wdzli:hover{background:color-mix(in srgb, currentColor 8%, transparent);color:var(--rc-text)}._1c3wdzlj{color:var(--rc-text-secondary);cursor:pointer;font-size:var(--rc-font-size-sm);white-space:nowrap;background:0 0;border:none;border-radius:4px;align-items:center;gap:4px;padding:4px 10px;transition:background .15s,color .15s;display:inline-flex}._1c3wdzlj:hover{background:color-mix(in srgb, currentColor 8%, transparent);color:var(--rc-text)}._1c3wdzlj:disabled{opacity:.4;pointer-events:none}._1c3wdzlj svg{flex-shrink:0;width:14px;height:14px}._1c3wdzlk{background:var(--rc-border);flex-shrink:0;width:1px;height:16px;margin:0 4px}._1c3wdzll{background:color-mix(in srgb, currentColor 4%, transparent);color:var(--rc-text-secondary);font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);text-overflow:ellipsis;white-space:nowrap;border:1px solid #0000;border-radius:4px;outline:none;align-items:center;width:200px;max-width:50%;padding:3px 10px;transition:background .15s,border-color .15s;display:inline-flex;overflow:hidden}._1c3wdzll:hover{background:color-mix(in srgb, currentColor 8%, transparent)}._1c3wdzll:focus{border-color:var(--rc-accent);background:color-mix(in srgb, currentColor 6%, transparent)}._1c3wdzlm{flex:1;min-height:0;position:relative}._1c3wdzln{justify-content:flex-end;gap:8px;padding:0 1.5rem 1.25rem;display:flex}._1c3wdzlo{border:1px solid var(--rc-border);font-size:var(--rc-font-size-sm);cursor:pointer;color:var(--rc-text);background:0 0;border-radius:6px;padding:6px 14px;font-weight:500;transition:background .15s}._1c3wdzlo:hover{background:color-mix(in srgb, currentColor 6%, transparent)}._1c3wdzlp{border:1px solid var(--rc-accent);background:var(--rc-accent);font-size:var(--rc-font-size-sm);cursor:pointer;color:#fff;border-radius:6px;padding:6px 14px;font-weight:500;transition:opacity .15s}._1c3wdzlp:hover{opacity:.9}._1c3wdzlq{border:1px solid var(--rc-alert-caution);font-size:var(--rc-font-size-sm);cursor:pointer;color:var(--rc-alert-caution);background:0 0;border-radius:6px;padding:6px 14px;font-weight:500;transition:background .15s}._1c3wdzlq:hover{background:color-mix(in srgb, var(--rc-alert-caution) 10%, transparent)}._1c3wdzlr{z-index:1;cursor:pointer;background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzlr:focus-visible{box-shadow:inset 0 0 0 2px var(--rc-accent)}._1c3wdzls{background:color-mix(in oklab, var(--rc-bg) 92%, transparent);border:1px solid var(--rc-border);color:var(--rc-text-secondary);font-family:var(--rc-font-family-sans);opacity:0;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;font-weight:500;transition:opacity .15s;display:inline-flex;position:absolute;top:8px;right:8px}._1c3wdzlr:hover ._1c3wdzls{opacity:1}._1c3wdzlr:focus-visible ._1c3wdzls{opacity:1}@media (prefers-reduced-motion:reduce){._1c3wdzl6{animation:none}}@media (pointer:coarse){._1c3wdzls{opacity:1}}._1capwnq0{-webkit-user-select:none;user-select:none;touch-action:none;cursor:grab;width:100%;height:100%;position:relative;overflow:hidden}._1capwnq0[data-mode=inline]{touch-action:pan-x pan-y}._1capwnq0[data-panning=true]{cursor:grabbing}._1capwnq1{width:100%;height:100%;display:block}._1capwnq2{z-index:1;border:1px solid var(--rc-border);background-color:color-mix(in oklab, var(--rc-bg) 92%, transparent);color:var(--rc-text-tertiary);font-family:var(--rc-font-family-sans);opacity:0;border-radius:8px;align-items:center;gap:2px;padding:3px;font-size:12px;transition:opacity .15s;display:flex;position:absolute;bottom:8px;right:8px}._1capwnq0:hover ._1capwnq2,._1capwnq0:focus-within ._1capwnq2{opacity:1}._1capwnq3{-webkit-appearance:none;appearance:none;width:28px;height:28px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:background-color .15s,color .15s;display:inline-flex}._1capwnq3:hover{background-color:var(--rc-fill);color:var(--rc-text)}._1capwnq4{text-align:center;font-variant-numeric:tabular-nums;min-width:44px}._1capwnq5{background-color:var(--rc-border);width:1px;height:16px;margin:0 2px}._1capwnq3 svg{width:16px;height:16px}@media (pointer:coarse){._1capwnq0[data-mode=inline]{cursor:default}._1capwnq2{opacity:1}._1capwnq3{width:36px;height:36px}}
1
+ :root{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#f5f5f5;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:1.25em;--rc-flow-list:.375em;--rc-flow-block:2em;--rc-flow-heading:2em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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-font-size-code:.8125em;--rc-font-size-caption:.8125em;--rc-line-height:1.75;--rc-line-height-tight:1.35;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}:root.dark,[data-theme=dark]{--rc-text:#ededed;--rc-text-secondary:#c2c2c2;--rc-text-tertiary:#8a8a8a;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#2e2e2e;--rc-border-subtle:#1f1f1f;--rc-accent:#60a5fa;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#1a1a1a;--rc-code-header-bg:#212121;--rc-hr-border:#2e2e2e;--rc-quote-border:color-mix(in oklab, var(--rc-text) 22%, transparent);--rc-quote-bg:#262626;--rc-alert-info:#7aa7e0;--rc-alert-warning:#e0a458;--rc-alert-tip:#6cbf8f;--rc-alert-caution:#ef7d7d;--rc-alert-important:#a78bfa;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}._6anxnj0{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#f5f5f5;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:1.25em;--rc-flow-list:.375em;--rc-flow-block:2em;--rc-flow-heading:2em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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-font-size-code:.8125em;--rc-font-size-caption:.8125em;--rc-line-height:1.75;--rc-line-height-tight:1.35;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}._6anxnj1{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#f5f5f5;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:.5em;--rc-flow-list:.375em;--rc-flow-block:2em;--rc-flow-heading:2em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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-font-size-code:.8125em;--rc-font-size-caption:.8125em;--rc-line-height:1.85;--rc-line-height-tight:1.35;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--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}._6anxnj2{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#fafafa;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:2px;--rc-space-sm:4px;--rc-space-md:10px;--rc-space-lg:16px;--rc-space-xl:20px;--rc-flow-paragraph:.6em;--rc-flow-list:.25em;--rc-flow-block:1em;--rc-flow-heading:1em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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-font-size-code:.9286em;--rc-font-size-caption:.9286em;--rc-line-height:1.6;--rc-line-height-tight:1.3;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:3px;--rc-radius-md:6px;--rc-radius-lg:12px}._6anxnj3{--rc-text:#171717;--rc-text-secondary:#404040;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#e8e8e8;--rc-border-subtle:#f0f0f0;--rc-accent:#2563eb;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-code-header-bg:#f0f0f0;--rc-hr-border:#e8e8e8;--rc-quote-border:color-mix(in oklab, var(--rc-text) 18%, transparent);--rc-quote-bg:#fafafa;--rc-alert-info:#2f6db5;--rc-alert-warning:#b7791f;--rc-alert-tip:#2f855a;--rc-alert-caution:#c53030;--rc-alert-important:#6b46c1;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-flow-paragraph:.75em;--rc-flow-list:.25em;--rc-flow-block:1em;--rc-flow-heading:1em;--rc-font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto 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-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, "PingFang SC", "Noto Sans SC", 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:15px;--rc-font-size-small:13px;--rc-font-size-code:.8667em;--rc-font-size-caption:.8667em;--rc-line-height:1.65;--rc-line-height-tight:1.3;--rc-line-height-compact:1.6;--rc-line-height-code:1.7;--rc-font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}.dark ._6anxnj0,[data-theme=dark] ._6anxnj0,.dark._6anxnj0,[data-theme=dark]._6anxnj0,.dark ._6anxnj1,[data-theme=dark] ._6anxnj1,.dark._6anxnj1,[data-theme=dark]._6anxnj1,.dark ._6anxnj2,[data-theme=dark] ._6anxnj2,.dark._6anxnj2,[data-theme=dark]._6anxnj2,.dark ._6anxnj3,[data-theme=dark] ._6anxnj3,.dark._6anxnj3,[data-theme=dark]._6anxnj3{--rc-text:#ededed;--rc-text-secondary:#c2c2c2;--rc-text-tertiary:#8a8a8a;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#2e2e2e;--rc-border-subtle:#1f1f1f;--rc-accent:#60a5fa;--rc-accent-light:color-mix(in oklab, var(--rc-accent) 12%, transparent);--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#1a1a1a;--rc-code-header-bg:#212121;--rc-hr-border:#2e2e2e;--rc-quote-border:color-mix(in oklab, var(--rc-text) 22%, transparent);--rc-quote-bg:#262626;--rc-alert-info:#7aa7e0;--rc-alert-warning:#e0a458;--rc-alert-tip:#6cbf8f;--rc-alert-caution:#ef7d7d;--rc-alert-important:#a78bfa;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}@keyframes _1c3wdzl5{0%{background-position:200% 0,0 0}to{background-position:-200% 0,0 0}}._1c3wdzl0,._1c3wdzl1{aspect-ratio:16/9;width:100%;margin:var(--rc-flow-block) 0;border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);background-color:var(--rc-bg);position:relative;overflow:hidden}._1c3wdzl1:focus-within{border-color:var(--rc-accent)}._1c3wdzl2{aspect-ratio:16/9;width:100%;margin:var(--rc-flow-block) 0;border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);background-color:var(--rc-bg);background-image:radial-gradient(var(--rc-border) 1px, transparent 1px);background-size:16px 16px;position:relative;overflow:hidden}._1c3wdzl3{font-family:var(--rc-font-family-sans);color:var(--rc-text-tertiary);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl4{width:20px;height:20px;color:var(--rc-text-quaternary)}._1c3wdzl6{font-family:var(--rc-font-family-sans);color:var(--rc-text-tertiary);background-image:linear-gradient(90deg, transparent, color-mix(in oklab, var(--rc-text) 4%, transparent), transparent), radial-gradient(var(--rc-border) 1px, transparent 1px);background-size:200% 100%,16px 16px;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;animation:1.6s linear infinite _1c3wdzl5;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl7{font-family:var(--rc-font-family-sans);color:var(--rc-text-tertiary);background-image:radial-gradient(var(--rc-border) 1px, transparent 1px);background-size:16px 16px;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl8{font-family:var(--rc-font-family-sans);color:var(--rc-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl9{width:20px;height:20px;color:var(--rc-alert-caution)}._1c3wdzla{-webkit-appearance:none;appearance:none;border:1px solid var(--rc-border);background:var(--rc-bg);color:var(--rc-text-secondary);font:inherit;cursor:pointer;border-radius:6px;padding:4px 12px;font-size:12px}._1c3wdzla:hover{color:var(--rc-text);background-color:var(--rc-fill-tertiary)}._1c3wdzlb._1c3wdzlb{background:var(--rc-bg);border:none;border-radius:0;flex-direction:column;gap:0;width:100vw;max-width:100vw;height:100vh;max-height:100vh;margin:0;padding:0;display:flex;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden;transform:none}._1c3wdzlb._1c3wdzlb[data-open],._1c3wdzlb._1c3wdzlb[data-closed]{animation:none}._1c3wdzlc{border-bottom:1px solid var(--rc-border);flex-shrink:0;align-items:center;gap:10px;height:48px;padding:0 12px 0 16px;display:flex}._1c3wdzld{flex:1;align-items:center;gap:4px;display:flex}._1c3wdzle{border-radius:50%;flex-shrink:0;width:8px;height:8px;transition:background-color .3s}._1c3wdzlf{font-size:var(--rc-font-size-md);color:var(--rc-text);font-weight:600;line-height:1}._1c3wdzlg{font-size:var(--rc-font-size-sm);color:var(--rc-text-secondary);border-left:1px solid var(--rc-border);padding-left:10px;line-height:1}._1c3wdzlh{align-items:center;gap:2px;margin-left:auto;display:flex}._1c3wdzli{width:32px;height:32px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-left:8px;transition:background .15s,color .15s;display:flex}._1c3wdzli:hover{background:color-mix(in srgb, currentColor 8%, transparent);color:var(--rc-text)}._1c3wdzlj{color:var(--rc-text-secondary);cursor:pointer;font-size:var(--rc-font-size-sm);white-space:nowrap;background:0 0;border:none;border-radius:4px;align-items:center;gap:4px;padding:4px 10px;transition:background .15s,color .15s;display:inline-flex}._1c3wdzlj:hover{background:color-mix(in srgb, currentColor 8%, transparent);color:var(--rc-text)}._1c3wdzlj:disabled{opacity:.4;pointer-events:none}._1c3wdzlj svg{flex-shrink:0;width:14px;height:14px}._1c3wdzlk{background:var(--rc-border);flex-shrink:0;width:1px;height:16px;margin:0 4px}._1c3wdzll{background:color-mix(in srgb, currentColor 4%, transparent);color:var(--rc-text-secondary);font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);text-overflow:ellipsis;white-space:nowrap;border:1px solid #0000;border-radius:4px;outline:none;align-items:center;width:200px;max-width:50%;padding:3px 10px;transition:background .15s,border-color .15s;display:inline-flex;overflow:hidden}._1c3wdzll:hover{background:color-mix(in srgb, currentColor 8%, transparent)}._1c3wdzll:focus{border-color:var(--rc-accent);background:color-mix(in srgb, currentColor 6%, transparent)}._1c3wdzlm{flex:1;min-height:0;position:relative}._1c3wdzln{justify-content:flex-end;gap:8px;padding:0 1.5rem 1.25rem;display:flex}._1c3wdzlo{border:1px solid var(--rc-border);font-size:var(--rc-font-size-sm);cursor:pointer;color:var(--rc-text);background:0 0;border-radius:6px;padding:6px 14px;font-weight:500;transition:background .15s}._1c3wdzlo:hover{background:color-mix(in srgb, currentColor 6%, transparent)}._1c3wdzlp{border:1px solid var(--rc-accent);background:var(--rc-accent);font-size:var(--rc-font-size-sm);cursor:pointer;color:#fff;border-radius:6px;padding:6px 14px;font-weight:500;transition:opacity .15s}._1c3wdzlp:hover{opacity:.9}._1c3wdzlq{border:1px solid var(--rc-alert-caution);font-size:var(--rc-font-size-sm);cursor:pointer;color:var(--rc-alert-caution);background:0 0;border-radius:6px;padding:6px 14px;font-weight:500;transition:background .15s}._1c3wdzlq:hover{background:color-mix(in srgb, var(--rc-alert-caution) 10%, transparent)}._1c3wdzlr{z-index:1;cursor:pointer;background:0 0;border:none;outline:none;padding:0;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzlr:focus-visible{box-shadow:inset 0 0 0 2px var(--rc-accent)}._1c3wdzls{background:color-mix(in oklab, var(--rc-bg) 92%, transparent);border:1px solid var(--rc-border);color:var(--rc-text-secondary);font-family:var(--rc-font-family-sans);opacity:0;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;font-weight:500;transition:opacity .15s;display:inline-flex;position:absolute;top:8px;right:8px}._1c3wdzlr:hover ._1c3wdzls{opacity:1}._1c3wdzlr:focus-visible ._1c3wdzls{opacity:1}@media (prefers-reduced-motion:reduce){._1c3wdzl6{animation:none}}@media (pointer:coarse){._1c3wdzls{opacity:1}}._1capwnq0{-webkit-user-select:none;user-select:none;touch-action:none;cursor:grab;width:100%;height:100%;position:relative;overflow:hidden}._1capwnq0[data-mode=inline]{touch-action:pan-x pan-y}._1capwnq0[data-panning=true]{cursor:grabbing}._1capwnq1{width:100%;height:100%;display:block}._1capwnq2{z-index:1;border:1px solid var(--rc-border);background-color:color-mix(in oklab, var(--rc-bg) 92%, transparent);color:var(--rc-text-tertiary);font-family:var(--rc-font-family-sans);opacity:0;border-radius:8px;align-items:center;gap:2px;padding:3px;font-size:12px;transition:opacity .15s;display:flex;position:absolute;bottom:8px;right:8px}._1capwnq0:hover ._1capwnq2,._1capwnq0:focus-within ._1capwnq2{opacity:1}._1capwnq3{-webkit-appearance:none;appearance:none;width:28px;height:28px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:background-color .15s,color .15s;display:inline-flex}._1capwnq3:hover{background-color:var(--rc-fill);color:var(--rc-text)}._1capwnq4{text-align:center;font-variant-numeric:tabular-nums;min-width:44px}._1capwnq5{background-color:var(--rc-border);width:1px;height:16px;margin:0 2px}._1capwnq3 svg{width:16px;height:16px}@media (pointer:coarse){._1capwnq0[data-mode=inline]{cursor:default}._1capwnq2{opacity:1}._1capwnq3{width:36px;height:36px}}
2
2
  /*$vite$:1*/
@@ -1 +1 @@
1
- {"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../src/scene/Scene.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAgB/C,OAAO,KAAK,EACV,WAAW,EAEX,iBAAiB,EACjB,eAAe,EAMhB,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,WAAW,CA0B7E;AAED,eAAO,MAAM,iBAAiB,mCAAmC,CAAC;AAqBlE,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAU7C,CAAC;AAGH,UAAU,UAAW,SAAQ,iBAAiB;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAuBhC,CAAC"}
1
+ {"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../src/scene/Scene.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAgB/C,OAAO,KAAK,EACV,WAAW,EAEX,iBAAiB,EACjB,eAAe,EAMhB,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,WAAW,CA0B7E;AAED,eAAO,MAAM,iBAAiB,mCAAmC,CAAC;AAmBlE,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAa7C,CAAC;AAGH,UAAU,UAAW,SAAQ,iBAAiB;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAuBhC,CAAC"}
package/dist/static.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { a as ExcalidrawNode, c as ExcalidrawDisplayRenderer, i as $isExcalidrawNode, n as ExcalidrawExpandShell, o as EXCALIDRAW_NODE_KEY, r as $createExcalidrawNode, s as ExcalidrawSSRRenderer, t as EXCALIDRAW_BLOCK_TRANSFORMER } from "./transformer-C2e_qiIg.js";
2
- import { L as ExcalidrawConfigProvider, R as useExcalidrawConfig, j as excalidrawFullscreenPopup } from "./useExcalidrawFont-DAmoYxvU.js";
1
+ import { a as ExcalidrawNode, c as ExcalidrawDisplayRenderer, i as $isExcalidrawNode, n as ExcalidrawExpandShell, o as EXCALIDRAW_NODE_KEY, r as $createExcalidrawNode, s as ExcalidrawSSRRenderer, t as EXCALIDRAW_BLOCK_TRANSFORMER } from "./transformer-CbJAOPsv.js";
2
+ import { L as ExcalidrawConfigProvider, R as useExcalidrawConfig, j as excalidrawFullscreenPopup } from "./useExcalidrawFont-D_lnfKV8.js";
3
3
  export { $createExcalidrawNode, $isExcalidrawNode, EXCALIDRAW_BLOCK_TRANSFORMER, EXCALIDRAW_NODE_KEY, ExcalidrawConfigProvider, ExcalidrawDisplayRenderer, ExcalidrawDisplayRenderer as ExcalidrawRenderer, ExcalidrawDisplayRenderer as ExcalidrawStaticRenderer, ExcalidrawExpandShell, ExcalidrawNode, ExcalidrawSSRRenderer, excalidrawFullscreenPopup, useExcalidrawConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../src/styles.css.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,yBAAyB,QAAmB,CAAC;AAE1D,eAAO,MAAM,yBAAyB,QAOpC,CAAC;AAOH,eAAO,MAAM,qBAAqB,QAGhC,CAAC;AAeH,eAAO,MAAM,oBAAoB,QAAoB,CAAC;AAEtD,eAAO,MAAM,mBAAmB,QAI9B,CAAC;AAOH,eAAO,MAAM,iBAAiB,QAW5B,CAAC;AAEH,eAAO,MAAM,eAAe,QAG1B,CAAC;AAEH,eAAO,MAAM,eAAe,QAG1B,CAAC;AAEH,eAAO,MAAM,mBAAmB,QAI9B,CAAC;AAEH,eAAO,MAAM,eAAe,QAc1B,CAAC;AAUH,QAAA,MAAM,0BAA0B,QAAY,CAAC;AA2B7C,OAAO,EAAE,0BAA0B,IAAI,yBAAyB,EAAE,CAAC;AAInE,eAAO,MAAM,sBAAsB,QAQjC,CAAC;AAEH,eAAO,MAAM,2BAA2B,QAKtC,CAAC;AAEH,eAAO,MAAM,mBAAmB,QAM9B,CAAC;AAEH,eAAO,MAAM,qBAAqB,QAKhC,CAAC;AAEH,eAAO,MAAM,oBAAoB,QAM/B,CAAC;AAEH,eAAO,MAAM,uBAAuB,QAKlC,CAAC;AAEH,eAAO,MAAM,qBAAqB,QAkBhC,CAAC;AAIH,eAAO,MAAM,sBAAsB,QAuBjC,CAAC;AAQH,eAAO,MAAM,sBAAsB,QAMjC,CAAC;AAEH,eAAO,MAAM,sBAAsB,QAwBjC,CAAC;AAIH,eAAO,MAAM,sBAAsB,QAIjC,CAAC;AAIH,eAAO,MAAM,wBAAwB,QAKnC,CAAC;AAEH,eAAO,MAAM,oBAAoB,QAa/B,CAAC;AAEH,eAAO,MAAM,2BAA2B,QAatC,CAAC;AAEH,eAAO,MAAM,0BAA0B,QAarC,CAAC;AAIH,eAAO,MAAM,qBAAqB,QAYhC,CAAC;AAEH,eAAO,MAAM,mBAAmB,QA2B9B,CAAC"}
1
+ {"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../src/styles.css.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,yBAAyB,QAAmB,CAAC;AAE1D,eAAO,MAAM,yBAAyB,QAOpC,CAAC;AAOH,eAAO,MAAM,qBAAqB,QAGhC,CAAC;AAeH,eAAO,MAAM,oBAAoB,QAAoB,CAAC;AAEtD,eAAO,MAAM,mBAAmB,QAI9B,CAAC;AAOH,eAAO,MAAM,iBAAiB,QAW5B,CAAC;AAEH,eAAO,MAAM,eAAe,QAG1B,CAAC;AAEH,eAAO,MAAM,eAAe,QAG1B,CAAC;AAEH,eAAO,MAAM,mBAAmB,QAI9B,CAAC;AAEH,eAAO,MAAM,eAAe,QAc1B,CAAC;AAEH,QAAA,MAAM,0BAA0B,QAAY,CAAC;AA2B7C,OAAO,EAAE,0BAA0B,IAAI,yBAAyB,EAAE,CAAC;AAInE,eAAO,MAAM,sBAAsB,QAQjC,CAAC;AAEH,eAAO,MAAM,2BAA2B,QAKtC,CAAC;AAEH,eAAO,MAAM,mBAAmB,QAM9B,CAAC;AAEH,eAAO,MAAM,qBAAqB,QAKhC,CAAC;AAEH,eAAO,MAAM,oBAAoB,QAM/B,CAAC;AAEH,eAAO,MAAM,uBAAuB,QAKlC,CAAC;AAEH,eAAO,MAAM,qBAAqB,QAkBhC,CAAC;AAIH,eAAO,MAAM,sBAAsB,QAuBjC,CAAC;AAQH,eAAO,MAAM,sBAAsB,QAMjC,CAAC;AAEH,eAAO,MAAM,sBAAsB,QAwBjC,CAAC;AAIH,eAAO,MAAM,sBAAsB,QAIjC,CAAC;AAIH,eAAO,MAAM,wBAAwB,QAKnC,CAAC;AAEH,eAAO,MAAM,oBAAoB,QAa/B,CAAC;AAEH,eAAO,MAAM,2BAA2B,QAatC,CAAC;AAEH,eAAO,MAAM,0BAA0B,QAarC,CAAC;AAIH,eAAO,MAAM,qBAAqB,QAYhC,CAAC;AAEH,eAAO,MAAM,mBAAmB,QA2B9B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { C as excalidrawDialogCanvas, D as excalidrawDialogTitle, F as excalidrawStaticContainer, N as excalidrawHeaderClose, P as excalidrawPlaceholder, T as excalidrawDialogHeaderTitle, c as DARK_SCENE_FILTER, d as computeSceneBounds, f as ExcalidrawEmptyState, h as ExcalidrawPlaceholderState, m as ExcalidrawLoadingState, n as useExcalidrawData, o as countElements, p as ExcalidrawErrorState, s as toScene, t as useExcalidrawFont, u as SceneContent, w as excalidrawDialogHeader } from "./useExcalidrawFont-DAmoYxvU.js";
1
+ import { C as excalidrawDialogCanvas, D as excalidrawDialogTitle, F as excalidrawStaticContainer, N as excalidrawHeaderClose, P as excalidrawPlaceholder, T as excalidrawDialogHeaderTitle, c as DARK_SCENE_FILTER, d as computeSceneBounds, f as ExcalidrawEmptyState, h as ExcalidrawPlaceholderState, m as ExcalidrawLoadingState, n as useExcalidrawData, o as countElements, p as ExcalidrawErrorState, s as toScene, t as useExcalidrawFont, u as SceneContent, w as excalidrawDialogHeader } from "./useExcalidrawFont-D_lnfKV8.js";
2
2
  import { Component, Suspense, lazy, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
3
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
  import { createRendererDecoration, useColorScheme } from "@haklex/rich-editor/static";
@@ -324,7 +324,7 @@ function _defineProperty(e, r, t) {
324
324
  var ExcalidrawDisplayRenderer_exports = /* @__PURE__ */ __exportAll({ ExcalidrawDisplayRenderer: () => ExcalidrawDisplayRenderer });
325
325
  var ExcalidrawDisplayRenderer = ({ onExpand, snapshot }) => {
326
326
  const theme = useColorScheme();
327
- const { snapshot: data, loading, error, retry } = useExcalidrawData(snapshot);
327
+ const { snapshot: data, loading, error, retry, retryable } = useExcalidrawData(snapshot);
328
328
  const scene = useMemo(() => toScene(data), [data]);
329
329
  useExcalidrawFont();
330
330
  const handleExpand = useCallback((target) => {
@@ -348,7 +348,7 @@ var ExcalidrawDisplayRenderer = ({ onExpand, snapshot }) => {
348
348
  if (loading) body = /* @__PURE__ */ jsx(ExcalidrawLoadingState, {});
349
349
  else if (error) body = /* @__PURE__ */ jsx(ExcalidrawErrorState, {
350
350
  message: error,
351
- onRetry: retry
351
+ onRetry: retryable ? retry : void 0
352
352
  });
353
353
  else if (!data) body = /* @__PURE__ */ jsx(ExcalidrawEmptyState, {});
354
354
  else if (!scene) body = /* @__PURE__ */ jsx(ExcalidrawErrorState, { message: "Invalid whiteboard data" });
@@ -8,6 +8,8 @@ export interface ExcalidrawDataState {
8
8
  loading: boolean;
9
9
  /** Re-fetches a remote or incremental snapshot; a no-op for inline data. */
10
10
  retry: () => void;
11
+ /** True only when `error` came from a fetch, so `retry` can change the outcome. */
12
+ retryable: boolean;
11
13
  snapshot: Record<string, any> | undefined;
12
14
  }
13
15
  export declare function useExcalidrawData(data: string | ExcalidrawSnapshot | null): ExcalidrawDataState;
@@ -1 +1 @@
1
- {"version":3,"file":"useExcalidrawData.d.ts","sourceRoot":"","sources":["../src/useExcalidrawData.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD,MAAM,WAAW,mBAAmB;IAClC,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;CAC3C;AA4DD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,GAAG,mBAAmB,CA8E/F"}
1
+ {"version":3,"file":"useExcalidrawData.d.ts","sourceRoot":"","sources":["../src/useExcalidrawData.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD,MAAM,WAAW,mBAAmB;IAClC,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,mFAAmF;IACnF,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;CAC3C;AA6DD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,GAAG,mBAAmB,CA+E/F"}
@@ -1,4 +1,4 @@
1
- import { createContext, memo, use, useCallback, useEffect, useMemo, useState } from "react";
1
+ import { createContext, memo, use, useCallback, useEffect, useId, useMemo, useState } from "react";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { PenLine, TriangleAlert } from "lucide-react";
4
4
  import { RoughGenerator } from "roughjs/bin/generator";
@@ -243,11 +243,10 @@ function computeSceneBounds(elements) {
243
243
  };
244
244
  }
245
245
  var DARK_SCENE_FILTER = "invert(93%) hue-rotate(180deg)";
246
- var COUNTER_INVERT_FILTER_ID = "rich-excalidraw-counter-invert";
247
- var SceneDarkContext = createContext(false);
248
- var CounterInvertFilter = () => /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("filter", {
246
+ var SceneDarkContext = createContext(null);
247
+ var CounterInvertFilter = ({ id }) => /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("filter", {
249
248
  colorInterpolationFilters: "sRGB",
250
- id: COUNTER_INVERT_FILTER_ID,
249
+ id,
251
250
  children: [/* @__PURE__ */ jsx("feColorMatrix", {
252
251
  type: "hueRotate",
253
252
  values: "180"
@@ -258,9 +257,10 @@ var CounterInvertFilter = () => /* @__PURE__ */ jsx("defs", { children: /* @__PU
258
257
  }) });
259
258
  var SceneContent = memo(({ dark = false, files, scene }) => {
260
259
  const elements = scene.elements.filter((el) => !el.isDeleted);
260
+ const filterId = `rich-excalidraw-counter-invert-${useId().replaceAll(/[^\w-]/g, "")}`;
261
261
  return /* @__PURE__ */ jsxs(SceneDarkContext, {
262
- value: dark,
263
- children: [dark && /* @__PURE__ */ jsx(CounterInvertFilter, {}), elements.map((el) => /* @__PURE__ */ jsx(ElementGroup, {
262
+ value: dark ? { filterId } : null,
263
+ children: [dark && /* @__PURE__ */ jsx(CounterInvertFilter, { id: filterId }), elements.map((el) => /* @__PURE__ */ jsx(ElementGroup, {
264
264
  el,
265
265
  files
266
266
  }, el.id))]
@@ -543,7 +543,7 @@ var TextRender = ({ el }) => {
543
543
  });
544
544
  };
545
545
  var ImageRender = ({ el, files }) => {
546
- const dark = use(SceneDarkContext);
546
+ const darkFilter = use(SceneDarkContext);
547
547
  const file = el.fileId && files ? files[el.fileId] : void 0;
548
548
  if (!file?.dataURL) return /* @__PURE__ */ jsx(ImagePlaceholder, {
549
549
  el,
@@ -552,7 +552,7 @@ var ImageRender = ({ el, files }) => {
552
552
  const scaleX = el.scale?.[0] ?? 1;
553
553
  const scaleY = el.scale?.[1] ?? 1;
554
554
  return /* @__PURE__ */ jsx("image", {
555
- filter: dark ? `url(#${COUNTER_INVERT_FILTER_ID})` : void 0,
555
+ filter: darkFilter ? `url(#${darkFilter.filterId})` : void 0,
556
556
  height: el.height,
557
557
  href: file.dataURL,
558
558
  preserveAspectRatio: "none",
@@ -704,8 +704,12 @@ function typedToParsed(typed, apiUrl) {
704
704
  }
705
705
  }
706
706
  function stringToParsed(data, apiUrl) {
707
+ if (!data.trim()) return { type: "empty" };
707
708
  const typed = parseSnapshot(data);
708
- if (!typed) return { type: "empty" };
709
+ if (!typed) return {
710
+ type: "error",
711
+ error: "Unrecognized snapshot format"
712
+ };
709
713
  return typedToParsed(typed, apiUrl);
710
714
  }
711
715
  function useExcalidrawData(data) {
@@ -755,13 +759,15 @@ function useExcalidrawData(data) {
755
759
  snapshot: parsed.snapshot,
756
760
  loading: false,
757
761
  error: "",
758
- retry
762
+ retry,
763
+ retryable: false
759
764
  };
760
765
  if (parsed.type === "remote" || parsed.type === "incremental") return {
761
766
  snapshot: remoteSnapshot,
762
767
  loading,
763
768
  error,
764
769
  retry,
770
+ retryable: Boolean(error),
765
771
  baseRef: parsed.refLine,
766
772
  baseData
767
773
  };
@@ -769,13 +775,15 @@ function useExcalidrawData(data) {
769
775
  snapshot: void 0,
770
776
  loading: false,
771
777
  error: parsed.error,
772
- retry
778
+ retry,
779
+ retryable: false
773
780
  };
774
781
  return {
775
782
  snapshot: void 0,
776
783
  loading: false,
777
784
  error: "",
778
- retry
785
+ retry,
786
+ retryable: false
779
787
  };
780
788
  }
781
789
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haklex/rich-ext-excalidraw",
3
- "version": "0.50.0",
3
+ "version": "0.50.2",
4
4
  "description": "Excalidraw whiteboard extension",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,7 +25,7 @@
25
25
  "dist"
26
26
  ],
27
27
  "dependencies": {
28
- "@haklex/rich-headless": "0.50.0",
28
+ "@haklex/rich-headless": "0.50.2",
29
29
  "jsondiffpatch": "^0.7.6",
30
30
  "roughjs": "^4.6.6"
31
31
  },
@@ -37,7 +37,7 @@
37
37
  "@vanilla-extract/css": "^1.21.3",
38
38
  "@vanilla-extract/vite-plugin": "^5.2.6",
39
39
  "lexical": "^0.52.0",
40
- "lucide-react": "^1.58.0",
40
+ "lucide-react": "^1.59.0",
41
41
  "react": "^19.3.1",
42
42
  "react-dom": "^19.3.1",
43
43
  "typescript": "^7.0.2",
@@ -46,9 +46,9 @@
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@excalidraw/excalidraw": ">=0.18.0",
49
- "@haklex/rich-editor": "^0.50.0",
50
- "@haklex/rich-editor-ui": "^0.50.0",
51
- "@haklex/rich-style-token": "^0.50.0",
49
+ "@haklex/rich-editor": "^0.50.2",
50
+ "@haklex/rich-editor-ui": "^0.50.2",
51
+ "@haklex/rich-style-token": "^0.50.2",
52
52
  "@lexical/react": "^0.52.0",
53
53
  "lexical": "^0.52.0",
54
54
  "lucide-react": "^1.0.0",