wendang-react 0.6.2 → 0.6.4

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 (119) hide show
  1. package/NOTICE.md +1 -1
  2. package/README.md +105 -0
  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-CVXQXNOg.js +163 -0
  8. package/dist/chunks/MindMapViewer-BI8zbQM1.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-C1fCBnEs.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-Bn1waxff.js +31 -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 -3622
  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 -2631
  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/host.d.ts +60 -2
  80. package/dist/types/engine/renderer/attachments.d.ts +3 -3
  81. package/dist/types/engine/shared/video-feedback.d.ts +1 -1
  82. package/dist/types/engine/worksheets/worksheet-engine.d.ts +1 -0
  83. package/dist/types/engine/worksheets/worksheet-xlsx.d.ts +6 -1
  84. package/dist/types/engine/wui/core/overlay-scrollbar.d.ts +4 -0
  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/spreadsheet/xlsx.d.ts +1 -1
  96. package/dist/types/wui/Dropdown.d.ts +2 -1
  97. package/dist/types/wui/index.d.ts +2 -1
  98. package/integrity.json +3135 -0
  99. package/package.json +15 -5
  100. package/verify-integrity.mjs +138 -0
  101. package/dist/chunks/AnchoredPanel-CSXrveAT.js +0 -68
  102. package/dist/chunks/DocumentExportMenu-DgDXDChd.js +0 -75
  103. package/dist/chunks/MindMapCanvas-I5M1SIyX.js +0 -2090
  104. package/dist/chunks/MindMapViewer-Nu3nEVHQ.js +0 -180
  105. package/dist/chunks/SpreadsheetViewer-CLDlnWyM.js +0 -163
  106. package/dist/chunks/comment-hint-Coq1laiR.js +0 -296
  107. package/dist/chunks/extensions-DMQedgOl.js +0 -4210
  108. package/dist/chunks/host-C-V688Rq.js +0 -197
  109. package/dist/chunks/index-CqaMYb3A.js +0 -720
  110. package/dist/chunks/mind-map-controller-B6SxK3GZ.js +0 -479
  111. package/dist/chunks/mind-topic-text-DYQR2Dzf.js +0 -446
  112. package/dist/chunks/nodes-iKqTGr_N.js +0 -291
  113. package/dist/chunks/worksheet-engine-TJ54m0KC.js +0 -125
  114. package/third-party-notices/wendang-export@0.6.0-NOTICE.md.txt +0 -51
  115. package/third-party-notices/wendang-export@0.6.1-LICENSE.txt +0 -21
  116. package/third-party-notices/wendang-export@0.6.2-LICENSE.txt +0 -21
  117. package/third-party-notices/wendang-export@0.6.2-NOTICE.md.txt +0 -70
  118. /package/third-party-notices/{wendang-export@0.6.0-LICENSE.txt → wendang-export@0.6.3-LICENSE.txt} +0 -0
  119. /package/third-party-notices/{wendang-export@0.6.1-NOTICE.md.txt → wendang-export@0.6.3-NOTICE.md.txt} +0 -0
