@tai42/studio-sdk 30.0.0 → 31.0.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 +98 -10
- package/dist/components/agent-picker.d.ts +1 -1
- package/dist/components/agent-picker.d.ts.map +1 -1
- package/dist/components/agent-picker.js +1 -0
- package/dist/components/agent-picker.js.map +1 -1
- package/dist/components/channel-picker.d.ts +1 -1
- package/dist/components/channel-picker.d.ts.map +1 -1
- package/dist/components/channel-picker.js +1 -0
- package/dist/components/channel-picker.js.map +1 -1
- package/dist/components/combo-draft-editor.d.ts +31 -0
- package/dist/components/combo-draft-editor.d.ts.map +1 -0
- package/dist/components/combo-draft-editor.js +16 -0
- package/dist/components/combo-draft-editor.js.map +1 -0
- package/dist/components/committed-combo-list.d.ts +17 -0
- package/dist/components/committed-combo-list.d.ts.map +1 -0
- package/dist/components/{extension-combo-parts.js → committed-combo-list.js} +2 -22
- package/dist/components/committed-combo-list.js.map +1 -0
- package/dist/components/components.css +53 -0
- package/dist/components/explorer-body.d.ts +1 -0
- package/dist/components/explorer-body.d.ts.map +1 -1
- package/dist/components/explorer-body.js +6 -4
- package/dist/components/explorer-body.js.map +1 -1
- package/dist/components/explorer-view.d.ts +16 -7
- package/dist/components/explorer-view.d.ts.map +1 -1
- package/dist/components/explorer-view.js +27 -13
- package/dist/components/explorer-view.js.map +1 -1
- package/dist/components/extension-combo-builder.d.ts +4 -4
- package/dist/components/extension-combo-builder.js +3 -2
- package/dist/components/extension-combo-builder.js.map +1 -1
- package/dist/components/extension-config-editor.js.map +1 -1
- package/dist/components/field.d.ts +6 -0
- package/dist/components/field.d.ts.map +1 -1
- package/dist/components/field.js +15 -2
- package/dist/components/field.js.map +1 -1
- package/dist/components/folder-actions.d.ts +51 -0
- package/dist/components/folder-actions.d.ts.map +1 -0
- package/dist/components/folder-actions.js +173 -0
- package/dist/components/folder-actions.js.map +1 -0
- package/dist/components/folder-filing.d.ts +32 -0
- package/dist/components/folder-filing.d.ts.map +1 -0
- package/dist/components/folder-filing.js +51 -0
- package/dist/components/folder-filing.js.map +1 -0
- package/dist/components/folder-nav.d.ts +9 -4
- package/dist/components/folder-nav.d.ts.map +1 -1
- package/dist/components/folder-nav.js +18 -22
- package/dist/components/folder-nav.js.map +1 -1
- package/dist/components/folder-occupancy.d.ts +27 -0
- package/dist/components/folder-occupancy.d.ts.map +1 -0
- package/dist/components/folder-occupancy.js +54 -0
- package/dist/components/folder-occupancy.js.map +1 -0
- package/dist/components/named-list-picker.d.ts +5 -3
- package/dist/components/named-list-picker.d.ts.map +1 -1
- package/dist/components/named-list-picker.js +7 -7
- package/dist/components/named-list-picker.js.map +1 -1
- package/dist/components/primitives.d.ts +2 -1
- package/dist/components/primitives.d.ts.map +1 -1
- package/dist/components/primitives.js +2 -1
- package/dist/components/primitives.js.map +1 -1
- package/dist/components/searchable-select-model.d.ts +40 -0
- package/dist/components/searchable-select-model.d.ts.map +1 -0
- package/dist/components/searchable-select-model.js +69 -0
- package/dist/components/searchable-select-model.js.map +1 -0
- package/dist/components/searchable-select.d.ts +38 -0
- package/dist/components/searchable-select.d.ts.map +1 -0
- package/dist/components/searchable-select.js +200 -0
- package/dist/components/searchable-select.js.map +1 -0
- package/dist/components/selected-tool-badges.d.ts +13 -0
- package/dist/components/selected-tool-badges.d.ts.map +1 -0
- package/dist/components/selected-tool-badges.js +14 -0
- package/dist/components/selected-tool-badges.js.map +1 -0
- package/dist/components/subject-section.d.ts.map +1 -1
- package/dist/components/subject-section.js +2 -2
- package/dist/components/subject-section.js.map +1 -1
- package/dist/components/table.d.ts +7 -1
- package/dist/components/table.d.ts.map +1 -1
- package/dist/components/table.js +2 -2
- package/dist/components/table.js.map +1 -1
- package/dist/components/tag-filter-field.d.ts +11 -0
- package/dist/components/tag-filter-field.d.ts.map +1 -0
- package/dist/components/tag-filter-field.js +15 -0
- package/dist/components/tag-filter-field.js.map +1 -0
- package/dist/components/tool-meta-access.d.ts +28 -0
- package/dist/components/tool-meta-access.d.ts.map +1 -0
- package/dist/components/tool-meta-access.js +65 -0
- package/dist/components/tool-meta-access.js.map +1 -0
- package/dist/components/tool-name-entry.d.ts +26 -0
- package/dist/components/tool-name-entry.d.ts.map +1 -0
- package/dist/components/tool-name-entry.js +43 -0
- package/dist/components/tool-name-entry.js.map +1 -0
- package/dist/components/tool-picker.d.ts +24 -19
- package/dist/components/tool-picker.d.ts.map +1 -1
- package/dist/components/tool-picker.js +55 -35
- package/dist/components/tool-picker.js.map +1 -1
- package/dist/components/tool-select.d.ts +26 -0
- package/dist/components/tool-select.d.ts.map +1 -0
- package/dist/components/tool-select.js +82 -0
- package/dist/components/tool-select.js.map +1 -0
- package/dist/extension-combos.d.ts +6 -1
- package/dist/extension-combos.d.ts.map +1 -1
- package/dist/extension-combos.js +8 -0
- package/dist/extension-combos.js.map +1 -1
- package/dist/hooks/useApi.d.ts +1 -0
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/dist/hooks/useSystemKinds.d.ts +27 -12
- package/dist/hooks/useSystemKinds.d.ts.map +1 -1
- package/dist/hooks/useSystemKinds.js +56 -16
- package/dist/hooks/useSystemKinds.js.map +1 -1
- package/dist/index.d.ts +51 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -26
- package/dist/index.js.map +1 -1
- package/dist/marketplace-install/use-mount-install.d.ts +6 -6
- package/dist/plugin/version.d.ts +1 -1
- package/dist/plugin/version.js +1 -1
- package/dist/schema-editor/SchemaEditor.d.ts +7 -2
- package/dist/schema-editor/SchemaEditor.d.ts.map +1 -1
- package/dist/schema-editor/SchemaEditor.js +1 -1
- package/dist/schema-editor/SchemaEditor.js.map +1 -1
- package/dist/schema-editor/index.d.ts +2 -2
- package/dist/schema-editor/index.d.ts.map +1 -1
- package/dist/schema-form/array-field.d.ts.map +1 -1
- package/dist/schema-form/array-field.js +6 -2
- package/dist/schema-form/array-field.js.map +1 -1
- package/dist/schema-form/classify.d.ts +4 -1
- package/dist/schema-form/classify.d.ts.map +1 -1
- package/dist/schema-form/classify.js +36 -15
- package/dist/schema-form/classify.js.map +1 -1
- package/dist/schema-form/collapsed-object-field.d.ts +20 -0
- package/dist/schema-form/collapsed-object-field.d.ts.map +1 -0
- package/dist/schema-form/collapsed-object-field.js +14 -0
- package/dist/schema-form/collapsed-object-field.js.map +1 -0
- package/dist/schema-form/context.d.ts +27 -1
- package/dist/schema-form/context.d.ts.map +1 -1
- package/dist/schema-form/context.js +14 -0
- package/dist/schema-form/context.js.map +1 -1
- package/dist/schema-form/default-value.d.ts +21 -6
- package/dist/schema-form/default-value.d.ts.map +1 -1
- package/dist/schema-form/default-value.js +74 -15
- package/dist/schema-form/default-value.js.map +1 -1
- package/dist/schema-form/expression-field.d.ts +48 -0
- package/dist/schema-form/expression-field.d.ts.map +1 -0
- package/dist/schema-form/expression-field.js +88 -0
- package/dist/schema-form/expression-field.js.map +1 -0
- package/dist/schema-form/field-model.d.ts +23 -4
- package/dist/schema-form/field-model.d.ts.map +1 -1
- package/dist/schema-form/field-node.d.ts.map +1 -1
- package/dist/schema-form/field-node.js +16 -3
- package/dist/schema-form/field-node.js.map +1 -1
- package/dist/schema-form/index.d.ts +3 -3
- package/dist/schema-form/index.d.ts.map +1 -1
- package/dist/schema-form/index.js +2 -2
- package/dist/schema-form/index.js.map +1 -1
- package/dist/schema-form/object-fields.d.ts +6 -3
- package/dist/schema-form/object-fields.d.ts.map +1 -1
- package/dist/schema-form/object-fields.js +14 -3
- package/dist/schema-form/object-fields.js.map +1 -1
- package/dist/schema-form/record-field.d.ts.map +1 -1
- package/dist/schema-form/record-field.js +6 -2
- package/dist/schema-form/record-field.js.map +1 -1
- package/dist/schema-form/seeding-action.d.ts +15 -0
- package/dist/schema-form/seeding-action.d.ts.map +1 -0
- package/dist/schema-form/seeding-action.js +35 -0
- package/dist/schema-form/seeding-action.js.map +1 -0
- package/dist/schema-form/string-annotations.d.ts +22 -8
- package/dist/schema-form/string-annotations.d.ts.map +1 -1
- package/dist/schema-form/string-annotations.js +39 -14
- package/dist/schema-form/string-annotations.js.map +1 -1
- package/dist/schema-form/string-field.js +2 -84
- package/dist/schema-form/string-field.js.map +1 -1
- package/dist/schema-form/templated-field.d.ts +13 -0
- package/dist/schema-form/templated-field.d.ts.map +1 -0
- package/dist/schema-form/templated-field.js +43 -0
- package/dist/schema-form/templated-field.js.map +1 -0
- package/dist/schema-form/union-field.d.ts.map +1 -1
- package/dist/schema-form/union-field.js +6 -2
- package/dist/schema-form/union-field.js.map +1 -1
- package/dist/schema-form/union.d.ts +4 -4
- package/dist/schema-form/union.d.ts.map +1 -1
- package/dist/schema-form/union.js +8 -1
- package/dist/schema-form/union.js.map +1 -1
- package/dist/schema-form/validate.d.ts.map +1 -1
- package/dist/schema-form/validate.js +28 -0
- package/dist/schema-form/validate.js.map +1 -1
- package/dist/search-match.d.ts +29 -0
- package/dist/search-match.d.ts.map +1 -0
- package/dist/search-match.js +38 -0
- package/dist/search-match.js.map +1 -0
- package/dist/tool-organization.d.ts +15 -0
- package/dist/tool-organization.d.ts.map +1 -0
- package/dist/tool-organization.js +6 -0
- package/dist/tool-organization.js.map +1 -0
- package/package.json +3 -2
- package/src/components/agent-picker.tsx +2 -1
- package/src/components/channel-picker.tsx +2 -1
- package/src/components/combo-draft-editor.tsx +96 -0
- package/src/components/{extension-combo-parts.tsx → committed-combo-list.tsx} +4 -105
- package/src/components/components.css +53 -0
- package/src/components/explorer-body.tsx +29 -5
- package/src/components/explorer-view.tsx +48 -17
- package/src/components/extension-combo-builder.tsx +10 -10
- package/src/components/extension-config-editor.tsx +3 -3
- package/src/components/field.tsx +18 -2
- package/src/components/folder-actions.tsx +341 -0
- package/src/components/folder-filing.tsx +109 -0
- package/src/components/folder-nav.tsx +26 -10
- package/src/components/folder-occupancy.ts +83 -0
- package/src/components/named-list-picker.tsx +11 -7
- package/src/components/primitives.tsx +2 -1
- package/src/components/searchable-select-model.ts +105 -0
- package/src/components/searchable-select.tsx +432 -0
- package/src/components/selected-tool-badges.tsx +41 -0
- package/src/components/subject-section.tsx +3 -2
- package/src/components/table.tsx +12 -2
- package/src/components/tag-filter-field.tsx +37 -0
- package/src/components/tool-meta-access.tsx +101 -0
- package/src/components/tool-name-entry.tsx +77 -0
- package/src/components/tool-picker.tsx +87 -52
- package/src/components/tool-select.tsx +136 -0
- package/src/extension-combos.ts +15 -1
- package/src/hooks/useSystemKinds.tsx +77 -17
- package/src/index.ts +98 -94
- package/src/plugin/version.ts +1 -1
- package/src/schema-editor/SchemaEditor.tsx +9 -3
- package/src/schema-editor/index.ts +2 -2
- package/src/schema-form/array-field.tsx +10 -2
- package/src/schema-form/classify.ts +41 -15
- package/src/schema-form/collapsed-object-field.tsx +56 -0
- package/src/schema-form/context.ts +33 -1
- package/src/schema-form/default-value.ts +89 -15
- package/src/schema-form/expression-field.tsx +162 -0
- package/src/schema-form/field-model.ts +27 -4
- package/src/schema-form/field-node.tsx +41 -2
- package/src/schema-form/index.ts +3 -2
- package/src/schema-form/object-fields.tsx +11 -4
- package/src/schema-form/record-field.tsx +10 -2
- package/src/schema-form/seeding-action.ts +44 -0
- package/src/schema-form/string-annotations.ts +40 -14
- package/src/schema-form/string-field.tsx +2 -147
- package/src/schema-form/templated-field.tsx +124 -0
- package/src/schema-form/union-field.tsx +11 -2
- package/src/schema-form/union.ts +12 -5
- package/src/schema-form/validate.ts +28 -0
- package/src/search-match.ts +41 -0
- package/src/tool-organization.ts +34 -0
- package/dist/components/extension-combo-parts.d.ts +0 -46
- package/dist/components/extension-combo-parts.d.ts.map +0 -1
- package/dist/components/extension-combo-parts.js.map +0 -1
- package/dist/components/tool-picker-parts.d.ts +0 -43
- package/dist/components/tool-picker-parts.d.ts.map +0 -1
- package/dist/components/tool-picker-parts.js +0 -89
- package/dist/components/tool-picker-parts.js.map +0 -1
- package/src/components/tool-picker-parts.tsx +0 -195
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
* opted into.
|
|
13
13
|
*
|
|
14
14
|
* `skeletonValueForSchema` is the sibling entry for programmatic reseeds (a
|
|
15
|
-
* union variant switch): same walk, but required
|
|
16
|
-
*
|
|
15
|
+
* union variant switch): same walk, but every required field with a known empty
|
|
16
|
+
* value is minted, so the committed seed has no missing required field. A minted
|
|
17
|
+
* empty value may still fail its own value check (see the sibling's docstring).
|
|
17
18
|
*/
|
|
18
19
|
import { classifySchema } from './classify';
|
|
19
20
|
/** The explicit `default` (wrapper takes precedence over the resolved node), if any. */
|
|
@@ -30,33 +31,85 @@ function explicitDefault(raw, resolved) {
|
|
|
30
31
|
* whole-tool-schema call).
|
|
31
32
|
*/
|
|
32
33
|
export function defaultValueForSchema(schema, root = schema) {
|
|
33
|
-
return seedValue(schema, root, false);
|
|
34
|
+
return finiteSeed(seedValue(schema, root, false, new Set()));
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* A SELF-CONSISTENT skeleton for a schema — the seed a variant switch (or any
|
|
37
38
|
* other programmatic reseed) commits as the field's new value. Where
|
|
38
39
|
* {@link defaultValueForSchema} deliberately leaves a required scalar absent so
|
|
39
|
-
* a fresh form flags it, a committed skeleton
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* the `[]` / `{}` /
|
|
43
|
-
*
|
|
44
|
-
*
|
|
40
|
+
* a fresh form flags it, a committed skeleton carries no missing required field,
|
|
41
|
+
* so here EVERY required field with a known empty value is minted: required
|
|
42
|
+
* strings seed `''`, numbers `0`, booleans `false`, a templated text an empty
|
|
43
|
+
* inline source `{ content: '' }` — consistently with the `[]` / `{}` /
|
|
44
|
+
* nested-object seeds the default path already mints. A minted empty value is
|
|
45
|
+
* not promised to pass its own value check: an empty templated text fails it
|
|
46
|
+
* ("needs inline content or a stored template"), as does `''` under a
|
|
47
|
+
* `minLength` or a `pattern`, and validation reports that error like any
|
|
48
|
+
* other. Kinds with no empty value to name (enum,
|
|
49
|
+
* union, free-form JSON) stay absent either way: inventing a choice would be a
|
|
50
|
+
* lie the user never made.
|
|
45
51
|
*/
|
|
46
52
|
export function skeletonValueForSchema(schema, root = schema) {
|
|
47
|
-
return seedValue(schema, root, true);
|
|
53
|
+
return finiteSeed(seedValue(schema, root, true, new Set()));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The walk's answer when an object's required structure leads back into an object
|
|
57
|
+
* shape it is already inside with no `null` accepted anywhere on the way: that
|
|
58
|
+
* nesting never ends, so the object has no finite value.
|
|
59
|
+
*/
|
|
60
|
+
const NO_FINITE_VALUE = Symbol('no finite value');
|
|
61
|
+
/**
|
|
62
|
+
* Thrown by {@link defaultValueForSchema} and {@link skeletonValueForSchema} when the
|
|
63
|
+
* schema admits no finite value: a chain of required properties refers back to its
|
|
64
|
+
* own definition with no `null` accepted on the way. A caller that seeds on a user
|
|
65
|
+
* action catches exactly this type to show the failure on its field; any other error
|
|
66
|
+
* is not a seeding outcome and propagates.
|
|
67
|
+
*/
|
|
68
|
+
export class NoFiniteValueError extends Error {
|
|
69
|
+
constructor() {
|
|
70
|
+
super('SchemaForm: the schema admits no finite value: its required properties refer back to their own definition with no null accepted on the way');
|
|
71
|
+
this.name = 'NoFiniteValueError';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** The entry points' result: the seeded value, or {@link NoFiniteValueError} when none is finite. */
|
|
75
|
+
function finiteSeed(seed) {
|
|
76
|
+
if (seed === NO_FINITE_VALUE)
|
|
77
|
+
throw new NoFiniteValueError();
|
|
78
|
+
return seed;
|
|
48
79
|
}
|
|
49
80
|
/**
|
|
50
81
|
* Seed an object's required nested structure and any optional property that
|
|
51
82
|
* carries an explicit default. A required property recurses; an optional one is
|
|
52
83
|
* materialized only when it declares a `default`, so its own required children
|
|
53
84
|
* never raise errors on a field the user did not opt into.
|
|
85
|
+
*
|
|
86
|
+
* `expanding` holds the object shapes being seeded on the way down. Reaching one of
|
|
87
|
+
* them again (a self-referencing definition) answers {@link NO_FINITE_VALUE}, and
|
|
88
|
+
* so does an object with any required property that answers it. A `nullable` object
|
|
89
|
+
* turns that answer into `null`, the value that ends the nesting there. So the
|
|
90
|
+
* answer climbs to the nearest nullable object above the point where the cycle
|
|
91
|
+
* closes, and reaches the entry point only when no object on the way accepts
|
|
92
|
+
* `null`: then no finite value exists.
|
|
93
|
+
*/
|
|
94
|
+
function seedObject(model, nullable, root, mintScalars, expanding) {
|
|
95
|
+
const seeded = seedProperties(model, root, mintScalars, expanding);
|
|
96
|
+
return seeded === NO_FINITE_VALUE && nullable ? null : seeded;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* An object's own seed (see {@link seedObject}): its properties' seeds, or
|
|
100
|
+
* {@link NO_FINITE_VALUE} when its shape is already being seeded above or a required
|
|
101
|
+
* property has no finite value.
|
|
54
102
|
*/
|
|
55
|
-
function
|
|
103
|
+
function seedProperties(model, root, mintScalars, expanding) {
|
|
104
|
+
if (expanding.has(model.shape))
|
|
105
|
+
return NO_FINITE_VALUE;
|
|
106
|
+
const inside = new Set(expanding).add(model.shape);
|
|
56
107
|
const entries = [];
|
|
57
108
|
for (const [name, propSchema] of model.properties) {
|
|
58
109
|
if (model.required.has(name)) {
|
|
59
|
-
const seeded = seedValue(propSchema, root, mintScalars);
|
|
110
|
+
const seeded = seedValue(propSchema, root, mintScalars, inside);
|
|
111
|
+
if (seeded === NO_FINITE_VALUE)
|
|
112
|
+
return NO_FINITE_VALUE;
|
|
60
113
|
if (seeded !== undefined)
|
|
61
114
|
entries.push([name, seeded]);
|
|
62
115
|
continue;
|
|
@@ -89,9 +142,11 @@ function seedScalar(kind, mintScalars) {
|
|
|
89
142
|
/**
|
|
90
143
|
* The shared seeding walk. `mintScalars` distinguishes the two entry points
|
|
91
144
|
* above: `false` leaves value-less required scalars absent; `true` mints their
|
|
92
|
-
* type's empty value.
|
|
145
|
+
* type's empty value. `expanding` holds the object shapes being seeded on the way
|
|
146
|
+
* down; a nullable object whose own seed has no finite value seeds `null` (see
|
|
147
|
+
* {@link seedObject}).
|
|
93
148
|
*/
|
|
94
|
-
function seedValue(schema, root, mintScalars) {
|
|
149
|
+
function seedValue(schema, root, mintScalars, expanding) {
|
|
95
150
|
const classified = classifySchema(schema, root);
|
|
96
151
|
const explicit = explicitDefault(schema, classified.schema);
|
|
97
152
|
if (explicit.present)
|
|
@@ -101,7 +156,7 @@ function seedValue(schema, root, mintScalars) {
|
|
|
101
156
|
case 'const':
|
|
102
157
|
return model.value;
|
|
103
158
|
case 'object':
|
|
104
|
-
return seedObject(model, root, mintScalars);
|
|
159
|
+
return seedObject(model, classified.nullable, root, mintScalars, expanding);
|
|
105
160
|
case 'array':
|
|
106
161
|
case 'multiselect':
|
|
107
162
|
return [];
|
|
@@ -111,6 +166,10 @@ function seedValue(schema, root, mintScalars) {
|
|
|
111
166
|
case 'number':
|
|
112
167
|
case 'boolean':
|
|
113
168
|
return seedScalar(model.kind, mintScalars);
|
|
169
|
+
case 'templated-text':
|
|
170
|
+
// Inline is the templated text's own starting mode, so its empty value is an
|
|
171
|
+
// empty inline source; the default path leaves it absent like a scalar.
|
|
172
|
+
return mintScalars ? { content: '' } : undefined;
|
|
114
173
|
case 'enum':
|
|
115
174
|
case 'union':
|
|
116
175
|
case 'json':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-value.js","sourceRoot":"","sources":["../../src/schema-form/default-value.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"default-value.js","sourceRoot":"","sources":["../../src/schema-form/default-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The injected expression door as a schema-form field: an `x-tai42-expression`
|
|
3
|
+
* annotation mapped onto the door's input-shape descriptor, and the door mounted
|
|
4
|
+
* inside a Suspense boundary that paints a resting shell while a lazily-injected
|
|
5
|
+
* door resolves. A jq-annotated string draws it as the whole field; a jq-annotated
|
|
6
|
+
* templated-text field draws it as its inline editor.
|
|
7
|
+
*
|
|
8
|
+
* NO JQ EDGE: the door arrives from the host (see `ExpressionFieldContext`);
|
|
9
|
+
* this module names no jq type.
|
|
10
|
+
*/
|
|
11
|
+
import type { ReactNode } from 'react';
|
|
12
|
+
import type { ExpressionFieldComponent } from './context';
|
|
13
|
+
import type { ExpressionAnnotation } from './field-model';
|
|
14
|
+
/**
|
|
15
|
+
* An expression-annotated field, rendered through the injected door: a
|
|
16
|
+
* multiline resting control with the door's own visual-editor button. The door
|
|
17
|
+
* brings its own label/description/error chrome (a11y-linked slots), so it is NOT
|
|
18
|
+
* wrapped in the form's `Field` component — the annotation's descriptor fields map
|
|
19
|
+
* onto the input-shape descriptor, and the form's per-field error feeds `error`.
|
|
20
|
+
*
|
|
21
|
+
* The door is rendered as an ELEMENT, never called as a function, so its hooks and
|
|
22
|
+
* state (editor open, worker handle) belong to it and survive re-renders of this
|
|
23
|
+
* field.
|
|
24
|
+
*
|
|
25
|
+
* It mounts inside a `Suspense` boundary because a host is free to inject a `lazy`
|
|
26
|
+
* door to keep the jq subgraph in a split chunk of ITS OWN bundle. The fallback
|
|
27
|
+
* paints the resting shell — label/description/error chrome around the current
|
|
28
|
+
* value in a read-only multiline control — so the field holds its layout and keeps
|
|
29
|
+
* the value visible while that chunk resolves, and the swap does not flash. A door
|
|
30
|
+
* injected eagerly never suspends and renders straight through.
|
|
31
|
+
*
|
|
32
|
+
* The form passes only the props the field owns; a jq door's `serverValidate`,
|
|
33
|
+
* `onEditorOpenChange`, and `compact` stay unwired, because no author-time
|
|
34
|
+
* validation endpoint applies to a schema-declared field, the hosts that render
|
|
35
|
+
* `SchemaForm` register no global shortcuts to mute, and every sibling field shows
|
|
36
|
+
* a visible label (the compact variant is for dense host rows).
|
|
37
|
+
*/
|
|
38
|
+
export declare function ExpressionField({ component: Door, heading, description, error, expression, argName, value, onChange, }: {
|
|
39
|
+
component: ExpressionFieldComponent;
|
|
40
|
+
heading: string;
|
|
41
|
+
description: string | undefined;
|
|
42
|
+
error: string | undefined;
|
|
43
|
+
expression: ExpressionAnnotation;
|
|
44
|
+
argName: string;
|
|
45
|
+
value: string;
|
|
46
|
+
onChange: (value: string) => void;
|
|
47
|
+
}): ReactNode;
|
|
48
|
+
//# sourceMappingURL=expression-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-field.d.ts","sourceRoot":"","sources":["../../src/schema-form/expression-field.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,wBAAwB,EAAwB,MAAM,WAAW,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EAAE,IAAI,EACf,OAAO,EACP,WAAW,EACX,KAAK,EACL,UAAU,EACV,OAAO,EACP,KAAK,EACL,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,wBAAwB,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,UAAU,EAAE,oBAAoB,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,GAAG,SAAS,CA0BZ"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Suspense, useMemo } from 'react';
|
|
3
|
+
import { Field } from '../components/field';
|
|
4
|
+
import { Textarea } from '../components/inputs';
|
|
5
|
+
/**
|
|
6
|
+
* An expression-annotated field, rendered through the injected door: a
|
|
7
|
+
* multiline resting control with the door's own visual-editor button. The door
|
|
8
|
+
* brings its own label/description/error chrome (a11y-linked slots), so it is NOT
|
|
9
|
+
* wrapped in the form's `Field` component — the annotation's descriptor fields map
|
|
10
|
+
* onto the input-shape descriptor, and the form's per-field error feeds `error`.
|
|
11
|
+
*
|
|
12
|
+
* The door is rendered as an ELEMENT, never called as a function, so its hooks and
|
|
13
|
+
* state (editor open, worker handle) belong to it and survive re-renders of this
|
|
14
|
+
* field.
|
|
15
|
+
*
|
|
16
|
+
* It mounts inside a `Suspense` boundary because a host is free to inject a `lazy`
|
|
17
|
+
* door to keep the jq subgraph in a split chunk of ITS OWN bundle. The fallback
|
|
18
|
+
* paints the resting shell — label/description/error chrome around the current
|
|
19
|
+
* value in a read-only multiline control — so the field holds its layout and keeps
|
|
20
|
+
* the value visible while that chunk resolves, and the swap does not flash. A door
|
|
21
|
+
* injected eagerly never suspends and renders straight through.
|
|
22
|
+
*
|
|
23
|
+
* The form passes only the props the field owns; a jq door's `serverValidate`,
|
|
24
|
+
* `onEditorOpenChange`, and `compact` stay unwired, because no author-time
|
|
25
|
+
* validation endpoint applies to a schema-declared field, the hosts that render
|
|
26
|
+
* `SchemaForm` register no global shortcuts to mute, and every sibling field shows
|
|
27
|
+
* a visible label (the compact variant is for dense host rows).
|
|
28
|
+
*/
|
|
29
|
+
export function ExpressionField({ component: Door, heading, description, error, expression, argName, value, onChange, }) {
|
|
30
|
+
// Memoised: the descriptor's identity feeds the door's own memoisation, so a
|
|
31
|
+
// fresh object each keystroke would defeat it.
|
|
32
|
+
const shape = useMemo(() => expressionShape(expression, argName), [expression, argName]);
|
|
33
|
+
return (_jsx(Suspense, { fallback: _jsx(ExpressionFieldSkeleton, { heading: heading, description: description, error: error, value: value }), children: _jsx(Door, { label: heading, description: description, error: error, shape: shape, multiline: true, value: value, onChange: onChange }) }));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The resting shell shown while a lazily-injected door resolves. It mirrors the
|
|
37
|
+
* live door's footprint — the same label/description/error chrome wrapping a
|
|
38
|
+
* multiline control seeded with the current value — but the control is
|
|
39
|
+
* non-interactive (read-only, `aria-busy`) because there is nothing to edit yet. Matching the
|
|
40
|
+
* footprint is what keeps the Suspense swap from shifting layout or flashing.
|
|
41
|
+
*/
|
|
42
|
+
function ExpressionFieldSkeleton({ heading, description, error, value, }) {
|
|
43
|
+
return (_jsx(Field, { label: heading, description: description, error: error, children: _jsx(Textarea, { value: value, readOnly: true, "aria-busy": "true" }) }));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Map a classified expression annotation onto the door's input-shape descriptor.
|
|
47
|
+
* A bare annotation (`language` only) maps to NO descriptor — an undeclared shape
|
|
48
|
+
* is the honest rendering when the server said nothing about `.`. When any
|
|
49
|
+
* descriptor field is present, the required descriptor members the annotation
|
|
50
|
+
* omits fall back to neutral values rather than invented copy.
|
|
51
|
+
*/
|
|
52
|
+
function expressionShape(expression, argName) {
|
|
53
|
+
const declared = [
|
|
54
|
+
expression.label,
|
|
55
|
+
expression.blurb,
|
|
56
|
+
expression.keys,
|
|
57
|
+
expression.variables,
|
|
58
|
+
expression.returns,
|
|
59
|
+
expression.caveats,
|
|
60
|
+
].some((field) => field !== undefined) || expression.hasSample;
|
|
61
|
+
if (!declared)
|
|
62
|
+
return undefined;
|
|
63
|
+
return {
|
|
64
|
+
// Opaque, host-namespaced, stable per field (memoisation/telemetry only).
|
|
65
|
+
id: argName === '' ? 'tai42.schema-form' : `tai42.schema-form.${argName}`,
|
|
66
|
+
label: expression.label ?? 'input',
|
|
67
|
+
blurb: expression.blurb ?? '',
|
|
68
|
+
keys: expression.keys ?? [],
|
|
69
|
+
returns: expression.returns ?? '',
|
|
70
|
+
...(expression.caveats === undefined ? {} : { caveats: expression.caveats }),
|
|
71
|
+
...(expression.hasSample ? { sample: expression.sample } : {}),
|
|
72
|
+
...(expression.variables === undefined
|
|
73
|
+
? {}
|
|
74
|
+
: { variables: expression.variables.map(expressionVariable) }),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** Map one classified annotation variable onto the door's variable descriptor. */
|
|
78
|
+
function expressionVariable(variable) {
|
|
79
|
+
return {
|
|
80
|
+
name: variable.name,
|
|
81
|
+
blurb: variable.blurb,
|
|
82
|
+
// The annotation glosses no sub-keys of a variable's value, so the door gets
|
|
83
|
+
// the variable's shape as untyped (empty keys).
|
|
84
|
+
keys: [],
|
|
85
|
+
...(variable.hasSample ? { sample: variable.sample } : {}),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=expression-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-field.js","sourceRoot":"","sources":["../../src/schema-form/expression-field.tsx"],"names":[],"mappings":"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"}
|
|
@@ -65,10 +65,11 @@ export interface ExpressionAnnotationVariable {
|
|
|
65
65
|
readonly sample: unknown;
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
|
-
* The `x-tai42-expression` annotation on a string
|
|
69
|
-
* that the field's value is authored in a pipeline expression
|
|
70
|
-
* today) and optionally describes what `.` is for that expression.
|
|
71
|
-
* uses it to open the visual-editor door instead of a plain text box
|
|
68
|
+
* The `x-tai42-expression` annotation on a string or templated-text property: the
|
|
69
|
+
* server declares that the field's value is authored in a pipeline expression
|
|
70
|
+
* language (only jq today) and optionally describes what `.` is for that expression.
|
|
71
|
+
* The renderer uses it to open the visual-editor door instead of a plain text box
|
|
72
|
+
* (on a templated-text field, as its inline editor). The shape
|
|
72
73
|
* mirrors jq-studio's input-shape descriptor WITHOUT importing it — classification
|
|
73
74
|
* stays a pure schema concern; the renderer maps this onto a jq field declaration.
|
|
74
75
|
*/
|
|
@@ -157,13 +158,31 @@ export type FieldModel = {
|
|
|
157
158
|
readonly kind: 'object';
|
|
158
159
|
readonly properties: readonly (readonly [string, JsonSchema])[];
|
|
159
160
|
readonly required: ReadonlySet<string>;
|
|
161
|
+
/**
|
|
162
|
+
* The schema's own `properties` map, by identity. Every classification of one
|
|
163
|
+
* definition — through a `$ref`, a null-union or single-`allOf` wrapper, or an
|
|
164
|
+
* annotated property site — carries this same map, so a walker recognises a
|
|
165
|
+
* definition nested inside itself (a self-referencing schema) by it.
|
|
166
|
+
*/
|
|
167
|
+
readonly shape: Readonly<Record<string, JsonSchema>>;
|
|
160
168
|
} | {
|
|
161
169
|
readonly kind: 'record';
|
|
162
170
|
readonly values: JsonSchema;
|
|
171
|
+
} | {
|
|
172
|
+
readonly kind: 'templated-text';
|
|
173
|
+
/** Present when the property's `x-tai42-expression` annotation declares its
|
|
174
|
+
* inline content an expression: the inline editor is the expression door. */
|
|
175
|
+
readonly expression: ExpressionAnnotation | undefined;
|
|
163
176
|
} | {
|
|
164
177
|
readonly kind: 'union';
|
|
165
178
|
readonly variants: readonly UnionVariant[];
|
|
166
179
|
readonly discriminator: string | undefined;
|
|
180
|
+
/**
|
|
181
|
+
* The schema's own `anyOf`/`oneOf` member list, by identity: every
|
|
182
|
+
* classification of one union carries this same list, so a field can tell
|
|
183
|
+
* whether it still draws the union it drew before.
|
|
184
|
+
*/
|
|
185
|
+
readonly members: readonly JsonSchema[];
|
|
167
186
|
} | {
|
|
168
187
|
readonly kind: 'json';
|
|
169
188
|
readonly jsonType: 'object' | 'array' | 'any';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-model.d.ts","sourceRoot":"","sources":["../../src/schema-form/field-model.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,mFAAmF;AACnF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;qEACiE;IACjE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;qCACiC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED
|
|
1
|
+
{"version":3,"file":"field-model.d.ts","sourceRoot":"","sources":["../../src/schema-form/field-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-node.d.ts","sourceRoot":"","sources":["../../src/schema-form/field-node.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAQ,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"field-node.d.ts","sourceRoot":"","sources":["../../src/schema-form/field-node.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAQ,KAAK,SAAS,EAAc,MAAM,OAAO,CAAC;AAoBzD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGxE,UAAU,cAAc;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;CACjC;AAMD;;;;;;GAMG;AACH,iBAAS,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CA0BvD;AA8ND,eAAO,MAAM,SAAS,2DAAsB,CAAC"}
|
|
@@ -5,13 +5,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
5
5
|
* inline; every other kind delegates to a dedicated field component). Object,
|
|
6
6
|
* array, and union renderers recurse back through here for their children.
|
|
7
7
|
*/
|
|
8
|
-
import { memo } from 'react';
|
|
8
|
+
import { memo, useContext } from 'react';
|
|
9
9
|
import { Checkbox } from '../components/checkbox';
|
|
10
10
|
import { Field } from '../components/field';
|
|
11
11
|
import { NumberInput, TextInput } from '../components/inputs';
|
|
12
|
-
import { ownValue } from '../guards';
|
|
12
|
+
import { isRecord, ownValue } from '../guards';
|
|
13
13
|
import { ArrayField } from './array-field';
|
|
14
14
|
import { classifySchema } from './classify';
|
|
15
|
+
import { CollapsedObjectField } from './collapsed-object-field';
|
|
16
|
+
import { ExpandedShapesContext } from './context';
|
|
15
17
|
import { EnumField } from './enum-field';
|
|
16
18
|
import { FieldGroup } from './field-group';
|
|
17
19
|
import { JsonField } from './json-field';
|
|
@@ -20,6 +22,7 @@ import { ObjectFields } from './object-fields';
|
|
|
20
22
|
import { RecordField } from './record-field';
|
|
21
23
|
import { scalarLabel } from './resolve';
|
|
22
24
|
import { StringField } from './string-field';
|
|
25
|
+
import { TemplatedField } from './templated-field';
|
|
23
26
|
import { UnionField } from './union-field';
|
|
24
27
|
function labelText(explicit, label) {
|
|
25
28
|
return explicit ?? label ?? 'Value';
|
|
@@ -33,12 +36,15 @@ function labelText(explicit, label) {
|
|
|
33
36
|
*/
|
|
34
37
|
function FieldNodeImpl(props) {
|
|
35
38
|
const { root, value, onChange, path, required, idPrefix, errors } = props;
|
|
39
|
+
const expanded = useContext(ExpandedShapesContext);
|
|
36
40
|
const classified = classifySchema(props.schema, root);
|
|
37
41
|
const base = labelText(classified.title, props.label);
|
|
38
42
|
const heading = props.markRequired === true && required ? `${base} *` : base;
|
|
39
43
|
const { model, description } = classified;
|
|
40
44
|
return renderField({
|
|
41
45
|
model,
|
|
46
|
+
definition: classified.schema,
|
|
47
|
+
expanded,
|
|
42
48
|
nullable: classified.nullable,
|
|
43
49
|
heading,
|
|
44
50
|
description,
|
|
@@ -71,6 +77,8 @@ function renderField(args) {
|
|
|
71
77
|
return (_jsx(NumberField, { heading: heading, description: description, error: error, integer: model.integer, value: value, onChange: onChange }));
|
|
72
78
|
case 'boolean':
|
|
73
79
|
return (_jsx(BooleanField, { heading: heading, description: description, error: error, value: value, onChange: onChange }));
|
|
80
|
+
case 'templated-text':
|
|
81
|
+
return (_jsx(TemplatedField, { heading: heading, description: description, error: error, expression: model.expression, argName: path, required: required, value: value, onChange: onChange }));
|
|
74
82
|
case 'multiselect':
|
|
75
83
|
return (_jsx(MultiSelectField, { heading: heading, description: description, error: error, model: model, value: value, onChange: onChange }));
|
|
76
84
|
default:
|
|
@@ -85,7 +93,12 @@ function renderCompositeField(args, model) {
|
|
|
85
93
|
case 'array':
|
|
86
94
|
return (_jsx(ArrayField, { heading: heading, description: description, error: error, items: model.items, root: root, value: value, onChange: onChange, path: path, errors: errors, idPrefix: idPrefix, words: args.listWords }));
|
|
87
95
|
case 'object':
|
|
88
|
-
|
|
96
|
+
// A definition nested inside itself draws its fields only for a level the
|
|
97
|
+
// value holds; an absent level is one Add button, so the nesting stops at the data.
|
|
98
|
+
if (args.expanded.has(model.shape) && !isRecord(value)) {
|
|
99
|
+
return (_jsx(CollapsedObjectField, { heading: heading, description: description, error: error, definition: args.definition, shape: model.shape, root: root, onChange: onChange }));
|
|
100
|
+
}
|
|
101
|
+
return (_jsx(FieldGroup, { heading: heading, description: description, error: error, atRoot: path === '', children: _jsx(ObjectFields, { properties: model.properties, shape: model.shape, requiredKeys: model.required, root: root, value: value, onChange: onChange, path: path, errors: errors, idPrefix: idPrefix, skip: undefined, fieldWording: fieldWording }) }));
|
|
89
102
|
case 'record':
|
|
90
103
|
return (_jsx(RecordField, { heading: heading, description: description, error: error, values: model.values, root: root, value: value, onChange: onChange, path: path, errors: errors, idPrefix: idPrefix }));
|
|
91
104
|
case 'union':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-node.js","sourceRoot":"","sources":["../../src/schema-form/field-node.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"field-node.js","sourceRoot":"","sources":["../../src/schema-form/field-node.tsx"],"names":[],"mappings":"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"}
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
* from the ones the host provides.
|
|
31
31
|
*/
|
|
32
32
|
export type { RecordEntryContext, RecordEntryRenderer } from './context';
|
|
33
|
-
export type { ExpressionFieldComponent, ExpressionFieldProps, ExpressionInputKey, ExpressionInputShape, } from './context';
|
|
33
|
+
export type { ExpressionFieldComponent, ExpressionFieldProps, ExpressionInputKey, ExpressionInputShape, UseTemplatedTextCatalog, } from './context';
|
|
34
34
|
export { RecordEntryRendererContext } from './context';
|
|
35
|
-
export { ExpressionFieldContext } from './context';
|
|
35
|
+
export { ExpressionFieldContext, TemplatedTextCatalogContext } from './context';
|
|
36
36
|
export type { DateRangePair } from './date-range-field';
|
|
37
37
|
export { dateRangePairs, fieldDrawingOrder } from './date-range-field';
|
|
38
|
-
export { defaultValueForSchema } from './default-value';
|
|
38
|
+
export { defaultValueForSchema, NoFiniteValueError } from './default-value';
|
|
39
39
|
export { resolveRef } from './resolve';
|
|
40
40
|
export type { CompletionProvider, SchemaFormProps } from './SchemaForm';
|
|
41
41
|
export { SchemaForm } from './SchemaForm';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { RecordEntryRendererContext } from './context';
|
|
2
|
-
export { ExpressionFieldContext } from './context';
|
|
2
|
+
export { ExpressionFieldContext, TemplatedTextCatalogContext } from './context';
|
|
3
3
|
export { dateRangePairs, fieldDrawingOrder } from './date-range-field';
|
|
4
|
-
export { defaultValueForSchema } from './default-value';
|
|
4
|
+
export { defaultValueForSchema, NoFiniteValueError } from './default-value';
|
|
5
5
|
export { resolveRef } from './resolve';
|
|
6
6
|
export { SchemaForm } from './SchemaForm';
|
|
7
7
|
export { SecretRefField } from './SecretRefField';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAUlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Renders the property fields of an object schema, one {@link FieldNode} per
|
|
3
|
-
* property
|
|
3
|
+
* property, and records the object's `shape` as expanded for every field below it
|
|
4
|
+
* (see {@link ExpandedShapesContext}). Each child's edits are folded back into an immutable copy of the
|
|
4
5
|
* object value; an optional `skip` omits a property (used for a union's
|
|
5
6
|
* discriminator tag, which the variant picker owns).
|
|
6
7
|
*/
|
|
7
|
-
import type
|
|
8
|
+
import { type ReactNode } from 'react';
|
|
8
9
|
import type { FieldWords, JsonSchema, SchemaFormErrors } from './types';
|
|
9
|
-
export declare function ObjectFields({ properties, requiredKeys, root, value, onChange, path, errors, idPrefix, skip, markRequired, fieldWording, }: {
|
|
10
|
+
export declare function ObjectFields({ properties, shape, requiredKeys, root, value, onChange, path, errors, idPrefix, skip, markRequired, fieldWording, }: {
|
|
10
11
|
properties: readonly (readonly [string, JsonSchema])[];
|
|
12
|
+
/** The object model's `shape`, recorded as expanded for the fields below. */
|
|
13
|
+
shape: object;
|
|
11
14
|
requiredKeys: ReadonlySet<string>;
|
|
12
15
|
root: JsonSchema;
|
|
13
16
|
value: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-fields.d.ts","sourceRoot":"","sources":["../../src/schema-form/object-fields.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"object-fields.d.ts","sourceRoot":"","sources":["../../src/schema-form/object-fields.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAO5D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAOxE,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,YAAoB,EACpB,YAAY,GACb,EAAE;IACD,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;IACvD,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CACrD,GAAG,SAAS,CAmFZ"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Renders the property fields of an object schema, one {@link FieldNode} per
|
|
4
|
+
* property, and records the object's `shape` as expanded for every field below it
|
|
5
|
+
* (see {@link ExpandedShapesContext}). Each child's edits are folded back into an immutable copy of the
|
|
6
|
+
* object value; an optional `skip` omits a property (used for a union's
|
|
7
|
+
* discriminator tag, which the variant picker owns).
|
|
8
|
+
*/
|
|
9
|
+
import { useContext, useMemo } from 'react';
|
|
2
10
|
import { ownValue } from '../guards';
|
|
11
|
+
import { ExpandedShapesContext } from './context';
|
|
3
12
|
import { DateRangeField, dateRangePairs, fieldDrawingOrder } from './date-range-field';
|
|
4
13
|
import { FieldNode } from './field-node';
|
|
5
14
|
import { useKeyedCallbacks } from './keyed-callbacks';
|
|
@@ -7,8 +16,10 @@ import { isFieldVisible } from './visibility';
|
|
|
7
16
|
function isPlainObject(value) {
|
|
8
17
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
9
18
|
}
|
|
10
|
-
export function ObjectFields({ properties, requiredKeys, root, value, onChange, path, errors, idPrefix, skip, markRequired = false, fieldWording, }) {
|
|
19
|
+
export function ObjectFields({ properties, shape, requiredKeys, root, value, onChange, path, errors, idPrefix, skip, markRequired = false, fieldWording, }) {
|
|
11
20
|
const obj = isPlainObject(value) ? value : {};
|
|
21
|
+
const above = useContext(ExpandedShapesContext);
|
|
22
|
+
const expanded = useMemo(() => new Set(above).add(shape), [above, shape]);
|
|
12
23
|
const changeFor = useKeyedCallbacks((name, next) => {
|
|
13
24
|
onChange(setKey(obj, name, next));
|
|
14
25
|
}, properties.map(([name]) => name));
|
|
@@ -25,7 +36,7 @@ export function ObjectFields({ properties, requiredKeys, root, value, onChange,
|
|
|
25
36
|
const childPathOf = (name) => (path === '' ? name : `${path}.${name}`);
|
|
26
37
|
const fieldOf = (name, propSchema) => (_jsx(FieldNode, { schema: propSchema, root: root, value: ownValue(obj, name), onChange: changeFor(name), path: childPathOf(name), label: name, required: requiredKeys.has(name), markRequired: markRequired, errors: errors, idPrefix: idPrefix, choiceLabel: ownValue(fieldWording, name)?.choiceLabel, listWords: ownValue(fieldWording, name) }, name));
|
|
27
38
|
const timeOf = (name, propSchema) => name === undefined || propSchema === undefined ? null : fieldOf(name, propSchema);
|
|
28
|
-
return (_jsx(
|
|
39
|
+
return (_jsx(ExpandedShapesContext.Provider, { value: expanded, children: drawn.map((name) => {
|
|
29
40
|
const propSchema = schemaByName.get(name);
|
|
30
41
|
if (propSchema === undefined)
|
|
31
42
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-fields.js","sourceRoot":"","sources":["../../src/schema-form/object-fields.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"object-fields.js","sourceRoot":"","sources":["../../src/schema-form/object-fields.tsx"],"names":[],"mappings":"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"}
|