@musnows/scriverse 0.4.9 → 0.4.11
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/app.js +126 -26
- package/dist/app.js.map +1 -1
- package/dist/collaboration-presence.js +77 -2
- package/dist/collaboration-presence.js.map +1 -1
- package/dist/public/app.js +94 -18
- package/dist/public/display-labels.d.ts +1 -0
- package/dist/public/display-labels.js +8 -0
- package/dist/public/index.html +41 -40
- package/dist/public/markdown.js +16 -0
- package/dist/public/race-hierarchy.js +36 -0
- package/dist/public/relationship-graph.js +32 -10
- package/dist/public/styles.css +39 -20
- package/dist/store.js +3 -3
- package/dist/store.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,14 +6,26 @@ const RELATION_STYLE = Object.freeze({
|
|
|
6
6
|
uncertain: { label: "未确定", color: "#9aa5b5" }
|
|
7
7
|
});
|
|
8
8
|
|
|
9
|
-
/** Obsidian Graph View
|
|
9
|
+
/** Obsidian Graph View 风格:为浅色和深色背景分别提供可辨识的低饱和度分组配色 */
|
|
10
10
|
export const OBSIDIAN_NODE_PALETTE = Object.freeze([
|
|
11
|
-
Object.freeze({ key: "blue", color: "#
|
|
12
|
-
Object.freeze({ key: "
|
|
13
|
-
Object.freeze({ key: "
|
|
14
|
-
Object.freeze({ key: "
|
|
15
|
-
Object.freeze({ key: "
|
|
16
|
-
Object.freeze({ key: "
|
|
11
|
+
Object.freeze({ key: "blue", color: "#3f6f99", darkColor: "#7fb7e3", glow: "rgba(63,111,153,.42)", darkGlow: "rgba(127,183,227,.56)" }),
|
|
12
|
+
Object.freeze({ key: "indigo", color: "#5b5fa3", darkColor: "#9ea6ed", glow: "rgba(91,95,163,.42)", darkGlow: "rgba(158,166,237,.56)" }),
|
|
13
|
+
Object.freeze({ key: "violet", color: "#77549a", darkColor: "#bd91df", glow: "rgba(119,84,154,.42)", darkGlow: "rgba(189,145,223,.56)" }),
|
|
14
|
+
Object.freeze({ key: "purple", color: "#8b4f83", darkColor: "#d28bc5", glow: "rgba(139,79,131,.42)", darkGlow: "rgba(210,139,197,.56)" }),
|
|
15
|
+
Object.freeze({ key: "rose", color: "#a84e6a", darkColor: "#e78da8", glow: "rgba(168,78,106,.42)", darkGlow: "rgba(231,141,168,.56)" }),
|
|
16
|
+
Object.freeze({ key: "red", color: "#ad554f", darkColor: "#ef948c", glow: "rgba(173,85,79,.42)", darkGlow: "rgba(239,148,140,.56)" }),
|
|
17
|
+
Object.freeze({ key: "coral", color: "#a95d45", darkColor: "#eda083", glow: "rgba(169,93,69,.42)", darkGlow: "rgba(237,160,131,.56)" }),
|
|
18
|
+
Object.freeze({ key: "amber", color: "#956b2f", darkColor: "#deb46d", glow: "rgba(149,107,47,.42)", darkGlow: "rgba(222,180,109,.56)" }),
|
|
19
|
+
Object.freeze({ key: "olive", color: "#777331", darkColor: "#bdba70", glow: "rgba(119,115,49,.42)", darkGlow: "rgba(189,186,112,.56)" }),
|
|
20
|
+
Object.freeze({ key: "green", color: "#47794f", darkColor: "#84c98f", glow: "rgba(71,121,79,.42)", darkGlow: "rgba(132,201,143,.56)" }),
|
|
21
|
+
Object.freeze({ key: "emerald", color: "#337965", darkColor: "#74c9aa", glow: "rgba(51,121,101,.42)", darkGlow: "rgba(116,201,170,.56)" }),
|
|
22
|
+
Object.freeze({ key: "teal", color: "#31777a", darkColor: "#72c6c8", glow: "rgba(49,119,122,.42)", darkGlow: "rgba(114,198,200,.56)" }),
|
|
23
|
+
Object.freeze({ key: "cyan", color: "#34758f", darkColor: "#7cc4de", glow: "rgba(52,117,143,.42)", darkGlow: "rgba(124,196,222,.56)" }),
|
|
24
|
+
Object.freeze({ key: "sky", color: "#41749f", darkColor: "#87bce6", glow: "rgba(65,116,159,.42)", darkGlow: "rgba(135,188,230,.56)" }),
|
|
25
|
+
Object.freeze({ key: "steel", color: "#576f86", darkColor: "#98afc5", glow: "rgba(87,111,134,.42)", darkGlow: "rgba(152,175,197,.56)" }),
|
|
26
|
+
Object.freeze({ key: "slate", color: "#626b78", darkColor: "#aab3c0", glow: "rgba(98,107,120,.42)", darkGlow: "rgba(170,179,192,.56)" }),
|
|
27
|
+
Object.freeze({ key: "sand", color: "#806e58", darkColor: "#c5ad91", glow: "rgba(128,110,88,.42)", darkGlow: "rgba(197,173,145,.56)" }),
|
|
28
|
+
Object.freeze({ key: "taupe", color: "#75636d", darkColor: "#b9a0ad", glow: "rgba(117,99,109,.42)", darkGlow: "rgba(185,160,173,.56)" })
|
|
17
29
|
]);
|
|
18
30
|
|
|
19
31
|
const clamp = (value, minimum, maximum) => Math.min(maximum, Math.max(minimum, value));
|
|
@@ -186,12 +198,18 @@ export function getObsidianNodeAppearance(node, maxDegree = 1) {
|
|
|
186
198
|
const group = resolveRelationshipNodeGroup(node);
|
|
187
199
|
const degree = Math.max(0, Number(node?.degree) || 0);
|
|
188
200
|
const normalizedDegree = clamp(degree / Math.max(1, Number(maxDegree) || 1), 0, 1);
|
|
189
|
-
|
|
201
|
+
// 未分组角色没有可共享的分组语义,按角色稳定标识散列,避免资料不完整时大片同色。
|
|
202
|
+
const colorKey = group.key === "default"
|
|
203
|
+
? `node:${String(node?.id ?? node?.name ?? "default")}`
|
|
204
|
+
: group.key;
|
|
205
|
+
const paletteIndex = hashString(colorKey) % OBSIDIAN_NODE_PALETTE.length;
|
|
190
206
|
const palette = OBSIDIAN_NODE_PALETTE[paletteIndex];
|
|
191
207
|
return {
|
|
192
208
|
group,
|
|
193
209
|
color: palette.color,
|
|
210
|
+
darkColor: palette.darkColor,
|
|
194
211
|
glow: palette.glow,
|
|
212
|
+
darkGlow: palette.darkGlow,
|
|
195
213
|
size: clamp(8 + Math.sqrt(degree) * 4.8 + normalizedDegree * 4, 8, 38),
|
|
196
214
|
degree,
|
|
197
215
|
normalizedDegree
|
|
@@ -299,7 +317,9 @@ export function buildRelationshipGraph(characters, relationships) {
|
|
|
299
317
|
node.importance = node.weightedDegree + Math.sqrt(node.degree) * 0.8;
|
|
300
318
|
const appearance = getObsidianNodeAppearance(node, maxDegree);
|
|
301
319
|
node.color = appearance.color;
|
|
320
|
+
node.darkColor = appearance.darkColor;
|
|
302
321
|
node.glow = appearance.glow;
|
|
322
|
+
node.darkGlow = appearance.darkGlow;
|
|
303
323
|
node.nodeSize = appearance.size;
|
|
304
324
|
}
|
|
305
325
|
nodes.sort((left, right) => right.importance - left.importance || left.name.localeCompare(right.name, "zh-CN"));
|
|
@@ -1253,8 +1273,10 @@ export function renderRelationshipMindMap(container, graph, options = {}) {
|
|
|
1253
1273
|
button.dataset.groupKey = node.groupKey || appearance.group.key;
|
|
1254
1274
|
button.classList.toggle("is-label-visible", graph.nodes.indexOf(node) < defaultLabelLimit || node.degree >= 4);
|
|
1255
1275
|
button.style.setProperty("--node-size", `${nodeSize}px`);
|
|
1256
|
-
button.style.setProperty("--node-color", node.color || appearance.color);
|
|
1257
|
-
button.style.setProperty("--node-
|
|
1276
|
+
button.style.setProperty("--node-color-light", node.color || appearance.color);
|
|
1277
|
+
button.style.setProperty("--node-color-dark", node.darkColor || appearance.darkColor);
|
|
1278
|
+
button.style.setProperty("--node-glow-light", node.glow || appearance.glow);
|
|
1279
|
+
button.style.setProperty("--node-glow-dark", node.darkGlow || appearance.darkGlow);
|
|
1258
1280
|
const labelEl = document.createElement("span");
|
|
1259
1281
|
labelEl.textContent = node.name;
|
|
1260
1282
|
button.append(labelEl);
|
package/dist/public/styles.css
CHANGED
|
@@ -485,8 +485,9 @@ input[type="checkbox"][hidden] { display: none; }
|
|
|
485
485
|
@keyframes onboarding-popover-in { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
|
|
486
486
|
|
|
487
487
|
.left-panel, .ai-panel { position: relative; min-height: 0; background: var(--panel); }
|
|
488
|
-
.left-panel { border-right: 1px solid var(--line); padding:
|
|
489
|
-
.
|
|
488
|
+
.left-panel { display: flex; flex-direction: column; border-right: 1px solid var(--line); padding: 0; overflow: hidden; }
|
|
489
|
+
.left-panel-body { flex: 1 1 auto; min-height: 0; padding: 18px 14px 16px; overflow-y: auto; }
|
|
490
|
+
.ai-panel { border-left: 1px solid var(--line); display: flex; flex-direction: column; padding: 14px 16px 18px; min-width: 0; }
|
|
490
491
|
.panel-collapse-button { z-index: 8; flex: 0 0 auto; width: 24px; height: 24px; padding: 0; border: 1px solid var(--line); border-radius: 4px; background: var(--panel); color: var(--muted); font-size: 18px; line-height: 1; }
|
|
491
492
|
.ai-heading #ai-panel-toggle { flex-basis: 30px; width: 30px; height: 30px; }
|
|
492
493
|
.panel-resize-handle { position: absolute; z-index: 7; top: 0; bottom: 0; width: 7px; cursor: col-resize; touch-action: none; }
|
|
@@ -496,7 +497,10 @@ input[type="checkbox"][hidden] { display: none; }
|
|
|
496
497
|
body.is-panel-resizing { cursor: col-resize; user-select: none; }
|
|
497
498
|
.app-shell.left-panel-collapsed { --left-panel-width: 42px !important; }.app-shell.ai-panel-collapsed { --ai-panel-width: 42px !important; }
|
|
498
499
|
.app-shell.left-panel-collapsed .left-panel, .app-shell.ai-panel-collapsed .ai-panel { padding: 0; overflow: hidden; }
|
|
499
|
-
.app-shell.left-panel-collapsed .left-panel >
|
|
500
|
+
.app-shell.left-panel-collapsed .left-panel > .panel-resize-handle,
|
|
501
|
+
.app-shell.left-panel-collapsed .left-panel-body > :not(.left-actions),
|
|
502
|
+
.app-shell.ai-panel-collapsed .ai-panel > :not(.ai-heading) { display: none; }
|
|
503
|
+
.app-shell.left-panel-collapsed .left-panel-body { padding: 0; overflow: hidden; }
|
|
500
504
|
.app-shell.left-panel-collapsed .left-actions, .app-shell.ai-panel-collapsed .ai-heading { display: flex; justify-content: center; padding: 8px 0; border: 0; }
|
|
501
505
|
.app-shell.left-panel-collapsed .left-actions > :not(.left-primary-actions), .app-shell.left-panel-collapsed .left-primary-actions > :not(.panel-collapse-button), .app-shell.ai-panel-collapsed .ai-heading > :not(.panel-collapse-button) { display: none; }
|
|
502
506
|
.app-shell.left-panel-collapsed .left-primary-actions { display: flex; justify-content: center; }
|
|
@@ -1018,6 +1022,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1018
1022
|
.module-header { display: flex; justify-content: space-between; align-items: flex-end; gap: 18px; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
|
|
1019
1023
|
.module-header-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
|
|
1020
1024
|
.module-header-actions > [data-module-header-action] { order: 1; }
|
|
1025
|
+
.module-header-actions > .module-count-badge { order: 0; }
|
|
1021
1026
|
.module-header-actions > #module-create-button { order: 2; min-height: 36px; }
|
|
1022
1027
|
.module-count-badge { display: inline-grid; min-width: 28px; height: 28px; padding: 0 7px; place-items: center; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); color: var(--accent-dark); font-family: var(--font-latin), monospace; font-size: 11px; font-weight: 650; }
|
|
1023
1028
|
.module-header h1 { margin: 0 0 6px; font-weight: 500; font-size: 24px; line-height: 1.25; }
|
|
@@ -1317,6 +1322,8 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1317
1322
|
}
|
|
1318
1323
|
.relationship-network .mind-node,
|
|
1319
1324
|
.relationship-network .obsidian-node {
|
|
1325
|
+
--node-color: var(--node-color-light, #626b78);
|
|
1326
|
+
--node-glow: var(--node-glow-light, rgba(98,107,120,.42));
|
|
1320
1327
|
width: var(--node-size);
|
|
1321
1328
|
height: var(--node-size);
|
|
1322
1329
|
min-height: 0;
|
|
@@ -1333,6 +1340,11 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1333
1340
|
transition: opacity .12s ease, transform .12s ease, box-shadow .12s ease;
|
|
1334
1341
|
will-change: left, top;
|
|
1335
1342
|
}
|
|
1343
|
+
:root[data-theme="dark"] .relationship-network .mind-node,
|
|
1344
|
+
:root[data-theme="dark"] .relationship-network .obsidian-node {
|
|
1345
|
+
--node-color: var(--node-color-dark, #aab3c0);
|
|
1346
|
+
--node-glow: var(--node-glow-dark, rgba(170,179,192,.56));
|
|
1347
|
+
}
|
|
1336
1348
|
.relationship-network .mind-node span {
|
|
1337
1349
|
position: absolute;
|
|
1338
1350
|
left: 50%;
|
|
@@ -1463,14 +1475,15 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1463
1475
|
.galaxy-detail { position: fixed; z-index: 7; left: 22px; top: 22px; width: min(300px, 30vw); max-height: 55vh; overflow: auto; padding: 15px; border: 1px solid rgba(255,255,255,.14); border-radius: 8px; background: rgba(5,7,13,.74); backdrop-filter: blur(14px); }.galaxy-detail strong, .galaxy-detail small { display: block; }.galaxy-detail strong { font-size: 18px; }.galaxy-detail small, .galaxy-detail p { color: rgba(220,235,250,.65); font-size: 9px; }.galaxy-detail ul { display: grid; gap: 7px; padding: 0; list-style: none; font-size: 9px; }.galaxy-detail li { display: flex; align-items: center; gap: 6px; }
|
|
1464
1476
|
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
|
|
1465
1477
|
|
|
1466
|
-
.ai-heading { display: flex; align-items: center; gap: 8px; padding-bottom:
|
|
1467
|
-
.ai-heading
|
|
1468
|
-
.ai-heading
|
|
1478
|
+
.ai-heading { display: flex; align-items: center; gap: 8px; min-width: 0; padding-bottom: 9px; border-bottom: 1px solid var(--line); }
|
|
1479
|
+
.ai-heading-title { display: flex; flex: 0 0 auto; gap: 8px; align-items: center; }
|
|
1480
|
+
.ai-heading-title strong { white-space: nowrap; }
|
|
1481
|
+
.ai-heading-actions { display: flex; align-items: center; min-width: 0; margin-left: auto; gap: 5px; }
|
|
1482
|
+
.ai-heading-actions > span { min-width: 0; max-width: 88px; overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
|
|
1483
|
+
.ai-heading-actions button { min-width: 28px; height: 28px; padding: 0 7px; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--muted); font-size: 9px; }
|
|
1484
|
+
.ai-heading-actions #ai-new-conversation { padding: 0; font: 17px/1 var(--font-latin), monospace; }
|
|
1485
|
+
.ai-heading-actions button:hover, .ai-heading-actions button[aria-expanded="true"] { background: var(--paper-deep); color: var(--ink); }
|
|
1469
1486
|
.status-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--green); box-shadow: 0 0 0 3px rgba(94,118,92,.14); }
|
|
1470
|
-
.ai-conversation-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 5px; align-items: center; padding: 10px 0; }
|
|
1471
|
-
.ai-conversation-toolbar > span { min-width: 0; overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
|
|
1472
|
-
.ai-conversation-toolbar button { padding: 5px 7px; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--muted); font-size: 9px; }
|
|
1473
|
-
.ai-conversation-toolbar button:hover, .ai-conversation-toolbar button[aria-expanded="true"] { background: var(--paper-deep); color: var(--ink); }
|
|
1474
1487
|
.ai-history-dialog-body { min-height: min(360px, 55vh); max-height: 65vh; overflow-y: auto; padding: 18px 24px 24px; }
|
|
1475
1488
|
.ai-history-list { display: grid; gap: 8px; }
|
|
1476
1489
|
.ai-history-item { display: grid; gap: 5px; width: 100%; min-width: 0; padding: 14px 16px; border: 1px solid var(--line); border-radius: 5px; background: var(--surface-soft); text-align: left; }
|
|
@@ -1499,10 +1512,10 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1499
1512
|
line-height: 1.65;
|
|
1500
1513
|
resize: vertical;
|
|
1501
1514
|
}
|
|
1502
|
-
.quick-actions { display: grid; grid-template-columns:
|
|
1503
|
-
.quick-actions button { border: 1px solid var(--line); background: transparent; border-radius: 3px; padding:
|
|
1515
|
+
.quick-actions { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; margin-top: 8px; }
|
|
1516
|
+
.quick-actions button { min-width: 0; min-height: 30px; border: 1px solid var(--line); background: transparent; border-radius: 3px; padding: 5px 3px; color: var(--muted); font-size: 10px; white-space: nowrap; }
|
|
1504
1517
|
.quick-actions button:hover { color: var(--ink); background: var(--paper-deep); }
|
|
1505
|
-
.ai-feed { flex: 1; min-height: 0; overflow-y: auto; margin:
|
|
1518
|
+
.ai-feed { flex: 1; min-height: 0; overflow-y: auto; margin: 10px -5px 12px; padding: 0 5px; }
|
|
1506
1519
|
.assistant-message, .user-message { position: relative; margin-bottom: 12px; padding: 12px 13px; border-radius: 5px; font-size: 12px; line-height: 1.55; }
|
|
1507
1520
|
.assistant-message { background: var(--paper-deep); }
|
|
1508
1521
|
.assistant-message.has-message-actions, .user-message.has-message-actions { margin-bottom: 42px; }
|
|
@@ -1859,6 +1872,10 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1859
1872
|
.vditor-editor-host .vditor-reset { color: var(--ink); font-family: var(--font-cjk), var(--font-latin), sans-serif; }
|
|
1860
1873
|
.vditor-editor-host .vditor-ir, .vditor-editor-host .vditor-sv, .vditor-editor-host .vditor-wysiwyg { background: var(--surface); color: var(--ink); }
|
|
1861
1874
|
.vditor-editor-host .vditor-sv textarea { color: var(--ink); }
|
|
1875
|
+
.vditor-editor-host.vditor--dark .vditor-reset table { background: var(--surface); color: var(--ink); }
|
|
1876
|
+
.vditor-editor-host.vditor--dark .vditor-reset table tr { background: var(--surface); border-top-color: var(--line); }
|
|
1877
|
+
.vditor-editor-host.vditor--dark .vditor-reset table td, .vditor-editor-host.vditor--dark .vditor-reset table th { border-color: var(--line); color: var(--ink); }
|
|
1878
|
+
.vditor-editor-host.vditor--dark .vditor-reset table tbody tr:nth-child(2n) { background: var(--surface-soft); }
|
|
1862
1879
|
.record-markdown-preview { display: -webkit-box; margin: 12px 0 8px; overflow: hidden; overflow-wrap: anywhere; color: var(--ink); font-size: 12px; line-height: 1.7; -webkit-box-orient: vertical; -webkit-line-clamp: 12; }
|
|
1863
1880
|
.record-markdown-preview > :first-child, .knowledge-markdown-block .message-body > :first-child { margin-top: 0; }
|
|
1864
1881
|
.record-markdown-preview > :last-child, .knowledge-markdown-block .message-body > :last-child { margin-bottom: 0; }
|
|
@@ -2058,7 +2075,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
2058
2075
|
}
|
|
2059
2076
|
|
|
2060
2077
|
@media (max-width: 1100px) {
|
|
2061
|
-
.left-panel { padding-inline: 10px; }
|
|
2078
|
+
.left-panel-body { padding-inline: 10px; }
|
|
2062
2079
|
.ai-panel { padding-inline: 14px; }
|
|
2063
2080
|
.editor-toolbar { grid-template-areas: "path" "title" "actions"; grid-template-columns: minmax(0, 1fr); gap: 12px; padding-inline: 6%; }
|
|
2064
2081
|
.editor-actions { justify-content: flex-end; flex-wrap: wrap; }
|
|
@@ -2197,17 +2214,19 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
2197
2214
|
grid-column: auto;
|
|
2198
2215
|
grid-row: auto;
|
|
2199
2216
|
min-width: 0;
|
|
2200
|
-
padding:
|
|
2217
|
+
padding: 0;
|
|
2201
2218
|
border-left: 1px solid var(--line);
|
|
2202
2219
|
border-bottom: 1px solid var(--line);
|
|
2203
2220
|
box-shadow: -12px 0 36px rgba(36, 30, 24, .2);
|
|
2204
|
-
overflow
|
|
2221
|
+
overflow: hidden;
|
|
2205
2222
|
transform: translateX(0);
|
|
2206
2223
|
transition: transform .2s ease;
|
|
2207
2224
|
}
|
|
2208
|
-
.
|
|
2209
|
-
.app-shell.left-panel-collapsed .left-panel
|
|
2210
|
-
.app-shell.left-panel-collapsed .left-panel > .
|
|
2225
|
+
.left-panel-body { padding: 76px var(--mobile-gutter) 18px; }
|
|
2226
|
+
.app-shell.left-panel-collapsed .left-panel { transform: translateX(100%); }
|
|
2227
|
+
.app-shell.left-panel-collapsed .left-panel > .panel-resize-handle { display: none; }
|
|
2228
|
+
.app-shell.left-panel-collapsed .left-panel-body > :not(.left-actions) { display: block; }
|
|
2229
|
+
.app-shell.left-panel-collapsed .left-panel-body > .module-nav { display: grid; }
|
|
2211
2230
|
.left-panel > .panel-resize-handle { display: none; }
|
|
2212
2231
|
.left-actions { margin: 0 0 8px; }
|
|
2213
2232
|
.left-primary-actions { gap: 6px; }
|
|
@@ -2223,7 +2242,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
2223
2242
|
.module-nav .nav-icon { width: 16px; height: 16px; }
|
|
2224
2243
|
.module-nav .module-nav-secondary.hidden { display: none !important; }
|
|
2225
2244
|
.panel-heading, #novel-tree { display: none; }
|
|
2226
|
-
.app-shell.left-panel-collapsed .left-panel { padding: 8px var(--mobile-gutter) 0; }
|
|
2245
|
+
.app-shell.left-panel-collapsed .left-panel-body { padding: 8px var(--mobile-gutter) 0; }
|
|
2227
2246
|
.app-shell.left-panel-collapsed .left-actions { display: block; padding: 0; }
|
|
2228
2247
|
|
|
2229
2248
|
.main-panel {
|
package/dist/store.js
CHANGED
|
@@ -764,9 +764,9 @@ export class Store {
|
|
|
764
764
|
const chapterRows = this.db.all(`SELECT id, work_id, volume_id, title, chapter_type, sort_order, word_count, version_no,
|
|
765
765
|
analysis_status, excluded_from_analysis, created_at, updated_at
|
|
766
766
|
FROM chapters WHERE work_id = ? ORDER BY sort_order, created_at${page.sql}`, workId, ...page.params);
|
|
767
|
-
const
|
|
767
|
+
const pageResult = paginated(chapterRows.map((row) => this.mapChapterDirectoryEntry(row)), pagination);
|
|
768
768
|
const chaptersByVolume = new Map();
|
|
769
|
-
for (const chapter of
|
|
769
|
+
for (const chapter of pageResult.items) {
|
|
770
770
|
const volumeId = String(chapter.volumeId);
|
|
771
771
|
const list = chaptersByVolume.get(volumeId) ?? [];
|
|
772
772
|
list.push(chapter);
|
|
@@ -776,7 +776,7 @@ export class Store {
|
|
|
776
776
|
...this.mapVolume(row),
|
|
777
777
|
chapters: chaptersByVolume.get(requiredString(row, "id")) ?? []
|
|
778
778
|
}));
|
|
779
|
-
return { ...work, volumes, directoryPage:
|
|
779
|
+
return { ...work, volumes, directoryPage: pageResult };
|
|
780
780
|
}
|
|
781
781
|
listFileVersions(workId) {
|
|
782
782
|
this.getWork(workId);
|