@@ -1,103 +1 @@
1
- .img-preview-mask {
2
- position: fixed;
3
- inset: 0;
4
- z-index: 1300;
5
- display: flex;
6
- flex-direction: column;
7
- align-items: center;
8
- justify-content: center;
9
- background: color-mix(in srgb, #0b1220 84%, transparent);
10
- overflow: hidden;
11
- user-select: none;
12
- }
13
- .img-preview-stage {
14
- display: flex;
15
- align-items: center;
16
- justify-content: center;
17
- width: 100%;
18
- flex: 1;
19
- min-height: 0;
20
- padding: 32px;
21
- outline: none;
22
- }
23
- .img-preview-image {
24
- max-width: 100%;
25
- max-height: 100%;
26
- object-fit: contain;
27
- cursor: grab;
28
- transition: transform 0.12s ease-out;
29
- will-change: transform;
30
- }
31
- .img-preview-image.is-dragging { cursor: grabbing; transition: none; }
32
- .img-preview-toolbar {
33
- display: flex;
34
- align-items: center;
35
- gap: 4px;
36
- flex: none;
37
- margin-bottom: 24px;
38
- padding: 6px 8px;
39
- border: 1px solid color-mix(in srgb, #ffffff 18%, transparent);
40
- border-radius: 8px;
41
- background: color-mix(in srgb, #101828 72%, transparent);
42
- color: #f2f5fa;
43
- backdrop-filter: blur(8px);
44
- }
45
- .img-preview-toolbar button {
46
- min-width: 32px;
47
- height: 30px;
48
- padding: 0 8px;
49
- border: none;
50
- border-radius: 5px;
51
- background: transparent;
52
- color: inherit;
53
- font-family: inherit;
54
- font-size: 13px;
55
- cursor: pointer;
56
- }
57
- .img-preview-toolbar button:hover { background: color-mix(in srgb, #ffffff 16%, transparent); }
58
- .img-preview-toolbar button:focus-visible { outline: 2px solid #fff; outline-offset: 1px; }
59
- .img-preview-scale { min-width: 48px; text-align: center; font-size: 12px; opacity: 0.85; }
60
- .img-preview-count {
61
- min-width: 52px;
62
- padding: 0 6px;
63
- text-align: center;
64
- font-size: 12px;
65
- font-variant-numeric: tabular-nums;
66
- opacity: 0.85;
67
- }
68
- .img-preview-divider { width: 1px; height: 16px; margin: 0 4px; background: color-mix(in srgb, #ffffff 26%, transparent); }
69
-
70
- /* 翻页按钮:两侧垂直居中,避开工具条;深色半透明底保证在任何图片上都可见 */
71
- .img-preview-nav {
72
- position: absolute;
73
- inset: 0;
74
- pointer-events: none;
75
- display: flex;
76
- align-items: center;
77
- justify-content: space-between;
78
- padding: 0 18px;
79
- }
80
- .img-preview-nav-btn {
81
- pointer-events: auto;
82
- display: flex;
83
- align-items: center;
84
- justify-content: center;
85
- width: 44px;
86
- height: 44px;
87
- padding: 0;
88
- border: 1px solid color-mix(in srgb, #ffffff 20%, transparent);
89
- border-radius: 50%;
90
- background: color-mix(in srgb, #101828 66%, transparent);
91
- color: #f2f5fa;
92
- cursor: pointer;
93
- backdrop-filter: blur(8px);
94
- transition: background 0.12s, opacity 0.12s;
95
- }
96
- .img-preview-nav-btn:hover:not(:disabled) { background: color-mix(in srgb, #101828 84%, transparent); }
97
- .img-preview-nav-btn:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
98
- /* 到头的一侧保留占位(避免另一侧按钮跳动),只降到很低的可见度 */
99
- .img-preview-nav-btn:disabled { opacity: 0.22; cursor: default; }
100
-
101
- @media (prefers-reduced-motion: reduce) {
102
- .img-preview-image { transition: none; }
103
- }
1
+ .img-preview-mask{position:fixed;inset:0;z-index:1300;display:flex;flex-direction:column;align-items:center;justify-content:center;background:color-mix(in srgb,#0b1220 84%,transparent);overflow:hidden;user-select:none}.img-preview-stage{display:flex;align-items:center;justify-content:center;width:100%;flex:1;min-height:0;padding:32px;outline:none}.img-preview-image{max-width:100%;max-height:100%;object-fit:contain;cursor:grab;transition:transform .12s ease-out;will-change:transform}.img-preview-image.is-dragging{cursor:grabbing;transition:none}.img-preview-toolbar{display:flex;align-items:center;gap:4px;flex:none;margin-bottom:24px;padding:6px 8px;border:1px solid color-mix(in srgb,#ffffff 18%,transparent);border-radius:8px;background:color-mix(in srgb,#101828 72%,transparent);color:#f2f5fa;backdrop-filter:blur(8px)}.img-preview-toolbar button{min-width:32px;height:30px;padding:0 8px;border:none;border-radius:5px;background:transparent;color:inherit;font-family:inherit;font-size:13px;cursor:pointer}.img-preview-toolbar button:hover{background:color-mix(in srgb,#ffffff 16%,transparent)}.img-preview-toolbar button:focus-visible{outline:2px solid #fff;outline-offset:1px}.img-preview-scale{min-width:48px;text-align:center;font-size:12px;opacity:.85}.img-preview-count{min-width:52px;padding:0 6px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums;opacity:.85}.img-preview-divider{width:1px;height:16px;margin:0 4px;background:color-mix(in srgb,#ffffff 26%,transparent)}.img-preview-nav{position:absolute;inset:0;pointer-events:none;display:flex;align-items:center;justify-content:space-between;padding:0 18px}.img-preview-nav-btn{pointer-events:auto;display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid color-mix(in srgb,#ffffff 20%,transparent);border-radius:50%;background:color-mix(in srgb,#101828 66%,transparent);color:#f2f5fa;cursor:pointer;backdrop-filter:blur(8px);transition:background .12s,opacity .12s}.img-preview-nav-btn:hover:not(:disabled){background:color-mix(in srgb,#101828 84%,transparent)}.img-preview-nav-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}.img-preview-nav-btn:disabled{opacity:.22;cursor:default}@media(prefers-reduced-motion:reduce){.img-preview-image{transition:none}}
@@ -1,14 +1 @@
1
- .mind-map-block { margin: 20px 0; border: 1px solid var(--color-border); border-radius: 12px; background: var(--color-surface); overflow: hidden; }
2
- .mind-map-block-header { min-height: 45px; display: flex; gap: 12px; align-items: center; justify-content: space-between; padding: 6px 12px; }
3
- .mind-map-block-label { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--color-text-muted); }
4
- .mind-map-block-label > span:first-child { color: var(--mind-color); font-size: 18px; }
5
- .mind-map-topic-count { font-size: 11px; color: var(--color-text-faint); }
6
- .mind-map-block-actions { display: flex; flex-shrink: 0; gap: 4px; }
7
- .mind-map-preview { width: 100%; display: block; min-height: 240px; cursor: zoom-in; }
8
- .mind-map-preview rect { fill: var(--color-surface-subtle); stroke: var(--mind-color); stroke-opacity: .3; }
9
- .mind-map-preview text { fill: var(--color-text); font-family: inherit; }
10
- .mind-map-preview .mind-map-root rect { fill: var(--mind-color); stroke: none; }
11
- .mind-map-preview .mind-map-root text { fill: white; }
12
- .mind-map-preview-outline { overflow: auto; padding: 16px 24px 24px; font-size: 14px; line-height: 2; white-space: pre-wrap; overflow-wrap: anywhere; }
13
- .mind-map-invalid { padding: 20px; color: var(--color-text-muted); }
14
- @media (max-width: 600px) { .mind-map-topic-count { display: none; } }
1
+ .mind-map-block{margin:20px 0;border:1px solid var(--color-border);border-radius:12px;background:var(--color-surface);overflow:hidden}.mind-map-block-header{min-height:45px;display:flex;gap:12px;align-items:center;justify-content:space-between;padding:6px 12px}.mind-map-block-label{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--color-text-muted)}.mind-map-block-label>span:first-child{color:var(--mind-color);font-size:18px}.mind-map-topic-count{font-size:11px;color:var(--color-text-faint)}.mind-map-block-actions{display:flex;flex-shrink:0;gap:4px}.mind-map-preview{width:100%;display:block;min-height:240px;cursor:zoom-in}.mind-map-preview rect{fill:var(--color-surface-subtle);stroke:var(--mind-color);stroke-opacity:.3}.mind-map-preview text{fill:var(--color-text);font-family:inherit}.mind-map-preview .mind-map-root rect{fill:var(--mind-color);stroke:none}.mind-map-preview .mind-map-root text{fill:#fff}.mind-map-preview-outline{overflow:auto;padding:16px 24px 24px;font-size:14px;line-height:2;white-space:pre-wrap;overflow-wrap:anywhere}.mind-map-invalid{padding:20px;color:var(--color-text-muted)}@media(max-width:600px){.mind-map-topic-count{display:none}}
@@ -1,80 +1 @@
1
- .mind-inline { height:100%; min-height:380px; }
2
- .mind-inline .mind-map-workspace { height:100%; padding:0; }
3
- .mind-canvas-title { display: inline-flex; align-items: center; gap: 14px; max-width: calc(100vw - 110px); }
4
- .mind-canvas-title > span { font-size: 13px; font-weight: 400; color: var(--color-text-muted); max-width: 65vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
5
- /**
6
- * 全屏弹层的工作区。
7
- *
8
- * ## 为什么是 `height:100%` 而不是 `calc(100dvh - 110px)`
9
- *
10
- * 弹层里 `.wd-dialog__body` 已经是"header 以下的全部高度"(flex 列、无内边距),
11
- * 再把 header 高度写死成 110px 去减就是重复扣减:实际 header 只有 57px,
12
- * 于是画布底部多出 53px 空白,看起来"没到底"(用户实测:"底部可以进一点")。
13
- * 交给父容器决定高度,画布就能填满。
14
- *
15
- * ## 为什么四周要留内边距
16
- *
17
- * 全屏时 body 的内边距是 0,工具栏会紧贴 header 的下边线、画布也贴着窗口
18
- * 左右边缘(用户实测:"边框距离太近")。这里按工具栏在上、画布在下的顺序
19
- * 给一圈呼吸空间;inline(正文内嵌)形态不需要,单独复位为 0。
20
- */
21
- .mind-map-workspace { display: flex; flex-direction: column; height: 100%; min-height: 300px; box-sizing: border-box; padding: 16px 20px 20px; color: var(--color-text); }
22
- .mind-save-hint { margin-bottom: 10px; }
23
- .mind-canvas-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 0 10px; flex-wrap: wrap; }
24
- .mind-canvas-tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
25
- .mind-canvas-options { justify-content: flex-end; margin-left: auto; }
26
- .mind-canvas-status { font-size: 12px; color: var(--color-text-muted); max-width: 32vw; }
27
- .mind-canvas-body { display: flex; flex: 1; min-height: 0; border: 1px solid var(--color-border); border-radius: 12px; overflow: hidden; }
28
- .mind-canvas-stage { position: relative; flex: 1; min-width: 0; overflow: hidden; outline: none; background: radial-gradient(var(--color-border) 1px, transparent 1px) 0 0 / 22px 22px var(--color-surface); }
29
- .mind-canvas-stage.mind-grid-hidden { background-image:none; }
30
- .mind-canvas-surface { width:100%;height:100%; }
31
- .mind-canvas-stage .vue-flow__pane { cursor:default; }
32
- .mind-canvas-stage .vue-flow__selection,.mind-marquee { background:color-mix(in srgb,var(--mind-color) 8%,transparent);border:1px solid var(--mind-color);box-sizing:border-box;pointer-events:none; }
33
- .mind-marquee {position:absolute;z-index:4;}
34
- .mind-canvas-stage.mind-space-pan .vue-flow__pane,
35
- .mind-canvas-stage.mind-space-pan .vue-flow__node { cursor:grab; }
36
- .mind-canvas-stage .vue-flow__pane.dragging { cursor:grabbing; }
37
- .mind-selection-summary {position:absolute;left:16px;top:16px;display:flex;align-items:center;gap:10px;padding:6px 12px;border:1px solid var(--color-border);border-radius:9px;background:var(--color-surface);font-size:12px;}
38
- .mind-menu-key {margin-left:22px;float:right;color:var(--color-text-faint);font-size:11px;}
39
- .mind-canvas-outline { flex: 0 0 235px; overflow: auto; border-right: 1px solid var(--color-border); padding: 12px 4px; }
40
- .mind-canvas-outline button { display: block; border: 0; background: transparent; border-radius: 5px; width: 100%; text-align: left; padding: 7px 10px; color: var(--color-text-muted); white-space: pre-wrap; overflow-wrap: anywhere; }
41
- .mind-canvas-outline button.current { color: var(--mind-color); background: var(--color-surface-subtle); }
42
- .mind-node-actions { position: absolute; left: 16px; top: 16px; display: flex; flex-wrap: wrap; align-items: center; gap: 5px; border: 1px solid var(--color-border); padding: 6px; background: var(--color-surface); border-radius: 10px; box-shadow: 0 4px 20px #00000008; }
43
- .mind-canvas-bottom { position: absolute; bottom: 16px; left: 18px; right: 18px; display: flex; justify-content: space-between; align-items: end; gap: 10px; pointer-events: none; }
44
- .mind-canvas-hint { font-size: 11px; color: var(--color-text-faint); padding: 6px 0; }
45
- .mind-canvas-viewport { display: flex; align-items: center; gap: 6px; padding: 6px; border: 1px solid var(--color-border); border-radius: 9px; background: var(--color-surface); pointer-events: auto; white-space: nowrap; }
46
- .mind-viewport-divider { height:20px;border-left:1px solid var(--color-border);margin:0 2px; }
47
- .mind-zoom-percent { min-width:52px;font-variant-numeric:tabular-nums; }
48
- .mind-viewport-tip { display:flex;align-items:center;flex-wrap:wrap;gap:7px;max-width:min(480px,calc(100vw - 40px));font-size:12px;line-height:1.6; }
49
- .mind-viewport-tip kbd { padding:2px 6px;border-radius:4px;background:#ffffff20;font:inherit;white-space:nowrap; }
50
- .mind-canvas-notice { position: absolute; bottom: 70px; left: 50%; transform: translateX(-50%); padding: 8px 14px; margin: 0; border-radius: 7px; background: var(--color-surface); border: 1px solid var(--color-border); color: var(--color-text-muted); font-size: 12px; pointer-events: none; max-width: 90%; }
51
- .mind-canvas-stage .mind-drop-child { outline: 3px solid var(--mind-color); border-radius: 10px; }
52
- .mind-canvas-stage .mind-drop-left { box-shadow:-6px 0 0 0 var(--mind-color);border-radius:9px; }
53
- .mind-canvas-stage .mind-drop-right { box-shadow:6px 0 0 0 var(--mind-color);border-radius:9px; }
54
- .mind-canvas-stage .mind-drag-branch { opacity:.35; }
55
- .mind-canvas-stage .mind-drag-branch-edge { opacity:.12; }
56
- .mind-side-preview {position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;}
57
- .mind-side-preview path {fill:none;stroke:var(--mind-color);stroke-width:2;stroke-dasharray:6 4;}
58
- .mind-side-preview rect {fill:var(--color-surface);stroke:var(--mind-color);stroke-width:2;stroke-dasharray:5 3;}
59
- .mind-side-preview text {fill:var(--color-text);font-size:14px;}
60
- .mind-canvas-stage .mind-drop-before::before, .mind-canvas-stage .mind-drop-after::after { content: ''; position: absolute; left: -10px; right: -10px; height: 3px; background: var(--mind-color); }
61
- .mind-canvas-stage .mind-drop-before::before { top: -7px; }
62
- .mind-canvas-stage .mind-drop-after::after { bottom: -7px; }
63
- .mind-canvas-stage .vue-flow__edge-path { stroke: var(--mind-color); }
64
- @media (max-width: 760px) { .mind-canvas-outline { flex-basis: 170px; } .mind-canvas-hint { display: none; } .mind-canvas-toolbar { gap: 8px; } .mind-canvas-options { justify-content: flex-start; margin-left: 0; } .mind-node-actions { left: 8px; right: 8px; top: 8px; } .mind-canvas-status { max-width: 60vw; } }
65
- .mind-inline { height:100%; min-height:380px; }
66
- .mind-inline .mind-map-workspace { height:100%; }
67
- .mind-search { display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:6px 0 10px;font-size:12px; }
68
- .mind-search input {width:180px;font-size:12px;}
69
- .mind-outline-row {display:flex;align-items:center;margin:3px 0;}.mind-outline-row input {min-width:0;width:100%;border:0;background:transparent;font:12px/22px inherit;color:var(--color-text);padding:5px;}.mind-outline-row.current {background:var(--color-surface-subtle);}.mind-outline-row>button:last-child {width:24px;flex-shrink:0;padding:2px;}
70
- .mind-canvas-outline .mind-outline-row textarea{min-width:0;width:100%;border:0;background:transparent;font-size:12px;line-height:22px;color:var(--color-text);padding:5px;resize:none;border-radius:4px;}
71
- .mind-inline { height:100%; min-height:380px; }
72
- .mind-inline .mind-map-workspace { height:100%; }.mind-settings-menu{width:310px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px;font-size:12px;}.mind-settings-menu label{width:100%;display:flex;gap:8px;align-items:center;}.mind-settings-menu input{width:auto;}
73
- .mind-canvas-fullscreen {
74
- position: fixed !important;
75
- top: 0 !important;
76
- left: 0 !important;
77
- width: 100vw !important;
78
- height: 100dvh !important;
79
- max-width: none !important;
80
- }
1
+ .mind-inline .mind-map-workspace{height:100%;padding:0}.mind-canvas-title{display:inline-flex;align-items:center;gap:14px;max-width:calc(100vw - 110px)}.mind-canvas-title>span{font-size:13px;font-weight:400;color:var(--color-text-muted);max-width:65vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mind-map-workspace{display:flex;flex-direction:column;height:100%;min-height:300px;box-sizing:border-box;padding:16px 20px 20px;color:var(--color-text)}.mind-save-hint{margin-bottom:10px}.mind-canvas-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 0 10px;flex-wrap:wrap}.mind-canvas-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.mind-canvas-options{justify-content:flex-end;margin-left:auto}.mind-canvas-status{font-size:12px;color:var(--color-text-muted);max-width:32vw}.mind-canvas-body{display:flex;flex:1;min-height:0;border:1px solid var(--color-border);border-radius:12px;overflow:hidden}.mind-canvas-stage{position:relative;flex:1;min-width:0;overflow:hidden;outline:none;background:radial-gradient(var(--color-border) 1px,transparent 1px) 0 0 / 22px 22px var(--color-surface)}.mind-canvas-stage.mind-grid-hidden{background-image:none}.mind-canvas-surface{width:100%;height:100%}.mind-canvas-stage .vue-flow__pane{cursor:default}.mind-canvas-stage .vue-flow__selection,.mind-marquee{background:color-mix(in srgb,var(--mind-color) 8%,transparent);border:1px solid var(--mind-color);box-sizing:border-box;pointer-events:none}.mind-marquee{position:absolute;z-index:4}.mind-canvas-stage.mind-space-pan .vue-flow__pane,.mind-canvas-stage.mind-space-pan .vue-flow__node{cursor:grab}.mind-canvas-stage .vue-flow__pane.dragging{cursor:grabbing}.mind-selection-summary{position:absolute;left:16px;top:16px;display:flex;align-items:center;gap:10px;padding:6px 12px;border:1px solid var(--color-border);border-radius:9px;background:var(--color-surface);font-size:12px}.mind-menu-key{margin-left:22px;float:right;color:var(--color-text-faint);font-size:11px}.mind-canvas-outline{flex:0 0 235px;overflow:auto;border-right:1px solid var(--color-border);padding:12px 4px}.mind-canvas-outline button{display:block;border:0;background:transparent;border-radius:5px;width:100%;text-align:left;padding:7px 10px;color:var(--color-text-muted);white-space:pre-wrap;overflow-wrap:anywhere}.mind-canvas-outline button.current{color:var(--mind-color);background:var(--color-surface-subtle)}.mind-node-actions{position:absolute;left:16px;top:16px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;border:1px solid var(--color-border);padding:6px;background:var(--color-surface);border-radius:10px;box-shadow:0 4px 20px #00000008}.mind-canvas-bottom{position:absolute;bottom:16px;left:18px;right:18px;display:flex;justify-content:space-between;align-items:end;gap:10px;pointer-events:none}.mind-canvas-hint{font-size:11px;color:var(--color-text-faint);padding:6px 0}.mind-canvas-viewport{display:flex;align-items:center;gap:6px;padding:6px;border:1px solid var(--color-border);border-radius:9px;background:var(--color-surface);pointer-events:auto;white-space:nowrap}.mind-viewport-divider{height:20px;border-left:1px solid var(--color-border);margin:0 2px}.mind-zoom-percent{min-width:52px;font-variant-numeric:tabular-nums}.mind-viewport-tip{display:flex;align-items:center;flex-wrap:wrap;gap:7px;max-width:min(480px,calc(100vw - 40px));font-size:12px;line-height:1.6}.mind-viewport-tip kbd{padding:2px 6px;border-radius:4px;background:#ffffff20;font:inherit;white-space:nowrap}.mind-canvas-notice{position:absolute;bottom:70px;left:50%;transform:translate(-50%);padding:8px 14px;margin:0;border-radius:7px;background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-muted);font-size:12px;pointer-events:none;max-width:90%}.mind-canvas-stage .mind-drop-child{outline:3px solid var(--mind-color);border-radius:10px}.mind-canvas-stage .mind-drop-left{box-shadow:-6px 0 0 0 var(--mind-color);border-radius:9px}.mind-canvas-stage .mind-drop-right{box-shadow:6px 0 0 0 var(--mind-color);border-radius:9px}.mind-canvas-stage .mind-drag-branch{opacity:.35}.mind-canvas-stage .mind-drag-branch-edge{opacity:.12}.mind-side-preview{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.mind-side-preview path{fill:none;stroke:var(--mind-color);stroke-width:2;stroke-dasharray:6 4}.mind-side-preview rect{fill:var(--color-surface);stroke:var(--mind-color);stroke-width:2;stroke-dasharray:5 3}.mind-side-preview text{fill:var(--color-text);font-size:14px}.mind-canvas-stage .mind-drop-before:before,.mind-canvas-stage .mind-drop-after:after{content:"";position:absolute;left:-10px;right:-10px;height:3px;background:var(--mind-color)}.mind-canvas-stage .mind-drop-before:before{top:-7px}.mind-canvas-stage .mind-drop-after:after{bottom:-7px}.mind-canvas-stage .vue-flow__edge-path{stroke:var(--mind-color)}@media(max-width:760px){.mind-canvas-outline{flex-basis:170px}.mind-canvas-hint{display:none}.mind-canvas-toolbar{gap:8px}.mind-canvas-options{justify-content:flex-start;margin-left:0}.mind-node-actions{left:8px;right:8px;top:8px}.mind-canvas-status{max-width:60vw}}.mind-search{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:6px 0 10px;font-size:12px}.mind-search input{width:180px;font-size:12px}.mind-outline-row{display:flex;align-items:center;margin:3px 0}.mind-outline-row input{min-width:0;width:100%;border:0;background:transparent;font:12px/22px inherit;color:var(--color-text);padding:5px}.mind-outline-row.current{background:var(--color-surface-subtle)}.mind-outline-row>button:last-child{width:24px;flex-shrink:0;padding:2px}.mind-canvas-outline .mind-outline-row textarea{min-width:0;width:100%;border:0;background:transparent;font-size:12px;line-height:22px;color:var(--color-text);padding:5px;resize:none;border-radius:4px}.mind-inline{height:100%;min-height:380px}.mind-inline .mind-map-workspace{height:100%}.mind-settings-menu{width:310px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px;font-size:12px}.mind-settings-menu label{width:100%;display:flex;gap:8px;align-items:center}.mind-settings-menu input{width:auto}.mind-canvas-fullscreen{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100dvh!important;max-width:none!important}
@@ -1,93 +1 @@
1
- .mind-comments {
2
- flex: 0 0 340px;
3
- display: flex;
4
- flex-direction: column;
5
- gap: 12px;
6
- min-height: 0;
7
- padding: 16px;
8
- overflow: auto;
9
- border-left: 1px solid var(--color-border);
10
- background: var(--color-surface, #fff);
11
- font-size: 13px;
12
- }
13
- .mind-comments__head {
14
- display: flex;
15
- align-items: flex-start;
16
- justify-content: space-between;
17
- gap: 8px;
18
- }
19
- .mind-comments__intro strong { font-size: 14px; }
20
- .mind-comments__intro p {
21
- margin: 4px 0 0;
22
- color: var(--color-text-muted);
23
- font-size: 12px;
24
- line-height: 1.6;
25
- }
26
- .mind-comments__head-actions { display: flex; flex: none; gap: 4px; }
27
- .mind-comments__error {
28
- margin: 0;
29
- padding: 8px 10px;
30
- border-radius: 6px;
31
- background: #fdecec;
32
- color: #b42b36;
33
- font-size: 12px;
34
- }
35
- .mind-comments__list { display: grid; gap: 10px; }
36
- .mind-comment {
37
- display: grid;
38
- gap: 8px;
39
- padding: 10px 12px;
40
- border: 1px solid var(--color-border);
41
- border-radius: 8px;
42
- }
43
- .mind-comment__head {
44
- display: flex;
45
- align-items: baseline;
46
- justify-content: space-between;
47
- gap: 8px;
48
- }
49
- .mind-comment__head span { color: var(--color-text-muted); font-size: 11px; }
50
- .mind-comment__body {
51
- margin: 0;
52
- white-space: pre-wrap;
53
- overflow-wrap: anywhere;
54
- line-height: 1.7;
55
- }
56
- .mind-comment__actions { display: flex; flex-wrap: wrap; gap: 4px; }
57
- .mind-comment__reply {
58
- display: grid;
59
- gap: 6px;
60
- margin-left: 12px;
61
- padding-left: 10px;
62
- border-left: 2px solid var(--color-border);
63
- }
64
- .mind-comment__label {
65
- color: var(--color-text-muted);
66
- font-size: 11px;
67
- font-weight: 600;
68
- }
69
- .mind-comment__compose { display: grid; gap: 6px; }
70
- .mind-comments__compose {
71
- display: grid;
72
- gap: 6px;
73
- padding-top: 12px;
74
- border-top: 1px solid var(--color-border);
75
- }
76
- .mind-comments__empty {
77
- margin: 0;
78
- color: var(--color-text-muted);
79
- font-size: 12px;
80
- line-height: 1.7;
81
- }
82
- .mind-comments textarea {
83
- width: 100%;
84
- padding: 8px 10px;
85
- border: 1px solid var(--color-border);
86
- border-radius: 6px;
87
- background: var(--color-surface, #fff);
88
- color: inherit;
89
- font: inherit;
90
- line-height: 1.6;
91
- box-sizing: border-box;
92
- resize: vertical;
93
- }
1
+ .mind-comments{flex:0 0 340px;display:flex;flex-direction:column;gap:12px;min-height:0;padding:16px;overflow:auto;border-left:1px solid var(--color-border);background:var(--color-surface, #fff);font-size:13px}.mind-comments__head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mind-comments__intro strong{font-size:14px}.mind-comments__intro p{margin:4px 0 0;color:var(--color-text-muted);font-size:12px;line-height:1.6}.mind-comments__head-actions{display:flex;flex:none;gap:4px}.mind-comments__error{margin:0;padding:8px 10px;border-radius:6px;background:#fdecec;color:#b42b36;font-size:12px}.mind-comments__list{display:grid;gap:10px}.mind-comment{display:grid;gap:8px;padding:10px 12px;border:1px solid var(--color-border);border-radius:8px}.mind-comment__head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.mind-comment__head span{color:var(--color-text-muted);font-size:11px}.mind-comment__body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}.mind-comment__actions{display:flex;flex-wrap:wrap;gap:4px}.mind-comment__reply{display:grid;gap:6px;margin-left:12px;padding-left:10px;border-left:2px solid var(--color-border)}.mind-comment__label{color:var(--color-text-muted);font-size:11px;font-weight:600}.mind-comment__compose{display:grid;gap:6px}.mind-comments__compose{display:grid;gap:6px;padding-top:12px;border-top:1px solid var(--color-border)}.mind-comments__empty{margin:0;color:var(--color-text-muted);font-size:12px;line-height:1.7}.mind-comments textarea{width:100%;padding:8px 10px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface, #fff);color:inherit;font:inherit;line-height:1.6;box-sizing:border-box;resize:vertical}
@@ -1,7 +1 @@
1
- .mind-details { flex: 0 0 280px; padding: 14px; border-left: 1px solid var(--color-border); overflow: auto; background: var(--color-surface); font-size: 12px; }
2
- .mind-details > header { display: flex; justify-content: space-between; align-items: center; }.mind-details-title { color: var(--color-text-muted); overflow-wrap:anywhere; }
3
- .mind-details fieldset { border: 0; border-top: 1px solid var(--color-border); padding: 12px 0; margin: 8px 0; display: flex; flex-direction:column; gap:8px; }
4
- .mind-details legend { font-weight:600; padding:0 8px 0 0; } .mind-details label { display:grid; grid-template-columns:70px minmax(0,1fr);align-items:center;gap:8px; }
5
- .mind-details input,.mind-details textarea { width:100%;font:inherit;box-sizing:border-box; } .mind-details textarea { resize:vertical; }.mind-format-buttons { display:flex;gap:6px; }
6
- .mind-relation-item { display:flex;align-items:center;gap:8px; }.mind-relation-item span { flex:1;overflow-wrap:anywhere; }
7
- .mind-color-grid {display:grid;grid-template-columns:repeat(8,24px);gap:4px;}.mind-color-grid>*{width:24px;min-width:24px;height:24px;padding:0;}
1
+ .mind-details{flex:0 0 280px;padding:14px;border-left:1px solid var(--color-border);overflow:auto;background:var(--color-surface);font-size:12px}.mind-details>header{display:flex;justify-content:space-between;align-items:center}.mind-details-title{color:var(--color-text-muted);overflow-wrap:anywhere}.mind-details fieldset{border:0;border-top:1px solid var(--color-border);padding:12px 0;margin:8px 0;display:flex;flex-direction:column;gap:8px}.mind-details legend{font-weight:600;padding:0 8px 0 0}.mind-details label{display:grid;grid-template-columns:70px minmax(0,1fr);align-items:center;gap:8px}.mind-details input,.mind-details textarea{width:100%;font:inherit;box-sizing:border-box}.mind-details textarea{resize:vertical}.mind-format-buttons{display:flex;gap:6px}.mind-relation-item{display:flex;align-items:center;gap:8px}.mind-relation-item span{flex:1;overflow-wrap:anywhere}.mind-color-grid{display:grid;grid-template-columns:repeat(8,24px);gap:4px}.mind-color-grid>*{width:24px;min-width:24px;height:24px;padding:0}
@@ -1,7 +1 @@
1
- .mind-preview-wrap {display:flex;align-items:center;justify-content:center;overflow:hidden;min-height:240px;}
2
- .mind-preview-sized {position:relative;flex-shrink:0;}.mind-preview-scene {position:relative;transform-origin:top left;}.mind-preview-lines {position:absolute;inset:0;}
3
- .mind-preview-topic {position:absolute;box-sizing:border-box;border:1px solid color-mix(in srgb,var(--mind-color) 35%,var(--color-border));border-radius:9px;background:var(--color-surface-subtle);color:var(--color-text);padding:10px 16px;display:flex;flex-direction:column;justify-content:center;line-height:22px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;}
4
- .mind-preview-title{display:block;width:100%;min-width:0;}.mind-preview-icon{font-size:16px;line-height:20px;}
5
- .mind-preview-topic.root {background:var(--mind-color);color:white;font-weight:600;}.mind-preview-topic.text {border:0;background:transparent;}
6
- .mind-preview-description {font-size:12px;font-weight:400;line-height:18px;margin-top:6px;opacity:.72;}.mind-preview-note{font-size:10px;line-height:14px;margin-top:6px;opacity:.65;}
7
- .mind-preview-image{width:100%;height:96px;margin-top:8px;overflow:hidden;}.mind-preview-image img{width:100%!important;height:96px!important;object-fit:contain;margin:0!important;}
1
+ .mind-preview-wrap{display:flex;align-items:center;justify-content:center;overflow:hidden;min-height:240px}.mind-preview-sized{position:relative;flex-shrink:0}.mind-preview-scene{position:relative;transform-origin:top left}.mind-preview-lines{position:absolute;inset:0}.mind-preview-topic{position:absolute;box-sizing:border-box;border:1px solid color-mix(in srgb,var(--mind-color) 35%,var(--color-border));border-radius:9px;background:var(--color-surface-subtle);color:var(--color-text);padding:10px 16px;display:flex;flex-direction:column;justify-content:center;line-height:22px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all}.mind-preview-title{display:block;width:100%;min-width:0}.mind-preview-icon{font-size:16px;line-height:20px}.mind-preview-topic.root{background:var(--mind-color);color:#fff;font-weight:600}.mind-preview-topic.text{border:0;background:transparent}.mind-preview-description{font-size:12px;font-weight:400;line-height:18px;margin-top:6px;opacity:.72}.mind-preview-note{font-size:10px;line-height:14px;margin-top:6px;opacity:.65}.mind-preview-image{width:100%;height:96px;margin-top:8px;overflow:hidden}.mind-preview-image img{width:100%!important;height:96px!important;object-fit:contain;margin:0!important}
@@ -1,112 +1 @@
1
- .mind-topic-shell { position: relative; width: 100%; height: 100%; }
2
- .mind-topic { position: relative; border-radius: 9px; background: var(--color-surface); color: var(--color-text); border: 1px solid color-mix(in srgb, var(--mind-color) 38%, var(--color-border)); padding: 10px 16px; font-family: inherit; font-size: 14px; line-height: 22px; display: grid; place-items: center; box-sizing: border-box; }
3
- .mind-topic.root { background: var(--mind-color); border-color: var(--mind-color); color: white; font-weight: 600; }
4
- .mind-topic.active { box-shadow: 0 0 0 3px color-mix(in srgb, var(--mind-color) 22%, transparent); }
5
- .mind-topic-label { width:100%;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;text-align:center;line-height:var(--mind-topic-line-height,22px); }
6
- .mind-topic-input { box-sizing:border-box;display:block;border:0;border-radius:4px;outline:0;padding:0;margin:0;width:100%;min-width:0;min-height:var(--mind-topic-line-height,22px);max-width:none;resize:none;overflow:hidden;white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere;background:transparent;color:inherit;font:inherit;line-height:var(--mind-topic-line-height,22px);text-align:inherit; }
7
- .mind-topic-input:focus { box-shadow: none; outline: 0; }
8
- .mind-topic-fold {
9
- position:absolute;left:calc(100% + 20px);top:calc(50% - 12px);width:24px;min-width:24px;height:24px;padding:0;
10
- display:grid;place-items:center;z-index:2;border-radius:50%;border:1px solid var(--mind-color);color:var(--mind-color);background:var(--color-surface);
11
- font:11px/1 sans-serif;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .12s ease;
12
- }
13
- .mind-topic-shell:hover>.mind-topic-fold,.mind-topic-shell.is-selected>.mind-topic-fold,
14
- .mind-topic-shell:focus-within>.mind-topic-fold,.mind-topic-shell.is-collapsed>.mind-topic-fold {
15
- opacity:1;pointer-events:auto;
16
- }
17
- .mind-topic-fold:hover {background:color-mix(in srgb,var(--mind-color) 10%,var(--color-surface));}
18
- .mind-topic-fold:focus-visible {outline:2px solid var(--mind-color);outline-offset:3px;}
19
- .mind-fold-count {font-variant-numeric:tabular-nums;font-weight:600;}
20
- /* Keep the node and its connector in one hover region while moving toward the button. */
21
- .mind-topic-shell.has-children:not(.root)::before {content:'';position:absolute;left:100%;top:0;width:64px;height:100%;}
22
- .mind-topic-handle { opacity: 0; pointer-events: none; }
23
- .mind-topic-shell.grows-left .mind-topic-add { left: auto; right: calc(100% - 12px); }
24
- .mind-topic-shell .mind-topic-add.root-left {left:auto;right:calc(100% - 12px);}
25
- .mind-topic-shell .mind-topic-add.root-right {right:auto;left:calc(100% - 12px);}
26
- .mind-topic-shell.grows-left .mind-topic-fold {left:auto;right:calc(100% + 20px);}
27
- .mind-topic-shell.grows-left .mind-fold-chevron {transform:rotate(180deg);}
28
- .mind-topic-shell.grows-left.has-children:not(.root)::before {left:auto;right:100%;}
29
- .mind-topic-shell.grows-down .mind-topic-add { left: calc(50% - 12px); top: calc(100% - 12px); }
30
- .mind-topic-shell.grows-down .mind-topic-fold {right:auto;left:calc(50% - 12px);top:calc(100% + 18px);}
31
- .mind-topic-shell.grows-down .mind-fold-chevron {transform:rotate(90deg);}
32
- .mind-topic-shell.grows-down.has-children:not(.root)::before {left:0;right:auto;top:100%;width:100%;height:60px;}
33
- @media(hover:none){.mind-topic-fold{opacity:1;pointer-events:auto;}}
34
- .mind-topic-sibling {
35
- position: absolute; width: 24px; min-width: 24px; height: 24px; padding: 0;
36
- left: calc(50% - 12px); display: grid; place-items: center;
37
- border: 0; border-radius: 50%; background: transparent; color: white;
38
- cursor: pointer; z-index: 1;
39
- }
40
- .mind-topic-sibling.before { top: -22px; }
41
- .mind-topic-sibling.after { bottom: -22px; }
42
- .mind-topic-sibling > span {
43
- display: grid; place-items: center; width: 9px; height: 9px; border-radius: 50%;
44
- background: color-mix(in srgb, var(--mind-color) 36%, var(--color-surface)); font: 0/1 sans-serif;
45
- }
46
- .mind-topic-sibling:hover, .mind-topic-sibling:focus-visible { background: transparent; }
47
- .mind-topic-sibling:hover > span, .mind-topic-sibling:focus-visible > span {
48
- width: 20px; height: 20px; background: var(--mind-color); font-size: 16px;
49
- }
50
- .mind-topic-sibling:focus-visible { outline: 2px solid var(--mind-color); outline-offset: 1px; }
51
- .mind-topic-shell.grows-down .mind-topic-sibling { top: calc(50% - 12px); bottom: auto; }
52
- .mind-topic-shell.grows-down .mind-topic-sibling.before { left: -22px; }
53
- .mind-topic-shell.grows-down .mind-topic-sibling.after { left: auto; right: -22px; }
54
- .mind-topic-description { font-size:12px;line-height:18px;white-space:pre-wrap;color:var(--color-text-muted);width:100%;min-width:0;word-break:break-all;overflow-wrap:anywhere;margin-top:6px; }
55
- .root .mind-topic-description { color:#e7f4ff; }.mind-topic-image { width:100%;height:96px;overflow:hidden;margin-top:8px; }
56
- .mind-topic-image img {width:100%!important;height:96px!important;object-fit:contain;max-height:96px!important;margin:0!important;}
57
- .mind-topic-note { font-size:10px;line-height:14px;margin-top:6px;opacity:.7;cursor:pointer; }
58
- /**
59
- * 「添加子主题」按钮:骑在节点右缘(或左缘)上的圆形按钮。
60
- *
61
- * ## 为什么必须显式给全样式(用户实测:"按钮+太怪异了")
62
- *
63
- * 这里原来只写了尺寸与圆角,**没有背景、边框、字色**。`<button>` 的默认样式
64
- * 因此生效:浅灰方块底 + 深灰描边 + 系统字体,压在蓝色根节点上像一块补丁,
65
- * 与画布其余部分(圆角卡片、细线连接)完全不是一个语言。
66
- *
67
- * 现在按参考样式统一为:圆形、白底、细描边、居中「+」,悬停时染色并略微放大。
68
- * 用 `display:grid` 而不是 `line-height` 居中——后者在 24px 圆里对不齐。
69
- */
70
- .mind-topic-add {
71
- position: absolute;
72
- left: calc(100% - 12px);
73
- top: calc(50% - 12px);
74
- width: 24px;
75
- height: 24px;
76
- padding: 0;
77
- box-sizing: border-box;
78
- display: grid;
79
- place-items: center;
80
- border-radius: 50%;
81
- border: 1px solid color-mix(in srgb, var(--mind-color) 45%, var(--color-border));
82
- background: var(--color-surface);
83
- color: color-mix(in srgb, var(--mind-color) 82%, var(--color-text));
84
- font: 15px/1 system-ui, sans-serif;
85
- font-weight: 500;
86
- cursor: pointer;
87
- z-index: 3;
88
- box-shadow: 0 1px 3px rgb(15 23 42 / 12%);
89
- transition: background .12s ease, border-color .12s ease, transform .12s ease, box-shadow .12s ease;
90
- }
91
- /**
92
- * 悬停/聚焦:底色换成主题色的淡染,边界加深,轻微放大。
93
- *
94
- * 只改颜色而不改尺寸(除 transform)是关键:按钮骑在节点边缘,改 width/height
95
- * 会让它相对节点跳动;`transform: scale` 不参与布局,视觉放大而位置不动。
96
- */
97
- .mind-topic-add:hover,
98
- .mind-topic-add:focus-visible {
99
- background: color-mix(in srgb, var(--mind-color) 14%, var(--color-surface));
100
- border-color: var(--mind-color);
101
- color: var(--mind-color);
102
- transform: scale(1.12);
103
- box-shadow: 0 2px 6px rgb(15 23 42 / 18%);
104
- }
105
- .mind-topic-add:focus-visible { outline: 2px solid var(--mind-color); outline-offset: 2px; }
106
- .mind-topic-add:active { transform: scale(0.98); }
107
- /* 深色节点(根主题)上按钮是白底压在深蓝上:描边改用白色系,避免与底色混在一起 */
108
- .mind-topic-add.root-left,
109
- .mind-topic-add.root-right {
110
- border-color: color-mix(in srgb, var(--color-surface) 70%, transparent);
111
- }
112
- .mind-topic-icon { font-size:16px;line-height:20px; }.mind-topic[style*="border: 0"] { background:transparent; }
1
+ .mind-topic-shell{position:relative;width:100%;height:100%}.mind-topic{position:relative;border-radius:9px;background:var(--color-surface);color:var(--color-text);border:1px solid color-mix(in srgb,var(--mind-color) 38%,var(--color-border));padding:10px 16px;font-family:inherit;font-size:14px;line-height:22px;display:grid;place-items:center;box-sizing:border-box}.mind-topic.root{background:var(--mind-color);border-color:var(--mind-color);color:#fff;font-weight:600}.mind-topic.active{box-shadow:0 0 0 3px color-mix(in srgb,var(--mind-color) 22%,transparent)}.mind-topic-label{width:100%;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;text-align:center;line-height:var(--mind-topic-line-height,22px)}.mind-topic-input{box-sizing:border-box;display:block;border:0;border-radius:4px;outline:0;padding:0;margin:0;width:100%;min-width:0;min-height:var(--mind-topic-line-height,22px);max-width:none;resize:none;overflow:hidden;white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere;background:transparent;color:inherit;font:inherit;line-height:var(--mind-topic-line-height,22px);text-align:inherit}.mind-topic-input:focus{box-shadow:none;outline:0}.mind-topic-fold{position:absolute;left:calc(100% + 20px);top:calc(50% - 12px);width:24px;min-width:24px;height:24px;padding:0;display:grid;place-items:center;z-index:2;border-radius:50%;border:1px solid var(--mind-color);color:var(--mind-color);background:var(--color-surface);font:11px/1 sans-serif;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .12s ease}.mind-topic-shell:hover>.mind-topic-fold,.mind-topic-shell.is-selected>.mind-topic-fold,.mind-topic-shell:focus-within>.mind-topic-fold,.mind-topic-shell.is-collapsed>.mind-topic-fold{opacity:1;pointer-events:auto}.mind-topic-fold:hover{background:color-mix(in srgb,var(--mind-color) 10%,var(--color-surface))}.mind-topic-fold:focus-visible{outline:2px solid var(--mind-color);outline-offset:3px}.mind-fold-count{font-variant-numeric:tabular-nums;font-weight:600}.mind-topic-shell.has-children:not(.root):before{content:"";position:absolute;left:100%;top:0;width:64px;height:100%}.mind-topic-handle{opacity:0;pointer-events:none}.mind-topic-shell.grows-left .mind-topic-add,.mind-topic-shell .mind-topic-add.root-left{left:auto;right:calc(100% - 12px)}.mind-topic-shell .mind-topic-add.root-right{right:auto;left:calc(100% - 12px)}.mind-topic-shell.grows-left .mind-topic-fold{left:auto;right:calc(100% + 20px)}.mind-topic-shell.grows-left .mind-fold-chevron{transform:rotate(180deg)}.mind-topic-shell.grows-left.has-children:not(.root):before{left:auto;right:100%}.mind-topic-shell.grows-down .mind-topic-add{left:calc(50% - 12px);top:calc(100% - 12px)}.mind-topic-shell.grows-down .mind-topic-fold{right:auto;left:calc(50% - 12px);top:calc(100% + 18px)}.mind-topic-shell.grows-down .mind-fold-chevron{transform:rotate(90deg)}.mind-topic-shell.grows-down.has-children:not(.root):before{left:0;right:auto;top:100%;width:100%;height:60px}@media(hover:none){.mind-topic-fold{opacity:1;pointer-events:auto}}.mind-topic-sibling{position:absolute;width:24px;min-width:24px;height:24px;padding:0;left:calc(50% - 12px);display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:#fff;cursor:pointer;z-index:1}.mind-topic-sibling.before{top:-22px}.mind-topic-sibling.after{bottom:-22px}.mind-topic-sibling>span{display:grid;place-items:center;width:9px;height:9px;border-radius:50%;background:color-mix(in srgb,var(--mind-color) 36%,var(--color-surface));font:0/1 sans-serif}.mind-topic-sibling:hover,.mind-topic-sibling:focus-visible{background:transparent}.mind-topic-sibling:hover>span,.mind-topic-sibling:focus-visible>span{width:20px;height:20px;background:var(--mind-color);font-size:16px}.mind-topic-sibling:focus-visible{outline:2px solid var(--mind-color);outline-offset:1px}.mind-topic-shell.grows-down .mind-topic-sibling{top:calc(50% - 12px);bottom:auto}.mind-topic-shell.grows-down .mind-topic-sibling.before{left:-22px}.mind-topic-shell.grows-down .mind-topic-sibling.after{left:auto;right:-22px}.mind-topic-description{font-size:12px;line-height:18px;white-space:pre-wrap;color:var(--color-text-muted);width:100%;min-width:0;word-break:break-all;overflow-wrap:anywhere;margin-top:6px}.root .mind-topic-description{color:#e7f4ff}.mind-topic-image{width:100%;height:96px;overflow:hidden;margin-top:8px}.mind-topic-image img{width:100%!important;height:96px!important;object-fit:contain;max-height:96px!important;margin:0!important}.mind-topic-note{font-size:10px;line-height:14px;margin-top:6px;opacity:.7;cursor:pointer}.mind-topic-add{position:absolute;left:calc(100% - 12px);top:calc(50% - 12px);width:24px;height:24px;padding:0;box-sizing:border-box;display:grid;place-items:center;border-radius:50%;border:1px solid color-mix(in srgb,var(--mind-color) 45%,var(--color-border));background:var(--color-surface);color:color-mix(in srgb,var(--mind-color) 82%,var(--color-text));font:15px/1 system-ui,sans-serif;font-weight:500;cursor:pointer;z-index:3;box-shadow:0 1px 3px #0f172a1f;transition:background .12s ease,border-color .12s ease,transform .12s ease,box-shadow .12s ease}.mind-topic-add:hover,.mind-topic-add:focus-visible{background:color-mix(in srgb,var(--mind-color) 14%,var(--color-surface));border-color:var(--mind-color);color:var(--mind-color);transform:scale(1.12);box-shadow:0 2px 6px #0f172a2e}.mind-topic-add:focus-visible{outline:2px solid var(--mind-color);outline-offset:2px}.mind-topic-add:active{transform:scale(.98)}.mind-topic-add.root-left,.mind-topic-add.root-right{border-color:color-mix(in srgb,var(--color-surface) 70%,transparent)}.mind-topic-icon{font-size:16px;line-height:20px}.mind-topic[style*="border: 0"]{background:transparent}
@@ -1,47 +1 @@
1
- .picker-backdrop {
2
- position: fixed;
3
- inset: 0;
4
- z-index: 1100;
5
- background: color-mix(in srgb, #000 45%, transparent);
6
- display: flex;
7
- align-items: flex-start;
8
- justify-content: center;
9
- padding-top: 12vh;
10
- }
11
- .picker-backdrop .picker {
12
- width: 420px;
13
- max-width: calc(100vw - 32px);
14
- background: var(--color-surface);
15
- border: 1px solid var(--color-border);
16
- border-radius: 10px;
17
- box-shadow: var(--shadow-pop);
18
- padding: 8px;
19
- }
20
- .picker-backdrop .picker .picker-input {
21
- width: 100%;
22
- box-sizing: border-box;
23
- border: 1px solid var(--color-border);
24
- border-radius: 6px;
25
- padding: 8px 10px;
26
- font-size: 14px;
27
- background: var(--color-surface-subtle);
28
- color: var(--color-text);
29
- }
30
- .picker-backdrop .picker-input:focus { outline: none; border-color: var(--color-accent); }
31
- .picker-backdrop .picker-list {
32
- list-style: none;
33
- margin: 6px 0 0;
34
- padding: 0;
35
- max-height: 320px;
36
- overflow-y: auto;
37
- }
38
- .picker-backdrop .picker-list li {
39
- padding: 7px 10px;
40
- border-radius: 6px;
41
- cursor: pointer;
42
- font-size: 14px;
43
- color: var(--color-text);
44
- }
45
- .picker-backdrop .picker-list li.active { background: var(--color-accent-soft); color: var(--color-accent); }
46
- .picker-backdrop .picker-title { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
47
- .picker-backdrop .picker-empty { color: var(--color-text-faint); font-size: 13px; text-align: center; padding: 14px 0; margin: 0; }
1
+ .picker-backdrop{position:fixed;inset:0;z-index:1100;background:color-mix(in srgb,#000 45%,transparent);display:flex;align-items:flex-start;justify-content:center;padding-top:12vh}.picker-backdrop .picker{width:420px;max-width:calc(100vw - 32px);background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;box-shadow:var(--shadow-pop);padding:8px}.picker-backdrop .picker .picker-input{width:100%;box-sizing:border-box;border:1px solid var(--color-border);border-radius:6px;padding:8px 10px;font-size:14px;background:var(--color-surface-subtle);color:var(--color-text)}.picker-backdrop .picker-input:focus{outline:none;border-color:var(--color-accent)}.picker-backdrop .picker-list{list-style:none;margin:6px 0 0;padding:0;max-height:320px;overflow-y:auto}.picker-backdrop .picker-list li{padding:7px 10px;border-radius:6px;cursor:pointer;font-size:14px;color:var(--color-text)}.picker-backdrop .picker-list li.active{background:var(--color-accent-soft);color:var(--color-accent)}.picker-backdrop .picker-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-backdrop .picker-empty{color:var(--color-text-faint);font-size:13px;text-align:center;padding:14px 0;margin:0}
@@ -1,45 +1 @@
1
- /**
2
- * 只读渲染器**专属**样式。
3
- *
4
- * 说明:内容排版(标题/列表/表格/代码/引用/高亮块/行内元素……)已收敛到
5
- * `@/shared/content-style.css` 的单一真源,编辑端与只读端共用;本文件只保留
6
- * **只有只读端才有**的东西:图片懒加载占位、公式占位/错误、附件卡片。
7
- *
8
- * 历史教训:曾因渲染器从 .vue 迁为 .ts 而丢失整个样式文件,排版静默退回浏览器
9
- * 默认——结构正常、观感没生效,是很容易漏掉的回归。因此这里显式 import。
10
- */
11
- @import './content-style.css';
12
-
13
- /* 阅读端内容宽度交给 token(外观菜单可调) */
14
- .doc-renderer {
15
- width: 100%;
16
- max-width: var(--content-width);
17
- margin-inline: auto;
18
- }
19
-
20
- /* ---------------------------------------------------------------- 图片懒加载占位
21
- 还没取到字节(接近视口时才取,见 LazyAttachmentImage):
22
- 给一个最小占位高度,避免图片陆续到达时正文不断被顶下去。 */
23
- .doc-image {
24
- cursor: zoom-in;
25
- }
26
- .doc-image[data-loading] {
27
- min-width: 160px;
28
- min-height: 60px;
29
- background: var(--color-surface-subtle);
30
- border-radius: 8px;
31
- }
32
- .doc-image-loading,
33
- .doc-image-missing,
34
- .doc-unknown {
35
- color: var(--color-text-muted);
36
- font-size: 0.9em;
37
- }
38
- .doc-unknown {
39
- border: 1px dashed var(--color-border-strong);
40
- border-radius: 6px;
41
- padding: 8px 10px;
42
- }
43
-
44
- /* 文件卡片的共同样式在 shared/content-style.css。 */
45
- .doc-file.is-missing { color: var(--color-text-faint); }
1
+ @import"./content-style.css";.doc-renderer{width:100%;max-width:var(--content-width);margin-inline:auto}.doc-image{cursor:zoom-in}.doc-image[data-loading]{min-width:160px;min-height:60px;background:var(--color-surface-subtle);border-radius:8px}.doc-image-loading,.doc-image-missing,.doc-unknown{color:var(--color-text-muted);font-size:.9em}.doc-unknown{border:1px dashed var(--color-border-strong);border-radius:6px;padding:8px 10px}.doc-file.is-missing{color:var(--color-text-faint)}
@@ -1,3 +1 @@
1
- .wendang-spreadsheet { position: relative; display: flex; flex-direction: column; height: 100%; min-height: 300px; min-width: 0; flex: 1; }
2
- .worksheet-grid { position: relative; flex: 1; min-width: 0; min-height: 0; overflow: hidden; }
3
- .wendang-spreadsheet > p { position: absolute; top: 8px; left: 12px; z-index: 2; }
1
+ .wendang-spreadsheet{position:relative;display:flex;flex-direction:column;height:100%;min-height:300px;min-width:0;flex:1}.worksheet-grid{position:relative;flex:1;min-width:0;min-height:0;overflow:hidden}.wendang-spreadsheet>p{position:absolute;top:8px;left:12px;z-index:2}