@oml/markdown 0.10.0 → 0.12.0

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 (40) hide show
  1. package/out/md/md-execution.d.ts +16 -0
  2. package/out/md/md-executor.d.ts +1 -0
  3. package/out/md/md-executor.js +219 -35
  4. package/out/md/md-executor.js.map +1 -1
  5. package/out/renderers/chart-renderer.js +72 -4
  6. package/out/renderers/chart-renderer.js.map +1 -1
  7. package/out/renderers/diagram-renderer.js +896 -245
  8. package/out/renderers/diagram-renderer.js.map +1 -1
  9. package/out/renderers/graph-renderer.js +452 -18
  10. package/out/renderers/graph-renderer.js.map +1 -1
  11. package/out/renderers/matrix-renderer.d.ts +0 -2
  12. package/out/renderers/matrix-renderer.js +45 -40
  13. package/out/renderers/matrix-renderer.js.map +1 -1
  14. package/out/renderers/renderer.d.ts +4 -1
  15. package/out/renderers/renderer.js +98 -0
  16. package/out/renderers/renderer.js.map +1 -1
  17. package/out/renderers/table-renderer.d.ts +12 -2
  18. package/out/renderers/table-renderer.js +126 -39
  19. package/out/renderers/table-renderer.js.map +1 -1
  20. package/out/renderers/types.d.ts +16 -0
  21. package/out/renderers/wikilink-utils.d.ts +1 -0
  22. package/out/renderers/wikilink-utils.js +60 -32
  23. package/out/renderers/wikilink-utils.js.map +1 -1
  24. package/out/static/browser-runtime.bundle.js +8011 -1292
  25. package/out/static/browser-runtime.bundle.js.map +4 -4
  26. package/out/static/browser-runtime.js +15 -2
  27. package/out/static/browser-runtime.js.map +1 -1
  28. package/package.json +2 -2
  29. package/src/md/md-execution.ts +20 -0
  30. package/src/md/md-executor.ts +268 -40
  31. package/src/renderers/chart-renderer.ts +93 -2
  32. package/src/renderers/diagram-renderer.ts +964 -253
  33. package/src/renderers/graph-renderer.ts +512 -12
  34. package/src/renderers/matrix-renderer.ts +57 -44
  35. package/src/renderers/renderer.ts +105 -1
  36. package/src/renderers/table-renderer.ts +190 -41
  37. package/src/renderers/types.ts +20 -0
  38. package/src/renderers/wikilink-utils.ts +66 -31
  39. package/src/static/browser-runtime.ts +20 -2
  40. package/src/static/markdown-webview.css +44 -15
@@ -15,9 +15,25 @@ export interface MdExecuteBlocksParams {
15
15
  blocks: MdExecutableBlock[];
16
16
  }
17
17
  export type MdExecutionStatus = 'ok' | 'error' | 'unimplemented';
18
+ export type MdTableCellValueKind = 'iri' | 'literal' | 'bnode' | 'unknown';
19
+ export interface MdTableCellValue {
20
+ kind: MdTableCellValueKind;
21
+ value: string;
22
+ datatype?: string;
23
+ language?: string;
24
+ }
25
+ export type MdTableCellKind = 'iri' | 'literal' | 'bnode' | 'unknown';
26
+ export interface MdTableCell {
27
+ kind: MdTableCellKind;
28
+ value: string;
29
+ values: MdTableCellValue[];
30
+ datatype?: string;
31
+ language?: string;
32
+ }
18
33
  export interface MdTablePayload {
19
34
  columns: string[];
20
35
  rows: string[][];
36
+ rowsTyped?: MdTableCell[][];
21
37
  }
