wendang-react 0.6.3 → 0.6.5

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.
Files changed (120) hide show
  1. package/NOTICE.md +1 -1
  2. package/README.md +133 -1
  3. package/dist/bindings/yjs.js +1 -5
  4. package/dist/chunks/AnchoredPanel-C7jMoPze.js +1 -0
  5. package/dist/chunks/DocumentExportMenu-CUMsgq3w.js +2 -0
  6. package/dist/chunks/Dropdown-D98tXfe0.js +3 -0
  7. package/dist/chunks/MindMapCanvas-C46Q5JBU.js +163 -0
  8. package/dist/chunks/MindMapViewer-C9zxZIW8.js +13 -0
  9. package/dist/chunks/SpreadsheetViewer-CoQ4VIgj.js +23 -0
  10. package/dist/chunks/code-highlight-BmaqTe1m.js +1 -30
  11. package/dist/chunks/code-highlight-engine-BFDzDPzy.js +1 -40
  12. package/dist/chunks/comment-hint-BhUxKjKK.js +14 -0
  13. package/dist/chunks/composition-state-Bl-U1R_2.js +1 -40
  14. package/dist/chunks/extensions-BefQ1tDm.js +14 -0
  15. package/dist/chunks/fuzzy-match-DYQR-4w2.js +1 -89
  16. package/dist/chunks/hooks-C53Dp0pr.js +1 -35
  17. package/dist/chunks/i18n-B0kCsIjc.js +2 -0
  18. package/dist/chunks/index-COeA2QcQ.js +15 -0
  19. package/dist/chunks/katex-WjrodtTU.js +1 -71
  20. package/dist/chunks/locale-DWpIJ_9X.js +1 -0
  21. package/dist/chunks/mind-map-controller-Ce76mETT.js +1 -0
  22. package/dist/chunks/mind-map-delete-CVsxdXfs.js +1 -31
  23. package/dist/chunks/mind-map-input-CEWRz_t6.js +1 -43
  24. package/dist/chunks/mind-topic-text-BHXkxexr.js +30 -0
  25. package/dist/chunks/popover-placement-D3xVYdkt.js +1 -47
  26. package/dist/chunks/worksheet-engine-c84sdD4N.js +1 -0
  27. package/dist/chunks/worksheet-preview-DsDVWxIM.js +1 -129
  28. package/dist/document/viewer.js +30 -289
  29. package/dist/document.js +120 -3811
  30. package/dist/export/json.js +1 -5
  31. package/dist/export/markdown.js +1 -2
  32. package/dist/export/mindmap.js +1 -2
  33. package/dist/export/pdf.js +1 -6
  34. package/dist/export/word.js +1 -2
  35. package/dist/export.js +1 -2
  36. package/dist/i18n.js +1 -0
  37. package/dist/index.js +1 -8
  38. package/dist/locales/en-US.js +1 -0
  39. package/dist/locales/es-ES.js +1 -0
  40. package/dist/locales/ja-JP.js +1 -0
  41. package/dist/locales/ko-KR.js +1 -0
  42. package/dist/locales/zh-CN.js +1 -0
  43. package/dist/locales/zh-TW.js +1 -0
  44. package/dist/mindmap/viewer.js +1 -6
  45. package/dist/mindmap.js +3 -123
  46. package/dist/shared.js +1 -52
  47. package/dist/spreadsheet/viewer.js +1 -5
  48. package/dist/spreadsheet/xlsx.js +1 -299
  49. package/dist/spreadsheet.js +2 -120
  50. package/dist/styles/callout.css +1 -34
  51. package/dist/styles/code-block.css +1 -58
  52. package/dist/styles/content-style.css +1 -619
  53. package/dist/styles/content-tokens.css +1 -29
  54. package/dist/styles/editor-interaction.css +1 -621
  55. package/dist/styles/file-video.css +1 -12
  56. package/dist/styles/image-preview.css +1 -103
  57. package/dist/styles/mind-map-block.css +1 -14
  58. package/dist/styles/mind-map-canvas.css +1 -80
  59. package/dist/styles/mind-map-comments.css +1 -93
  60. package/dist/styles/mind-map-details.css +1 -7
  61. package/dist/styles/mind-map-preview.css +1 -7
  62. package/dist/styles/mind-map-topic.css +1 -112
  63. package/dist/styles/page-picker.css +1 -47
  64. package/dist/styles/renderer.css +1 -45
  65. package/dist/styles/spreadsheet-editor.css +1 -3
  66. package/dist/styles/tokens.css +1 -142
  67. package/dist/styles/video-dialog.css +1 -41
  68. package/dist/styles/video-embed.css +1 -35
  69. package/dist/styles.css +1 -2655
  70. package/dist/types/editor/BlockAffordance.d.ts +5 -2
  71. package/dist/types/editor/CalloutView.d.ts +2 -1
  72. package/dist/types/editor/ImagePreview.d.ts +1 -1
  73. package/dist/types/editor/PagePicker.d.ts +1 -1
  74. package/dist/types/editor/extensions.d.ts +4 -1
  75. package/dist/types/engine/editor/block-commands.d.ts +1 -1
  76. package/dist/types/engine/editor/block-menu-hover.d.ts +16 -0
  77. package/dist/types/engine/editor/extensions/locale.d.ts +3 -0
  78. package/dist/types/engine/editor/nodes/image-nodeview.d.ts +1 -1
  79. package/dist/types/engine/editor/video-block-controls.d.ts +13 -0
  80. package/dist/types/engine/host.d.ts +60 -2
  81. package/dist/types/engine/renderer/attachments.d.ts +3 -3
  82. package/dist/types/engine/shared/video-feedback.d.ts +1 -1
  83. package/dist/types/engine/worksheets/worksheet-engine.d.ts +1 -0
  84. package/dist/types/engine/worksheets/worksheet-xlsx.d.ts +6 -1
  85. package/dist/types/host-types.d.ts +2 -60
  86. package/dist/types/host.d.ts +8 -1
  87. package/dist/types/i18n.d.ts +3 -0
  88. package/dist/types/index.d.ts +2 -0
  89. package/dist/types/locales/en-US.d.ts +1 -0
  90. package/dist/types/locales/es-ES.d.ts +1 -0
  91. package/dist/types/locales/ja-JP.d.ts +1 -0
  92. package/dist/types/locales/ko-KR.d.ts +1 -0
  93. package/dist/types/locales/zh-CN.d.ts +1 -0
  94. package/dist/types/locales/zh-TW.d.ts +1 -0
  95. package/dist/types/renderer/media.d.ts +2 -1
  96. package/dist/types/spreadsheet/xlsx.d.ts +1 -1
  97. package/dist/types/wui/Dropdown.d.ts +2 -1
  98. package/dist/types/wui/index.d.ts +2 -1
  99. package/integrity.json +3140 -0
  100. package/package.json +15 -5
  101. package/verify-integrity.mjs +138 -0
  102. package/dist/chunks/AnchoredPanel-Cv4RURwF.js +0 -68
  103. package/dist/chunks/DocumentExportMenu-BrGipZ59.js +0 -75
  104. package/dist/chunks/MindMapCanvas-tkFBBs4g.js +0 -2090
  105. package/dist/chunks/MindMapViewer-DJrryb2Y.js +0 -180
  106. package/dist/chunks/SpreadsheetViewer-DxCxIUx_.js +0 -163
  107. package/dist/chunks/comment-hint-B9qcrqvn.js +0 -296
  108. package/dist/chunks/extensions-ByORRoRa.js +0 -4210
  109. package/dist/chunks/host-C-V688Rq.js +0 -197
  110. package/dist/chunks/index-DdfMnva8.js +0 -726
  111. package/dist/chunks/mind-map-controller-B6SxK3GZ.js +0 -479
  112. package/dist/chunks/mind-topic-text-DSyb95vL.js +0 -446
  113. package/dist/chunks/nodes-iKqTGr_N.js +0 -291
  114. package/dist/chunks/worksheet-engine-TJ54m0KC.js +0 -125
  115. package/third-party-notices/wendang-export@0.6.0-NOTICE.md.txt +0 -51
  116. package/third-party-notices/wendang-export@0.6.1-LICENSE.txt +0 -21
  117. package/third-party-notices/wendang-export@0.6.2-LICENSE.txt +0 -21
  118. package/third-party-notices/wendang-export@0.6.2-NOTICE.md.txt +0 -70
  119. /package/third-party-notices/{wendang-export@0.6.0-LICENSE.txt → wendang-export@0.6.4-LICENSE.txt} +0 -0
  120. /package/third-party-notices/{wendang-export@0.6.1-NOTICE.md.txt → wendang-export@0.6.4-NOTICE.md.txt} +0 -0
