@hanology/cham-browser 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +162 -14
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/template/src/components/AnnotationTooltip.vue +55 -10
- package/template/src/components/HorizontalDisplay.vue +4 -0
- package/template/src/components/PartBlock.vue +9 -0
- package/template/src/components/VerticalScroll.vue +5 -0
- package/template/src/composables/useAnnotationRenderer.ts +57 -25
- package/template/src/composables/useI18n.ts +3 -3
- package/template/src/types.ts +4 -4
- package/template/src/views/AuthorView.vue +5 -5
- package/template/src/views/PieceView.vue +14 -12
package/dist/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import { readFileSync, writeFileSync, readdirSync, existsSync, mkdirSync, statSy
|
|
|
3
3
|
import { join, resolve, dirname, basename, sep } from 'path';
|
|
4
4
|
import { fileURLToPath } from 'url';
|
|
5
5
|
import { parse as parseYaml } from 'yaml';
|
|
6
|
-
import { buildPieceFromCham, buildBookData, buildLibraryIndex,
|
|
6
|
+
import { buildPieceFromCham, buildBookData, buildLibraryIndex, buildDynastiesJson, } from './pipeline.js';
|
|
7
7
|
function loadConfig(configPath) {
|
|
8
8
|
const raw = parseYaml(readFileSync(configPath, 'utf-8'));
|
|
9
9
|
return {
|
|
@@ -15,7 +15,6 @@ function loadConfig(configPath) {
|
|
|
15
15
|
logoDark: raw.logoDark,
|
|
16
16
|
aboutFile: raw.aboutFile,
|
|
17
17
|
libraryDir: raw.libraryDir || 'library/content',
|
|
18
|
-
authorsFile: raw.authorsFile,
|
|
19
18
|
outputDir: raw.outputDir || 'dist',
|
|
20
19
|
publicDir: raw.publicDir,
|
|
21
20
|
pretty: raw.pretty ?? true,
|
|
@@ -39,14 +38,77 @@ function loadBookConfig(bookDir) {
|
|
|
39
38
|
};
|
|
40
39
|
}
|
|
41
40
|
// ─── I/O Adapters ─────────────────────────────────────────────
|
|
42
|
-
function loadAuthors(
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (!existsSync(authorsPath))
|
|
41
|
+
function loadAuthors(configDir) {
|
|
42
|
+
const authorsDir = join(configDir, 'library', 'authors');
|
|
43
|
+
const indexPath = join(authorsDir, '_index.yaml');
|
|
44
|
+
if (!existsSync(indexPath)) {
|
|
45
|
+
console.warn('No authors/_index.yaml found, authors will be empty');
|
|
48
46
|
return {};
|
|
49
|
-
|
|
47
|
+
}
|
|
48
|
+
const indexData = parseYaml(readFileSync(indexPath, 'utf-8'));
|
|
49
|
+
const personIndex = indexData.authors;
|
|
50
|
+
// Build dynasty label → gbCode lookup
|
|
51
|
+
const dynastyToGbCode = new Map();
|
|
52
|
+
const dynastiesPath = join(configDir, 'library', 'register', 'dynasties.yaml');
|
|
53
|
+
if (existsSync(dynastiesPath)) {
|
|
54
|
+
const dynasties = parseYaml(readFileSync(dynastiesPath, 'utf-8'));
|
|
55
|
+
for (const d of dynasties) {
|
|
56
|
+
if (d.gb_code) {
|
|
57
|
+
dynastyToGbCode.set(d.label, d.gb_code);
|
|
58
|
+
if (d.names)
|
|
59
|
+
for (const n of d.names)
|
|
60
|
+
dynastyToGbCode.set(n, d.gb_code);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const seenDirs = new Set();
|
|
65
|
+
const records = {};
|
|
66
|
+
for (const [ref, dirName] of Object.entries(personIndex)) {
|
|
67
|
+
if (seenDirs.has(dirName))
|
|
68
|
+
continue;
|
|
69
|
+
seenDirs.add(dirName);
|
|
70
|
+
const yamlPath = join(authorsDir, dirName, 'author.yaml');
|
|
71
|
+
if (!existsSync(yamlPath))
|
|
72
|
+
continue;
|
|
73
|
+
const data = parseYaml(readFileSync(yamlPath, 'utf-8'));
|
|
74
|
+
const era = data.dynasty || data.era || '';
|
|
75
|
+
const eraCode = dynastyToGbCode.get(era) || '';
|
|
76
|
+
let bio = '';
|
|
77
|
+
const bioSources = data.bio_sources;
|
|
78
|
+
if (bioSources?.length) {
|
|
79
|
+
const bioFile = join(authorsDir, dirName, bioSources[0].file);
|
|
80
|
+
if (existsSync(bioFile)) {
|
|
81
|
+
bio = readFileSync(bioFile, 'utf-8').replace(/^---\n[\s\S]*?\n---\n/, '').trim();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const ctextId = typeof data['@id'] === 'string' && data['@id'].startsWith('ctext:')
|
|
85
|
+
? data['@id'].replace('ctext:', '') : undefined;
|
|
86
|
+
records[ref] = {
|
|
87
|
+
name: data.label || ref,
|
|
88
|
+
dynasty: era,
|
|
89
|
+
era,
|
|
90
|
+
eraCode: eraCode || undefined,
|
|
91
|
+
bio: bio || undefined,
|
|
92
|
+
born: data['cprop:born']?.['@value'],
|
|
93
|
+
died: data['cprop:died']?.['@value'],
|
|
94
|
+
courtesyName: data['cprop:name-style'],
|
|
95
|
+
artName: data['cprop:name-art'],
|
|
96
|
+
wikidata: data['cprop:authority-wikidata'],
|
|
97
|
+
ctextId,
|
|
98
|
+
wikipediaZh: data['cprop:link-wikipedia_zh'],
|
|
99
|
+
wikipediaEn: data['cprop:link-wikipedia_en'],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
// Map alias refs to the same record
|
|
103
|
+
for (const [ref, dirName] of Object.entries(personIndex)) {
|
|
104
|
+
if (!records[ref]) {
|
|
105
|
+
const canonical = Object.entries(personIndex).find(([r, d]) => d === dirName && records[r]);
|
|
106
|
+
if (canonical)
|
|
107
|
+
records[ref] = records[canonical[0]];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
console.log(`Authors: ${seenDirs.size} directories, ${Object.keys(records).length} refs`);
|
|
111
|
+
return records;
|
|
50
112
|
}
|
|
51
113
|
function loadAboutHtml(config, configDir) {
|
|
52
114
|
const candidates = [
|
|
@@ -105,7 +167,7 @@ function scanBooks(libraryDir) {
|
|
|
105
167
|
// ─── Data Generation ──────────────────────────────────────────
|
|
106
168
|
function generateData(config, configDir) {
|
|
107
169
|
const libraryDir = resolve(configDir, config.libraryDir);
|
|
108
|
-
const authors = loadAuthors(
|
|
170
|
+
const authors = loadAuthors(configDir);
|
|
109
171
|
const books = scanBooks(libraryDir);
|
|
110
172
|
const allPieces = [];
|
|
111
173
|
const bookMetas = [];
|
|
@@ -133,16 +195,102 @@ function generateData(config, configDir) {
|
|
|
133
195
|
const dataDir = join(outputDir, 'data');
|
|
134
196
|
mkdirSync(dataDir, { recursive: true });
|
|
135
197
|
mkdirSync(join(dataDir, 'books'), { recursive: true });
|
|
198
|
+
mkdirSync(join(dataDir, 'pieces'), { recursive: true });
|
|
199
|
+
mkdirSync(join(dataDir, 'authors'), { recursive: true });
|
|
136
200
|
const indent = config.pretty ? 2 : 0;
|
|
201
|
+
// library.json
|
|
137
202
|
writeFileSync(join(dataDir, 'library.json'), JSON.stringify(library, null, indent), 'utf-8');
|
|
203
|
+
// Per-book data (full + meta)
|
|
138
204
|
for (const bd of bookDataList) {
|
|
139
205
|
writeFileSync(join(dataDir, 'books', `${bd.meta.id}.json`), JSON.stringify(bd, null, indent), 'utf-8');
|
|
206
|
+
writeFileSync(join(dataDir, 'books', `${bd.meta.id}.meta.json`), JSON.stringify(bd.meta, null, indent), 'utf-8');
|
|
207
|
+
}
|
|
208
|
+
// Piece index (lightweight summaries for ALL pieces)
|
|
209
|
+
const pieceIndex = allPieces.map(p => ({
|
|
210
|
+
id: `${p.bookId}/${p.num}`,
|
|
211
|
+
t: p.title,
|
|
212
|
+
a: p.author,
|
|
213
|
+
ar: p.authorId,
|
|
214
|
+
e: p.era || p.dynasty,
|
|
215
|
+
ec: p.eraCode || '',
|
|
216
|
+
b: p.bookId,
|
|
217
|
+
g: p.genre,
|
|
218
|
+
n: p.num,
|
|
219
|
+
v1: p.verses[0]?.text?.slice(0, 20) || '',
|
|
220
|
+
}));
|
|
221
|
+
writeFileSync(join(dataDir, 'index.json'), JSON.stringify(pieceIndex, null, indent), 'utf-8');
|
|
222
|
+
// Per-piece JSON files
|
|
223
|
+
for (const piece of allPieces) {
|
|
224
|
+
const pieceDir = join(dataDir, 'pieces', piece.bookId);
|
|
225
|
+
mkdirSync(pieceDir, { recursive: true });
|
|
226
|
+
writeFileSync(join(pieceDir, `${piece.num}.json`), JSON.stringify(piece, null, indent), 'utf-8');
|
|
227
|
+
}
|
|
228
|
+
// Per-author split data
|
|
229
|
+
const workCounts = new Map();
|
|
230
|
+
for (const p of allPieces) {
|
|
231
|
+
if (!workCounts.has(p.authorId)) {
|
|
232
|
+
const author = authors[p.authorId];
|
|
233
|
+
workCounts.set(p.authorId, {
|
|
234
|
+
works: [],
|
|
235
|
+
era: author?.era || author?.dynasty || p.era || p.dynasty,
|
|
236
|
+
eraCode: author?.eraCode || p.eraCode || '',
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
workCounts.get(p.authorId).works.push(`${p.bookId}/${p.num}`);
|
|
240
|
+
}
|
|
241
|
+
const authorIndex = [];
|
|
242
|
+
for (const [ref, data] of Object.entries(authors)) {
|
|
243
|
+
if (!data.name)
|
|
244
|
+
continue;
|
|
245
|
+
const wc = workCounts.get(ref);
|
|
246
|
+
const entry = {
|
|
247
|
+
id: ref,
|
|
248
|
+
name: data.name,
|
|
249
|
+
era: wc?.era || data.era || data.dynasty || '',
|
|
250
|
+
eraCode: wc?.eraCode || data.eraCode || '',
|
|
251
|
+
workCount: wc?.works.length || 0,
|
|
252
|
+
};
|
|
253
|
+
authorIndex.push(entry);
|
|
254
|
+
// Per-author detail JSON
|
|
255
|
+
writeFileSync(join(dataDir, 'authors', `${ref}.json`), JSON.stringify({
|
|
256
|
+
...entry,
|
|
257
|
+
names: [],
|
|
258
|
+
bio: data.bio || '',
|
|
259
|
+
bioSource: '',
|
|
260
|
+
ctext: data.ctextId ? Number(data.ctextId) : undefined,
|
|
261
|
+
wikidata: data.wikidata,
|
|
262
|
+
wikipediaZh: data.wikipediaZh,
|
|
263
|
+
wikipediaEn: data.wikipediaEn,
|
|
264
|
+
works: wc?.works || [],
|
|
265
|
+
}, null, indent), 'utf-8');
|
|
140
266
|
}
|
|
141
|
-
|
|
142
|
-
|
|
267
|
+
writeFileSync(join(dataDir, 'authors', 'index.json'), JSON.stringify(authorIndex, null, indent), 'utf-8');
|
|
268
|
+
// Flat authors.json for template useData (full Author objects)
|
|
269
|
+
const authorsFlat = authorIndex.map(entry => {
|
|
270
|
+
const data = authors[entry.id];
|
|
271
|
+
return {
|
|
272
|
+
'@id': `author:${encodeURIComponent(entry.name)}`,
|
|
273
|
+
'@type': 'Person',
|
|
274
|
+
name: entry.name,
|
|
275
|
+
era: entry.era,
|
|
276
|
+
eraCode: entry.eraCode,
|
|
277
|
+
workCount: entry.workCount,
|
|
278
|
+
bio: data?.bio || '',
|
|
279
|
+
born: data?.born,
|
|
280
|
+
died: data?.died,
|
|
281
|
+
courtesyName: data?.courtesyName,
|
|
282
|
+
artName: data?.artName,
|
|
283
|
+
wikidata: data?.wikidata,
|
|
284
|
+
ctextId: data?.ctextId,
|
|
285
|
+
wikipediaZh: data?.wikipediaZh,
|
|
286
|
+
wikipediaEn: data?.wikipediaEn,
|
|
287
|
+
};
|
|
288
|
+
});
|
|
289
|
+
writeFileSync(join(dataDir, 'authors.json'), JSON.stringify(authorsFlat, null, indent), 'utf-8');
|
|
290
|
+
// Dynasties/eras (using era field)
|
|
143
291
|
const dynastiesJson = buildDynastiesJson(allPieces);
|
|
144
292
|
writeFileSync(join(dataDir, 'dynasties.json'), JSON.stringify(dynastiesJson, null, indent), 'utf-8');
|
|
145
|
-
console.log(`Data: ${bookMetas.length} book(s), ${allPieces.length} piece(s)`);
|
|
293
|
+
console.log(`Data: ${bookMetas.length} book(s), ${allPieces.length} piece(s), ${authorIndex.length} author(s)`);
|
|
146
294
|
return { bookMetas, allPieces };
|
|
147
295
|
}
|
|
148
296
|
// ─── Shared Vite Config ───────────────────────────────────────
|
|
@@ -273,7 +421,7 @@ async function buildSite(config, configDir) {
|
|
|
273
421
|
includedRoutes(paths, routes) {
|
|
274
422
|
const result = ['/'];
|
|
275
423
|
const library = JSON.parse(readFileSync(join(outputDir, 'data', 'library.json'), 'utf-8'));
|
|
276
|
-
const authors = JSON.parse(readFileSync(join(outputDir, 'data', 'authors.json'), 'utf-8'));
|
|
424
|
+
const authors = JSON.parse(readFileSync(join(outputDir, 'data', 'authors', 'index.json'), 'utf-8'));
|
|
277
425
|
for (const book of library.books) {
|
|
278
426
|
result.push(`/${book.id}`);
|
|
279
427
|
const bookData = JSON.parse(readFileSync(join(outputDir, 'data', 'books', `${book.id}.json`), 'utf-8'));
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,6 +11,7 @@ const props = defineProps<{
|
|
|
11
11
|
annotations: Annotation[]
|
|
12
12
|
layerLabels?: Record<string, string>
|
|
13
13
|
style?: Record<string, string>
|
|
14
|
+
vertical?: boolean
|
|
14
15
|
}>()
|
|
15
16
|
|
|
16
17
|
const emit = defineEmits<{
|
|
@@ -30,7 +31,6 @@ const mode = computed<DisplayMode>(() => {
|
|
|
30
31
|
return 'popup'
|
|
31
32
|
})
|
|
32
33
|
|
|
33
|
-
// Pane/sheet modes: stay visible until explicitly dismissed
|
|
34
34
|
const stickyVisible = ref(false)
|
|
35
35
|
|
|
36
36
|
watch(() => props.visible, (v) => {
|
|
@@ -77,10 +77,22 @@ function kindLabel(ann: Annotation): string {
|
|
|
77
77
|
return map[ann.kind] || ann.kind
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
const hasOverlap = computed(() =>
|
|
81
|
+
props.annotations.some(a => {
|
|
82
|
+
const seg = annotationToPronSegment(a)
|
|
83
|
+
return !seg && props.annotations.filter(b =>
|
|
84
|
+
b.range.scope === a.range.scope &&
|
|
85
|
+
b.range.verseIndex === a.range.verseIndex &&
|
|
86
|
+
(b.range.start ?? 0) !== (a.range.start ?? 0) ||
|
|
87
|
+
(b.range.end ?? 0) !== (a.range.end ?? 0)
|
|
88
|
+
).length > 0
|
|
89
|
+
})
|
|
90
|
+
)
|
|
91
|
+
|
|
80
92
|
function onDocClick(e: MouseEvent) {
|
|
81
93
|
if (!stickyVisible.value) return
|
|
82
94
|
const el = (e.target as HTMLElement)
|
|
83
|
-
if (el.closest('.ann-left-pane, .ann-bottom-sheet, .ann-popup')) return
|
|
95
|
+
if (el.closest('.ann-left-pane, .ann-right-pane, .ann-bottom-sheet, .ann-popup')) return
|
|
84
96
|
if (el.closest('.ann-target')) return
|
|
85
97
|
dismiss()
|
|
86
98
|
}
|
|
@@ -107,11 +119,11 @@ onBeforeUnmount(() => {
|
|
|
107
119
|
|
|
108
120
|
<template>
|
|
109
121
|
<Teleport to="body">
|
|
110
|
-
<!-- Desktop
|
|
111
|
-
<Transition name="ann-slide-right">
|
|
122
|
+
<!-- Desktop pane: LEFT for horizontal, RIGHT for vertical -->
|
|
123
|
+
<Transition :name="vertical ? 'ann-slide-left' : 'ann-slide-right'">
|
|
112
124
|
<div
|
|
113
125
|
v-if="mode === 'pane' && stickyVisible && annotations.length"
|
|
114
|
-
class="ann-left-pane"
|
|
126
|
+
:class="vertical ? 'ann-right-pane' : 'ann-left-pane'"
|
|
115
127
|
@mouseenter="emit('tooltipEnter')"
|
|
116
128
|
@mouseleave="emit('tooltipLeave')"
|
|
117
129
|
>
|
|
@@ -133,11 +145,12 @@ onBeforeUnmount(() => {
|
|
|
133
145
|
</div>
|
|
134
146
|
</Transition>
|
|
135
147
|
|
|
136
|
-
<!-- Tablet popup
|
|
148
|
+
<!-- Tablet popup -->
|
|
137
149
|
<Transition name="ann-fade">
|
|
138
150
|
<div
|
|
139
151
|
v-if="mode === 'popup' && visible && annotations.length"
|
|
140
152
|
class="ann-popup"
|
|
153
|
+
:class="{ 'ann-popup--vertical': vertical }"
|
|
141
154
|
:style="style"
|
|
142
155
|
@mouseenter="emit('tooltipEnter')"
|
|
143
156
|
@mouseleave="emit('tooltipLeave')"
|
|
@@ -153,7 +166,7 @@ onBeforeUnmount(() => {
|
|
|
153
166
|
</div>
|
|
154
167
|
</Transition>
|
|
155
168
|
|
|
156
|
-
<!-- Mobile bottom sheet
|
|
169
|
+
<!-- Mobile bottom sheet -->
|
|
157
170
|
<Transition name="ann-sheet">
|
|
158
171
|
<div
|
|
159
172
|
v-if="mode === 'sheet' && stickyVisible && annotations.length"
|
|
@@ -242,7 +255,7 @@ onBeforeUnmount(() => {
|
|
|
242
255
|
white-space: pre-line;
|
|
243
256
|
}
|
|
244
257
|
|
|
245
|
-
/* ─── Desktop Left Pane ─── */
|
|
258
|
+
/* ─── Desktop Left Pane (horizontal mode) ─── */
|
|
246
259
|
.ann-left-pane {
|
|
247
260
|
position: fixed;
|
|
248
261
|
top: 72px;
|
|
@@ -258,6 +271,22 @@ onBeforeUnmount(() => {
|
|
|
258
271
|
overscroll-behavior: contain;
|
|
259
272
|
}
|
|
260
273
|
|
|
274
|
+
/* ─── Desktop Right Pane (vertical mode) ─── */
|
|
275
|
+
.ann-right-pane {
|
|
276
|
+
position: fixed;
|
|
277
|
+
top: 72px;
|
|
278
|
+
right: 20px;
|
|
279
|
+
width: 300px;
|
|
280
|
+
max-height: calc(100vh - 100px);
|
|
281
|
+
background: var(--surface-warm);
|
|
282
|
+
border: 1px solid var(--border);
|
|
283
|
+
border-radius: 12px;
|
|
284
|
+
box-shadow: 0 8px 40px rgba(var(--shadow-rgb), 0.12);
|
|
285
|
+
z-index: 1000;
|
|
286
|
+
overflow-y: auto;
|
|
287
|
+
overscroll-behavior: contain;
|
|
288
|
+
}
|
|
289
|
+
|
|
261
290
|
.ann-pane-close {
|
|
262
291
|
position: absolute;
|
|
263
292
|
top: 10px;
|
|
@@ -340,7 +369,7 @@ onBeforeUnmount(() => {
|
|
|
340
369
|
|
|
341
370
|
/* ─── Transitions ─── */
|
|
342
371
|
|
|
343
|
-
/* Left pane slide from left */
|
|
372
|
+
/* Left pane slide from left (horizontal mode) */
|
|
344
373
|
.ann-slide-right-enter-active {
|
|
345
374
|
transition: opacity 0.2s ease, transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
346
375
|
}
|
|
@@ -356,6 +385,22 @@ onBeforeUnmount(() => {
|
|
|
356
385
|
transform: translateX(-16px);
|
|
357
386
|
}
|
|
358
387
|
|
|
388
|
+
/* Right pane slide from right (vertical mode) */
|
|
389
|
+
.ann-slide-left-enter-active {
|
|
390
|
+
transition: opacity 0.2s ease, transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
391
|
+
}
|
|
392
|
+
.ann-slide-left-leave-active {
|
|
393
|
+
transition: opacity 0.15s ease, transform 0.15s ease;
|
|
394
|
+
}
|
|
395
|
+
.ann-slide-left-enter-from {
|
|
396
|
+
opacity: 0;
|
|
397
|
+
transform: translateX(24px);
|
|
398
|
+
}
|
|
399
|
+
.ann-slide-left-leave-to {
|
|
400
|
+
opacity: 0;
|
|
401
|
+
transform: translateX(16px);
|
|
402
|
+
}
|
|
403
|
+
|
|
359
404
|
/* Popup fade */
|
|
360
405
|
.ann-fade-enter-active {
|
|
361
406
|
transition: opacity 0.15s ease, transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
@@ -385,7 +430,7 @@ onBeforeUnmount(() => {
|
|
|
385
430
|
}
|
|
386
431
|
|
|
387
432
|
@media (max-width: 1023px) {
|
|
388
|
-
.ann-left-pane { display: none; }
|
|
433
|
+
.ann-left-pane, .ann-right-pane { display: none; }
|
|
389
434
|
}
|
|
390
435
|
|
|
391
436
|
@media (min-width: 1024px) {
|
|
@@ -79,6 +79,10 @@ function onTap(event: MouseEvent) {
|
|
|
79
79
|
cursor: help;
|
|
80
80
|
transition: background 0.15s;
|
|
81
81
|
}
|
|
82
|
+
:deep(.ann-target.ann-overlap) {
|
|
83
|
+
border-bottom-width: 3px;
|
|
84
|
+
border-bottom-style: double;
|
|
85
|
+
}
|
|
82
86
|
:deep(.ann-target:hover) {
|
|
83
87
|
background: rgba(194, 58, 43, 0.08);
|
|
84
88
|
}
|
|
@@ -129,6 +129,10 @@ const sourceLabel = (() => {
|
|
|
129
129
|
cursor: help;
|
|
130
130
|
transition: background 0.15s;
|
|
131
131
|
}
|
|
132
|
+
:deep(.ann-target.ann-overlap) {
|
|
133
|
+
border-bottom-width: 3px;
|
|
134
|
+
border-bottom-style: double;
|
|
135
|
+
}
|
|
132
136
|
|
|
133
137
|
:deep(.ann-target:hover) {
|
|
134
138
|
background: rgba(194, 58, 43, 0.08);
|
|
@@ -157,6 +161,11 @@ const sourceLabel = (() => {
|
|
|
157
161
|
border-left: 2px solid var(--vermillion);
|
|
158
162
|
padding-left: 2px;
|
|
159
163
|
}
|
|
164
|
+
.part-block--vertical :deep(.ann-target.ann-overlap) {
|
|
165
|
+
border-left-width: 3px;
|
|
166
|
+
border-left-style: double;
|
|
167
|
+
padding-left: 3px;
|
|
168
|
+
}
|
|
160
169
|
|
|
161
170
|
.part-block--vertical :deep(.ann-target.pronunciation) {
|
|
162
171
|
border-left-color: var(--jade);
|
|
@@ -96,6 +96,11 @@ function onTap(event: MouseEvent) {
|
|
|
96
96
|
cursor: help;
|
|
97
97
|
transition: background 0.15s;
|
|
98
98
|
}
|
|
99
|
+
:deep(.ann-target.ann-overlap) {
|
|
100
|
+
border-left-width: 3px;
|
|
101
|
+
border-left-style: double;
|
|
102
|
+
padding-left: 3px;
|
|
103
|
+
}
|
|
99
104
|
:deep(.ann-num) {
|
|
100
105
|
font-size: 0.45em;
|
|
101
106
|
font-family: var(--sans);
|
|
@@ -7,6 +7,7 @@ export interface AnnSpan {
|
|
|
7
7
|
start: number
|
|
8
8
|
end: number
|
|
9
9
|
annotations: Annotation[]
|
|
10
|
+
overlapping: boolean
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
export function esc(s: string): string {
|
|
@@ -17,27 +18,41 @@ export function buildVerseAnnotations(annotations: Annotation[], verseIndex: num
|
|
|
17
18
|
const anns = annotations.filter(a =>
|
|
18
19
|
a.range.scope === 'verse' && a.range.verseIndex === verseIndex
|
|
19
20
|
)
|
|
20
|
-
|
|
21
|
+
if (!anns.length) return []
|
|
22
|
+
|
|
23
|
+
const points = new Set<number>()
|
|
21
24
|
for (const a of anns) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
points.add(a.range.start ?? 0)
|
|
26
|
+
points.add(a.range.end ?? 0)
|
|
27
|
+
}
|
|
28
|
+
const sorted = [...points].sort((a, b) => a - b)
|
|
29
|
+
|
|
30
|
+
const segments: AnnSpan[] = []
|
|
31
|
+
for (let i = 0; i < sorted.length - 1; i++) {
|
|
32
|
+
const start = sorted[i]
|
|
33
|
+
const end = sorted[i + 1]
|
|
34
|
+
const covering = anns.filter(a =>
|
|
35
|
+
(a.range.start ?? 0) <= start && (a.range.end ?? 0) >= end
|
|
36
|
+
)
|
|
37
|
+
if (covering.length === 0) continue
|
|
38
|
+
|
|
39
|
+
const rangeKeys = new Set(
|
|
40
|
+
covering.map(a => `${a.range.start ?? 0}:${a.range.end ?? 0}`)
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
segments.push({
|
|
44
|
+
start,
|
|
45
|
+
end,
|
|
46
|
+
annotations: covering,
|
|
47
|
+
overlapping: rangeKeys.size > 1,
|
|
48
|
+
})
|
|
25
49
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return { start, end, annotations: matched }
|
|
29
|
-
}).sort((a, b) => a.start - b.start)
|
|
50
|
+
|
|
51
|
+
return segments
|
|
30
52
|
}
|
|
31
53
|
|
|
32
54
|
export function countVerseSpans(annotations: Annotation[], verseIndex: number): number {
|
|
33
|
-
|
|
34
|
-
a.range.scope === 'verse' && a.range.verseIndex === verseIndex
|
|
35
|
-
)
|
|
36
|
-
const keys = new Set<string>()
|
|
37
|
-
for (const a of anns) {
|
|
38
|
-
keys.add(`${a.range.start ?? 0}:${a.range.end ?? 0}`)
|
|
39
|
-
}
|
|
40
|
-
return keys.size
|
|
55
|
+
return buildVerseAnnotations(annotations, verseIndex).length
|
|
41
56
|
}
|
|
42
57
|
|
|
43
58
|
export function renderAnnotatedText(text: string, spans: AnnSpan[], useRuby = false, startNum = 0): string {
|
|
@@ -53,13 +68,14 @@ export function renderAnnotatedText(text: string, spans: AnnSpan[], useRuby = fa
|
|
|
53
68
|
annCounter++
|
|
54
69
|
const ids = span.annotations.map(a => a.id).join(',')
|
|
55
70
|
const kinds = [...new Set(span.annotations.map(a => a.kind))].join(' ')
|
|
71
|
+
const overlapCls = span.overlapping ? ' ann-overlap' : ''
|
|
56
72
|
const numText = toChineseNumber(annCounter)
|
|
57
73
|
const body = esc(text.slice(span.start, span.end))
|
|
58
74
|
if (useRuby) {
|
|
59
75
|
const rtCls = numText.length > 1 ? 'ann-num ann-num-long' : 'ann-num'
|
|
60
|
-
html += `<ruby class="ann-target ${kinds}" data-ann-ids="${ids}">${body}<rp></rp><rt class="${rtCls}">${numText}</rt><rp></rp></ruby>`
|
|
76
|
+
html += `<ruby class="ann-target${overlapCls} ${kinds}" data-ann-ids="${ids}">${body}<rp></rp><rt class="${rtCls}">${numText}</rt><rp></rp></ruby>`
|
|
61
77
|
} else {
|
|
62
|
-
html += `<span class="ann-target ${kinds}" data-ann-ids="${ids}">${body}<sup class="ann-num">${numText}</sup></span>`
|
|
78
|
+
html += `<span class="ann-target${overlapCls} ${kinds}" data-ann-ids="${ids}">${body}<sup class="ann-num">${numText}</sup></span>`
|
|
63
79
|
}
|
|
64
80
|
cursor = span.end
|
|
65
81
|
}
|
|
@@ -89,7 +105,8 @@ export function renderVerseGutter(text: string, spans: AnnSpan[], startNum = 0):
|
|
|
89
105
|
annCounter++
|
|
90
106
|
const ids = span.annotations.map(a => a.id).join(',')
|
|
91
107
|
const kinds = [...new Set(span.annotations.map(a => a.kind))].join(' ')
|
|
92
|
-
|
|
108
|
+
const overlapCls = span.overlapping ? ' ann-overlap' : ''
|
|
109
|
+
textHtml += `<span class="ann-target${overlapCls} ${kinds}" data-ann-ids="${ids}">${esc(text.slice(span.start, span.end))}</span>`
|
|
93
110
|
gutter[span.start] = `<span class="ann-gutter-num ${kinds}" data-ann-ids="${ids}">${toChineseNumber(annCounter)}</span>`
|
|
94
111
|
cursor = span.end
|
|
95
112
|
}
|
|
@@ -123,11 +140,27 @@ export function useAnnotationTooltip() {
|
|
|
123
140
|
const rect = (el ?? event.target as HTMLElement).getBoundingClientRect()
|
|
124
141
|
|
|
125
142
|
if (layout.value === 'vertical') {
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
143
|
+
const isMobile = window.innerWidth < 768
|
|
144
|
+
if (isMobile) {
|
|
145
|
+
style.value = {
|
|
146
|
+
left: '4vw',
|
|
147
|
+
right: '4vw',
|
|
148
|
+
bottom: '0',
|
|
149
|
+
maxWidth: 'none',
|
|
150
|
+
}
|
|
151
|
+
} else if (window.innerWidth >= 1024) {
|
|
152
|
+
style.value = {
|
|
153
|
+
right: '20px',
|
|
154
|
+
top: '72px',
|
|
155
|
+
maxHeight: 'calc(100vh - 100px)',
|
|
156
|
+
}
|
|
157
|
+
} else {
|
|
158
|
+
const right = window.innerWidth - rect.left + 8
|
|
159
|
+
style.value = {
|
|
160
|
+
right: Math.min(right, window.innerWidth - 40) + 'px',
|
|
161
|
+
top: '50%',
|
|
162
|
+
transform: 'translateY(-50%)',
|
|
163
|
+
}
|
|
131
164
|
}
|
|
132
165
|
} else {
|
|
133
166
|
const isMobile = window.innerWidth < 768
|
|
@@ -156,7 +189,6 @@ export function useAnnotationTooltip() {
|
|
|
156
189
|
const currentIds = items.value.map(a => a.id).sort().join(',')
|
|
157
190
|
const newIds = annotations.map(a => a.id).sort().join(',')
|
|
158
191
|
if (currentIds === newIds) {
|
|
159
|
-
// Same annotation: dismiss on mobile only (desktop uses hover to manage)
|
|
160
192
|
if (window.innerWidth < 768) hide()
|
|
161
193
|
} else {
|
|
162
194
|
show(event, annotations)
|
|
@@ -37,7 +37,7 @@ const messages: Record<Locale, Record<string, string>> = {
|
|
|
37
37
|
'author.biography': '作者簡介',
|
|
38
38
|
'author.collectedWorks': '收錄作品',
|
|
39
39
|
'author.worksCount': '{count} 篇收錄作品',
|
|
40
|
-
'author.
|
|
40
|
+
'author.unknownEra': '未知朝代',
|
|
41
41
|
'annotation.pronunciation': '音',
|
|
42
42
|
'annotation.semantic': '義',
|
|
43
43
|
'annotation.notes': '注釋',
|
|
@@ -92,7 +92,7 @@ const messages: Record<Locale, Record<string, string>> = {
|
|
|
92
92
|
'author.biography': '作者简介',
|
|
93
93
|
'author.collectedWorks': '收录作品',
|
|
94
94
|
'author.worksCount': '{count} 篇收录作品',
|
|
95
|
-
'author.
|
|
95
|
+
'author.unknownEra': '未知朝代',
|
|
96
96
|
'annotation.pronunciation': '音',
|
|
97
97
|
'annotation.semantic': '义',
|
|
98
98
|
'annotation.notes': '注释',
|
|
@@ -147,7 +147,7 @@ const messages: Record<Locale, Record<string, string>> = {
|
|
|
147
147
|
'author.biography': 'Biography',
|
|
148
148
|
'author.collectedWorks': 'Collected Works',
|
|
149
149
|
'author.worksCount': '{count} collected works',
|
|
150
|
-
'author.
|
|
150
|
+
'author.unknownEra': 'Unknown era',
|
|
151
151
|
'annotation.pronunciation': 'Pron',
|
|
152
152
|
'annotation.semantic': 'Def',
|
|
153
153
|
'annotation.notes': 'Notes',
|
package/template/src/types.ts
CHANGED
|
@@ -140,7 +140,7 @@ export interface Piece {
|
|
|
140
140
|
title: string
|
|
141
141
|
author: string
|
|
142
142
|
authorId: string
|
|
143
|
-
|
|
143
|
+
era: string
|
|
144
144
|
genre: BookGenre
|
|
145
145
|
verses: VerseLine[]
|
|
146
146
|
sections: Record<string, string>
|
|
@@ -162,8 +162,8 @@ export interface Author {
|
|
|
162
162
|
'@id': string
|
|
163
163
|
'@type': string
|
|
164
164
|
name: string
|
|
165
|
-
|
|
166
|
-
|
|
165
|
+
era: string
|
|
166
|
+
workCount: number
|
|
167
167
|
bio?: string
|
|
168
168
|
born?: string
|
|
169
169
|
died?: string
|
|
@@ -180,5 +180,5 @@ export interface Dynasty {
|
|
|
180
180
|
'@type': string
|
|
181
181
|
name: string
|
|
182
182
|
authors: string[]
|
|
183
|
-
|
|
183
|
+
workCount: number
|
|
184
184
|
}
|
|
@@ -50,7 +50,7 @@ function goHome() { router.push('/') }
|
|
|
50
50
|
<section class="v-author-info">
|
|
51
51
|
<div class="v-seal">{{ authorName.charAt(0) }}</div>
|
|
52
52
|
<h1 class="v-name">{{ authorName }}</h1>
|
|
53
|
-
<span v-if="author.
|
|
53
|
+
<span v-if="author.era" class="v-era">{{ author.era }}</span>
|
|
54
54
|
<span class="v-count">{{ authorPieces.length }} 篇收錄作品</span>
|
|
55
55
|
</section>
|
|
56
56
|
|
|
@@ -83,7 +83,7 @@ function goHome() { router.push('/') }
|
|
|
83
83
|
<span class="h-author-name">{{ authorName }}</span>
|
|
84
84
|
</div>
|
|
85
85
|
<div class="h-controls">
|
|
86
|
-
<span class="h-tag">{{ author.
|
|
86
|
+
<span class="h-tag">{{ author.era || '未知朝代' }}</span>
|
|
87
87
|
<span class="h-tag">{{ authorPieces.length }} 篇</span>
|
|
88
88
|
</div>
|
|
89
89
|
</div>
|
|
@@ -95,7 +95,7 @@ function goHome() { router.push('/') }
|
|
|
95
95
|
<div class="h-info">
|
|
96
96
|
<h1 class="h-name">{{ authorName }}</h1>
|
|
97
97
|
<div class="h-meta">
|
|
98
|
-
<span v-if="author.
|
|
98
|
+
<span v-if="author.era" class="h-era">{{ author.era }}</span>
|
|
99
99
|
<span class="h-count">{{ authorPieces.length }} 篇收錄作品</span>
|
|
100
100
|
</div>
|
|
101
101
|
</div>
|
|
@@ -174,7 +174,7 @@ function goHome() { router.push('/') }
|
|
|
174
174
|
letter-spacing: 10px; color: var(--ink);
|
|
175
175
|
margin-left: 20px;
|
|
176
176
|
}
|
|
177
|
-
.v-
|
|
177
|
+
.v-era {
|
|
178
178
|
font-size: 20px; color: var(--gold);
|
|
179
179
|
font-weight: 600; letter-spacing: 4px;
|
|
180
180
|
margin-left: 12px;
|
|
@@ -286,7 +286,7 @@ function goHome() { router.push('/') }
|
|
|
286
286
|
}
|
|
287
287
|
.h-name { font-size: 36px; font-weight: 900; letter-spacing: 6px; color: var(--ink); }
|
|
288
288
|
.h-meta { display: flex; gap: 16px; margin-top: 8px; font-family: var(--sans); font-size: 14px; }
|
|
289
|
-
.h-
|
|
289
|
+
.h-era { color: var(--gold); font-weight: 600; letter-spacing: 2px; }
|
|
290
290
|
.h-count { color: var(--ink-faint); letter-spacing: 1px; }
|
|
291
291
|
|
|
292
292
|
.h-bio {
|
|
@@ -228,16 +228,16 @@ const selectedAuthorBio = computed(() => {
|
|
|
228
228
|
return a?.bio || piece.value?.sections?.author_bio || ''
|
|
229
229
|
})
|
|
230
230
|
|
|
231
|
-
const
|
|
231
|
+
const selectedAuthorEra = computed(() => {
|
|
232
232
|
const name = selectedAuthorName.value
|
|
233
233
|
const a = getAuthor(name)
|
|
234
|
-
return a?.
|
|
234
|
+
return a?.era || piece.value?.era || ''
|
|
235
235
|
})
|
|
236
236
|
|
|
237
|
-
const
|
|
237
|
+
const selectedAuthorWorkCount = computed(() => {
|
|
238
238
|
const name = selectedAuthorName.value
|
|
239
239
|
const a = getAuthor(name)
|
|
240
|
-
return a?.
|
|
240
|
+
return a?.workCount || 0
|
|
241
241
|
})
|
|
242
242
|
|
|
243
243
|
const selectedAuthorData = computed(() => {
|
|
@@ -435,6 +435,7 @@ function tcy(n: number): string {
|
|
|
435
435
|
:annotations="interaction.items"
|
|
436
436
|
:layer-labels="layerLabels"
|
|
437
437
|
:style="interaction.style"
|
|
438
|
+
:vertical="true"
|
|
438
439
|
@close="interaction.dismiss"
|
|
439
440
|
@tooltip-enter="interaction.onTooltipEnter"
|
|
440
441
|
@tooltip-leave="interaction.onTooltipLeave"
|
|
@@ -448,9 +449,9 @@ function tcy(n: number): string {
|
|
|
448
449
|
<div class="v-pane-header">
|
|
449
450
|
<div class="v-pane-name">{{ selectedAuthorName }}</div>
|
|
450
451
|
<div class="v-pane-meta">
|
|
451
|
-
<span v-if="
|
|
452
|
+
<span v-if="selectedAuthorEra">{{ selectedAuthorEra }}</span>
|
|
452
453
|
<span v-if="authorLifespan">{{ authorLifespan }}</span>
|
|
453
|
-
<span v-if="
|
|
454
|
+
<span v-if="selectedAuthorWorkCount" class="v-pane-count">{{ t('stat.pieceCount', { count: selectedAuthorWorkCount }) }}</span>
|
|
454
455
|
</div>
|
|
455
456
|
<div v-if="selectedAuthorData?.courtesyName || selectedAuthorData?.artName" class="v-pane-names">
|
|
456
457
|
<span v-if="selectedAuthorData?.courtesyName">字{{ selectedAuthorData.courtesyName }}</span>
|
|
@@ -483,7 +484,7 @@ function tcy(n: number): string {
|
|
|
483
484
|
<div class="h-nav-inner">
|
|
484
485
|
<button class="h-back" @click="goBack">← {{ t('nav.back') }}</button>
|
|
485
486
|
<div class="h-nav-title-row">
|
|
486
|
-
<span v-if="piece.
|
|
487
|
+
<span v-if="piece.era" class="h-era">{{ piece.era }}</span>
|
|
487
488
|
<span class="h-breadcrumb">
|
|
488
489
|
<span v-if="piece.source?.textRef" class="h-source-link" @click="router.push(`/${piece.source.textRef}`)">
|
|
489
490
|
{{ meta?.title }} →
|
|
@@ -602,6 +603,7 @@ function tcy(n: number): string {
|
|
|
602
603
|
:annotations="interaction.items"
|
|
603
604
|
:layer-labels="layerLabels"
|
|
604
605
|
:style="interaction.style"
|
|
606
|
+
:vertical="false"
|
|
605
607
|
@close="interaction.dismiss"
|
|
606
608
|
@tooltip-enter="interaction.onTooltipEnter"
|
|
607
609
|
@tooltip-leave="interaction.onTooltipLeave"
|
|
@@ -618,9 +620,9 @@ function tcy(n: number): string {
|
|
|
618
620
|
<div>
|
|
619
621
|
<div class="h-pane-name">{{ selectedAuthorName }}</div>
|
|
620
622
|
<div class="h-pane-meta">
|
|
621
|
-
<span v-if="
|
|
623
|
+
<span v-if="selectedAuthorEra" class="h-pane-era">{{ selectedAuthorEra }}</span>
|
|
622
624
|
<span v-if="authorLifespan" class="h-pane-lifespan">{{ authorLifespan }}</span>
|
|
623
|
-
<span v-if="
|
|
625
|
+
<span v-if="selectedAuthorWorkCount" class="h-pane-count">{{ t('piece.collected', { count: selectedAuthorWorkCount }) }}</span>
|
|
624
626
|
</div>
|
|
625
627
|
<div v-if="selectedAuthorData?.courtesyName || selectedAuthorData?.artName" class="h-pane-alt-names">
|
|
626
628
|
<span v-if="selectedAuthorData?.courtesyName">字 {{ selectedAuthorData.courtesyName }}</span>
|
|
@@ -838,7 +840,7 @@ function tcy(n: number): string {
|
|
|
838
840
|
min-width: 0;
|
|
839
841
|
}
|
|
840
842
|
|
|
841
|
-
.h-
|
|
843
|
+
.h-era {
|
|
842
844
|
display: inline-flex;
|
|
843
845
|
align-items: center;
|
|
844
846
|
padding: 2px 8px;
|
|
@@ -1024,7 +1026,7 @@ function tcy(n: number): string {
|
|
|
1024
1026
|
}
|
|
1025
1027
|
.h-pane-name { font-size: 28px; font-weight: 900; letter-spacing: 4px; color: var(--ink); }
|
|
1026
1028
|
.h-pane-meta { font-size: 14px; color: var(--ink-faint); letter-spacing: 2px; margin-top: 6px; display: flex; align-items: center; gap: 8px; }
|
|
1027
|
-
.h-pane-
|
|
1029
|
+
.h-pane-era {
|
|
1028
1030
|
display: inline-flex;
|
|
1029
1031
|
padding: 2px 8px;
|
|
1030
1032
|
background: var(--vermillion);
|
|
@@ -1262,7 +1264,7 @@ function tcy(n: number): string {
|
|
|
1262
1264
|
text-overflow: ellipsis;
|
|
1263
1265
|
white-space: nowrap;
|
|
1264
1266
|
}
|
|
1265
|
-
.h-
|
|
1267
|
+
.h-era { font-size: 10px; padding: 1px 6px; }
|
|
1266
1268
|
.h-sep { margin: 0 4px; }
|
|
1267
1269
|
.h-controls {
|
|
1268
1270
|
margin-left: 0;
|