@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 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, buildAuthorsJson, buildDynastiesJson, } from './pipeline.js';
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(config, configDir) {
43
- const defaultPath = join(configDir, 'library', 'data', 'authors.yaml');
44
- const authorsPath = config.authorsFile
45
- ? resolve(configDir, config.authorsFile)
46
- : defaultPath;
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
- return parseYaml(readFileSync(authorsPath, 'utf-8'));
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(config, configDir);
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
- const authorsJson = buildAuthorsJson(authors, allPieces);
142
- writeFileSync(join(dataDir, 'authors.json'), JSON.stringify(authorsJson, null, indent), 'utf-8');
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanology/cham-browser",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "CHAM — browser-compatible parser, serializer, and site generator for Classical Han Annotated Markdown",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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 left pane (>= 1024px) -->
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 (768–1023px) -->
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 (< 768px) -->
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
- const spanMap = new Map<string, Annotation[]>()
21
+ if (!anns.length) return []
22
+
23
+ const points = new Set<number>()
21
24
  for (const a of anns) {
22
- const key = `${a.range.start ?? 0}:${a.range.end ?? 0}`
23
- if (!spanMap.has(key)) spanMap.set(key, [])
24
- spanMap.get(key)!.push(a)
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
- return Array.from(spanMap.entries()).map(([k, matched]) => {
27
- const [start, end] = k.split(':').map(Number)
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
- const anns = annotations.filter(a =>
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
- textHtml += `<span class="ann-target ${kinds}" data-ann-ids="${ids}">${esc(text.slice(span.start, span.end))}</span>`
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 left = rect.left - 12
127
- style.value = {
128
- right: Math.max(8, window.innerWidth - left) + 'px',
129
- top: '50%',
130
- transform: 'translateY(-50%)',
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.unknownDynasty': '未知朝代',
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.unknownDynasty': '未知朝代',
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.unknownDynasty': 'Unknown dynasty',
150
+ 'author.unknownEra': 'Unknown era',
151
151
  'annotation.pronunciation': 'Pron',
152
152
  'annotation.semantic': 'Def',
153
153
  'annotation.notes': 'Notes',
@@ -140,7 +140,7 @@ export interface Piece {
140
140
  title: string
141
141
  author: string
142
142
  authorId: string
143
- dynasty: string
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
- dynasty: string
166
- poemCount: number
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
- poemCount: number
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.dynasty" class="v-dynasty">{{ author.dynasty }}</span>
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.dynasty || '未知朝代' }}</span>
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.dynasty" class="h-dynasty">{{ author.dynasty }}</span>
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-dynasty {
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-dynasty { color: var(--gold); font-weight: 600; letter-spacing: 2px; }
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 selectedAuthorDynasty = computed(() => {
231
+ const selectedAuthorEra = computed(() => {
232
232
  const name = selectedAuthorName.value
233
233
  const a = getAuthor(name)
234
- return a?.dynasty || piece.value?.dynasty || ''
234
+ return a?.era || piece.value?.era || ''
235
235
  })
236
236
 
237
- const selectedAuthorPoemCount = computed(() => {
237
+ const selectedAuthorWorkCount = computed(() => {
238
238
  const name = selectedAuthorName.value
239
239
  const a = getAuthor(name)
240
- return a?.poemCount || 0
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="selectedAuthorDynasty">{{ selectedAuthorDynasty }}</span>
452
+ <span v-if="selectedAuthorEra">{{ selectedAuthorEra }}</span>
452
453
  <span v-if="authorLifespan">{{ authorLifespan }}</span>
453
- <span v-if="selectedAuthorPoemCount" class="v-pane-count">{{ t('stat.pieceCount', { count: selectedAuthorPoemCount }) }}</span>
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.dynasty" class="h-dynasty">{{ piece.dynasty }}</span>
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="selectedAuthorDynasty" class="h-pane-dynasty">{{ selectedAuthorDynasty }}</span>
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="selectedAuthorPoemCount" class="h-pane-count">{{ t('piece.collected', { count: selectedAuthorPoemCount }) }}</span>
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-dynasty {
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-dynasty {
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-dynasty { font-size: 10px; padding: 1px 6px; }
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;