22
38
  export interface MdBlockExecutionResult {
23
39
  blockId: string;
@@ -6,6 +6,7 @@ export interface MarkdownExecutionBackend {
6
6
  countContextQuads?: (modelUri: string) => Promise<number>;
7
7
  query(modelUri: string, sparql: string): Promise<OwlQueryResult>;
8
8
  construct(modelUri: string, sparql: string): Promise<OwlConstructResult>;
9
+ isKnownOntologyIriNamespace?: (ontologyIri: string) => boolean;
9
10
  }
10
11
  export declare class MarkdownExecutor {
11
12
  private readonly backend;
@@ -75,6 +75,7 @@ export class MarkdownExecutor {
75
75
  return queryFailed(blockId, 'matrix', queryResult.error ?? 'SPARQL SELECT failed.');
76
76
  }
77
77
  const columns = extractSelectVariables(sparql);
78
+ const groupConcatAliases = extractGroupConcatAliases(sparql);
78
79
  const columnSet = new Set(columns);
79
80
  for (const row of queryResult.rows) {
80
81
  for (const key of row.keys()) {
@@ -85,8 +86,9 @@ export class MarkdownExecutor {
85
86
  columns.push(key);
86
87
  }
87
88
  }
88
- const rows = queryResult.rows.map((row) => columns.map((column) => row.get(column)?.value ?? ''));
89
- return okTable(blockId, 'matrix', columns, rows);
89
+ const rowsTyped = queryResult.rows.map((row) => columns.map((column) => selectTermToCell(row.get(column), groupConcatAliases.get(column), this.backend.isKnownOntologyIriNamespace)));
90
+ const rows = rowsTyped.map((row) => row.map((cell) => tableCellToDisplayValue(cell)));
91
+ return okTable(blockId, 'matrix', columns, rows, rowsTyped);
90
92
  }
91
93
  async executeTableBlock(kind, modelUri, blockId, source, options) {
92
94
  if (!modelUri) {
@@ -110,6 +112,7 @@ export class MarkdownExecutor {
110
112
  const variableColumns = kind === 'table-editor'
111
113
  ? derivedQuery?.columnVariables.slice() ?? []
112
114
  : extractSelectVariables(sparql);
115
+ const groupConcatAliases = extractGroupConcatAliases(sparql);
113
116
  const labelByVariable = kind === 'table-editor'
114
117
  ? (derivedQuery?.columnLabels ?? new Map())
115
118
  : new Map();
@@ -128,9 +131,10 @@ export class MarkdownExecutor {
128
131
  columns.push(key);
129
132
  }
130
133
  }
131
- const rows = queryResult.rows.map((row) => columns.map((column) => row.get(column)?.value ?? ''));
134
+ const rowsTyped = queryResult.rows.map((row) => columns.map((column) => selectTermToCell(row.get(column), groupConcatAliases.get(column), this.backend.isKnownOntologyIriNamespace)));
135
+ const rows = rowsTyped.map((row) => row.map((cell) => tableCellToDisplayValue(cell)));
132
136
  const displayColumns = columns.map((column) => labelByVariable.get(column) ?? column);
133
- return okTable(blockId, kind, displayColumns, rows);
137
+ return okTable(blockId, kind, displayColumns, rows, rowsTyped);
134
138
  }
135
139
  async executeGraphBlock(modelUri, blockId, source) {
136
140
  if (!modelUri) {
@@ -166,33 +170,43 @@ export class MarkdownExecutor {
166
170
  const containmentNames = extractContainmentPropertyNames(options);
167
171
  const focusOrder = [];
168
172
  const focusSet = new Set();
173
+ const focusCellByKey = new Map();
169
174
  const valuesByFocus = new Map();
170
175
  const predicateToColumn = new Map();
171
176
  const usedColumns = new Set(['focus']);
172
177
  const columnOrder = [];
173
178
  const columnLabelByVariable = new Map([['focus', 'focus']]);
174
- const addFocus = (focus) => {
175
- if (focusSet.has(focus)) {
179
+ const addFocus = (focusCell) => {
180
+ const key = treeFocusKey(focusCell);
181
+ if (focusSet.has(key)) {
176
182
  return;
177
183
  }
178
- focusSet.add(focus);
179
- focusOrder.push(focus);
180
- valuesByFocus.set(focus, new Map());
184
+ focusSet.add(key);
185
+ focusOrder.push(key);
186
+ focusCellByKey.set(key, focusCell);
187
+ valuesByFocus.set(key, new Map());
181
188
  };
182
- const addCellValue = (focus, column, value) => {
189
+ const addCellValue = (focus, column, valueCell) => {
183
190
  const byColumn = valuesByFocus.get(focus);
184
191
  if (!byColumn) {
185
192
  return;
186
193
  }
187
194
  const values = byColumn.get(column) ?? [];
188
- if (!values.includes(value)) {
195
+ const existing = new Set(values.map((value) => `${value.kind}\u0000${value.value}`));
196
+ for (const value of valueCell.values) {
197
+ const key = `${value.kind}\u0000${value.value}`;
198
+ if (existing.has(key)) {
199
+ continue;
200
+ }
201
+ existing.add(key);
189
202
  values.push(value);
190
- byColumn.set(column, values);
191
203
  }
204
+ byColumn.set(column, values);
192
205
  };
193
206
  for (const quad of constructResult.quads) {
194
- const focus = termToCellValue(quad.subject);
195
- addFocus(focus);
207
+ const focusCell = termToTableCell(quad.subject);
208
+ const focus = treeFocusKey(focusCell);
209
+ addFocus(focusCell);
196
210
  const predicateIri = quad.predicate.value;
197
211
  let column = predicateToColumn.get(predicateIri);
198
212
  if (!column) {
@@ -203,12 +217,12 @@ export class MarkdownExecutor {
203
217
  columnOrder.push(column);
204
218
  columnLabelByVariable.set(column, localName(predicateIri) || column);
205
219
  }
206
- const objectValue = termToCellValue(quad.object);
207
- addCellValue(focus, column, objectValue);
220
+ const objectCell = termToTableCell(quad.object);
221
+ addCellValue(focus, column, objectCell);
208
222
  if (containmentNames.size > 0
209
223
  && (quad.object.termType === 'NamedNode' || quad.object.termType === 'BlankNode')
210
224
  && containmentNames.has(normalizePropertyIdentifier(predicateIri))) {
211
- addFocus(objectValue);
225
+ addFocus(objectCell);
212
226
  }
213
227
  }
214
228
  const optionLabelByVariable = extractColumnLabelOverrides(options);
@@ -217,16 +231,25 @@ export class MarkdownExecutor {
217
231
  }
218
232
  const columns = ['focus', ...columnOrder];
219
233
  const displayColumns = columns.map((column) => columnLabelByVariable.get(column) ?? column);
220
- const rows = focusOrder.map((focus) => {
234
+ const rowsTyped = focusOrder.map((focus) => {
221
235
  const byColumn = valuesByFocus.get(focus) ?? new Map();
222
236
  return columns.map((column) => {
223
237
  if (column === 'focus') {
224
- return focus;
238
+ return focusCellByKey.get(focus) ?? unknownCell(focus);
239
+ }
240
+ const values = byColumn.get(column) ?? [];
241
+ if (values.length === 0) {
242
+ return unknownCell('');
225
243
  }
226
- return (byColumn.get(column) ?? []).join(', ');
244
+ const kind = values.every((value) => value.kind === 'iri')
245
+ ? 'iri'
246
+ : (values.every((value) => value.kind === 'bnode') ? 'bnode' : 'literal');
247
+ const value = values.map((entry) => entry.kind === 'bnode' ? `_:${entry.value}` : entry.value).join(', ');
248
+ return { kind, value, values, datatype: undefined, language: undefined };
227
249
  });
228
250
  });
229
- return okTable(blockId, 'tree', displayColumns, rows);
251
+ const rows = rowsTyped.map((row) => row.map((cell) => cell.kind === 'bnode' ? `_:${cell.value}` : cell.value));
252
+ return okTable(blockId, 'tree', displayColumns, rows, rowsTyped);
230
253
  }
231
254
  async executeTextBlock(modelUri, blockId, source) {
232
255
  if (!modelUri) {
@@ -243,6 +266,7 @@ export class MarkdownExecutor {
243
266
  return queryFailed(blockId, 'text', 'Text block requires at least one SELECT variable.');
244
267
  }
245
268
  const columns = [firstVariable];
269
+ const groupConcatAliases = extractGroupConcatAliases(sparql);
246
270
  const columnSet = new Set(columns);
247
271
  for (const row of queryResult.rows) {
248
272
  for (const key of row.keys()) {
@@ -253,8 +277,9 @@ export class MarkdownExecutor {
253
277
  columns.push(key);
254
278
  }
255
279
  }
256
- const rows = queryResult.rows.map((row) => columns.map((column) => row.get(column)?.value ?? ''));
257
- return okTable(blockId, 'text', columns, rows);
280
+ const rowsTyped = queryResult.rows.map((row) => columns.map((column) => selectTermToCell(row.get(column), groupConcatAliases.get(column), this.backend.isKnownOntologyIriNamespace)));
281
+ const rows = rowsTyped.map((row) => row.map((cell) => tableCellToDisplayValue(cell)));
282
+ return okTable(blockId, 'text', columns, rows, rowsTyped);
258
283
  }
259
284
  async executeListBlock(modelUri, blockId, source) {
260
285
  if (!modelUri) {
@@ -271,6 +296,7 @@ export class MarkdownExecutor {
271
296
  return queryFailed(blockId, 'list', 'List block requires at least one SELECT variable.');
272
297
  }
273
298
  const columns = [firstVariable];
299
+ const groupConcatAliases = extractGroupConcatAliases(sparql);
274
300
  const columnSet = new Set(columns);
275
301
  for (const row of queryResult.rows) {
276
302
  for (const key of row.keys()) {
@@ -281,8 +307,9 @@ export class MarkdownExecutor {
281
307
  columns.push(key);
282
308
  }
283
309
  }
284
- const rows = queryResult.rows.map((row) => columns.map((column) => row.get(column)?.value ?? ''));
285
- return okTable(blockId, 'list', columns, rows);
310
+ const rowsTyped = queryResult.rows.map((row) => columns.map((column) => selectTermToCell(row.get(column), groupConcatAliases.get(column), this.backend.isKnownOntologyIriNamespace)));
311
+ const rows = rowsTyped.map((row) => row.map((cell) => tableCellToDisplayValue(cell)));
312
+ return okTable(blockId, 'list', columns, rows, rowsTyped);
286
313
  }
287
314
  }
288
315
  function preprocessQuerySource(backend, modelUri, source) {
@@ -303,22 +330,38 @@ function queryFailed(blockId, kind, message) {
303
330
  message,
304
331
  };
305
332
  }
306
- function okTable(blockId, kind, columns, rows) {
333
+ function okTable(blockId, kind, columns, rows, rowsTyped) {
307
334
  return {
308
335
  blockId,
309
336
  kind,
310
337
  status: 'ok',
311
338
  format: 'table',
312
- payload: { columns, rows },
339
+ payload: { columns, rows, rowsTyped },
313
340
  };
314
341
  }
315
342
  function constructRowsResult(blockId, kind, constructResult) {
316
343
  return okTable(blockId, kind, ['subject', 'predicate', 'object'], constructResult.quads.map((quad) => [
317
- termToCellValue(quad.subject),
318
- termToCellValue(quad.predicate),
319
- termToCellValue(quad.object),
344
+ termToRawCellValue(quad.subject),
345
+ termToRawCellValue(quad.predicate),
346
+ termToRawCellValue(quad.object),
347
+ ]), constructResult.quads.map((quad) => [
348
+ termToTableCell(quad.subject),
349
+ termToTableCell(quad.predicate),
350
+ termToTableCell(quad.object),
320
351
  ]));
321
352
  }
353
+ function termToRawCellValue(term) {
354
+ if (term.termType === 'NamedNode') {
355
+ return term.value;
356
+ }
357
+ if (term.termType === 'BlankNode') {
358
+ return `_:${term.value}`;
359
+ }
360
+ if (term.termType === 'Literal') {
361
+ return term.value;
362
+ }
363
+ return String(term.value ?? '');
364
+ }
322
365
  function extractSelectVariables(sparql) {
323
366
  const match = /select\s+(?:distinct\s+|reduced\s+)?([\s\S]*?)\bwhere\b/i.exec(sparql);
324
367
  if (!match) {
@@ -450,17 +493,158 @@ function normalizePropertyIdentifier(raw) {
450
493
  }
451
494
  return localName(trimmed).trim().toLowerCase();
452
495
  }
453
- function termToCellValue(term) {
496
+ function termToTableCell(term) {
454
497
  if (term.termType === 'NamedNode') {
455
- return term.value;
498
+ return {
499
+ kind: 'iri',
500
+ value: term.value,
501
+ values: [{ kind: 'iri', value: term.value }]
502
+ };
456
503
  }
457
504
  if (term.termType === 'BlankNode') {
458
- return `_:${term.value}`;
505
+ return {
506
+ kind: 'bnode',
507
+ value: term.value,
508
+ values: [{ kind: 'bnode', value: term.value }]
509
+ };
459
510
  }
460
511
  if (term.termType === 'Literal') {
461
- return term.value;
512
+ return {
513
+ kind: 'literal',
514
+ value: term.value,
515
+ values: [{ kind: 'literal', value: term.value, datatype: term.datatype?.value, language: term.language }],
516
+ datatype: term.datatype?.value,
517
+ language: term.language
518
+ };
462
519
  }
463
- return String(term.value ?? '');
520
+ const value = String(term.value ?? '');
521
+ return {
522
+ kind: 'unknown',
523
+ value,
524
+ values: [{ kind: 'unknown', value }]
525
+ };
526
+ }
527
+ function treeFocusKey(cell) {
528
+ if (cell.kind === 'bnode') {
529
+ return `_:${cell.value}`;
530
+ }
531
+ return cell.value;
532
+ }
533
+ function unknownCell(value) {
534
+ return {
535
+ kind: 'unknown',
536
+ value,
537
+ values: [{ kind: 'unknown', value }]
538
+ };
539
+ }
540
+ function selectTermToCell(term, groupConcatSeparator, isKnownOntologyIriNamespace) {
541
+ if (!term) {
542
+ return { kind: 'unknown', value: '', values: [{ kind: 'unknown', value: '' }] };
543
+ }
544
+ if (term.termType === 'NamedNode') {
545
+ return {
546
+ kind: 'iri',
547
+ value: term.value,
548
+ values: [{ kind: 'iri', value: term.value }]
549
+ };
550
+ }
551
+ if (term.termType === 'BlankNode') {
552
+ return {
553
+ kind: 'bnode',
554
+ value: term.value,
555
+ values: [{ kind: 'bnode', value: term.value }]
556
+ };
557
+ }
558
+ if (term.termType === 'Literal' && groupConcatSeparator !== undefined) {
559
+ const groupedValues = parseGroupConcatValues(term.value, groupConcatSeparator);
560
+ const values = groupedValues.map((value) => classifyGroupedValue(value, isKnownOntologyIriNamespace, term.datatype, term.language));
561
+ const kind = values.every((value) => value.kind === 'iri') ? 'iri' : 'literal';
562
+ return { kind, value: term.value, values, datatype: term.datatype, language: term.language };
563
+ }
564
+ return {
565
+ kind: 'literal',
566
+ value: term.value,
567
+ values: [{ kind: 'literal', value: term.value, datatype: term.datatype, language: term.language }],
568
+ datatype: term.datatype,
569
+ language: term.language
570
+ };
571
+ }
572
+ function tableCellToDisplayValue(cell) {
573
+ if (!Array.isArray(cell.values) || cell.values.length === 0) {
574
+ return cell.kind === 'bnode' ? `_:${cell.value}` : cell.value;
575
+ }
576
+ if (typeof cell.value === 'string' && cell.value.length > 0) {
577
+ return cell.kind === 'bnode' ? `_:${cell.value}` : cell.value;
578
+ }
579
+ return cell.values.map((entry) => entry.kind === 'bnode' ? `_:${entry.value}` : entry.value).join(' ');
580
+ }
581
+ function extractGroupConcatAliases(sparql) {
582
+ const aliases = new Map();
583
+ const match = /select\s+(?:distinct\s+|reduced\s+)?([\s\S]*?)\bwhere\b/i.exec(sparql);
584
+ if (!match) {
585
+ return aliases;
586
+ }
587
+ for (const term of splitTopLevelProjectionTerms(match[1])) {
588
+ if (!/\bgroup_concat\s*\(/i.test(term)) {
589
+ continue;
590
+ }
591
+ const alias = /\bas\s+\?([A-Za-z_][A-Za-z0-9_-]*)\b/i.exec(term);
592
+ if (!alias?.[1]) {
593
+ continue;
594
+ }
595
+ const separatorMatch = /\bseparator\s*=\s*["']([^"']*)["']/i.exec(term);
596
+ aliases.set(alias[1], separatorMatch?.[1] ?? ' ');
597
+ }
598
+ return aliases;
599
+ }
600
+ function parseGroupConcatValues(raw, separator) {
601
+ if (separator.length === 0) {
602
+ const trimmed = raw.trim();
603
+ return trimmed ? [trimmed] : [];
604
+ }
605
+ const values = raw
606
+ .split(separator)
607
+ .map((entry) => entry.trim())
608
+ .filter((entry) => entry.length > 0);
609
+ return values;
610
+ }
611
+ function classifyGroupedValue(value, isKnownOntologyIriNamespace, datatype, language) {
612
+ if (value.startsWith('_:')) {
613
+ return { kind: 'bnode', value: value.slice(2) };
614
+ }
615
+ if (!isAbsoluteIri(value)) {
616
+ return { kind: 'literal', value, datatype, language };
617
+ }
618
+ if (!isKnownOntologyIriNamespace) {
619
+ return { kind: 'iri', value };
620
+ }
621
+ const key = ontologyLookupKeyFromIri(value);
622
+ if (!key || !isKnownOntologyIriNamespace(key)) {
623
+ return { kind: 'literal', value, datatype, language };
624
+ }
625
+ return { kind: 'iri', value };
626
+ }
627
+ function isAbsoluteIri(value) {
628
+ return /^[A-Za-z][A-Za-z0-9+.-]*:[^\s]+$/.test(value);
629
+ }
630
+ function ontologyLookupKeyFromIri(value) {
631
+ const iri = String(value ?? '').trim().replace(/^<|>$/g, '');
632
+ if (!iri || !isAbsoluteIri(iri)) {
633
+ return undefined;
634
+ }
635
+ const hashIndex = iri.indexOf('#');
636
+ if (hashIndex >= 0) {
637
+ return normalizeOntologyLookupKey(iri.slice(0, hashIndex + 1));
638
+ }
639
+ const schemeIndex = iri.indexOf('://');
640
+ const slashIndex = iri.lastIndexOf('/');
641
+ if (slashIndex > schemeIndex + 2) {
642
+ return normalizeOntologyLookupKey(iri.slice(0, slashIndex + 1));
643
+ }
644
+ return normalizeOntologyLookupKey(iri);
645
+ }
646
+ function normalizeOntologyLookupKey(value) {
647
+ return value.trim().replace(/^<|>$/g, '').replace(/[\/#]+$/, '');
464
648
  }
465
649
  function normalizeSparqlVariableName(raw) {
466
650
  const normalized = raw.replace(/[^A-Za-z0-9_]/g, '_');
@@ -1 +1 @@
1
- {"version":3,"file":"md-executor.js","sourceRoot":"","sources":["../../src/md/md-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"md-executor.js","sourceRoot":"","sources":["../../src/md/md-executor.ts"],"names":[],"mappings":"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"}
@@ -33,12 +33,12 @@ export class ChartMarkdownBlockRenderer extends QueryMarkdownBlockRenderer {
33
33
  container.appendChild(chartRoot);
34
34
  const canvasEl = document.createElement('canvas');
35
35
  chartRoot.appendChild(canvasEl);
36
- initializeChartWhenReady(chartRoot, canvasEl, payload.columns, payload.rows, parsed, container);
36
+ initializeChartWhenReady(chartRoot, canvasEl, payload.columns, payload.rows, parsed, container, (content) => this.requestTextFileDownload(content, 'chart', 'csv'));
37
37
  return container;
38
38
  }
39
39
  }
40
40
  // --- Initialization ---
41
- function initializeChartWhenReady(chartRoot, canvasEl, columns, rows, parsed, messageContainer) {
41
+ function initializeChartWhenReady(chartRoot, canvasEl, columns, rows, parsed, messageContainer, downloadCsv) {
42
42
  const maxAttempts = 20;
43
43
  let attempts = 0;
44
44
  const tryInit = () => {
@@ -48,7 +48,7 @@ function initializeChartWhenReady(chartRoot, canvasEl, columns, rows, parsed, me
48
48
  requestAnimationFrame(tryInit);
49
49
  return;
50
50
  }
51
- void doChartInit(chartRoot, canvasEl, columns, rows, parsed).catch((err) => {
51
+ void doChartInit(chartRoot, canvasEl, columns, rows, parsed, downloadCsv).catch((err) => {
52
52
  const detail = err instanceof Error ? err.message : String(err);
53
53
  const msg = document.createElement('div');
54
54
  msg.className = 'oml-md-result-message';
@@ -58,7 +58,7 @@ function initializeChartWhenReady(chartRoot, canvasEl, columns, rows, parsed, me
58
58
  };
59
59
  requestAnimationFrame(tryInit);
60
60
  }
61
- async function doChartInit(chartRoot, canvasEl, columns, rows, parsed) {
61
+ async function doChartInit(chartRoot, canvasEl, columns, rows, parsed, downloadCsv) {
62
62
  const ChartCtor = await loadChartJs();
63
63
  let chart = null;
64
64
  const buildAndRender = () => {
@@ -70,6 +70,7 @@ async function doChartInit(chartRoot, canvasEl, columns, rows, parsed) {
70
70
  chart = new ChartCtor(canvasEl, config);
71
71
  };
72
72
  buildAndRender();
73
+ installChartToolbar(chartRoot, columns, rows, downloadCsv);
73
74
  // Resize the canvas whenever the host element resizes.
74
75
  const resizeObserver = new ResizeObserver(() => {
75
76
  if (!chartRoot.isConnected)
@@ -154,6 +155,73 @@ async function doChartInit(chartRoot, canvasEl, columns, rows, parsed) {
154
155
  resizeHandle.addEventListener('pointerup', onResizePointerEnd);
155
156
  resizeHandle.addEventListener('pointercancel', onResizePointerEnd);
156
157
  }
158
+ function installChartToolbar(chartRoot, columns, rows, downloadCsv) {
159
+ if (chartRoot.querySelector('.graph-corner-toolbar')) {
160
+ return;
161
+ }
162
+ const hotspot = document.createElement('div');
163
+ hotspot.className = 'graph-corner-hotspot';
164
+ chartRoot.appendChild(hotspot);
165
+ const toolbar = document.createElement('div');
166
+ toolbar.className = 'graph-corner-toolbar';
167
+ const downloadButton = createDownloadButton();
168
+ downloadButton.addEventListener('click', () => {
169
+ downloadCsv(toCsv(columns, rows));
170
+ });
171
+ toolbar.appendChild(downloadButton);
172
+ chartRoot.appendChild(toolbar);
173
+ let hideTimer = 0;
174
+ const showToolbar = () => {
175
+ if (hideTimer) {
176
+ window.clearTimeout(hideTimer);
177
+ hideTimer = 0;
178
+ }
179
+ chartRoot.classList.add('graph-toolbar-visible');
180
+ };
181
+ const scheduleHideToolbar = () => {
182
+ hideTimer = window.setTimeout(() => {
183
+ chartRoot.classList.remove('graph-toolbar-visible');
184
+ hideTimer = 0;
185
+ }, 120);
186
+ };
187
+ hotspot.addEventListener('mouseenter', showToolbar);
188
+ toolbar.addEventListener('mouseenter', showToolbar);
189
+ hotspot.addEventListener('mouseleave', scheduleHideToolbar);
190
+ toolbar.addEventListener('mouseleave', scheduleHideToolbar);
191
+ const swallowPointer = (event) => {
192
+ event.stopPropagation();
193
+ };
194
+ toolbar.addEventListener('pointerdown', swallowPointer, true);
195
+ toolbar.addEventListener('mousedown', swallowPointer, true);
196
+ downloadButton.addEventListener('pointerdown', swallowPointer, true);
197
+ downloadButton.addEventListener('mousedown', swallowPointer, true);
198
+ }
199
+ function createDownloadButton() {
200
+ const downloadButton = document.createElement('button');
201
+ downloadButton.className = 'tree-download-btn';
202
+ downloadButton.title = 'Download CSV';
203
+ downloadButton.setAttribute('aria-label', 'Download CSV');
204
+ const iconSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
205
+ iconSvg.setAttribute('viewBox', '0 0 24 24');
206
+ iconSvg.setAttribute('width', '20');
207
+ iconSvg.setAttribute('height', '20');
208
+ iconSvg.setAttribute('aria-hidden', 'true');
209
+ iconSvg.setAttribute('focusable', 'false');
210
+ iconSvg.style.fill = 'currentColor';
211
+ const iconPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');
212
+ iconPath.setAttribute('d', 'M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z');
213
+ iconSvg.appendChild(iconPath);
214
+ downloadButton.appendChild(iconSvg);
215
+ return downloadButton;
216
+ }
217
+ function toCsv(columns, rows) {
218
+ const escape = (value) => `"${String(value ?? '').replace(/"/g, '""')}"`;
219
+ const lines = [columns.map(escape).join(',')];
220
+ for (const row of rows) {
221
+ lines.push(columns.map((_, index) => escape(row[index] ?? '')).join(','));
222
+ }
223
+ return lines.join('\n');
224
+ }
157
225
  // --- Chart.js loader ---
158
226
  async function loadChartJs() {
159
227
  if (chartClass)