@xemahq/ui-kernel 0.14.2 → 0.16.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 (59) hide show
  1. package/dist/offline/offline-status-badge.js +1 -1
  2. package/dist/offline/offline-status-badge.js.map +1 -1
  3. package/dist/org-db/components/DbResultTable.js +1 -1
  4. package/dist/org-db/components/DbResultTable.js.map +1 -1
  5. package/dist/session-kit/approvals/ApprovalButton.js +5 -1
  6. package/dist/session-kit/approvals/ApprovalButton.js.map +1 -1
  7. package/dist/session-kit/approvals/ApprovalsCenter.js +1 -1
  8. package/dist/session-kit/approvals/ApprovalsCenter.js.map +1 -1
  9. package/dist/session-kit/combobox/Combobox.js +1 -1
  10. package/dist/session-kit/combobox/Combobox.js.map +1 -1
  11. package/dist/session-kit/decisions/DecisionCard.d.ts +21 -0
  12. package/dist/session-kit/decisions/DecisionCard.d.ts.map +1 -0
  13. package/dist/session-kit/decisions/DecisionCard.js +242 -0
  14. package/dist/session-kit/decisions/DecisionCard.js.map +1 -0
  15. package/dist/session-kit/decisions/DecisionReplyForm.d.ts +13 -0
  16. package/dist/session-kit/decisions/DecisionReplyForm.d.ts.map +1 -0
  17. package/dist/session-kit/decisions/DecisionReplyForm.js +53 -0
  18. package/dist/session-kit/decisions/DecisionReplyForm.js.map +1 -0
  19. package/dist/session-kit/decisions/DecisionsQueue.d.ts +20 -0
  20. package/dist/session-kit/decisions/DecisionsQueue.d.ts.map +1 -0
  21. package/dist/session-kit/decisions/DecisionsQueue.js +42 -0
  22. package/dist/session-kit/decisions/DecisionsQueue.js.map +1 -0
  23. package/dist/session-kit/decisions/decision-model.d.ts +87 -0
  24. package/dist/session-kit/decisions/decision-model.d.ts.map +1 -0
  25. package/dist/session-kit/decisions/decision-model.js +75 -0
  26. package/dist/session-kit/decisions/decision-model.js.map +1 -0
  27. package/dist/session-kit/decisions/index.d.ts +6 -0
  28. package/dist/session-kit/decisions/index.d.ts.map +1 -0
  29. package/dist/session-kit/decisions/index.js +6 -0
  30. package/dist/session-kit/decisions/index.js.map +1 -0
  31. package/dist/session-kit/decisions/reply-schema.d.ts +28 -0
  32. package/dist/session-kit/decisions/reply-schema.d.ts.map +1 -0
  33. package/dist/session-kit/decisions/reply-schema.js +127 -0
  34. package/dist/session-kit/decisions/reply-schema.js.map +1 -0
  35. package/dist/session-kit/display/TodoChecklist.d.ts.map +1 -1
  36. package/dist/session-kit/display/TodoChecklist.js +1 -1
  37. package/dist/session-kit/display/TodoChecklist.js.map +1 -1
  38. package/dist/session-kit/index.d.ts +1 -0
  39. package/dist/session-kit/index.d.ts.map +1 -1
  40. package/dist/session-kit/index.js +1 -0
  41. package/dist/session-kit/index.js.map +1 -1
  42. package/dist/ui/charts/chart-utils.d.ts.map +1 -1
  43. package/dist/ui/charts/chart-utils.js +8 -8
  44. package/dist/ui/charts/chart-utils.js.map +1 -1
  45. package/dist/ui/pdf/pdf-preview.js +4 -4
  46. package/dist/ui/pdf/pdf-preview.js.map +1 -1
  47. package/dist/vista/WorkspaceHtml.d.ts +7 -0
  48. package/dist/vista/WorkspaceHtml.d.ts.map +1 -0
  49. package/dist/vista/WorkspaceHtml.js +81 -0
  50. package/dist/vista/WorkspaceHtml.js.map +1 -0
  51. package/dist/vista/index.d.ts +2 -0
  52. package/dist/vista/index.d.ts.map +1 -1
  53. package/dist/vista/index.js +2 -0
  54. package/dist/vista/index.js.map +1 -1
  55. package/dist/vista/workspace-html-subresources.d.ts +14 -0
  56. package/dist/vista/workspace-html-subresources.d.ts.map +1 -0
  57. package/dist/vista/workspace-html-subresources.js +268 -0
  58. package/dist/vista/workspace-html-subresources.js.map +1 -0
  59. package/package.json +1 -1