@@ -1,120 +1,2 @@
1
- "use client";
2
- import { jsxs, jsx } from "react/jsx-runtime";
3
- import { forwardRef, useRef, useState, useEffect, useImperativeHandle } from "react";
4
- import { emptyWorkbook, validateWorkbook } from "wendang/spreadsheet";
5
- import { a as useContentContext } from "./chunks/host-C-V688Rq.js";
6
- import { u as useLatest, a as useReady, b as asError } from "./chunks/hooks-C53Dp0pr.js";
7
- const SpreadsheetEditor = forwardRef(function SpreadsheetEditor2(props, ref) {
8
- const root = useRef(null), engine = useRef(null);
9
- const latest = useLatest(props), initial = useRef(props.value ?? props.defaultValue ?? emptyWorkbook("react-workbook"));
10
- const emitted = useRef(null), [error, setError] = useState(""), [loading, setLoading] = useState(true);
11
- const ready = useReady(), theme = useContentContext().theme;
12
- const currentTheme = useLatest(props.theme ?? theme);
13
- const fail = (error2) => {
14
- var _a, _b;
15
- setError(asError(error2).message);
16
- (_b = (_a = latest.current).onError) == null ? void 0 : _b.call(_a, asError(error2));
17
- };
18
- useEffect(() => {
19
- const host = root.current;
20
- if (!host) return;
21
- let disposed = false, instance = null;
22
- const container = document.createElement("div");
23
- container.style.cssText = "height:100%;min-height:0";
24
- host.append(container);
25
- void import("./chunks/worksheet-engine-TJ54m0KC.js").then((module) => {
26
- var _a, _b;
27
- if (disposed) return;
28
- instance = module.createWorksheetEngine(container, validateWorkbook(latest.current.value ?? initial.current), () => {
29
- var _a2, _b2;
30
- if (!disposed && instance && !latest.current.disabled) {
31
- try {
32
- emitted.current = instance.snapshot();
33
- (_b2 = (_a2 = latest.current).onChange) == null ? void 0 : _b2.call(_a2, emitted.current);
34
- } catch (error2) {
35
- fail(error2);
36
- }
37
- }
38
- }, { theme: currentTheme.current });
39
- engine.current = instance;
40
- instance.setEditable(!latest.current.disabled);
41
- ready.markReady();
42
- setLoading(false);
43
- (_b = (_a = latest.current).onReady) == null ? void 0 : _b.call(_a);
44
- }).catch((error2) => {
45
- if (!disposed) {
46
- fail(error2);
47
- setLoading(false);
48
- }
49
- });
50
- return () => {
51
- disposed = true;
52
- engine.current = null;
53
- queueMicrotask(() => {
54
- instance == null ? void 0 : instance.dispose();
55
- container.remove();
56
- });
57
- };
58
- }, []);
59
- useEffect(() => {
60
- if (props.value && engine.current && props.value !== emitted.current) try {
61
- engine.current.replace(validateWorkbook(props.value));
62
- engine.current.setEditable(!latest.current.disabled);
63
- } catch (error2) {
64
- fail(error2);
65
- }
66
- }, [props.value]);
67
- useEffect(() => {
68
- var _a;
69
- (_a = engine.current) == null ? void 0 : _a.setEditable(!props.disabled);
70
- }, [props.disabled]);
71
- useEffect(() => {
72
- var _a;
73
- (_a = engine.current) == null ? void 0 : _a.setTheme(props.theme ?? theme);
74
- }, [props.theme, theme]);
75
- const snapshot = () => {
76
- var _a;
77
- return ((_a = engine.current) == null ? void 0 : _a.snapshot()) ?? latest.current.value ?? initial.current;
78
- };
79
- useImperativeHandle(ref, () => ({
80
- isReady: ready.isReady,
81
- whenReady: ready.whenReady,
82
- getSnapshot: snapshot,
83
- snapshot,
84
- async prepareSnapshot() {
85
- if (!engine.current) throw new Error("工作表尚未就绪");
86
- await engine.current.finishEditing();
87
- return validateWorkbook(engine.current.snapshot());
88
- },
89
- isEditing: () => {
90
- var _a;
91
- return ((_a = engine.current) == null ? void 0 : _a.isEditing()) ?? false;
92
- },
93
- finishEditing: async () => {
94
- var _a;
95
- await ((_a = engine.current) == null ? void 0 : _a.finishEditing());
96
- },
97
- settleCalculation: async () => {
98
- var _a;
99
- await ((_a = engine.current) == null ? void 0 : _a.settleCalculation());
100
- },
101
- replace(value) {
102
- if (!engine.current) throw new Error("工作表尚未就绪");
103
- engine.current.replace(validateWorkbook(value));
104
- engine.current.setEditable(!latest.current.disabled);
105
- },
106
- dispose() {
107
- var _a;
108
- (_a = engine.current) == null ? void 0 : _a.dispose();
109
- engine.current = null;
110
- }
111
- }));
112
- return /* @__PURE__ */ jsxs("section", { className: "wendang-spreadsheet", "aria-label": "工作表编辑器", children: [
113
- loading && /* @__PURE__ */ jsx("p", { role: "status", children: "正在加载工作表…" }),
114
- error && /* @__PURE__ */ jsx("p", { role: "alert", children: error }),
115
- /* @__PURE__ */ jsx("div", { ref: root, className: "worksheet-grid" })
116
- ] });
117
- });
118
- export {
119
- SpreadsheetEditor
120
- };
1
+ "use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{c as t,a as n}from"./chunks/i18n-B0kCsIjc.js";import{forwardRef as a,useRef as l,useState as c,useEffect as s,useImperativeHandle as u}from"react";import{emptyWorkbook as i,validateWorkbook as o}from"wendang/spreadsheet";import{u as d,a as h,b as p}from"./chunks/hooks-C53Dp0pr.js";const m=a(function SpreadsheetEditor2(a,m){const v=t(),f=v.text,g=l(null),w=l(null),E=d(a),b=l(a.value??a.defaultValue??i("react-workbook")),y=l(null),[k,R]=c(""),[j,C]=c(!0),x=h(),N=n().theme,S=d(a.theme??N),fail=e=>{var r,t;R(p(e).message),null==(t=(r=E.current).onError)||t.call(r,p(e))};s(()=>{const e=g.current;if(!e)return;let r=!1,t=null;const n=document.createElement("div");return n.style.cssText="height:100%;min-height:0",e.append(n),import("./chunks/worksheet-engine-c84sdD4N.js").then(async e=>{var a,l;r||(t=e.createWorksheetEngine(n,o(E.current.value??b.current),()=>{var e,n;if(!r&&t&&!E.current.disabled)try{y.current=t.snapshot(),null==(n=(e=E.current).onChange)||n.call(e,y.current)}catch(e){fail(e)}},{theme:S.current}),w.current=t,await t.setLocale(v.locale),r||(t.setEditable(!E.current.disabled),x.markReady(),C(!1),null==(l=(a=E.current).onReady)||l.call(a)))}).catch(e=>{r||(fail(e),C(!1))}),()=>{r=!0,w.current=null,queueMicrotask(()=>{null==t||t.dispose(),n.remove()})}},[]),s(()=>{if(a.value&&w.current&&a.value!==y.current)try{w.current.replace(o(a.value)),w.current.setEditable(!E.current.disabled)}catch(e){fail(e)}},[a.value]),s(()=>{var e;null==(e=w.current)||e.setEditable(!a.disabled)},[a.disabled]),s(()=>{var e;null==(e=w.current)||e.setTheme(a.theme??N)},[a.theme,N]),s(()=>{var e;null==(e=w.current)||e.setLocale(v.locale).catch(fail)},[v.locale]);const snapshot=()=>{var e;return(null==(e=w.current)?void 0:e.snapshot())??E.current.value??b.current};return u(m,()=>({isReady:x.isReady,whenReady:x.whenReady,getSnapshot:snapshot,snapshot:snapshot,async prepareSnapshot(){if(!w.current)throw new Error(f("工作表尚未就绪"));return await w.current.finishEditing(),o(w.current.snapshot())},isEditing:()=>{var e;return(null==(e=w.current)?void 0:e.isEditing())??!1},finishEditing:async()=>{var e;await(null==(e=w.current)?void 0:e.finishEditing())},settleCalculation:async()=>{var e;await(null==(e=w.current)?void 0:e.settleCalculation())},replace(e){if(!w.current)throw new Error(f("工作表尚未就绪"));w.current.replace(o(e)),w.current.setEditable(!E.current.disabled)},dispose(){var e;null==(e=w.current)||e.dispose(),w.current=null}})),/* @__PURE__ */e("section",{className:"wendang-spreadsheet","aria-label":f("工作表编辑器"),children:[j&&/* @__PURE__ */r("p",{role:"status",children:f("正在加载工作表…")}),k&&/* @__PURE__ */r("p",{role:"alert",children:k}),
2
+ /* @__PURE__ */r("div",{ref:g,className:"worksheet-grid"})]})});export{m as SpreadsheetEditor};
@@ -1,34 +1 @@
1
- /* Tokens are document presentation; saved attributes never contain free CSS values. */
2
- [data-wendang-theme] {
3
- --callout-border-gray:#c7cbd1;--callout-border-red:#f0a2a2;--callout-border-orange:#ffc078;--callout-border-yellow:#e3ca71;
4
- --callout-border-green:#91d4a0;--callout-border-blue:#9ac5ef;--callout-border-purple:#c0a4ed;
5
- }
6
- [data-wendang-theme='dark'] {
7
- --callout-border-gray:#697181;--callout-border-red:#a7606b;--callout-border-orange:#a97843;--callout-border-yellow:#97844a;
8
- --callout-border-green:#5c8b6c;--callout-border-blue:#587fa9;--callout-border-purple:#8667af;
9
- }
10
- .ywiki-content .doc-callout {
11
- --callout-first-line-height:calc(var(--content-font-size) * var(--content-line-height));
12
- position:relative;display:grid;grid-template-columns:var(--content-callout-icon-width) minmax(0,1fr);column-gap:var(--content-callout-gap);align-items:start;
13
- border:1px solid var(--callout-border,var(--callout-border-blue));border-radius:var(--content-callout-radius);
14
- background:var(--callout-fill,var(--doc-highlight-blue));color:var(--callout-text,var(--content-text-color));
15
- padding:var(--content-callout-padding-y) var(--content-callout-padding-x);
16
- }
17
- .ywiki-content .doc-callout[data-icon-hidden='true'] {grid-template-columns:minmax(0,1fr);}
18
- .callout-controls-host {display:contents;}
19
- .ywiki-content .doc-callout-content {grid-column:2;grid-row:1;min-width:0;color:inherit;}
20
- .ywiki-content .doc-callout[data-icon-hidden='true']>.doc-callout-content {grid-column:1;}
21
- .ywiki-content .doc-callout .callout-icon {
22
- grid-column:1;grid-row:1;align-self:start;display:inline-flex;align-items:center;justify-content:center;
23
- width:var(--content-callout-icon-width);min-width:var(--content-callout-icon-width);height:var(--callout-first-line-height);min-height:0;padding:0;
24
- font-size:var(--content-callout-icon-size);line-height:1;user-select:none;color:inherit;
25
- }
26
- /* A heading on the first line has its own size and leading; later paragraphs do not move the icon. */
27
- .ywiki-content .doc-callout:has(>.doc-callout-content>h1:first-child){--callout-first-line-height:calc(var(--content-font-size) * 1.625 * 1.3);}
28
- .ywiki-content .doc-callout:has(>.doc-callout-content>h2:first-child){--callout-first-line-height:calc(var(--content-font-size) * 1.375 * 1.3);}
29
- .ywiki-content .doc-callout:has(>.doc-callout-content>h3:first-child){--callout-first-line-height:calc(var(--content-font-size) * 1.125 * 1.3);}
30
- .ywiki-content .doc-callout:has(>.doc-callout-content>:is(h4,h5,h6):first-child){--callout-first-line-height:calc(var(--content-font-size) * 1.3);}
31
- .ywiki-content .doc-callout>.doc-callout-content>:first-child {margin-top:0;}
32
- .ywiki-content .doc-callout>.doc-callout-content>:last-child {margin-bottom:0;}
33
- .ywiki-content .doc-callout-content :where(h1,h2,h3,h4,h5,h6) {color:inherit;}
34
- @media(max-width:600px){.ywiki-content .doc-callout{padding:12px;column-gap:9px;}}
1
+ [data-wendang-theme]{--callout-border-gray:#c7cbd1;--callout-border-red:#f0a2a2;--callout-border-orange:#ffc078;--callout-border-yellow:#e3ca71;--callout-border-green:#91d4a0;--callout-border-blue:#9ac5ef;--callout-border-purple:#c0a4ed}[data-wendang-theme=dark]{--callout-border-gray:#697181;--callout-border-red:#a7606b;--callout-border-orange:#a97843;--callout-border-yellow:#97844a;--callout-border-green:#5c8b6c;--callout-border-blue:#587fa9;--callout-border-purple:#8667af}.ywiki-content .doc-callout{--callout-first-line-height:calc(var(--content-font-size) * var(--content-line-height));position:relative;display:grid;grid-template-columns:var(--content-callout-icon-width) minmax(0,1fr);column-gap:var(--content-callout-gap);align-items:start;border:1px solid var(--callout-border,var(--callout-border-blue));border-radius:var(--content-callout-radius);background:var(--callout-fill,var(--doc-highlight-blue));color:var(--callout-text,var(--content-text-color));padding:var(--content-callout-padding-y) var(--content-callout-padding-x)}.ywiki-content .doc-callout[data-icon-hidden=true]{grid-template-columns:minmax(0,1fr)}.callout-controls-host{display:contents}.ywiki-content .doc-callout-content{grid-column:2;grid-row:1;min-width:0;color:inherit}.ywiki-content .doc-callout[data-icon-hidden=true]>.doc-callout-content{grid-column:1}.ywiki-content .doc-callout .callout-icon{grid-column:1;grid-row:1;align-self:start;display:inline-flex;align-items:center;justify-content:center;width:var(--content-callout-icon-width);min-width:var(--content-callout-icon-width);height:var(--callout-first-line-height);min-height:0;padding:0;font-size:var(--content-callout-icon-size);line-height:1;user-select:none;color:inherit}.ywiki-content .doc-callout .callout-icon-button:hover{background:transparent}.callout-toolbar .callout-toolbar-button.callout-palette-button{padding:0}.ywiki-content .doc-callout:has(>.doc-callout-content>h1:first-child){--callout-first-line-height:calc(var(--content-font-size) * 1.625 * 1.3)}.ywiki-content .doc-callout:has(>.doc-callout-content>h2:first-child){--callout-first-line-height:calc(var(--content-font-size) * 1.375 * 1.3)}.ywiki-content .doc-callout:has(>.doc-callout-content>h3:first-child){--callout-first-line-height:calc(var(--content-font-size) * 1.125 * 1.3)}.ywiki-content .doc-callout:has(>.doc-callout-content>:is(h4,h5,h6):first-child){--callout-first-line-height:calc(var(--content-font-size) * 1.3)}.ywiki-content .doc-callout>.doc-callout-content>:first-child{margin-top:0}.ywiki-content .doc-callout>.doc-callout-content>:last-child{margin-bottom:0}.ywiki-content .doc-callout-content :where(h1,h2,h3,h4,h5,h6){color:inherit}@media(max-width:600px){.ywiki-content .doc-callout{padding:12px;column-gap:9px}}
@@ -1,58 +1 @@
1
- /* One shell for the editor node view and the read-only renderer. */
2
- .ywiki-content .ywiki-code-panel {
3
- --code-bg:#ffffff;--code-header:#f7f8fa;--code-border:#e2e5e9;--code-text:#303640;--code-muted:#8a9099;
4
- --code-keyword:#d13b52;--code-string:#2e8764;--code-number:#a66e12;--code-title:#8250b5;--code-property:#476f9c;--code-comment:#8a9099;--code-tag:#bf3c51;
5
- position:relative;min-width:0;max-width:100%;border:1px solid var(--code-border);border-radius:7px;
6
- background:var(--code-bg);color:var(--code-text);isolation:isolate;
7
- }
8
- .ywiki-content .ywiki-code-panel.code-theme-soft {
9
- --code-bg:#f5f8fc;--code-header:#edf2f8;--code-border:#dce4ef;--code-text:#34445b;--code-muted:#8492a7;
10
- --code-keyword:#3478bd;--code-string:#318b6d;--code-number:#9b7a1e;--code-title:#9851c4;--code-property:#516c9f;--code-comment:#8492a7;--code-tag:#b14c6c;
11
- }
12
- [data-wendang-theme='dark'] .ywiki-content .ywiki-code-panel.code-theme-auto,
13
- .ywiki-content .ywiki-code-panel.code-theme-night {
14
- --code-bg:#20242c;--code-header:#272c35;--code-border:#373e49;--code-text:#d7dde7;--code-muted:#929cac;
15
- --code-keyword:#f58196;--code-string:#a5cf8b;--code-number:#efbc82;--code-title:#c6a0ee;--code-property:#89b9ee;--code-comment:#919cab;--code-tag:#f08a9d;
16
- }
17
- .code-toolbar {display:flex;align-items:center;gap:7px;min-height:38px;padding:4px 9px;background:var(--code-header);border-bottom:1px solid var(--code-border);border-radius:6px 6px 0 0;font:12px/1.5 var(--font-sans,system-ui,sans-serif);color:var(--code-muted);user-select:none;}
18
- .code-toolbar-host {position:relative;z-index:2;}
19
- .code-toolbar-actions {display:flex;align-items:center;gap:7px;margin-left:auto;min-width:0;}
20
- .code-toolbar-summary {font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap;}
21
- /*
22
- * 语言选择器在代码块的深色标题栏里,必须把 wui 的语义变量改指向代码块色板,
23
- * 否则会是一块白底控件。面板本身渲染在 portal 根(正文之外),不继承这些
24
- * 变量,因此下拉列表仍是普通的浅色菜单 —— 与其它菜单一致。
25
- */
26
- .code-language-select {width:146px;font-size:12px;--w-surface:var(--code-header);--w-text:var(--code-text);--w-text-faint:var(--code-muted);--w-border-strong:var(--code-border);--w-border:var(--code-border);--w-surface-subtle:color-mix(in srgb,var(--code-text) 10%,transparent);}
27
- .code-language-label {max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;}
28
- .code-toolbar-divider {height:15px;border-left:1px solid var(--code-border);margin:0 2px;}
29
- .code-toolbar .code-copy-button,.code-toolbar .code-settings-button,.code-toolbar .code-fold-button {color:var(--code-muted);background:transparent;}
30
- .code-toolbar .code-copy-button {min-width:86px;}
31
- .code-toolbar .code-copy-button:hover,.code-toolbar .code-settings-button:hover,.code-toolbar .code-fold-button:hover {color:var(--code-text);background:color-mix(in srgb,var(--code-text) 6%,transparent);}
32
- .code-copy-button svg {vertical-align:middle;}
33
- .code-copy-announcement {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);}
34
- .code-option-check {float:right;margin-left:24px;}
35
- .code-theme-swatch {display:inline-block;width:13px;height:13px;vertical-align:-2px;margin-right:8px;border:1px solid #c7ccd4;border-radius:3px;background:#fff;}
36
- .code-theme-swatch[data-code-swatch='auto'] {background:linear-gradient(90deg,#fff 50%,#303743 50%);}
37
- .code-theme-swatch[data-code-swatch='soft'] {background:#e6effa;}
38
- .code-theme-swatch[data-code-swatch='night'] {background:#272c35;}
39
- .ywiki-content .ywiki-code-panel .code-scroll {display:flex;align-items:stretch;position:relative;overflow:auto;max-height:464px;border-radius:0 0 6px 6px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--code-muted) 45%,transparent) transparent;background:var(--code-bg);}
40
- .ywiki-content .ywiki-code-panel .code-scroll[hidden] {display:none;}
41
- .ywiki-content .ywiki-code-panel.is-unlimited .code-scroll {max-height:none;}
42
- .ywiki-content .ywiki-code-panel .code-line-numbers,
43
- .ywiki-content .ywiki-code-panel pre.doc-code {font:13px/22px ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace;font-variant-ligatures:none;tab-size:2;white-space:pre;}
44
- .ywiki-content .ywiki-code-panel .code-line-numbers {position:sticky;left:0;z-index:1;align-self:stretch;flex:0 0 auto;min-width:42px;box-sizing:border-box;padding:12px 10px 12px 12px;text-align:right;color:var(--code-muted);background:var(--code-bg);border-right:1px solid color-mix(in srgb,var(--code-border) 65%,transparent);user-select:none;pointer-events:none;}
45
- .ywiki-content .ywiki-code-panel pre.doc-code {flex:1 0 auto;min-width:0;max-width:none;margin:0!important;padding:12px 16px;border:0;border-radius:0;background:var(--code-bg);color:var(--code-text);overflow:visible;}
46
- .ywiki-content .ywiki-code-panel pre.doc-code code {display:block;margin:0;padding:0;border:0;background:none;color:var(--code-text);font:inherit;white-space:inherit;tab-size:inherit;border-radius:0;}
47
- .ywiki-content .ywiki-code-panel.is-collapsed .code-toolbar {border-bottom:0;border-radius:6px;}
48
- .ywiki-content .ywiki-code-panel:focus-within {border-color:color-mix(in srgb,var(--color-accent) 45%,var(--code-border));}
49
- .ywiki-content .ywiki-code-panel .code-scroll:focus-visible {outline:2px solid var(--color-accent);outline-offset:-2px;}
50
- .ywiki-content .ywiki-code-panel :where(.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-meta) {color:var(--code-keyword);}
51
- .ywiki-content .ywiki-code-panel :where(.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute) {color:var(--code-string);}
52
- .ywiki-content .ywiki-code-panel :where(.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-variable,.hljs-template-variable) {color:var(--code-number);}
53
- .ywiki-content .ywiki-code-panel :where(.hljs-title,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-type) {color:var(--code-title);}
54
- .ywiki-content .ywiki-code-panel :where(.hljs-built_in,.hljs-attr,.hljs-property) {color:var(--code-property);}
55
- .ywiki-content .ywiki-code-panel :where(.hljs-comment,.hljs-quote) {color:var(--code-comment);font-style:normal;}
56
- .ywiki-content .ywiki-code-panel :where(.hljs-tag,.hljs-name,.hljs-deletion) {color:var(--code-tag);}
57
- @media(max-width:600px){.code-toolbar{gap:4px;padding-inline:6px}.code-toolbar-actions{gap:4px}.code-language-select{width:108px}.code-toolbar-summary{display:none}.code-toolbar-divider{margin:0}.code-language-label{max-width:100px}.code-copy-button{min-width:72px!important}}
58
- @media print{.ywiki-content .ywiki-code-panel .code-scroll{max-height:none!important;overflow:visible!important;display:flex!important}.code-toolbar-actions,.code-fold-button{display:none!important}.ywiki-content .ywiki-code-panel{break-inside:avoid}.ywiki-content .ywiki-code-panel pre.doc-code{white-space:pre-wrap;overflow-wrap:anywhere;flex-shrink:1}}
1
+ .ywiki-content .ywiki-code-panel{--code-bg:#ffffff;--code-header:#f7f8fa;--code-border:#e2e5e9;--code-text:#303640;--code-muted:#8a9099;--code-keyword:#d13b52;--code-string:#2e8764;--code-number:#a66e12;--code-title:#8250b5;--code-property:#476f9c;--code-comment:#8a9099;--code-tag:#bf3c51;position:relative;min-width:0;max-width:100%;border:1px solid var(--code-border);border-radius:7px;background:var(--code-bg);color:var(--code-text);isolation:isolate}.ywiki-content .ywiki-code-panel.code-theme-soft{--code-bg:#f5f8fc;--code-header:#edf2f8;--code-border:#dce4ef;--code-text:#34445b;--code-muted:#8492a7;--code-keyword:#3478bd;--code-string:#318b6d;--code-number:#9b7a1e;--code-title:#9851c4;--code-property:#516c9f;--code-comment:#8492a7;--code-tag:#b14c6c}[data-wendang-theme=dark] .ywiki-content .ywiki-code-panel.code-theme-auto,.ywiki-content .ywiki-code-panel.code-theme-night{--code-bg:#20242c;--code-header:#272c35;--code-border:#373e49;--code-text:#d7dde7;--code-muted:#929cac;--code-keyword:#f58196;--code-string:#a5cf8b;--code-number:#efbc82;--code-title:#c6a0ee;--code-property:#89b9ee;--code-comment:#919cab;--code-tag:#f08a9d}.code-toolbar{display:flex;align-items:center;gap:7px;min-height:38px;padding:4px 9px;background:var(--code-header);border-bottom:1px solid var(--code-border);border-radius:6px 6px 0 0;font:12px/1.5 var(--font-sans,system-ui,sans-serif);color:var(--code-muted);user-select:none}.code-toolbar-host{position:relative;z-index:2}.code-toolbar-actions{display:flex;align-items:center;gap:7px;margin-left:auto;min-width:0}.code-toolbar-summary{font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}.code-language-select{width:146px;font-size:12px;--w-surface:var(--code-header);--w-text:var(--code-text);--w-text-faint:var(--code-muted);--w-border-strong:var(--code-border);--w-border:var(--code-border);--w-surface-subtle:color-mix(in srgb,var(--code-text) 10%,transparent)}.code-language-label{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.code-toolbar-divider{height:15px;border-left:1px solid var(--code-border);margin:0 2px}.code-toolbar .code-copy-button,.code-toolbar .code-settings-button,.code-toolbar .code-fold-button{color:var(--code-muted);background:transparent}.code-toolbar .code-copy-button{min-width:86px}.code-toolbar .code-copy-button:hover,.code-toolbar .code-settings-button:hover,.code-toolbar .code-fold-button:hover{color:var(--code-text);background:color-mix(in srgb,var(--code-text) 6%,transparent)}.code-copy-button svg{vertical-align:middle}.code-copy-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.code-option-check{float:right;margin-left:24px}.code-theme-swatch{display:inline-block;width:13px;height:13px;vertical-align:-2px;margin-right:8px;border:1px solid #c7ccd4;border-radius:3px;background:#fff}.code-theme-swatch[data-code-swatch=auto]{background:linear-gradient(90deg,#fff 50%,#303743 50%)}.code-theme-swatch[data-code-swatch=soft]{background:#e6effa}.code-theme-swatch[data-code-swatch=night]{background:#272c35}.ywiki-content .ywiki-code-panel .code-scroll{display:flex;align-items:stretch;position:relative;overflow:auto;max-height:464px;border-radius:0 0 6px 6px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--code-muted) 45%,transparent) transparent;background:var(--code-bg)}.ywiki-content .ywiki-code-panel .code-scroll[hidden]{display:none}.ywiki-content .ywiki-code-panel.is-unlimited .code-scroll{max-height:none}.ywiki-content .ywiki-code-panel .code-line-numbers,.ywiki-content .ywiki-code-panel pre.doc-code{font:13px/22px ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-variant-ligatures:none;tab-size:2;white-space:pre}.ywiki-content .ywiki-code-panel .code-line-numbers{position:sticky;left:0;z-index:1;align-self:stretch;flex:0 0 auto;min-width:42px;box-sizing:border-box;padding:12px 10px 12px 12px;text-align:right;color:var(--code-muted);background:var(--code-bg);border-right:1px solid color-mix(in srgb,var(--code-border) 65%,transparent);user-select:none;pointer-events:none}.ywiki-content .ywiki-code-panel pre.doc-code{flex:1 0 auto;min-width:0;max-width:none;margin:0!important;padding:12px 16px;border:0;border-radius:0;background:var(--code-bg);color:var(--code-text);overflow:visible}.ywiki-content .ywiki-code-panel pre.doc-code code{display:block;margin:0;padding:0;border:0;background:none;color:var(--code-text);font:inherit;white-space:inherit;tab-size:inherit;border-radius:0}.ywiki-content .ywiki-code-panel.is-collapsed .code-toolbar{border-bottom:0;border-radius:6px}.ywiki-content .ywiki-code-panel:focus-within{border-color:color-mix(in srgb,var(--color-accent) 45%,var(--code-border))}.ywiki-content .ywiki-code-panel .code-scroll:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.ywiki-content .ywiki-code-panel :where(.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-meta){color:var(--code-keyword)}.ywiki-content .ywiki-code-panel :where(.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute){color:var(--code-string)}.ywiki-content .ywiki-code-panel :where(.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-variable,.hljs-template-variable){color:var(--code-number)}.ywiki-content .ywiki-code-panel :where(.hljs-title,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-type){color:var(--code-title)}.ywiki-content .ywiki-code-panel :where(.hljs-built_in,.hljs-attr,.hljs-property){color:var(--code-property)}.ywiki-content .ywiki-code-panel :where(.hljs-comment,.hljs-quote){color:var(--code-comment);font-style:normal}.ywiki-content .ywiki-code-panel :where(.hljs-tag,.hljs-name,.hljs-deletion){color:var(--code-tag)}@media(max-width:600px){.code-toolbar{gap:4px;padding-inline:6px}.code-toolbar-actions{gap:4px}.code-language-select{width:108px}.code-toolbar-summary{display:none}.code-toolbar-divider{margin:0}.code-language-label{max-width:100px}.code-copy-button{min-width:72px!important}}@media print{.ywiki-content .ywiki-code-panel .code-scroll{max-height:none!important;overflow:visible!important;display:flex!important}.code-toolbar-actions,.code-fold-button{display:none!important}.ywiki-content .ywiki-code-panel{break-inside:avoid}.ywiki-content .ywiki-code-panel pre.doc-code{white-space:pre-wrap;overflow-wrap:anywhere;flex-shrink:1}}