@haklex/rich-ext-excalidraw 0.49.1 → 0.50.1
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/dist/ExcalidrawConfigContext.d.ts +3 -1
- package/dist/ExcalidrawConfigContext.d.ts.map +1 -1
- package/dist/ExcalidrawDisplayRenderer.d.ts +1 -0
- package/dist/ExcalidrawDisplayRenderer.d.ts.map +1 -1
- package/dist/ExcalidrawEditRenderer.d.ts.map +1 -1
- package/dist/ExcalidrawFrameStates.d.ts +11 -0
- package/dist/ExcalidrawFrameStates.d.ts.map +1 -0
- package/dist/ExcalidrawSSRRenderer.d.ts.map +1 -1
- package/dist/display.test.d.ts +2 -0
- package/dist/display.test.d.ts.map +1 -0
- package/dist/index.mjs +51 -55
- package/dist/rich-ext-excalidraw.css +1 -1
- package/dist/scene/InteractiveScene.d.ts +11 -0
- package/dist/scene/InteractiveScene.d.ts.map +1 -0
- package/dist/scene/Scene.d.ts +24 -0
- package/dist/scene/Scene.d.ts.map +1 -0
- package/dist/scene/fonts.d.ts +8 -0
- package/dist/scene/fonts.d.ts.map +1 -0
- package/dist/scene/normalize.d.ts +4 -0
- package/dist/scene/normalize.d.ts.map +1 -0
- package/dist/scene/rough.d.ts +19 -0
- package/dist/scene/rough.d.ts.map +1 -0
- package/dist/scene/scene.test.d.ts +2 -0
- package/dist/scene/scene.test.d.ts.map +1 -0
- package/dist/scene/styles.css.d.ts +7 -0
- package/dist/scene/styles.css.d.ts.map +1 -0
- package/dist/scene/types.d.ts +118 -0
- package/dist/scene/types.d.ts.map +1 -0
- package/dist/static.mjs +2 -2
- package/dist/styles.css.d.ts +5 -2
- package/dist/styles.css.d.ts.map +1 -1
- package/dist/transformer-CbJAOPsv.js +487 -0
- package/dist/useExcalidrawData.d.ts +4 -0
- package/dist/useExcalidrawData.d.ts.map +1 -1
- package/dist/useExcalidrawFont-D_lnfKV8.js +803 -0
- package/dist/useExcalidrawFont.d.ts +2 -0
- package/dist/useExcalidrawFont.d.ts.map +1 -0
- package/package.json +12 -6
- package/dist/constants.d.ts +0 -5
- package/dist/constants.d.ts.map +0 -1
- package/dist/transformer-BaQILRBF.js +0 -315
- package/dist/useExcalidrawData-ZN9PHFyy.js +0 -227
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
export interface ExcalidrawConfig {
|
|
3
3
|
apiUrl?: string;
|
|
4
|
+
/** Stylesheet that defines the hand-drawn fonts (Excalifont, LXGW WenKai…); loaded once on first render. */
|
|
5
|
+
fontCssHref?: string;
|
|
4
6
|
saveSnapshot?: (snapshot: object, existingRef?: string) => Promise<string>;
|
|
5
7
|
}
|
|
6
|
-
export declare function ExcalidrawConfigProvider({ apiUrl, saveSnapshot, children, }: ExcalidrawConfig & {
|
|
8
|
+
export declare function ExcalidrawConfigProvider({ apiUrl, fontCssHref, saveSnapshot, children, }: ExcalidrawConfig & {
|
|
7
9
|
children: ReactNode;
|
|
8
10
|
}): import('react').JSX.Element;
|
|
9
11
|
export declare function useExcalidrawConfig(): ExcalidrawConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExcalidrawConfigContext.d.ts","sourceRoot":"","sources":["../src/ExcalidrawConfigContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"ExcalidrawConfigContext.d.ts","sourceRoot":"","sources":["../src/ExcalidrawConfigContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4GAA4G;IAC5G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5E;AAID,wBAAgB,wBAAwB,CAAC,EACvC,MAAM,EACN,WAAW,EACX,YAAY,EACZ,QAAQ,GACT,EAAE,gBAAgB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAQ5C;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExcalidrawDisplayRenderer.d.ts","sourceRoot":"","sources":["../src/ExcalidrawDisplayRenderer.tsx"],"names":[],"mappings":"
|
|
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;
|
|
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,11 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
export declare const ExcalidrawPlaceholderState: FC<{
|
|
3
|
+
elementCount?: number;
|
|
4
|
+
}>;
|
|
5
|
+
export declare const ExcalidrawLoadingState: FC;
|
|
6
|
+
export declare const ExcalidrawEmptyState: FC;
|
|
7
|
+
export declare const ExcalidrawErrorState: FC<{
|
|
8
|
+
message: string;
|
|
9
|
+
onRetry?: () => void;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=ExcalidrawFrameStates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExcalidrawFrameStates.d.ts","sourceRoot":"","sources":["../src/ExcalidrawFrameStates.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAQpE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,EAIpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAIlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAa9E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExcalidrawSSRRenderer.d.ts","sourceRoot":"","sources":["../src/ExcalidrawSSRRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ExcalidrawSSRRenderer.d.ts","sourceRoot":"","sources":["../src/ExcalidrawSSRRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAItE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AA0BD,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAQhE,CAAC"}
|
|
@@ -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,6 +1,6 @@
|
|
|
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-
|
|
2
|
-
import { A as
|
|
3
|
-
import { Suspense, createElement, lazy, useCallback, useEffect, useRef, useState } from "react";
|
|
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
|
+
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";
|
|
6
6
|
import { Clipboard, Download, PenTool, Pencil, Save, X } from "lucide-react";
|
|
@@ -390,15 +390,15 @@ var ExcalidrawEditorDialogContent = ({ dismiss, ExcalidrawComponent, initialData
|
|
|
390
390
|
],
|
|
391
391
|
onChange: handleStorageModeChange
|
|
392
392
|
}),
|
|
393
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
393
|
+
/* @__PURE__ */ jsx("div", { className: "_1c3wdzlk" }),
|
|
394
394
|
/* @__PURE__ */ jsxs("button", {
|
|
395
|
-
className: "
|
|
395
|
+
className: "_1c3wdzlj",
|
|
396
396
|
disabled: isSaving,
|
|
397
397
|
type: "button",
|
|
398
398
|
onClick: handleManualUpload,
|
|
399
399
|
children: [/* @__PURE__ */ jsx(Save, { size: 14 }), /* @__PURE__ */ jsx("span", { children: isSaving ? "Saving..." : "Save" })]
|
|
400
400
|
}),
|
|
401
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
401
|
+
/* @__PURE__ */ jsx("div", { className: "_1c3wdzlk" })
|
|
402
402
|
] }),
|
|
403
403
|
/* @__PURE__ */ jsxs("button", {
|
|
404
404
|
className: excalidrawActionBarBtn,
|
|
@@ -412,8 +412,8 @@ var ExcalidrawEditorDialogContent = ({ dismiss, ExcalidrawComponent, initialData
|
|
|
412
412
|
onClick: handleCopyJson,
|
|
413
413
|
children: [/* @__PURE__ */ jsx(Clipboard, { size: 14 }), "Copy"]
|
|
414
414
|
}),
|
|
415
|
-
storageMode !== "inline" && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", { className: "
|
|
416
|
-
className: "
|
|
415
|
+
storageMode !== "inline" && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", { className: "_1c3wdzlk" }), /* @__PURE__ */ jsx("input", {
|
|
416
|
+
className: "_1c3wdzll",
|
|
417
417
|
placeholder: "base URL / ref",
|
|
418
418
|
spellCheck: false,
|
|
419
419
|
type: "text",
|
|
@@ -444,12 +444,10 @@ 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, baseRef, baseData } = useExcalidrawData(snapshot);
|
|
448
|
-
const [
|
|
449
|
-
const [
|
|
450
|
-
const
|
|
451
|
-
const initialDataRef = useRef(void 0);
|
|
452
|
-
const [previewKey, setPreviewKey] = useState(0);
|
|
447
|
+
const { snapshot: initialData, loading: dataLoading, error: dataError, retry, retryable, baseRef, baseData } = useExcalidrawData(snapshot);
|
|
448
|
+
const [editedData, setEditedData] = useState();
|
|
449
|
+
const [editorLoading, setEditorLoading] = useState(false);
|
|
450
|
+
const excalidrawRef = useRef(null);
|
|
453
451
|
const onSnapshotChangeRef = useRef(onSnapshotChange);
|
|
454
452
|
onSnapshotChangeRef.current = onSnapshotChange;
|
|
455
453
|
const saveSnapshotRef = useRef(saveSnapshot);
|
|
@@ -457,19 +455,11 @@ var ExcalidrawEditRenderer = ({ snapshot, onSnapshotChange }) => {
|
|
|
457
455
|
const snapshotRef = useRef(snapshot);
|
|
458
456
|
snapshotRef.current = snapshot;
|
|
459
457
|
const { className: portalClassName } = usePortalTheme();
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
const Comp = mod.Excalidraw || mod.default?.Excalidraw;
|
|
466
|
-
if (Comp) setExcalidrawComponent(() => Comp);
|
|
467
|
-
setLibLoading(false);
|
|
468
|
-
}).catch((err) => {
|
|
469
|
-
console.error("[excalidraw] failed to load", err);
|
|
470
|
-
setLibLoading(false);
|
|
471
|
-
});
|
|
472
|
-
}, []);
|
|
458
|
+
useExcalidrawFont();
|
|
459
|
+
const previewData = editedData ?? initialData;
|
|
460
|
+
const previewDataRef = useRef(previewData);
|
|
461
|
+
previewDataRef.current = previewData;
|
|
462
|
+
const previewScene = useMemo(() => toScene(previewData), [previewData]);
|
|
473
463
|
const baseRefRef = useRef(baseRef);
|
|
474
464
|
const baseDataRefOuter = useRef(baseData);
|
|
475
465
|
useEffect(() => {
|
|
@@ -478,24 +468,38 @@ var ExcalidrawEditRenderer = ({ snapshot, onSnapshotChange }) => {
|
|
|
478
468
|
useEffect(() => {
|
|
479
469
|
if (baseData) baseDataRefOuter.current = baseData;
|
|
480
470
|
}, [baseData]);
|
|
481
|
-
const
|
|
482
|
-
if (
|
|
471
|
+
const loadExcalidraw = useCallback(async () => {
|
|
472
|
+
if (excalidrawRef.current) return excalidrawRef.current;
|
|
473
|
+
const [mod] = await Promise.all([import("@excalidraw/excalidraw"), import("@excalidraw/excalidraw/index.css")]);
|
|
474
|
+
const Comp = mod.Excalidraw || mod.default?.Excalidraw;
|
|
475
|
+
excalidrawRef.current = Comp ?? null;
|
|
476
|
+
return excalidrawRef.current;
|
|
477
|
+
}, []);
|
|
478
|
+
const handleOpenEditor = useCallback(async () => {
|
|
479
|
+
if (dataLoading || editorLoading) return;
|
|
480
|
+
setEditorLoading(true);
|
|
481
|
+
let ExcalidrawComponent = null;
|
|
482
|
+
try {
|
|
483
|
+
ExcalidrawComponent = await loadExcalidraw();
|
|
484
|
+
} catch (err) {
|
|
485
|
+
console.error("[excalidraw] failed to load", err);
|
|
486
|
+
} finally {
|
|
487
|
+
setEditorLoading(false);
|
|
488
|
+
}
|
|
489
|
+
if (!ExcalidrawComponent) return;
|
|
483
490
|
presentDialog({
|
|
484
491
|
content: ({ dismiss }) => /* @__PURE__ */ jsx(ExcalidrawEditorDialogContent, {
|
|
485
492
|
ExcalidrawComponent,
|
|
486
493
|
baseData: baseDataRefOuter.current,
|
|
487
494
|
baseRef: baseRefRef.current,
|
|
488
495
|
dismiss,
|
|
489
|
-
initialData:
|
|
496
|
+
initialData: previewDataRef.current,
|
|
490
497
|
initialSnapshot: snapshotRef.current,
|
|
491
498
|
saveSnapshot: saveSnapshotRef.current,
|
|
492
499
|
theme,
|
|
493
500
|
onSave: (ref) => onSnapshotChangeRef.current(ref),
|
|
494
501
|
onClose: (doc) => {
|
|
495
|
-
if (doc)
|
|
496
|
-
initialDataRef.current = doc;
|
|
497
|
-
setPreviewKey((k) => k + 1);
|
|
498
|
-
}
|
|
502
|
+
if (doc) setEditedData(doc);
|
|
499
503
|
}
|
|
500
504
|
}),
|
|
501
505
|
className: excalidrawFullscreenPopup,
|
|
@@ -505,44 +509,36 @@ var ExcalidrawEditRenderer = ({ snapshot, onSnapshotChange }) => {
|
|
|
505
509
|
clickOutsideToDismiss: false
|
|
506
510
|
});
|
|
507
511
|
}, [
|
|
508
|
-
ExcalidrawComponent,
|
|
509
512
|
dataLoading,
|
|
513
|
+
editorLoading,
|
|
514
|
+
loadExcalidraw,
|
|
510
515
|
theme,
|
|
511
516
|
portalClassName
|
|
512
517
|
]);
|
|
513
|
-
if (dataLoading
|
|
518
|
+
if (dataLoading) return /* @__PURE__ */ jsx("div", {
|
|
514
519
|
className: excalidrawEditorContainer,
|
|
515
|
-
children: /* @__PURE__ */ jsx(
|
|
516
|
-
className: excalidrawLoading,
|
|
517
|
-
children: "Loading excalidraw editor..."
|
|
518
|
-
})
|
|
520
|
+
children: /* @__PURE__ */ jsx(ExcalidrawLoadingState, {})
|
|
519
521
|
});
|
|
520
522
|
if (dataError) return /* @__PURE__ */ jsx("div", {
|
|
521
523
|
className: excalidrawEditorContainer,
|
|
522
|
-
children: /* @__PURE__ */ jsx(
|
|
523
|
-
|
|
524
|
-
|
|
524
|
+
children: /* @__PURE__ */ jsx(ExcalidrawErrorState, {
|
|
525
|
+
message: dataError,
|
|
526
|
+
onRetry: retryable ? retry : void 0
|
|
525
527
|
})
|
|
526
528
|
});
|
|
527
529
|
return /* @__PURE__ */ jsxs("div", {
|
|
528
530
|
className: excalidrawEditorContainer,
|
|
529
|
-
children: [/* @__PURE__ */ jsx(
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
theme,
|
|
535
|
-
excalidrawAPI: (api) => {
|
|
536
|
-
previewApiRef.current = api;
|
|
537
|
-
fitSceneOnReady(api);
|
|
538
|
-
}
|
|
539
|
-
}, previewKey), /* @__PURE__ */ jsx("button", {
|
|
531
|
+
children: [previewScene && countElements(previewScene) > 0 ? /* @__PURE__ */ jsx(Scene, {
|
|
532
|
+
scene: previewScene,
|
|
533
|
+
theme
|
|
534
|
+
}) : /* @__PURE__ */ jsx(ExcalidrawEmptyState, {}), /* @__PURE__ */ jsx("button", {
|
|
535
|
+
"aria-label": "Edit whiteboard",
|
|
540
536
|
className: excalidrawEditOverlay,
|
|
541
537
|
type: "button",
|
|
542
538
|
onClick: handleOpenEditor,
|
|
543
539
|
children: /* @__PURE__ */ jsxs("span", {
|
|
544
540
|
className: excalidrawEditLabel,
|
|
545
|
-
children: [/* @__PURE__ */ jsx(Pencil, { size:
|
|
541
|
+
children: [/* @__PURE__ */ jsx(Pencil, { size: 14 }), editorLoading ? "Loading editor…" : "Edit"]
|
|
546
542
|
})
|
|
547
543
|
})]
|
|
548
544
|
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:root{--rc-text:#000;--rc-text-secondary:#262626;--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:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#2563eb;--rc-quote-bg:#f5f5f5;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-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, 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,[data-theme=dark]{--rc-text:#fafafa;--rc-text-secondary:#a3a3a3;--rc-text-tertiary:#737373;--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:#262626;--rc-accent:#60a5fa;--rc-accent-light:#60a5fa20;--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#262626;--rc-hr-border:#262626;--rc-quote-border:#60a5fa;--rc-quote-bg:#262626;--rc-alert-info:#7db9e5;--rc-alert-warning:#da864a;--rc-alert-tip:#54da48;--rc-alert-caution:#e16973;--rc-alert-important:#9966e0;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}._6anxnj0{--rc-text:#000;--rc-text-secondary:#262626;--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:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#2563eb;--rc-quote-bg:#f5f5f5;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-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, 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}._6anxnj1{--rc-text:#000;--rc-text-secondary:#262626;--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:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#2563eb;--rc-quote-bg:#f5f5f5;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-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, 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}._6anxnj2{--rc-text:#000;--rc-text-secondary:#262626;--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:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#a3a3a3;--rc-quote-bg:#fafafa;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:2px;--rc-space-sm:4px;--rc-space-md:10px;--rc-space-lg:16px;--rc-space-xl:20px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-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, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:14px;--rc-font-size-small:12px;--rc-line-height:1.5;--rc-line-height-tight:1.3;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:3px;--rc-radius-md:6px;--rc-radius-lg:12px}.dark ._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{--rc-text:#fafafa;--rc-text-secondary:#a3a3a3;--rc-text-tertiary:#737373;--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:#262626;--rc-accent:#60a5fa;--rc-accent-light:#60a5fa20;--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#262626;--rc-hr-border:#262626;--rc-quote-border:#60a5fa;--rc-quote-bg:#262626;--rc-alert-info:#7db9e5;--rc-alert-warning:#da864a;--rc-alert-tip:#54da48;--rc-alert-caution:#e16973;--rc-alert-important:#9966e0;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}@keyframes _1c3wdzl4{to{transform:rotate(360deg)}}._1c3wdzl0{aspect-ratio:16/10;background-color:var(--rc-bg);border-radius:.5rem;width:100%;margin:1rem 0;position:relative;overflow:hidden}._1c3wdzl1{aspect-ratio:16/10;border:1px solid var(--rc-border);border-radius:.5rem;width:100%;margin:1rem 0;position:relative;overflow:hidden}._1c3wdzl2{aspect-ratio:16/10;background-color:var(--rc-bg);border:1px solid var(--rc-border);width:100%;color:var(--rc-text-secondary);font-size:var(--rc-font-size-md);border-radius:.5rem;justify-content:center;align-items:center;display:flex;position:relative}._1c3wdzl3{color:var(--rc-text-secondary);font-size:var(--rc-font-size-md);justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl3:after{content:"";border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;margin-left:8px;animation:.6s linear infinite _1c3wdzl4;display:inline-block}._1c3wdzl5{background-color:color-mix(in srgb, var(--rc-alert-caution) 10%, transparent);color:var(--rc-alert-caution);font-size:var(--rc-font-size-md);justify-content:center;align-items:center;padding:.75rem 1rem;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzl0 .App-toolbar{display:none}._1c3wdzl1 .Island,.excalidraw--view-mode .dropdown-menu-button{display:none!important}._1c3wdzl6{z-index:10;background-color:color-mix(in srgb, currentColor 8%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:6px;gap:4px;padding:2px;display:flex;position:absolute;bottom:8px;right:8px}._1c3wdzl7{width:28px;height:28px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}._1c3wdzl7:hover{background:color-mix(in srgb, currentColor 12%, transparent);color:var(--rc-text)}._1c3wdzl7 svg{width:16px;height:16px}._1c3wdzl8._1c3wdzl8{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}._1c3wdzl8._1c3wdzl8[data-open],._1c3wdzl8._1c3wdzl8[data-closed]{animation:none}._1c3wdzl9{border-bottom:1px solid var(--rc-border);flex-shrink:0;align-items:center;gap:10px;height:48px;padding:0 12px 0 16px;display:flex}._1c3wdzla{flex:1;align-items:center;gap:4px;display:flex}._1c3wdzlb{border-radius:50%;flex-shrink:0;width:8px;height:8px;transition:background-color .3s}._1c3wdzlc{font-size:var(--rc-font-size-md);color:var(--rc-text);font-weight:600;line-height:1}._1c3wdzld{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}._1c3wdzle{align-items:center;gap:2px;margin-left:auto;display:flex}._1c3wdzlf{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}._1c3wdzlf:hover{background:color-mix(in srgb, currentColor 8%, transparent);color:var(--rc-text)}._1c3wdzlg{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}._1c3wdzlg:hover{background:color-mix(in srgb, currentColor 8%, transparent);color:var(--rc-text)}._1c3wdzlg:disabled{opacity:.4;pointer-events:none}._1c3wdzlg svg{flex-shrink:0;width:14px;height:14px}._1c3wdzlh{background:var(--rc-border);flex-shrink:0;width:1px;height:16px;margin:0 4px}._1c3wdzli{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}._1c3wdzli:hover{background:color-mix(in srgb, currentColor 8%, transparent)}._1c3wdzli:focus{border-color:var(--rc-accent);background:color-mix(in srgb, currentColor 6%, transparent)}._1c3wdzlj{flex:1;min-height:0;position:relative}._1c3wdzlk{justify-content:flex-end;gap:8px;padding:0 1.5rem 1.25rem;display:flex}._1c3wdzll{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}._1c3wdzll:hover{background:color-mix(in srgb, currentColor 6%, transparent)}._1c3wdzlm{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}._1c3wdzlm:hover{opacity:.9}._1c3wdzln{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}._1c3wdzln:hover{background:color-mix(in srgb, var(--rc-alert-caution) 10%, transparent)}._1c3wdzlo{z-index:5;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:background .2s;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}._1c3wdzlo:hover{background:color-mix(in srgb, currentColor 6%, transparent)}._1c3wdzlp{background:var(--rc-bg);border:1px solid var(--rc-border);color:var(--rc-text);font-size:var(--rc-font-size-sm);opacity:0;border-radius:6px;align-items:center;gap:6px;padding:6px 14px;font-weight:500;transition:opacity .2s;display:flex}._1c3wdzlo:hover ._1c3wdzlp{opacity:1}
|
|
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*/
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { ExcalidrawScene, StaticTheme } from './types';
|
|
3
|
+
export interface InteractiveSceneProps {
|
|
4
|
+
/** `inline` leaves one-finger touch drags to the page; `fullscreen` owns every gesture. */
|
|
5
|
+
mode?: 'inline' | 'fullscreen';
|
|
6
|
+
onExpand?: (target: HTMLElement) => void;
|
|
7
|
+
scene: ExcalidrawScene;
|
|
8
|
+
theme?: StaticTheme;
|
|
9
|
+
}
|
|
10
|
+
export declare const InteractiveScene: FC<InteractiveSceneProps>;
|
|
11
|
+
//# sourceMappingURL=InteractiveScene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractiveScene.d.ts","sourceRoot":"","sources":["../../src/scene/InteractiveScene.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAoE,MAAM,OAAO,CAAC;AAKlG,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQ5D,MAAM,WAAW,qBAAqB;IACpC,2FAA2F;IAC3F,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAOD,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA4QtD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CSSProperties, FC } from 'react';
|
|
2
|
+
import { BinaryFiles, ExcalidrawElement, ExcalidrawScene } from './types';
|
|
3
|
+
export interface SceneBounds {
|
|
4
|
+
height: number;
|
|
5
|
+
minX: number;
|
|
6
|
+
minY: number;
|
|
7
|
+
width: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function computeSceneBounds(elements: ExcalidrawElement[]): SceneBounds;
|
|
10
|
+
export declare const DARK_SCENE_FILTER = "invert(93%) hue-rotate(180deg)";
|
|
11
|
+
interface SceneContentProps {
|
|
12
|
+
dark?: boolean;
|
|
13
|
+
files?: BinaryFiles;
|
|
14
|
+
scene: ExcalidrawScene;
|
|
15
|
+
}
|
|
16
|
+
export declare const SceneContent: FC<SceneContentProps>;
|
|
17
|
+
interface SceneProps extends SceneContentProps {
|
|
18
|
+
className?: string;
|
|
19
|
+
style?: CSSProperties;
|
|
20
|
+
theme?: 'light' | 'dark';
|
|
21
|
+
}
|
|
22
|
+
export declare const Scene: FC<SceneProps>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=Scene.d.ts.map
|
|
@@ -0,0 +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;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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FontFamilyId } from './types';
|
|
2
|
+
export declare const EXCALIDRAW_FONT_STACK: {
|
|
3
|
+
readonly hand: "\"Excalifont\", \"LXGW WenKai Screen\", \"Virgil\", \"Comic Sans MS\", \"Segoe Print\", \"Bradley Hand\", cursive";
|
|
4
|
+
readonly sans: "Helvetica, \"PingFang SC\", \"Microsoft YaHei\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", system-ui, sans-serif";
|
|
5
|
+
readonly mono: "\"Cascadia Code\", \"Cascadia\", ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace";
|
|
6
|
+
};
|
|
7
|
+
export declare function fontFamilyToCss(id: FontFamilyId | undefined): string;
|
|
8
|
+
//# sourceMappingURL=fonts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/scene/fonts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CASpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/scene/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAUrF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAE5D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Drawable, Op, OpSet, Options as RoughOptions } from 'roughjs/bin/core';
|
|
2
|
+
import { BaseElement } from './types';
|
|
3
|
+
export declare function roughOptionsForElement(el: BaseElement, override?: Partial<RoughOptions>): RoughOptions;
|
|
4
|
+
export declare function rectangle(el: BaseElement, override?: Partial<RoughOptions>): Drawable;
|
|
5
|
+
export declare function ellipse(el: BaseElement, override?: Partial<RoughOptions>): Drawable;
|
|
6
|
+
export declare function diamond(el: BaseElement, override?: Partial<RoughOptions>): Drawable;
|
|
7
|
+
export declare function path(d: string, options: RoughOptions): Drawable;
|
|
8
|
+
export declare function linearPath(points: Array<[number, number]>, options: RoughOptions): Drawable;
|
|
9
|
+
export declare function curve(points: Array<[number, number]>, options: RoughOptions): Drawable;
|
|
10
|
+
export declare function polygon(points: Array<[number, number]>, options: RoughOptions): Drawable;
|
|
11
|
+
export declare function opsToPath(ops: Op[]): string;
|
|
12
|
+
export interface RenderedOpSet {
|
|
13
|
+
d: string;
|
|
14
|
+
type: OpSet['type'];
|
|
15
|
+
}
|
|
16
|
+
export declare function drawableToOpSets(drawable: Drawable): RenderedOpSet[];
|
|
17
|
+
export declare function roundedRectPath(width: number, height: number, radius: number): string;
|
|
18
|
+
export declare function getCornerRadius(el: BaseElement): number;
|
|
19
|
+
//# sourceMappingURL=rough.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rough.d.ts","sourceRoot":"","sources":["../../src/scene/rough.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrF,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AAQxD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,WAAW,EACf,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC/B,YAAY,CAgBd;AASD,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,CAErF;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,CAQnF;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,CAYnF;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,CAE/D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,CAE3F;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,CAEtF;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,CAExF;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,MAAM,CAmB3C;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,EAAE,CAEpE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAcrF;AAKD,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CAOvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene.test.d.ts","sourceRoot":"","sources":["../../src/scene/scene.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const sceneRoot: string;
|
|
2
|
+
export declare const sceneSvg: string;
|
|
3
|
+
export declare const toolbar: string;
|
|
4
|
+
export declare const toolButton: string;
|
|
5
|
+
export declare const zoomLabel: string;
|
|
6
|
+
export declare const toolSeparator: string;
|
|
7
|
+
//# sourceMappingURL=styles.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../../src/scene/styles.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,QAyBpB,CAAC;AAEH,eAAO,MAAM,QAAQ,QAInB,CAAC;AAEH,eAAO,MAAM,OAAO,QA2BlB,CAAC;AAEH,eAAO,MAAM,UAAU,QAwBrB,CAAC;AAEH,eAAO,MAAM,SAAS,QAIpB,CAAC;AAEH,eAAO,MAAM,aAAa,QAKxB,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export type StrokeStyle = 'solid' | 'dashed' | 'dotted';
|
|
2
|
+
export type FillStyle = 'hachure' | 'cross-hatch' | 'solid' | 'zigzag' | 'zigzag-line' | 'dots' | 'dashed';
|
|
3
|
+
export type ElementType = 'rectangle' | 'ellipse' | 'diamond' | 'line' | 'arrow' | 'freedraw' | 'text' | 'image' | 'frame' | 'magicframe' | 'embeddable' | 'iframe' | 'selection';
|
|
4
|
+
export interface BaseElement {
|
|
5
|
+
angle: number;
|
|
6
|
+
backgroundColor: string;
|
|
7
|
+
boundElements?: Array<{
|
|
8
|
+
id: string;
|
|
9
|
+
type: string;
|
|
10
|
+
}> | null;
|
|
11
|
+
fillStyle: FillStyle;
|
|
12
|
+
height: number;
|
|
13
|
+
id: string;
|
|
14
|
+
index?: string;
|
|
15
|
+
isDeleted?: boolean;
|
|
16
|
+
link?: string | null;
|
|
17
|
+
locked?: boolean;
|
|
18
|
+
opacity: number;
|
|
19
|
+
roughness: number;
|
|
20
|
+
roundness?: {
|
|
21
|
+
type: number;
|
|
22
|
+
value?: number;
|
|
23
|
+
} | null;
|
|
24
|
+
seed: number;
|
|
25
|
+
strokeColor: string;
|
|
26
|
+
strokeStyle: StrokeStyle;
|
|
27
|
+
strokeWidth: number;
|
|
28
|
+
type: ElementType;
|
|
29
|
+
version?: number;
|
|
30
|
+
versionNonce?: number;
|
|
31
|
+
width: number;
|
|
32
|
+
x: number;
|
|
33
|
+
y: number;
|
|
34
|
+
}
|
|
35
|
+
export interface RectangleElement extends BaseElement {
|
|
36
|
+
type: 'rectangle';
|
|
37
|
+
}
|
|
38
|
+
export interface EllipseElement extends BaseElement {
|
|
39
|
+
type: 'ellipse';
|
|
40
|
+
}
|
|
41
|
+
export interface DiamondElement extends BaseElement {
|
|
42
|
+
type: 'diamond';
|
|
43
|
+
}
|
|
44
|
+
export type Arrowhead = 'arrow' | 'bar' | 'dot' | 'circle' | 'circle_outline' | 'triangle' | 'triangle_outline' | 'diamond' | 'diamond_outline' | 'crowfoot_one' | 'crowfoot_many' | 'crowfoot_one_or_many' | null;
|
|
45
|
+
export interface LinearElement extends BaseElement {
|
|
46
|
+
elbowed?: boolean;
|
|
47
|
+
endArrowhead?: Arrowhead;
|
|
48
|
+
endBinding?: unknown;
|
|
49
|
+
lastCommittedPoint?: [number, number] | null;
|
|
50
|
+
points: Array<[number, number]>;
|
|
51
|
+
startArrowhead?: Arrowhead;
|
|
52
|
+
startBinding?: unknown;
|
|
53
|
+
type: 'line' | 'arrow';
|
|
54
|
+
}
|
|
55
|
+
export interface FreedrawElement extends BaseElement {
|
|
56
|
+
points: Array<[number, number]>;
|
|
57
|
+
pressures: number[];
|
|
58
|
+
simulatePressure: boolean;
|
|
59
|
+
type: 'freedraw';
|
|
60
|
+
}
|
|
61
|
+
export type FontFamilyId = 1 | 2 | 3 | 4 | 5 | 6 | 7;
|
|
62
|
+
export interface TextElement extends BaseElement {
|
|
63
|
+
autoResize?: boolean;
|
|
64
|
+
baseline: number;
|
|
65
|
+
containerId?: string | null;
|
|
66
|
+
fontFamily: FontFamilyId;
|
|
67
|
+
fontSize: number;
|
|
68
|
+
lineHeight?: number;
|
|
69
|
+
originalText?: string;
|
|
70
|
+
text: string;
|
|
71
|
+
textAlign: 'left' | 'center' | 'right';
|
|
72
|
+
type: 'text';
|
|
73
|
+
verticalAlign: 'top' | 'middle';
|
|
74
|
+
}
|
|
75
|
+
export interface ImageElement extends BaseElement {
|
|
76
|
+
crop?: {
|
|
77
|
+
x: number;
|
|
78
|
+
y: number;
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
} | null;
|
|
82
|
+
fileId?: string;
|
|
83
|
+
scale?: [number, number];
|
|
84
|
+
status?: 'pending' | 'saved' | 'error';
|
|
85
|
+
type: 'image';
|
|
86
|
+
}
|
|
87
|
+
export interface FrameLikeElement extends BaseElement {
|
|
88
|
+
children?: string[];
|
|
89
|
+
name?: string | null;
|
|
90
|
+
type: 'frame' | 'magicframe';
|
|
91
|
+
}
|
|
92
|
+
export interface EmbedElement extends BaseElement {
|
|
93
|
+
type: 'embeddable' | 'iframe';
|
|
94
|
+
}
|
|
95
|
+
export type ExcalidrawElement = RectangleElement | EllipseElement | DiamondElement | LinearElement | FreedrawElement | TextElement | ImageElement | FrameLikeElement | EmbedElement | (BaseElement & {
|
|
96
|
+
type: 'selection';
|
|
97
|
+
});
|
|
98
|
+
export interface BinaryFileData {
|
|
99
|
+
created?: number;
|
|
100
|
+
dataURL: string;
|
|
101
|
+
id: string;
|
|
102
|
+
lastRetrieved?: number;
|
|
103
|
+
mimeType?: string;
|
|
104
|
+
}
|
|
105
|
+
export type BinaryFiles = Record<string, BinaryFileData>;
|
|
106
|
+
export interface ExcalidrawScene {
|
|
107
|
+
appState?: Record<string, unknown> & {
|
|
108
|
+
viewBackgroundColor?: string;
|
|
109
|
+
theme?: 'light' | 'dark';
|
|
110
|
+
};
|
|
111
|
+
elements: ExcalidrawElement[];
|
|
112
|
+
files?: BinaryFiles;
|
|
113
|
+
source?: string;
|
|
114
|
+
type?: 'excalidraw';
|
|
115
|
+
version?: number;
|
|
116
|
+
}
|
|
117
|
+
export type StaticTheme = 'light' | 'dark';
|
|
118
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scene/types.ts"],"names":[],"mappings":"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"}
|
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-
|
|
2
|
-
import {
|
|
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 };
|