@widgentic/designer 0.8.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.
- package/README.md +2 -1
- package/dist/browser/widgentic-designer.js +127 -97
- package/dist/browser/widgentic-designer.js.map +4 -4
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +2 -1
- package/dist/browser.js.map +1 -1
- package/dist/dom.d.ts +5 -0
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +23 -0
- package/dist/dom.js.map +1 -1
- package/dist/element.d.ts +9 -0
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +55 -0
- package/dist/element.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/io.d.ts +8 -3
- package/dist/io.d.ts.map +1 -1
- package/dist/io.js +38 -8
- package/dist/io.js.map +1 -1
- package/dist/panels.d.ts.map +1 -1
- package/dist/panels.js +17 -54
- package/dist/panels.js.map +1 -1
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +23 -6
- package/dist/preview.js.map +1 -1
- package/dist/schema-designer.d.ts.map +1 -1
- package/dist/schema-designer.js +15 -7
- package/dist/schema-designer.js.map +1 -1
- package/dist/settings-designer.d.ts +37 -0
- package/dist/settings-designer.d.ts.map +1 -0
- package/dist/settings-designer.js +224 -0
- package/dist/settings-designer.js.map +1 -0
- package/dist/shell.d.ts +24 -0
- package/dist/shell.d.ts.map +1 -1
- package/dist/shell.js +39 -7
- package/dist/shell.js.map +1 -1
- package/dist/store.d.ts +9 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js.map +1 -1
- package/dist/styles-panel.d.ts +10 -0
- package/dist/styles-panel.d.ts.map +1 -0
- package/dist/styles-panel.js +79 -0
- package/dist/styles-panel.js.map +1 -0
- package/dist/template-panel.d.ts.map +1 -1
- package/dist/template-panel.js +82 -5
- package/dist/template-panel.js.map +1 -1
- package/dist/theme-designer.d.ts +7 -2
- package/dist/theme-designer.d.ts.map +1 -1
- package/dist/theme-designer.js +79 -15
- package/dist/theme-designer.js.map +1 -1
- package/dist/theme-panel.d.ts.map +1 -1
- package/dist/theme-panel.js +19 -12
- package/dist/theme-panel.js.map +1 -1
- package/dist/validate.d.ts +16 -0
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +38 -7
- package/dist/validate.js.map +1 -1
- package/package.json +2 -2
package/dist/theme-panel.js
CHANGED
|
@@ -12,14 +12,28 @@ export function mountThemePanel(store, refreshers, themes = []) {
|
|
|
12
12
|
for (const entry of themes) {
|
|
13
13
|
themeSelect.append(h("option", { value: entry.name }, [entry.label ?? entry.name]));
|
|
14
14
|
}
|
|
15
|
+
// The selection is the person's: it names the draft's `previewTheme`
|
|
16
|
+
// and only a pick here changes it — tokens a host or agent layers on
|
|
17
|
+
// top never re-select by content.
|
|
18
|
+
const showChoice = (draft) => {
|
|
19
|
+
themeSelect.value = themes.some((entry) => entry.name === draft.previewTheme) ? draft.previewTheme ?? "" : "";
|
|
20
|
+
};
|
|
21
|
+
showChoice(store.get());
|
|
15
22
|
themeSelect.addEventListener("change", () => {
|
|
16
23
|
const entry = themes.find((candidate) => candidate.name === themeSelect.value);
|
|
17
24
|
store.update((draft) => {
|
|
18
|
-
|
|
19
|
-
|
|
25
|
+
const { theme: _theme, themeStyles: _styles, previewTheme: _name, ...rest } = draft;
|
|
26
|
+
if (entry === undefined)
|
|
20
27
|
return rest;
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
// A pick replaces any layered tokens. The entry's shared styles dress
|
|
29
|
+
// the preview too, so its classes look in the draft as they will
|
|
30
|
+
// under this theme.
|
|
31
|
+
return {
|
|
32
|
+
...rest,
|
|
33
|
+
theme: entry.tokens,
|
|
34
|
+
previewTheme: entry.name,
|
|
35
|
+
...(entry.styles === undefined ? {} : { themeStyles: entry.styles })
|
|
36
|
+
};
|
|
23
37
|
});
|
|
24
38
|
});
|
|
25
39
|
// Token reference: the EFFECTIVE preview tokens — the selected entry
|
|
@@ -55,14 +69,7 @@ export function mountThemePanel(store, refreshers, themes = []) {
|
|
|
55
69
|
}
|
|
56
70
|
renderTokenReference(store.get().theme);
|
|
57
71
|
refreshers.push((draft) => {
|
|
58
|
-
|
|
59
|
-
if (draft.theme === undefined) {
|
|
60
|
-
themeSelect.value = "";
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
const match = themes.find((entry) => JSON.stringify(entry.tokens) === JSON.stringify(draft.theme));
|
|
64
|
-
themeSelect.value = match?.name ?? "";
|
|
65
|
-
}
|
|
72
|
+
showChoice(draft);
|
|
66
73
|
renderTokenReference(draft.theme);
|
|
67
74
|
});
|
|
68
75
|
const rows = [
|
package/dist/theme-panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-panel.js","sourceRoot":"","sources":["../src/theme-panel.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGtD,MAAM,UAAU,eAAe,CAC7B,KAAiB,EACjB,UAA4C,EAC5C,MAAM,GAAiB,EAAE;IAOzB,qEAAqE;IACrE,6DAA6D;IAC7D,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5C,0DAA0D;IAC1D,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE;QAC9B,KAAK,EAAE,6BAA6B;KACrC,CAAC,CAAC;IACH,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACtE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,WAAW,CAAC,MAAM,CAChB,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAChE,CAAC;IACJ,CAAC;IACD,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/E,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACrB,
|
|
1
|
+
{"version":3,"file":"theme-panel.js","sourceRoot":"","sources":["../src/theme-panel.ts"],"names":[],"mappings":"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"}
|
package/dist/validate.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WidgetStyles } from "@widgentic/core";
|
|
1
2
|
import type { WidgetContractError } from "@widgentic/core";
|
|
2
3
|
import type { ThemeError } from "@widgentic/core";
|
|
3
4
|
import type { WidgetDraft } from "./store.js";
|
|
@@ -29,6 +30,13 @@ export interface DesignerDiagnostics {
|
|
|
29
30
|
load?: string;
|
|
30
31
|
/** Shared actions referenced by the template or `load` that are not among the supplied ones. */
|
|
31
32
|
actionRefs?: string;
|
|
33
|
+
/**
|
|
34
|
+
* A warning, never blocking: without `descriptor.dataShape` agents that
|
|
35
|
+
* list the widget see a placeholder instead of the data it expects.
|
|
36
|
+
*/
|
|
37
|
+
dataShape?: string;
|
|
38
|
+
/** Warnings, never blocking: what the validator would ignore in the inline `dataSchema`. */
|
|
39
|
+
dataSchema?: string[];
|
|
32
40
|
/** True when the draft can be registered and previewed. */
|
|
33
41
|
previewable: boolean;
|
|
34
42
|
}
|
|
@@ -52,6 +60,14 @@ export declare function effectiveDataSchema(draft: WidgetDraft, schemas?: {
|
|
|
52
60
|
name: string;
|
|
53
61
|
schema: Record<string, unknown>;
|
|
54
62
|
}[]): Record<string, unknown> | undefined;
|
|
63
|
+
/** What saving would refuse about a kind, in the store's terms; `undefined` when acceptable. */
|
|
64
|
+
export declare function kindProblem(kind: string): string | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Detect style entries the renderer would skip, using only the public
|
|
67
|
+
* generator: a probe that produces no CSS was filtered by the safety
|
|
68
|
+
* guards. Selector and per-declaration issues are reported separately.
|
|
69
|
+
*/
|
|
70
|
+
export declare function auditStyles(styles: WidgetStyles | undefined): StyleIssue[];
|
|
55
71
|
/** Run every validator; total — never throws on any draft shape. */
|
|
56
72
|
export declare function deriveDiagnostics(draft: WidgetDraft, options?: DeriveOptions): DesignerDiagnostics;
|
|
57
73
|
//# sourceMappingURL=validate.d.ts.map
|
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,wDAAwD;IACxD,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,2DAA2D;IAC3D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,CAAC;IAC9D,+DAA+D;IAC/D,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAAO,GAChE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAOrC;AAID,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ5D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,UAAU,EAAE,CAkC1E;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,aAAkB,GAC1B,mBAAmB,CAsFrB"}
|
package/dist/validate.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Everything here goes through public package entries — the designer owns
|
|
5
5
|
* no validation logic of its own.
|
|
6
6
|
*/
|
|
7
|
-
import { isPlainObject } from "@widgentic/core";
|
|
7
|
+
import { auditDataSchema, isPlainObject, PROPERTY_NAME, SAFE_IDENTIFIER, STYLE_RULES } from "@widgentic/core";
|
|
8
8
|
import { createCatalog, validateDataAgainstSchema, widgetStylesToCss } from "@widgentic/core";
|
|
9
9
|
import { collectActionRefs, parsePath, validateTemplate } from "@widgentic/core";
|
|
10
10
|
import { validateLoadBinding } from "@widgentic/core";
|
|
@@ -23,12 +23,22 @@ export function effectiveDataSchema(draft, schemas = []) {
|
|
|
23
23
|
return isPlainObject(inline) ? inline : undefined;
|
|
24
24
|
}
|
|
25
25
|
const BASE_KINDS = new Set(createCatalog().kinds());
|
|
26
|
+
/** What saving would refuse about a kind, in the store's terms; `undefined` when acceptable. */
|
|
27
|
+
export function kindProblem(kind) {
|
|
28
|
+
if (!SAFE_IDENTIFIER.test(kind)) {
|
|
29
|
+
return `INVALID_IDENTIFIER — '${kind}' may use letters, digits, '.', '_' or '-' only.`;
|
|
30
|
+
}
|
|
31
|
+
if (BASE_KINDS.has(kind)) {
|
|
32
|
+
return `RESERVED_KIND — '${kind}' is a built-in kind; give the widget its own kind.`;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
26
36
|
/**
|
|
27
37
|
* Detect style entries the renderer would skip, using only the public
|
|
28
38
|
* generator: a probe that produces no CSS was filtered by the safety
|
|
29
39
|
* guards. Selector and per-declaration issues are reported separately.
|
|
30
40
|
*/
|
|
31
|
-
function auditStyles(styles) {
|
|
41
|
+
export function auditStyles(styles) {
|
|
32
42
|
if (!isPlainObject(styles))
|
|
33
43
|
return [];
|
|
34
44
|
const issues = [];
|
|
@@ -36,7 +46,7 @@ function auditStyles(styles) {
|
|
|
36
46
|
if (widgetStylesToCss({ [selector]: { color: "red" } }) === "") {
|
|
37
47
|
issues.push({
|
|
38
48
|
selector,
|
|
39
|
-
message:
|
|
49
|
+
message: `Selector would be skipped. ${STYLE_RULES.selectors} ${STYLE_RULES.banned}`
|
|
40
50
|
});
|
|
41
51
|
continue;
|
|
42
52
|
}
|
|
@@ -47,10 +57,15 @@ function auditStyles(styles) {
|
|
|
47
57
|
for (const [property, value] of Object.entries(declarations)) {
|
|
48
58
|
if (typeof value !== "string" ||
|
|
49
59
|
widgetStylesToCss({ ".wg-probe": { [property]: value } }) === "") {
|
|
60
|
+
// Name the part at fault: the property name, or else the value.
|
|
50
61
|
issues.push({
|
|
51
62
|
selector,
|
|
52
63
|
property,
|
|
53
|
-
message:
|
|
64
|
+
message: !PROPERTY_NAME.test(property)
|
|
65
|
+
? `Property would be skipped. ${STYLE_RULES.propertyNames}`
|
|
66
|
+
: typeof value !== "string"
|
|
67
|
+
? "Value would be skipped: it must be a string."
|
|
68
|
+
: `Value would be skipped. ${STYLE_RULES.banned}`
|
|
54
69
|
});
|
|
55
70
|
}
|
|
56
71
|
}
|
|
@@ -63,8 +78,21 @@ export function deriveDiagnostics(draft, options = {}) {
|
|
|
63
78
|
if (typeof draft.kind !== "string" || draft.kind.trim().length === 0) {
|
|
64
79
|
diagnostics.kind = "Kind must be a non-empty id.";
|
|
65
80
|
}
|
|
66
|
-
else
|
|
67
|
-
|
|
81
|
+
else {
|
|
82
|
+
const problem = kindProblem(draft.kind);
|
|
83
|
+
if (problem !== undefined)
|
|
84
|
+
diagnostics.kind = problem;
|
|
85
|
+
}
|
|
86
|
+
const dataShape = draft.descriptor?.dataShape;
|
|
87
|
+
if (typeof dataShape !== "string" || dataShape.trim() === "") {
|
|
88
|
+
diagnostics.dataShape =
|
|
89
|
+
"Data shape is empty — agents listing this widget will see a placeholder instead of the data it expects.";
|
|
90
|
+
}
|
|
91
|
+
const inlineSchema = draft.descriptor?.dataSchema;
|
|
92
|
+
if (isPlainObject(inlineSchema)) {
|
|
93
|
+
const warnings = auditDataSchema(inlineSchema, "dataSchema");
|
|
94
|
+
if (warnings.length > 0)
|
|
95
|
+
diagnostics.dataSchema = warnings;
|
|
68
96
|
}
|
|
69
97
|
const template = validateTemplate(draft.template);
|
|
70
98
|
if (!template.ok) {
|
|
@@ -85,7 +113,10 @@ export function deriveDiagnostics(draft, options = {}) {
|
|
|
85
113
|
diagnostics.schemaRef =
|
|
86
114
|
"A descriptor carries 'dataSchema' OR 'dataSchemaRef', never both.";
|
|
87
115
|
}
|
|
88
|
-
else if (
|
|
116
|
+
else if (
|
|
117
|
+
// Unverifiable without the host's schemas: never a false "unknown".
|
|
118
|
+
options.schemas !== undefined &&
|
|
119
|
+
options.schemas.every((entry) => entry.name !== ref)) {
|
|
89
120
|
diagnostics.schemaRef = `References unknown schema '${ref}' — it is not among the supplied shared schemas.`;
|
|
90
121
|
}
|
|
91
122
|
}
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@widgentic/designer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Hostable widgentic designers: widget, theme, schema and action designers as functions and custom elements, plus a single-file browser bundle.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -44,6 +44,6 @@
|
|
|
44
44
|
"clean": "rm -rf dist"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@widgentic/core": "^0.
|
|
47
|
+
"@widgentic/core": "^0.12.0"
|
|
48
48
|
}
|
|
49
49
|
}
|