@@ -0,0 +1,81 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { useVistaFileSource } from './vista-file-context';
4
+ import { VistaFileText } from './vista-file-source';
5
+ import { resolveWorkspaceHtmlSubresources, } from './workspace-html-subresources';
6
+ const RESOLVING = { status: 'resolving' };
7
+ function UnresolvedNotice({ unresolved, }) {
8
+ return (_jsxs("div", { role: "status", style: {
9
+ flex: '0 0 auto',
10
+ padding: '8px 12px',
11
+ fontSize: 12,
12
+ lineHeight: 1.5,
13
+ color: 'hsl(var(--ink-3))',
14
+ background: 'hsl(var(--surface-2))',
15
+ borderBottom: '1px solid hsl(var(--rule))',
16
+ }, children: [_jsx("strong", { style: { fontWeight: 600 }, children: unresolved.length === 1
17
+ ? '1 reference could not be loaded'
18
+ : `${unresolved.length} references could not be loaded` }), ' ', "\u2014 this preview is rendered from files, without the page's own web server. Start the preview app to see it exactly as published.", _jsx("ul", { style: { margin: '6px 0 0', paddingInlineStart: 18 }, children: unresolved.map((entry) => (_jsxs("li", { children: [_jsx("code", { children: entry.reference }), " \u2014 ", entry.reason] }, entry.reference))) })] }));
19
+ }
20
+ function ResolvedWorkspaceHtml({ content, path, rootPath, render, }) {
21
+ const source = useVistaFileSource();
22
+ const revision = source?.revision;
23
+ const [state, setState] = useState(RESOLVING);
24
+ useEffect(() => {
25
+ if (source === null) {
26
+ setState({
27
+ status: 'error',
28
+ message: 'No file source is mounted for this panel, so the page’s stylesheets and scripts cannot be read.',
29
+ });
30
+ return;
31
+ }
32
+ let cancelled = false;
33
+ setState(RESOLVING);
34
+ resolveWorkspaceHtmlSubresources(content, path, rootPath, source).then((resolution) => {
35
+ if (!cancelled) {
36
+ setState({
37
+ status: 'ready',
38
+ html: resolution.html,
39
+ unresolved: resolution.unresolved,
40
+ });
41
+ }
42
+ }, (error) => {
43
+ if (!cancelled) {
44
+ setState({
45
+ status: 'error',
46
+ message: error instanceof Error ? error.message : String(error),
47
+ });
48
+ }
49
+ });
50
+ return () => {
51
+ cancelled = true;
52
+ };
53
+ }, [content, path, rootPath, source, revision]);
54
+ if (state.status === 'resolving') {
55
+ return (_jsx("div", { style: {
56
+ display: 'flex',
57
+ height: '100%',
58
+ alignItems: 'center',
59
+ justifyContent: 'center',
60
+ fontSize: 12.5,
61
+ color: 'hsl(var(--ink-4))',
62
+ }, children: "Loading\u2026" }));
63
+ }
64
+ if (state.status === 'error') {
65
+ return (_jsx("div", { role: "alert", style: {
66
+ display: 'flex',
67
+ height: '100%',
68
+ alignItems: 'center',
69
+ justifyContent: 'center',
70
+ padding: 24,
71
+ fontSize: 12.5,
72
+ textAlign: 'center',
73
+ color: 'hsl(var(--destructive))',
74
+ }, children: state.message }));
75
+ }
76
+ return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', height: '100%' }, children: [state.unresolved.length > 0 ? (_jsx(UnresolvedNotice, { unresolved: state.unresolved })) : null, _jsx("div", { style: { flex: '1 1 auto', minHeight: 0 }, children: render(state.html) })] }));
77
+ }
78
+ export function VistaWorkspaceHtml({ path, rootPath, render, }) {
79
+ return (_jsx(VistaFileText, { path: path, render: (content) => (_jsx(ResolvedWorkspaceHtml, { content: content, path: path, rootPath: rootPath, render: render })) }));
80
+ }
81
+ //# sourceMappingURL=WorkspaceHtml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceHtml.js","sourceRoot":"","sources":["../../src/vista/WorkspaceHtml.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ export * from './vista-model';
7
7
  export * from './vista-payloads';
