@ldforge/renderers 0.1.4 → 0.1.6
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/README.md +15 -0
- package/dist/cards.d.ts.map +1 -1
- package/dist/cards.js +45 -0
- package/dist/cards.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -44
- package/dist/index.js.map +1 -1
- package/dist/resource-inspector.d.ts +19 -0
- package/dist/resource-inspector.d.ts.map +1 -0
- package/dist/resource-inspector.js +128 -0
- package/dist/resource-inspector.js.map +1 -0
- package/dist/table-widths.d.ts +4 -0
- package/dist/table-widths.d.ts.map +1 -0
- package/dist/table-widths.js +14 -0
- package/dist/table-widths.js.map +1 -0
- package/dist/table.d.ts +12 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +268 -0
- package/dist/table.js.map +1 -0
- package/package.json +2 -2
- package/src/cards.ts +45 -0
- package/src/index.ts +25 -51
- package/src/resource-inspector.ts +142 -0
- package/src/table-widths.ts +16 -0
- package/src/table.ts +323 -0
package/README.md
CHANGED
|
@@ -20,3 +20,18 @@ const renderers = [
|
|
|
20
20
|
Cards maps `card_title`, `card_text`, `card_image`, `card_button` and `card_button_url` to one card per row. Put `# view=cards` before the query to select this view. `# css=max-width: 320px;` styles individual cards using supported declarations; set `createCardsRenderer({ allowQueryStyles: false })` to disable query styling. The button needs both a label and a valid URL. All text is rendered literally.
|
|
21
21
|
|
|
22
22
|
See the [complete renderer and binding guide](https://github.com/mightymax/ldforge/blob/main/docs/renderers.md) for queries, optional fields, URL behavior, header syntax and CSS support. See `docs/plugins.md` for custom renderers. Licensed under EUPL-1.2; see LICENSE.
|
|
23
|
+
|
|
24
|
+
## Table column widths
|
|
25
|
+
|
|
26
|
+
Table columns default to equal `100 / n` percent widths, with fixed layout and
|
|
27
|
+
wrapping for long RDF values. Set `createTableRenderer({ columnWidths: [40, 40, 20] })`
|
|
28
|
+
or add `# view=table; columns=40%,40%,20%` to the query. The spelling `colums` also
|
|
29
|
+
works. Use one positive percentage per column, totaling 100; query values override
|
|
30
|
+
host defaults. Invalid query widths show a warning and fall back to equal widths.
|
|
31
|
+
The Plugin wizard exposes the option for registered table renderers.
|
|
32
|
+
|
|
33
|
+
The table includes column sorting, global and per-column filters, and virtual scrolling
|
|
34
|
+
above 500 rows. URI buttons open a reusable resource inspector. Pass
|
|
35
|
+
`loadResource: createResourceLoader(executor)` for endpoint-backed properties; graph
|
|
36
|
+
results can use their own triples. See the [table guide](../../docs/renderers.md#table)
|
|
37
|
+
for options, lifecycle, accessibility and limitations.
|
package/dist/cards.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAgED,oFAAoF;AACpF,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,oBAAyB,GACjC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAgED,oFAAoF;AACpF,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,oBAAyB,GACjC,oBAAoB,CAoHtB"}
|
package/dist/cards.js
CHANGED
|
@@ -64,6 +64,51 @@ function webUrl(value, document) {
|
|
|
64
64
|
export function createCardsRenderer(options = {}) {
|
|
65
65
|
return {
|
|
66
66
|
id: 'cards',
|
|
67
|
+
wizard: {
|
|
68
|
+
description: {
|
|
69
|
+
en: 'Return at least one of the optional card fields.',
|
|
70
|
+
nl: 'Geef ten minste \u00e9\u00e9n van de optionele kaartvelden terug.',
|
|
71
|
+
},
|
|
72
|
+
bindings: [
|
|
73
|
+
{
|
|
74
|
+
variable: 'card_title',
|
|
75
|
+
required: false,
|
|
76
|
+
description: { en: 'Card heading', nl: 'Titel van de kaart' },
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
variable: 'card_text',
|
|
80
|
+
required: false,
|
|
81
|
+
description: {
|
|
82
|
+
en: 'Card description',
|
|
83
|
+
nl: 'Beschrijving van de kaart',
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
variable: 'card_image',
|
|
88
|
+
required: false,
|
|
89
|
+
description: {
|
|
90
|
+
en: 'HTTP(S) image URL',
|
|
91
|
+
nl: 'HTTP(S)-URL van afbeelding',
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
variable: 'card_button',
|
|
96
|
+
required: false,
|
|
97
|
+
description: {
|
|
98
|
+
en: 'Button label; requires card_button_url',
|
|
99
|
+
nl: 'Knoptekst; vereist card_button_url',
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
variable: 'card_button_url',
|
|
104
|
+
required: false,
|
|
105
|
+
description: {
|
|
106
|
+
en: 'HTTP(S) button link',
|
|
107
|
+
nl: 'HTTP(S)-link voor de knop',
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
67
112
|
label: { en: 'Cards', nl: 'Kaarten' },
|
|
68
113
|
icon: createSvgIcon(['M3 4h7v16H3zM14 4h7v16h-7zM3 10h7M14 10h7']),
|
|
69
114
|
documentationUrl: 'https://ldforge.nl/plugins.html#cards',
|
package/dist/cards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards.js","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cards.js","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { ResultRendererPlugin } from '@ldforge/core';
|
|
2
|
-
export
|
|
2
|
+
export { createTableRenderer } from './table.js';
|
|
3
|
+
export type { TableRendererOptions } from './table.js';
|
|
4
|
+
export { createResourceInspector, createResourceLoader, } from './resource-inspector.js';
|
|
5
|
+
export type { ResourceInspectorOptions, ResourceLoader, } from './resource-inspector.js';
|
|
3
6
|
export declare function createBooleanRenderer(): ResultRendererPlugin;
|
|
4
7
|
export declare function createJsonRenderer(): ResultRendererPlugin;
|
|
5
8
|
export { createCardsRenderer } from './cards.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,wBAAwB,EACxB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,wBAAgB,qBAAqB,IAAI,oBAAoB,CA0B5D;AAED,wBAAgB,kBAAkB,IAAI,oBAAoB,CAoBzD;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,50 +1,16 @@
|
|
|
1
|
-
import { translate, resolveLocale, createSvgIcon
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
id: 'table',
|
|
5
|
-
documentationUrl: 'https://ldforge.nl/plugins.html#table',
|
|
6
|
-
icon: createSvgIcon(['M3 3h18v18H3zM3 9h18M9 9v12']),
|
|
7
|
-
label: { en: 'Table', nl: 'Tabel' },
|
|
8
|
-
supports: (result) => result.kind === 'bindings' || result.kind === 'graph',
|
|
9
|
-
render(container, result, context) {
|
|
10
|
-
if (result.kind === 'graph')
|
|
11
|
-
result = graphToBindings(result);
|
|
12
|
-
if (result.kind !== 'bindings')
|
|
13
|
-
return;
|
|
14
|
-
const doc = container.ownerDocument;
|
|
15
|
-
const table = doc.createElement('table');
|
|
16
|
-
const caption = table.createCaption();
|
|
17
|
-
const locale = context?.locale ?? resolveLocale();
|
|
18
|
-
caption.textContent = translate(locale, result.bindings.length === 1 ? 'resultOne' : 'resultMany', { count: new Intl.NumberFormat(locale).format(result.bindings.length) });
|
|
19
|
-
const header = table.createTHead().insertRow();
|
|
20
|
-
for (const variable of result.variables) {
|
|
21
|
-
const cell = doc.createElement('th');
|
|
22
|
-
cell.scope = 'col';
|
|
23
|
-
cell.textContent = variable;
|
|
24
|
-
header.append(cell);
|
|
25
|
-
}
|
|
26
|
-
const body = table.createTBody();
|
|
27
|
-
for (const binding of result.bindings) {
|
|
28
|
-
const row = body.insertRow();
|
|
29
|
-
for (const variable of result.variables) {
|
|
30
|
-
const cell = row.insertCell();
|
|
31
|
-
const term = binding[variable];
|
|
32
|
-
cell.textContent = term?.value ?? '';
|
|
33
|
-
if (term)
|
|
34
|
-
cell.title = term['xml:lang']
|
|
35
|
-
? translate(locale, 'termLanguage', {
|
|
36
|
-
language: term['xml:lang'],
|
|
37
|
-
})
|
|
38
|
-
: (term.datatype ?? term.type);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
container.replaceChildren(table);
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
}
|
|
1
|
+
import { translate, resolveLocale, createSvgIcon } from '@ldforge/core';
|
|
2
|
+
export { createTableRenderer } from './table.js';
|
|
3
|
+
export { createResourceInspector, createResourceLoader, } from './resource-inspector.js';
|
|
45
4
|
export function createBooleanRenderer() {
|
|
46
5
|
return {
|
|
47
6
|
id: 'boolean',
|
|
7
|
+
wizard: {
|
|
8
|
+
description: {
|
|
9
|
+
en: 'Requires a boolean ASK result.',
|
|
10
|
+
nl: 'Vereist een boolean ASK-resultaat.',
|
|
11
|
+
},
|
|
12
|
+
bindings: [],
|
|
13
|
+
},
|
|
48
14
|
documentationUrl: 'https://ldforge.nl/plugins.html#boolean',
|
|
49
15
|
icon: createSvgIcon(['m5 12 4 4L19 6']),
|
|
50
16
|
label: { en: 'Boolean', nl: 'Booleaans' },
|
|
@@ -63,6 +29,13 @@ export function createBooleanRenderer() {
|
|
|
63
29
|
export function createJsonRenderer() {
|
|
64
30
|
return {
|
|
65
31
|
id: 'json',
|
|
32
|
+
wizard: {
|
|
33
|
+
description: {
|
|
34
|
+
en: 'Accepts any query result.',
|
|
35
|
+
nl: 'Geschikt voor elk queryresultaat.',
|
|
36
|
+
},
|
|
37
|
+
bindings: [],
|
|
38
|
+
},
|
|
66
39
|
documentationUrl: 'https://ldforge.nl/plugins.html#json',
|
|
67
40
|
icon: createSvgIcon(['M8 3H6v7l-3 2 3 2v7h2M16 3h2v7l3 2-3 2v7h-2']),
|
|
68
41
|
label: 'JSON',
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,EAAE,EAAE,SAAS;QACb,MAAM,EAAE;YACN,WAAW,EAAE;gBACX,EAAE,EAAE,gCAAgC;gBACpC,EAAE,EAAE,oCAAoC;aACzC;YACD,QAAQ,EAAE,EAAE;SACb;QACD,gBAAgB,EAAE,yCAAyC;QAC3D,IAAI,EAAE,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACvC,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE;QACzC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;QAC/C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO;YAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO;YACtC,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC1D,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;YACrC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,WAAW,GAAG,SAAS,CAC5B,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,EAClC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAChC,CAAC;YACF,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,EAAE,EAAE,MAAM;QACV,MAAM,EAAE;YACN,WAAW,EAAE;gBACX,EAAE,EAAE,2BAA2B;gBAC/B,EAAE,EAAE,mCAAmC;aACxC;YACD,QAAQ,EAAE,EAAE;SACb;QACD,gBAAgB,EAAE,sCAAsC;QACxD,IAAI,EAAE,aAAa,CAAC,CAAC,6CAA6C,CAAC,CAAC;QACpE,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;QACpB,MAAM,CAAC,SAAS,EAAE,MAAM;YACtB,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzD,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAClD,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { BindingTerm, QueryExecutor, QueryResult } from '@ldforge/core';
|
|
2
|
+
export type ResourceLoader = (iri: string, signal: AbortSignal) => Promise<QueryResult>;
|
|
3
|
+
export interface ResourceInspectorOptions {
|
|
4
|
+
readonly locale?: 'en' | 'nl';
|
|
5
|
+
readonly graph?: Extract<QueryResult, {
|
|
6
|
+
kind: 'graph';
|
|
7
|
+
}>;
|
|
8
|
+
readonly loadResource?: ResourceLoader;
|
|
9
|
+
}
|
|
10
|
+
/** Uses the host transport, credentials and cancellation; never dereferences arbitrary URLs. */
|
|
11
|
+
export declare function createResourceLoader(executor: QueryExecutor): ResourceLoader;
|
|
12
|
+
/** A reusable inline panel for tables, cards, networks and maps. */
|
|
13
|
+
export declare function createResourceInspector(container: HTMLElement, options?: ResourceInspectorOptions): {
|
|
14
|
+
element: HTMLElement;
|
|
15
|
+
open: (term: BindingTerm) => Promise<void>;
|
|
16
|
+
close: () => void;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=resource-inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-inspector.d.ts","sourceRoot":"","sources":["../src/resource-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE7E,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,WAAW,CAAC,CAAC;AAC1B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;CACxC;AACD,gGAAgG;AAChG,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,cAAc,CAc5E;AACD,oEAAoE;AACpE,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,wBAA6B;;iBAsBZ,WAAW;;;EAyFtC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/** Uses the host transport, credentials and cancellation; never dereferences arbitrary URLs. */
|
|
2
|
+
export function createResourceLoader(executor) {
|
|
3
|
+
return (iri, signal) => {
|
|
4
|
+
if (!iri ||
|
|
5
|
+
[...iri].some((character) => character.charCodeAt(0) <= 32) ||
|
|
6
|
+
/[<>"{}|^`\\]/u.test(iri) ||
|
|
7
|
+
!/^[a-z][a-z\d+.-]*:/i.test(iri))
|
|
8
|
+
return Promise.reject(new Error('Invalid resource IRI.'));
|
|
9
|
+
return executor.execute({
|
|
10
|
+
query: `CONSTRUCT { <${iri}> ?p ?o . ?s ?incoming <${iri}> } WHERE { { <${iri}> ?p ?o } UNION { ?s ?incoming <${iri}> } } LIMIT 200`,
|
|
11
|
+
signal,
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/** A reusable inline panel for tables, cards, networks and maps. */
|
|
16
|
+
export function createResourceInspector(container, options = {}) {
|
|
17
|
+
const doc = container.ownerDocument;
|
|
18
|
+
const nl = options.locale === 'nl';
|
|
19
|
+
const element = doc.createElement('section');
|
|
20
|
+
element.className = 'ldforge-resource-inspector';
|
|
21
|
+
element.hidden = true;
|
|
22
|
+
element.setAttribute('aria-label', nl ? 'Resource verkennen' : 'Resource inspector');
|
|
23
|
+
element.tabIndex = -1;
|
|
24
|
+
element.style.cssText =
|
|
25
|
+
'padding:12px;border:1px solid currentColor;overflow-wrap:anywhere;font-size:12px;line-height:1.5';
|
|
26
|
+
let controller;
|
|
27
|
+
let disposed = false;
|
|
28
|
+
let origin = null;
|
|
29
|
+
function close() {
|
|
30
|
+
controller?.abort();
|
|
31
|
+
element.hidden = true;
|
|
32
|
+
origin?.focus();
|
|
33
|
+
}
|
|
34
|
+
async function open(term) {
|
|
35
|
+
if (disposed || term.type !== 'uri')
|
|
36
|
+
return;
|
|
37
|
+
if (element.hidden)
|
|
38
|
+
origin =
|
|
39
|
+
doc.activeElement instanceof HTMLElement ? doc.activeElement : null;
|
|
40
|
+
controller?.abort();
|
|
41
|
+
const current = new AbortController();
|
|
42
|
+
controller = current;
|
|
43
|
+
element.hidden = false;
|
|
44
|
+
const heading = doc.createElement('h3');
|
|
45
|
+
heading.textContent = term.value;
|
|
46
|
+
heading.style.cssText = 'font-size:13px;line-height:1.5;margin:0 0 8px';
|
|
47
|
+
const closeButton = doc.createElement('button');
|
|
48
|
+
closeButton.type = 'button';
|
|
49
|
+
closeButton.style.fontSize = 'inherit';
|
|
50
|
+
closeButton.textContent = nl ? 'Sluiten' : 'Close';
|
|
51
|
+
closeButton.onclick = close;
|
|
52
|
+
const content = doc.createElement('div');
|
|
53
|
+
content.setAttribute('role', 'status');
|
|
54
|
+
content.textContent = nl ? 'Laden…' : 'Loading…';
|
|
55
|
+
element.replaceChildren(heading, closeButton, content);
|
|
56
|
+
if (/^https?:\/\//i.test(term.value)) {
|
|
57
|
+
const link = doc.createElement('a');
|
|
58
|
+
link.href = term.value;
|
|
59
|
+
link.target = '_blank';
|
|
60
|
+
link.rel = 'noopener noreferrer';
|
|
61
|
+
link.textContent = nl ? 'Open resource' : 'Open resource';
|
|
62
|
+
element.append(link);
|
|
63
|
+
}
|
|
64
|
+
element.focus();
|
|
65
|
+
try {
|
|
66
|
+
const matches = (triple) => (triple.subject.type === 'uri' &&
|
|
67
|
+
triple.subject.value === term.value) ||
|
|
68
|
+
(triple.object.type === 'uri' && triple.object.value === term.value);
|
|
69
|
+
const local = options.graph?.triples.filter(matches);
|
|
70
|
+
const result = local?.length
|
|
71
|
+
? { kind: 'graph', triples: local }
|
|
72
|
+
: await options.loadResource?.(term.value, current.signal);
|
|
73
|
+
if (disposed || current.signal.aborted)
|
|
74
|
+
return;
|
|
75
|
+
content.replaceChildren();
|
|
76
|
+
const triples = result?.kind === 'graph' ? result.triples.filter(matches) : [];
|
|
77
|
+
if (!triples.length) {
|
|
78
|
+
content.textContent = nl
|
|
79
|
+
? 'Geen eigenschappen beschikbaar in deze gegevens.'
|
|
80
|
+
: 'No properties available in this data.';
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const list = doc.createElement('dl');
|
|
84
|
+
for (const triple of triples) {
|
|
85
|
+
const incoming = triple.subject.value !== term.value;
|
|
86
|
+
const name = doc.createElement('dt');
|
|
87
|
+
name.textContent = `${incoming ? '← ' : ''}${triple.predicate.value}`;
|
|
88
|
+
const value = incoming ? triple.subject : triple.object;
|
|
89
|
+
const description = doc.createElement('dd');
|
|
90
|
+
if (value.type === 'uri') {
|
|
91
|
+
const button = doc.createElement('button');
|
|
92
|
+
button.type = 'button';
|
|
93
|
+
button.style.fontSize = 'inherit';
|
|
94
|
+
button.textContent = value.value;
|
|
95
|
+
button.style.overflowWrap = 'anywhere';
|
|
96
|
+
button.onclick = () => {
|
|
97
|
+
void open(value);
|
|
98
|
+
};
|
|
99
|
+
description.append(button);
|
|
100
|
+
}
|
|
101
|
+
else
|
|
102
|
+
description.textContent = value.value;
|
|
103
|
+
description.title = value['xml:lang'] ?? value.datatype ?? value.type;
|
|
104
|
+
list.append(name, description);
|
|
105
|
+
}
|
|
106
|
+
content.append(list);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (!disposed && !current.signal.aborted)
|
|
110
|
+
content.textContent = `${nl ? 'Laden mislukt' : 'Loading failed'}: ${error instanceof Error ? error.message : String(error)}`;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
element.onkeydown = (event) => {
|
|
114
|
+
if (event.key === 'Escape')
|
|
115
|
+
close();
|
|
116
|
+
};
|
|
117
|
+
return {
|
|
118
|
+
element,
|
|
119
|
+
open,
|
|
120
|
+
close,
|
|
121
|
+
destroy() {
|
|
122
|
+
disposed = true;
|
|
123
|
+
controller?.abort();
|
|
124
|
+
element.remove();
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=resource-inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-inspector.js","sourceRoot":"","sources":["../src/resource-inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Percentage widths only: never interpolate arbitrary query strings into CSS. */
|
|
2
|
+
export declare function validColumnWidths(widths: readonly number[]): boolean;
|
|
3
|
+
export declare function parseColumnWidths(value: string): number[] | undefined;
|
|
4
|
+
//# sourceMappingURL=table-widths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-widths.d.ts","sourceRoot":"","sources":["../src/table-widths.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAQpE;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAKrE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Percentage widths only: never interpolate arbitrary query strings into CSS. */
|
|
2
|
+
export function validColumnWidths(widths) {
|
|
3
|
+
return (widths.length > 0 &&
|
|
4
|
+
widths.every((width) => Number.isFinite(width) && width > 0 && width <= 100) &&
|
|
5
|
+
Math.abs(widths.reduce((sum, width) => sum + width, 0) - 100) < 0.000001);
|
|
6
|
+
}
|
|
7
|
+
export function parseColumnWidths(value) {
|
|
8
|
+
const parts = value.split(',').map((part) => part.trim());
|
|
9
|
+
if (parts.some((part) => !/^\d+(?:\.\d+)?%$/.test(part)))
|
|
10
|
+
return undefined;
|
|
11
|
+
const widths = parts.map((part) => Number(part.slice(0, -1)));
|
|
12
|
+
return validColumnWidths(widths) ? widths : undefined;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=table-widths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-widths.js","sourceRoot":"","sources":["../src/table-widths.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,OAAO,CACL,MAAM,CAAC,MAAM,GAAG,CAAC;QACjB,MAAM,CAAC,KAAK,CACV,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,CAC/D;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CACzE,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3E,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC"}
|
package/dist/table.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ResultRendererPlugin } from '@ldforge/core';
|
|
2
|
+
import type { ResourceLoader } from './resource-inspector.js';
|
|
3
|
+
export interface TableRendererOptions {
|
|
4
|
+
/** Optional endpoint-backed resource lookup; local graph triples work without it. */
|
|
5
|
+
readonly loadResource?: ResourceLoader;
|
|
6
|
+
readonly virtualizeThreshold?: number;
|
|
7
|
+
readonly viewportHeight?: number;
|
|
8
|
+
/** Percentages in result-variable order; must be positive and total 100. */
|
|
9
|
+
readonly columnWidths?: readonly number[];
|
|
10
|
+
}
|
|
11
|
+
export declare function createTableRenderer(options?: TableRendererOptions): ResultRendererPlugin;
|
|
12
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAW,MAAM,eAAe,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AACD,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,oBAAyB,GACjC,oBAAoB,CA8StB"}
|