@oml/markdown 0.9.0 → 0.10.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.
- package/out/md/md-executor.js +2 -9
- package/out/md/md-executor.js.map +1 -1
- package/out/md/md-runtime.js +2 -26
- package/out/md/md-runtime.js.map +1 -1
- package/out/renderers/diagram-renderer.js +2 -8
- package/out/renderers/diagram-renderer.js.map +1 -1
- package/out/renderers/graph-renderer.js +5 -9
- package/out/renderers/graph-renderer.js.map +1 -1
- package/out/renderers/renderer.d.ts +3 -0
- package/out/renderers/renderer.js +53 -0
- package/out/renderers/renderer.js.map +1 -1
- package/out/renderers/table-renderer.d.ts +0 -1
- package/out/renderers/table-renderer.js.map +1 -1
- package/out/renderers/text-renderer.d.ts +0 -1
- package/out/renderers/text-renderer.js +2 -9
- package/out/renderers/text-renderer.js.map +1 -1
- package/out/renderers/wikilink-utils.js +3 -10
- package/out/renderers/wikilink-utils.js.map +1 -1
- package/out/static/browser-runtime.bundle.js +788 -6169
- package/out/static/browser-runtime.bundle.js.map +4 -4
- package/out/static/browser-runtime.js +3 -0
- package/out/static/browser-runtime.js.map +1 -1
- package/package.json +2 -2
- package/src/md/md-executor.ts +2 -9
- package/src/md/md-runtime.ts +2 -28
- package/src/renderers/diagram-renderer.ts +2 -6
- package/src/renderers/graph-renderer.ts +5 -9
- package/src/renderers/renderer.ts +66 -0
- package/src/renderers/table-renderer.ts +0 -1
- package/src/renderers/text-renderer.ts +2 -7
- package/src/renderers/wikilink-utils.ts +4 -10
- package/src/static/browser-runtime.ts +3 -0
- package/src/static/markdown-webview.css +1361 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
2
|
import { createMarkdownRendererRegistry } from '../renderers/registry.js';
|
|
3
|
+
import { setIriLabelSnapshot } from '../renderers/renderer.js';
|
|
3
4
|
const SUPPORTED = new Set(['table', 'tree', 'graph', 'chart', 'diagram', 'list', 'text', 'matrix', 'table-editor']);
|
|
4
5
|
function parseJsonNode(id, fallback) {
|
|
5
6
|
const node = document.getElementById(id);
|
|
@@ -174,6 +175,8 @@ async function applyExecutionResults() {
|
|
|
174
175
|
const wikilinkIndex = parseJsonNode('oml-md-wikilink-index', {});
|
|
175
176
|
const iriAliasIndex = parseJsonNode('oml-md-wikilink-iri-aliases', {});
|
|
176
177
|
const wikilinkConfig = parseJsonNode('oml-md-wikilink-config', { linkingEnabled: false });
|
|
178
|
+
const memberLabelSnapshot = parseJsonNode('oml-md-member-labels', {});
|
|
179
|
+
setIriLabelSnapshot(memberLabelSnapshot);
|
|
177
180
|
const linkingEnabled = Boolean(wikilinkConfig?.linkingEnabled);
|
|
178
181
|
// Resolve wikilinks in regular markdown content (outside code-block panels).
|
|
179
182
|
applyWikilinks(document, wikilinkIndex, iriAliasIndex, linkingEnabled);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-runtime.js","sourceRoot":"","sources":["../../src/static/browser-runtime.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-runtime.js","sourceRoot":"","sources":["../../src/static/browser-runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oml/markdown",
|
|
3
3
|
"description": "Markdown runtime and execution contracts for OML",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.10.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=20.10.0",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@antv/x6": "^3.1.6",
|
|
58
58
|
"@dagrejs/dagre": "^2.0.4",
|
|
59
|
-
"@oml/owl": "0.
|
|
59
|
+
"@oml/owl": "0.10.0",
|
|
60
60
|
"chart.js": "^4.4.0",
|
|
61
61
|
"markdown-it": "^14.1.1",
|
|
62
62
|
"reflect-metadata": "^0.2.2",
|
package/src/md/md-executor.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { deriveSelectQueryFromShape, type OwlConstructResult, type OwlQueryResult } from '@oml/owl';
|
|
4
4
|
import type { Term } from '@rdfjs/types';
|
|
5
|
+
import { displayLabelFromIri } from '../renderers/renderer.js';
|
|
5
6
|
import type { MdBlockExecutionResult, MdExecuteBlocksParams, MdExecuteBlocksResult } from './md-execution.js';
|
|
6
7
|
|
|
7
8
|
export interface MarkdownExecutionBackend {
|
|
@@ -582,15 +583,7 @@ function uniqueVariableName(base: string, used: ReadonlySet<string>): string {
|
|
|
582
583
|
}
|
|
583
584
|
|
|
584
585
|
function localName(iri: string): string {
|
|
585
|
-
|
|
586
|
-
if (hash >= 0 && hash < iri.length - 1) {
|
|
587
|
-
return iri.slice(hash + 1);
|
|
588
|
-
}
|
|
589
|
-
const slash = iri.lastIndexOf('/');
|
|
590
|
-
if (slash >= 0 && slash < iri.length - 1) {
|
|
591
|
-
return iri.slice(slash + 1);
|
|
592
|
-
}
|
|
593
|
-
return iri;
|
|
586
|
+
return displayLabelFromIri(iri);
|
|
594
587
|
}
|
|
595
588
|
|
|
596
589
|
function isPlainObject(value: unknown): value is Record<string, unknown> {
|
package/src/md/md-runtime.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import MarkdownIt from 'markdown-it';
|
|
4
4
|
import type { RuleInline } from 'markdown-it/lib/parser_inline.mjs';
|
|
5
|
+
import { displayLabelFromIri } from '../renderers/renderer.js';
|
|
5
6
|
import { extractLeadingFrontMatter, stripLeadingFrontMatter } from './md-frontmatter.js';
|
|
6
7
|
import { MarkdownHandlerRegistry } from './md-registry.js';
|
|
7
8
|
import { parseYamlMap } from './md-yaml.js';
|
|
@@ -97,7 +98,7 @@ const wikilinkRule: RuleInline = (state, silent): boolean => {
|
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
if (!silent) {
|
|
100
|
-
const label =
|
|
101
|
+
const label = displayLabelFromIri(iri);
|
|
101
102
|
const open = state.push('link_open', 'a', 1);
|
|
102
103
|
open.attrSet('class', 'wikilink');
|
|
103
104
|
open.attrSet('iri', iri);
|
|
@@ -114,33 +115,6 @@ const wikilinkRule: RuleInline = (state, silent): boolean => {
|
|
|
114
115
|
return true;
|
|
115
116
|
};
|
|
116
117
|
|
|
117
|
-
function deriveWikiLabel(iri: string): string {
|
|
118
|
-
const normalized = iri.trim().replace(/^<|>$/g, '');
|
|
119
|
-
if (!normalized) {
|
|
120
|
-
return iri;
|
|
121
|
-
}
|
|
122
|
-
const fragment = normalized.split('#').pop() ?? '';
|
|
123
|
-
if (fragment && normalized.includes('#')) {
|
|
124
|
-
return decodeLabelPart(fragment);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const withoutQuery = normalized.split('?')[0];
|
|
128
|
-
const pathParts = withoutQuery.replace(/\/+$/, '').split('/');
|
|
129
|
-
const lastSegment = pathParts[pathParts.length - 1] ?? '';
|
|
130
|
-
if (lastSegment) {
|
|
131
|
-
return decodeLabelPart(lastSegment);
|
|
132
|
-
}
|
|
133
|
-
return normalized;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
function decodeLabelPart(value: string): string {
|
|
137
|
-
try {
|
|
138
|
-
return decodeURIComponent(value);
|
|
139
|
-
} catch {
|
|
140
|
-
return value;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
118
|
function parseBlockOptions(content: string): { content: string; options?: Record<string, unknown> } {
|
|
145
119
|
const normalized = content.replace(/^\uFEFF/, '');
|
|
146
120
|
const match = /^(---\s*\r?\n[\s\S]*?\r?\n---\s*\r?\n?)([\s\S]*)$/.exec(normalized);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
2
|
|
|
3
3
|
import 'reflect-metadata';
|
|
4
|
-
import { CanvasMarkdownBlockRenderer } from './renderer.js';
|
|
4
|
+
import { CanvasMarkdownBlockRenderer, displayLabelFromIri } from './renderer.js';
|
|
5
5
|
import type { MdBlockExecutionResult } from './types.js';
|
|
6
6
|
|
|
7
7
|
type NodeKind = 'Node' | 'Compartment' | 'Port';
|
|
@@ -1987,11 +1987,7 @@ function resolveContainerTopPadding(node: NodeSpec, labelText: string): number {
|
|
|
1987
1987
|
}
|
|
1988
1988
|
|
|
1989
1989
|
function localName(value: string): string {
|
|
1990
|
-
|
|
1991
|
-
if (hash >= 0 && hash < value.length - 1) return value.slice(hash + 1);
|
|
1992
|
-
const slash = value.lastIndexOf('/');
|
|
1993
|
-
if (slash >= 0 && slash < value.length - 1) return value.slice(slash + 1);
|
|
1994
|
-
return value;
|
|
1990
|
+
return displayLabelFromIri(value);
|
|
1995
1991
|
}
|
|
1996
1992
|
|
|
1997
1993
|
function indexTriples(rows: TripleRow[]): TripleIndex {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
2
|
|
|
3
|
-
import { CanvasMarkdownBlockRenderer } from './renderer.js';
|
|
3
|
+
import { CanvasMarkdownBlockRenderer, displayLabelFromIri } from './renderer.js';
|
|
4
4
|
import type { MdBlockExecutionResult } from './types.js';
|
|
5
|
+
import { isIriValue, shortLabelFromIri } from './wikilink-utils.js';
|
|
5
6
|
|
|
6
7
|
// --- CSS variable constants for base styles (auto-update on VS Code theme) ---
|
|
7
8
|
const CSS_NODE_FILL = 'var(--vscode-button-secondaryBackground, var(--vscode-button-background, #5a5a8a))';
|
|
@@ -1637,15 +1638,10 @@ function shortLabel(value: string): string {
|
|
|
1637
1638
|
if (value.startsWith('_:')) {
|
|
1638
1639
|
return value;
|
|
1639
1640
|
}
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
return value.slice(hash + 1);
|
|
1641
|
+
if (isIriValue(value)) {
|
|
1642
|
+
return shortLabelFromIri(value);
|
|
1643
1643
|
}
|
|
1644
|
-
|
|
1645
|
-
if (slash >= 0 && slash < value.length - 1) {
|
|
1646
|
-
return value.slice(slash + 1);
|
|
1647
|
-
}
|
|
1648
|
-
return value;
|
|
1644
|
+
return displayLabelFromIri(value);
|
|
1649
1645
|
}
|
|
1650
1646
|
|
|
1651
1647
|
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
@@ -7,6 +7,72 @@ export interface MarkdownBlockRenderer {
|
|
|
7
7
|
render(result: MdBlockExecutionResult): HTMLElement;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
let iriLabelSnapshot: ReadonlyMap<string, string> | undefined;
|
|
11
|
+
|
|
12
|
+
export function setIriLabelSnapshot(snapshot?: ReadonlyMap<string, string> | Record<string, string>): void {
|
|
13
|
+
if (!snapshot) {
|
|
14
|
+
iriLabelSnapshot = undefined;
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (snapshot instanceof Map) {
|
|
18
|
+
iriLabelSnapshot = snapshot;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
iriLabelSnapshot = new Map(
|
|
22
|
+
Object.entries(snapshot).map(([iri, label]) => [normalizeIriLabelKey(iri), String(label)] as const)
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function runWithIriLabelSnapshot<T>(
|
|
27
|
+
snapshot: ReadonlyMap<string, string> | Record<string, string> | undefined,
|
|
28
|
+
action: () => T
|
|
29
|
+
): T {
|
|
30
|
+
const previous = iriLabelSnapshot;
|
|
31
|
+
setIriLabelSnapshot(snapshot);
|
|
32
|
+
try {
|
|
33
|
+
return action();
|
|
34
|
+
} finally {
|
|
35
|
+
iriLabelSnapshot = previous;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function displayLabelFromIri(iri: string): string {
|
|
40
|
+
const normalized = normalizeIriLabelKey(iri);
|
|
41
|
+
if (!normalized) {
|
|
42
|
+
return iri;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const labeled = iriLabelSnapshot?.get(normalized);
|
|
46
|
+
if (typeof labeled === 'string' && labeled.length > 0) {
|
|
47
|
+
return labeled;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const fragmentIndex = normalized.lastIndexOf('#');
|
|
51
|
+
if (fragmentIndex >= 0 && fragmentIndex < normalized.length - 1) {
|
|
52
|
+
return decodeIriLabelSegment(normalized.slice(fragmentIndex + 1));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const withoutQuery = normalized.split('?')[0]?.replace(/\/+$/, '') ?? normalized;
|
|
56
|
+
const slashIndex = withoutQuery.lastIndexOf('/');
|
|
57
|
+
if (slashIndex >= 0 && slashIndex < withoutQuery.length - 1) {
|
|
58
|
+
return decodeIriLabelSegment(withoutQuery.slice(slashIndex + 1));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return normalized;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function normalizeIriLabelKey(iri: string): string {
|
|
65
|
+
return String(iri ?? '').trim().replace(/^<|>$/g, '');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function decodeIriLabelSegment(value: string): string {
|
|
69
|
+
try {
|
|
70
|
+
return decodeURIComponent(value);
|
|
71
|
+
} catch {
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
10
76
|
export type TableBlockKind = 'table' | 'table-editor' | 'matrix' | 'tree';
|
|
11
77
|
export type CanvasBlockKind = 'graph' | 'diagram';
|
|
12
78
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { QueryMarkdownBlockRenderer } from './renderer.js';
|
|
4
4
|
import type { MdBlockExecutionResult } from './types.js';
|
|
5
|
-
import
|
|
5
|
+
import { appendInlineValue } from './wikilink-utils.js';
|
|
6
6
|
|
|
7
7
|
type TextStyleSelectorKind = 'paragraph';
|
|
8
8
|
type TextStyleTarget = 'value';
|
|
@@ -23,11 +23,6 @@ type TextSelectorContext = {
|
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
export class TextMarkdownBlockRenderer extends QueryMarkdownBlockRenderer {
|
|
26
|
-
private readonly markdown = new MarkdownIt({
|
|
27
|
-
html: false,
|
|
28
|
-
linkify: true,
|
|
29
|
-
});
|
|
30
|
-
|
|
31
26
|
canRender(result: MdBlockExecutionResult): boolean {
|
|
32
27
|
return result.status === 'ok'
|
|
33
28
|
&& result.kind === 'text'
|
|
@@ -51,7 +46,7 @@ export class TextMarkdownBlockRenderer extends QueryMarkdownBlockRenderer {
|
|
|
51
46
|
const paragraph = document.createElement('p');
|
|
52
47
|
const valueSpan = document.createElement('span');
|
|
53
48
|
valueSpan.className = 'oml-md-result-text-value';
|
|
54
|
-
valueSpan
|
|
49
|
+
appendInlineValue(valueSpan, row[0] ?? '');
|
|
55
50
|
paragraph.appendChild(valueSpan);
|
|
56
51
|
|
|
57
52
|
const context = createParagraphSelectorContext(index, row[0] ?? '', payload.columns, row);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
2
|
|
|
3
|
+
import { displayLabelFromIri } from './renderer.js';
|
|
4
|
+
|
|
3
5
|
export function appendInlineValue(container: HTMLElement, value: string): void {
|
|
4
6
|
const wikilinkPattern = /\[\[([^\]]+)\]\]/g;
|
|
5
7
|
let cursor = 0;
|
|
@@ -44,7 +46,7 @@ export function appendTokenizedValueParts(container: HTMLElement, raw: string, p
|
|
|
44
46
|
if (isIriValue(token)) {
|
|
45
47
|
fragment.appendChild(createWikiLinkElement(token, shortLabelFromIri(token)));
|
|
46
48
|
} else {
|
|
47
|
-
fragment
|
|
49
|
+
appendInlineValue(fragment, token);
|
|
48
50
|
}
|
|
49
51
|
container.appendChild(fragment);
|
|
50
52
|
}
|
|
@@ -58,15 +60,7 @@ export function splitTokenizedValueParts(raw: string): string[] {
|
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
export function shortLabelFromIri(iri: string): string {
|
|
61
|
-
|
|
62
|
-
if (hash >= 0 && hash < iri.length - 1) {
|
|
63
|
-
return iri.slice(hash + 1);
|
|
64
|
-
}
|
|
65
|
-
const slash = iri.lastIndexOf('/');
|
|
66
|
-
if (slash >= 0 && slash < iri.length - 1) {
|
|
67
|
-
return iri.slice(slash + 1);
|
|
68
|
-
}
|
|
69
|
-
return iri;
|
|
63
|
+
return displayLabelFromIri(iri);
|
|
70
64
|
}
|
|
71
65
|
|
|
72
66
|
export function isIriValue(value: string): boolean {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
2
|
|
|
3
3
|
import { createMarkdownRendererRegistry } from '../renderers/registry.js';
|
|
4
|
+
import { setIriLabelSnapshot } from '../renderers/renderer.js';
|
|
4
5
|
|
|
5
6
|
const SUPPORTED = new Set(['table', 'tree', 'graph', 'chart', 'diagram', 'list', 'text', 'matrix', 'table-editor']);
|
|
6
7
|
|
|
@@ -203,6 +204,8 @@ async function applyExecutionResults(): Promise<void> {
|
|
|
203
204
|
const wikilinkIndex = parseJsonNode<Record<string, string>>('oml-md-wikilink-index', {});
|
|
204
205
|
const iriAliasIndex = parseJsonNode<Record<string, string>>('oml-md-wikilink-iri-aliases', {});
|
|
205
206
|
const wikilinkConfig = parseJsonNode<WikilinkConfig>('oml-md-wikilink-config', { linkingEnabled: false });
|
|
207
|
+
const memberLabelSnapshot = parseJsonNode<Record<string, string>>('oml-md-member-labels', {});
|
|
208
|
+
setIriLabelSnapshot(memberLabelSnapshot);
|
|
206
209
|
const linkingEnabled = Boolean(wikilinkConfig?.linkingEnabled);
|
|
207
210
|
// Resolve wikilinks in regular markdown content (outside code-block panels).
|
|
208
211
|
applyWikilinks(document, wikilinkIndex, iriAliasIndex, linkingEnabled);
|