8
8
  export * from './vista-tabs-manifest';
9
9
  export * from './vista-file-source';
10
+ export * from './workspace-html-subresources';
11
+ export * from './WorkspaceHtml';
10
12
  export * from './vista-file-context';
11
13
  export * from './vista-form-host';
12
14
  export * from './vista-form-context';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vista/index.ts"],"names":[],"mappings":"AA6BA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AAGvB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vista/index.ts"],"names":[],"mappings":"AA6BA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AAGvB,cAAc,YAAY,CAAC"}
@@ -7,6 +7,8 @@ export * from './vista-model';
7
7
  export * from './vista-payloads';
8
8
  export * from './vista-tabs-manifest';
9
9
  export * from './vista-file-source';
10
+ export * from './workspace-html-subresources';
11
+ export * from './WorkspaceHtml';
10
12
  export * from './vista-file-context';
11
13
  export * from './vista-form-host';
12
14
  export * from './vista-form-context';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vista/index.ts"],"names":[],"mappings":"AA6BA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AAGvB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vista/index.ts"],"names":[],"mappings":"AA6BA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AAGvB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface WorkspaceHtmlUnresolvedRef {
2
+ readonly reference: string;
3
+ readonly reason: string;
4
+ }
5
+ export interface WorkspaceHtmlResolution {
6
+ readonly html: string;
7
+ readonly unresolved: readonly WorkspaceHtmlUnresolvedRef[];
8
+ }
9
+ export interface WorkspaceHtmlSource {
10
+ readText(path: string): Promise<string>;
11
+ }
12
+ export declare function resolveWorkspaceRef(fromPath: string, reference: string, rootPath: string): string | null;
13
+ export declare function resolveWorkspaceHtmlSubresources(html: string, documentPath: string, rootPath: string, source: WorkspaceHtmlSource): Promise<WorkspaceHtmlResolution>;
14
+ //# sourceMappingURL=workspace-html-subresources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-html-subresources.d.ts","sourceRoot":"","sources":["../../src/vista/workspace-html-subresources.ts"],"names":[],"mappings":"AAsCA,MAAM,WAAW,0BAA0B;IAEzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC5D;AAGD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC;AAwDD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CA+Cf;AA4RD,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,uBAAuB,CAAC,CAmBlC"}
@@ -0,0 +1,268 @@
1
+ const TEXT_SAFE_CONTENT_TYPE = {
2
+ css: 'text/css',
3
+ js: 'text/javascript',
4
+ mjs: 'text/javascript',
5
+ json: 'application/json',
6
+ svg: 'image/svg+xml',
7
+ txt: 'text/plain',
8
+ csv: 'text/csv',
9
+ xml: 'application/xml',
10
+ };
11
+ const ABSOLUTE_URL = /^[a-z][a-z0-9+.-]*:/i;
12
+ const RELATIVE_ESM_IMPORT = /(?:^|[\s;}])(?:import|export)\s[^'"]*['"](\.{1,2}\/[^'"]*)['"]/;
13
+ function extensionOf(path) {
14
+ const slash = path.lastIndexOf('/');
15
+ const dot = path.lastIndexOf('.');
16
+ return dot > slash ? path.slice(dot + 1).toLowerCase() : '';
17
+ }
18
+ function isWorkspaceRelative(reference) {
19
+ const value = reference.trim();
20
+ if (value === '' || value.startsWith('#')) {
21
+ return false;
22
+ }
23
+ if (value.startsWith('//') || ABSOLUTE_URL.test(value)) {
24
+ return false;
25
+ }
26
+ return true;
27
+ }
28
+ export function resolveWorkspaceRef(fromPath, reference, rootPath) {
29
+ const withoutQuery = reference.split(/[?#]/, 1)[0] ?? '';
30
+ if (withoutQuery === '') {
31
+ return null;
32
+ }
33
+ const decoded = (() => {
34
+ try {
35
+ return decodeURI(withoutQuery);
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ })();
41
+ if (decoded === null) {
42
+ return null;
43
+ }
44
+ const root = rootPath.replace(/\/+$/, '');
45
+ const base = decoded.startsWith('/')
46
+ ? root
47
+ : fromPath.slice(0, Math.max(0, fromPath.lastIndexOf('/')));
48
+ const relative = decoded.startsWith('/') ? decoded.slice(1) : decoded;
49
+ const segments = [...base.split('/').filter(Boolean), ...relative.split('/')];
50
+ const stack = [];
51
+ for (const segment of segments) {
52
+ if (segment === '' || segment === '.') {
53
+ continue;
54
+ }
55
+ if (segment === '..') {
56
+ if (stack.length === 0) {
57
+ return null;
58
+ }
59
+ stack.pop();
60
+ continue;
61
+ }
62
+ stack.push(segment);
63
+ }
64
+ if (stack.length === 0) {
65
+ return null;
66
+ }
67
+ const resolved = stack.join('/');
68
+ return root === '' || resolved === root || resolved.startsWith(`${root}/`)
69
+ ? resolved
70
+ : null;
71
+ }
72
+ function toBase64(text) {
73
+ const bytes = new TextEncoder().encode(text);
74
+ let binary = '';
75
+ const CHUNK = 0x8000;
76
+ for (let i = 0; i < bytes.length; i += CHUNK) {
77
+ binary += String.fromCharCode(...bytes.subarray(i, i + CHUNK));
78
+ }
79
+ return btoa(binary);
80
+ }
81
+ function toDataUri(contentType, text) {
82
+ return `data:${contentType};base64,${toBase64(text)}`;
83
+ }
84
+ function terminatesRawText(content, tag) {
85
+ return new RegExp(`</${tag}`, 'i').test(content);
86
+ }
87
+ function report(ctx, reference, reason) {
88
+ if (ctx.unresolved.some((entry) => entry.reference === reference)) {
89
+ return;
90
+ }
91
+ ctx.unresolved.push({ reference, reason });
92
+ }
93
+ async function readWorkspaceText(ctx, fromPath, reference) {
94
+ const path = resolveWorkspaceRef(fromPath, reference, ctx.rootPath);
95
+ if (path === null) {
96
+ report(ctx, reference, 'points outside the previewed folder');
97
+ return null;
98
+ }
99
+ try {
100
+ return { path, text: await ctx.source.readText(path) };
101
+ }
102
+ catch (error) {
103
+ report(ctx, reference, error instanceof Error ? error.message : String(error));
104
+ return null;
105
+ }
106
+ }
107
+ async function inlineCss(ctx, cssPath, css) {
108
+ if (ctx.visited.has(cssPath)) {
109
+ return '';
110
+ }
111
+ ctx.visited.add(cssPath);
112
+ const imports = [];
113
+ const importPattern = /@import\s+(?:url\(\s*(['"]?)([^'")]+)\1\s*\)|(['"])([^'"]+)\3)([^;]*);/gi;
114
+ for (const match of css.matchAll(importPattern)) {
115
+ const reference = (match[2] ?? match[4] ?? '').trim();
116
+ if (!isWorkspaceRelative(reference)) {
117
+ continue;
118
+ }
119
+ const read = await readWorkspaceText(ctx, cssPath, reference);
120
+ imports.push({
121
+ match: match[0],
122
+ replacement: read === null ? '' : await inlineCss(ctx, read.path, read.text),
123
+ });
124
+ }
125
+ let out = css;
126
+ for (const entry of imports) {
127
+ out = out.replace(entry.match, entry.replacement);
128
+ }
129
+ const urls = [];
130
+ for (const match of out.matchAll(/url\(\s*(['"]?)([^'")]+)\1\s*\)/gi)) {
131
+ const reference = (match[2] ?? '').trim();
132
+ if (!isWorkspaceRelative(reference)) {
133
+ continue;
134
+ }
135
+ const contentType = TEXT_SAFE_CONTENT_TYPE[extensionOf(reference)];
136
+ if (contentType === undefined) {
137
+ report(ctx, reference, 'binary asset — workspace files are read as text, so its bytes cannot be recovered');
138
+ continue;
139
+ }
140
+ const read = await readWorkspaceText(ctx, cssPath, reference);
141
+ if (read === null) {
142
+ continue;
143
+ }
144
+ urls.push({
145
+ match: match[0],
146
+ replacement: `url("${toDataUri(contentType, read.text)}")`,
147
+ });
148
+ }
149
+ for (const entry of urls) {
150
+ out = out.replace(entry.match, entry.replacement);
151
+ }
152
+ return out;
153
+ }
154
+ async function inlineStylesheets(ctx, doc, documentPath) {
155
+ const links = [...doc.querySelectorAll('link[href]')].filter((link) => {
156
+ const rel = (link.getAttribute('rel') ?? '').toLowerCase().split(/\s+/);
157
+ return rel.includes('stylesheet');
158
+ });
159
+ for (const link of links) {
160
+ const reference = link.getAttribute('href') ?? '';
161
+ if (!isWorkspaceRelative(reference)) {
162
+ continue;
163
+ }
164
+ const read = await readWorkspaceText(ctx, documentPath, reference);
165
+ if (read === null) {
166
+ continue;
167
+ }
168
+ const css = await inlineCss(ctx, read.path, read.text);
169
+ if (terminatesRawText(css, 'style')) {
170
+ report(ctx, reference, 'contains "</style", which would truncate the page');
171
+ continue;
172
+ }
173
+ const style = doc.createElement('style');
174
+ style.setAttribute('data-xema-inlined-from', read.path);
175
+ style.textContent = css;
176
+ link.replaceWith(style);
177
+ }
178
+ }
179
+ async function inlineScripts(ctx, doc, documentPath) {
180
+ for (const script of [...doc.querySelectorAll('script[src]')]) {
181
+ const reference = script.getAttribute('src') ?? '';
182
+ if (!isWorkspaceRelative(reference)) {
183
+ continue;
184
+ }
185
+ const read = await readWorkspaceText(ctx, documentPath, reference);
186
+ if (read === null) {
187
+ continue;
188
+ }
189
+ if (terminatesRawText(read.text, 'script')) {
190
+ report(ctx, reference, 'contains "</script", which would truncate the page');
191
+ continue;
192
+ }
193
+ if (RELATIVE_ESM_IMPORT.test(read.text)) {
194
+ report(ctx, reference, 'imports other modules relatively; those imports are not followed in a server-less preview');
195
+ }
196
+ const inline = doc.createElement('script');
197
+ for (const attribute of [...script.attributes]) {
198
+ if (attribute.name !== 'src') {
199
+ inline.setAttribute(attribute.name, attribute.value);
200
+ }
201
+ }
202
+ inline.setAttribute('data-xema-inlined-from', read.path);
203
+ inline.textContent = read.text;
204
+ script.replaceWith(inline);
205
+ }
206
+ }
207
+ const SUBRESOURCE_ATTRIBUTES = [
208
+ ['img[src]', 'src'],
209
+ ['image[href]', 'href'],
210
+ ['source[src]', 'src'],
211
+ ['video[src]', 'src'],
212
+ ['video[poster]', 'poster'],
213
+ ['audio[src]', 'src'],
214
+ ['embed[src]', 'src'],
215
+ ['object[data]', 'data'],
216
+ ['link[rel~="icon"][href]', 'href'],
217
+ ['use[href]', 'href'],
218
+ ];
219
+ async function inlineMedia(ctx, doc, documentPath) {
220
+ for (const [selector, attribute] of SUBRESOURCE_ATTRIBUTES) {
221
+ for (const element of [...doc.querySelectorAll(selector)]) {
222
+ const reference = element.getAttribute(attribute) ?? '';
223
+ if (!isWorkspaceRelative(reference)) {
224
+ continue;
225
+ }
226
+ const contentType = TEXT_SAFE_CONTENT_TYPE[extensionOf(reference)];
227
+ if (contentType === undefined) {
228
+ report(ctx, reference, 'binary asset — workspace files are read as text, so its bytes cannot be recovered');
229
+ continue;
230
+ }
231
+ const read = await readWorkspaceText(ctx, documentPath, reference);
232
+ if (read === null) {
233
+ continue;
234
+ }
235
+ element.setAttribute(attribute, toDataUri(contentType, read.text));
236
+ }
237
+ }
238
+ for (const element of [...doc.querySelectorAll('[srcset]')]) {
239
+ const value = element.getAttribute('srcset') ?? '';
240
+ const candidates = value
241
+ .split(',')
242
+ .map((candidate) => candidate.trim().split(/\s+/)[0] ?? '')
243
+ .filter((candidate) => isWorkspaceRelative(candidate));
244
+ if (candidates.length > 0) {
245
+ report(ctx, value, 'responsive srcset candidates are not resolved in a server-less preview');
246
+ }
247
+ }
248
+ }
249
+ export async function resolveWorkspaceHtmlSubresources(html, documentPath, rootPath, source) {
250
+ const doc = new DOMParser().parseFromString(html, 'text/html');
251
+ const ctx = {
252
+ source,
253
+ rootPath: rootPath.replace(/\/+$/, ''),
254
+ unresolved: [],
255
+ visited: new Set(),
256
+ };
257
+ await inlineStylesheets(ctx, doc, documentPath);
258
+ await inlineScripts(ctx, doc, documentPath);
259
+ await inlineMedia(ctx, doc, documentPath);
260
+ const doctype = doc.doctype
261
+ ? `<!DOCTYPE ${doc.doctype.name}>\n`
262
+ : '';
263
+ return {
264
+ html: `${doctype}${doc.documentElement.outerHTML}`,
265
+ unresolved: ctx.unresolved,
266
+ };
267
+ }
268
+ //# sourceMappingURL=workspace-html-subresources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-html-subresources.js","sourceRoot":"","sources":["../../src/vista/workspace-html-subresources.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/ui-kernel",
3
- "version": "0.14.2",
3
+ "version": "0.16.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "Host-framework-agnostic UI kernel for the Xema OS. Defines the SystemBus orchestration contract (capability.invoke, cross-biome intents, command palette, xema:// deeplinks, window manager) AND the biome-host contract surface (FrontendBiome/FrontendBiomeFactory, HostBridge, the singleton biomeRegistry, session contributions) that every frontend biome composes against. No Vite, Next.js, or React-Router — React itself IS allowed as the shared component model (the contracts traffic in ReactNode/ComponentType and a React context). Concrete host adapters (router/auth/toast wiring) live in separate packages that consume this kernel. The SystemBus is pure orchestration: it never authorizes, the backend capability-router enforces all policy.",