@ankhorage/studio 5.7.0 → 5.8.1
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 +1 -3
- package/apm/update.json +1 -1
- package/dist/bindingAuthoringContracts.d.ts +2 -0
- package/dist/bindingAuthoringContracts.d.ts.map +1 -1
- package/dist/bindingOperationModel.d.ts.map +1 -1
- package/dist/bindingOperationModel.js +5 -1
- package/dist/bindingOperationModel.js.map +1 -1
- package/dist/bindingSchemaModel.d.ts +2 -2
- package/dist/bindingSchemaModel.d.ts.map +1 -1
- package/dist/bindingSchemaModel.js +45 -32
- package/dist/bindingSchemaModel.js.map +1 -1
- package/dist/features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure.d.ts +5 -0
- package/dist/features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure.d.ts.map +1 -0
- package/dist/features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure.js +96 -0
- package/dist/features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure.js.map +1 -0
- package/dist/ui/admin/pages/bindings/BindingLiteralAuthoringEditor.d.ts +11 -0
- package/dist/ui/admin/pages/bindings/BindingLiteralAuthoringEditor.d.ts.map +1 -0
- package/dist/ui/admin/pages/bindings/BindingLiteralAuthoringEditor.js +23 -0
- package/dist/ui/admin/pages/bindings/BindingLiteralAuthoringEditor.js.map +1 -0
- package/dist/ui/admin/pages/bindings/EventBindingComposer.d.ts.map +1 -1
- package/dist/ui/admin/pages/bindings/EventBindingComposer.js +42 -3
- package/dist/ui/admin/pages/bindings/EventBindingComposer.js.map +1 -1
- package/dist/ui/admin/pages/bindings/bindingEditorModel.d.ts +8 -4
- package/dist/ui/admin/pages/bindings/bindingEditorModel.d.ts.map +1 -1
- package/dist/ui/admin/pages/bindings/bindingEditorModel.js +23 -31
- package/dist/ui/admin/pages/bindings/bindingEditorModel.js.map +1 -1
- package/dist/ui/admin/pages/bindings/createBindingLiteralDefaultValue.d.ts +5 -0
- package/dist/ui/admin/pages/bindings/createBindingLiteralDefaultValue.d.ts.map +1 -0
- package/dist/ui/admin/pages/bindings/createBindingLiteralDefaultValue.js +54 -0
- package/dist/ui/admin/pages/bindings/createBindingLiteralDefaultValue.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# @ankhorage/studio
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
8
|
Studio authoring package for Ankhorage apps
|
|
9
9
|
|
|
@@ -34,7 +34,6 @@ Manage Studio development and projects through the Ankh CLI.
|
|
|
34
34
|
- [buildInsertCatalogEntries sequence](././paradox/diagrams/sequences/build-insert-catalog-entries.mmd)
|
|
35
35
|
- [cloneWithNewIds sequence](././paradox/diagrams/sequences/clone-with-new-ids.mmd)
|
|
36
36
|
- [collectStudioMediaAssetUsages sequence](././paradox/diagrams/sequences/collect-studio-media-asset-usages.mmd)
|
|
37
|
-
- [collectStudioResponsePaths sequence](././paradox/diagrams/sequences/collect-studio-response-paths.mmd)
|
|
38
37
|
- [createNodeFromCatalogEntry sequence](././paradox/diagrams/sequences/create-node-from-catalog-entry.mmd)
|
|
39
38
|
- [createStudioInstancePropertyPatch sequence](././paradox/diagrams/sequences/create-studio-instance-property-patch.mmd)
|
|
40
39
|
- [createStudioMediaAssetId sequence](././paradox/diagrams/sequences/create-studio-media-asset-id.mmd)
|
|
@@ -49,7 +48,6 @@ Manage Studio development and projects through the Ankh CLI.
|
|
|
49
48
|
- [removeStudioPropBinding sequence](././paradox/diagrams/sequences/remove-studio-prop-binding.mmd)
|
|
50
49
|
- [resolveDefaultInsertPlacement sequence](././paradox/diagrams/sequences/resolve-default-insert-placement.mmd)
|
|
51
50
|
- [resolveInsertPlacement sequence](././paradox/diagrams/sequences/resolve-insert-placement.mmd)
|
|
52
|
-
- [resolveStudioSchemaValueMeta sequence](././paradox/diagrams/sequences/resolve-studio-schema-value-meta.mmd)
|
|
53
51
|
- [updateNodeInTree sequence](././paradox/diagrams/sequences/update-node-in-tree.mmd)
|
|
54
52
|
- [upsertStudioMediaAsset sequence](././paradox/diagrams/sequences/upsert-studio-media-asset.mmd)
|
|
55
53
|
- [upsertStudioPropBinding sequence](././paradox/diagrams/sequences/upsert-studio-prop-binding.mmd)
|
package/apm/update.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"protocolVersion": 1,
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"owner": { "name": "@ankhorage/studio", "version": "5.
|
|
4
|
+
"owner": { "name": "@ankhorage/studio", "version": "5.8.1" },
|
|
5
5
|
"history": {
|
|
6
6
|
"supported": [{ "sourceRange": ">=2.5.7 <3.0.0", "mode": "no-migration" }],
|
|
7
7
|
"unsupported": [],
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BindingOperationRef, UiBindableEventMeta, UiBindablePropMeta, UiBindableValueMeta } from '@ankhorage/contracts';
|
|
2
|
+
import type { AuthoringStructure } from './types/authoring-engine';
|
|
2
3
|
export type StudioBindingCompatibility = 'compatible' | 'incompatible' | 'unknown';
|
|
3
4
|
export interface StudioBindablePropOption {
|
|
4
5
|
readonly name: string;
|
|
@@ -15,6 +16,7 @@ export interface StudioBindingInputFieldOption {
|
|
|
15
16
|
readonly label: string;
|
|
16
17
|
readonly value: UiBindableValueMeta;
|
|
17
18
|
readonly required: boolean;
|
|
19
|
+
readonly authoring?: AuthoringStructure;
|
|
18
20
|
}
|
|
19
21
|
export interface StudioBindingResponsePathOption {
|
|
20
22
|
readonly path: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindingAuthoringContracts.d.ts","sourceRoot":"","sources":["../src/bindingAuthoringContracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,0BAA0B,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"bindingAuthoringContracts.d.ts","sourceRoot":"","sources":["../src/bindingAuthoringContracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,MAAM,0BAA0B,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC/D,QAAQ,CAAC,aAAa,EAAE,SAAS,+BAA+B,EAAE,CAAC;CACpE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EACT,oBAAoB,GACpB,uBAAuB,GACvB,gBAAgB,GAChB,sBAAsB,GACtB,eAAe,GACf,mBAAmB,GACnB,uBAAuB,GACvB,eAAe,GACf,cAAc,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindingOperationModel.d.ts","sourceRoot":"","sources":["../src/bindingOperationModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EACrB,mBAAmB,EAIpB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"bindingOperationModel.d.ts","sourceRoot":"","sources":["../src/bindingOperationModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EACrB,mBAAmB,EAIpB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,6BAA6B,CAAC;AAIrC;;;GAGG;AACH,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,qBAAqB,GAC1B,SAAS,4BAA4B,EAAE,CAIzC;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,SAAS,4BAA4B,EAAE,EAChD,GAAG,EAAE,mBAAmB,GACvB,4BAA4B,GAAG,SAAS,CAE1C;AAyFD;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,aAAa,EACT,QAAQ,CACN,MAAM,CACJ,MAAM,EACN;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAC/E,CACF,GACD,SAAS,GACZ,SAAS,6BAA6B,EAAE,CAO1C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { findByKey } from '@ankhorage/utility/array';
|
|
2
2
|
import { readOwnProperty } from '@ankhorage/utility/object';
|
|
3
3
|
import { collectStudioResponsePaths, resolveStudioSchemaValueMeta } from './bindingSchemaModel';
|
|
4
|
+
import { resolveDataSchemaAuthoringStructure } from './features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure';
|
|
4
5
|
/***
|
|
5
6
|
* Collect and alphabetically sort the API operations available for Studio binding authoring.
|
|
6
7
|
* @todo Move binding operation catalog behavior under src/bindings/.
|
|
@@ -44,10 +45,12 @@ function collectApiOperations(api) {
|
|
|
44
45
|
function collectOperationInputFields(api, operation) {
|
|
45
46
|
const fields = new Map();
|
|
46
47
|
for (const parameter of operation.request?.parameters ?? []) {
|
|
48
|
+
const schema = resolveSlotSchema(api, parameter);
|
|
47
49
|
fields.set(parameter.name, {
|
|
48
50
|
name: parameter.name,
|
|
49
51
|
label: parameter.description ?? parameter.name,
|
|
50
|
-
value: resolveStudioSchemaValueMeta(
|
|
52
|
+
value: resolveStudioSchemaValueMeta(schema, api.schemas),
|
|
53
|
+
authoring: resolveDataSchemaAuthoringStructure(schema, api.schemas),
|
|
51
54
|
required: parameter.required ?? false,
|
|
52
55
|
});
|
|
53
56
|
}
|
|
@@ -59,6 +62,7 @@ function collectOperationInputFields(api, operation) {
|
|
|
59
62
|
name,
|
|
60
63
|
label: schema.title ?? name,
|
|
61
64
|
value: resolveStudioSchemaValueMeta(schema, api.schemas),
|
|
65
|
+
authoring: resolveDataSchemaAuthoringStructure(schema, api.schemas),
|
|
62
66
|
required: requestSchema?.required?.includes(name) ?? false,
|
|
63
67
|
});
|
|
64
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindingOperationModel.js","sourceRoot":"","sources":["../src/bindingOperationModel.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAM5D,OAAO,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"bindingOperationModel.js","sourceRoot":"","sources":["../src/bindingOperationModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { DataSchema, DataSchemaRegistry, UiBindableValueMeta } from '@ankhorage/contracts';
|
|
2
2
|
import type { StudioBindingCompatibility, StudioBindingResponsePathOption } from './bindingAuthoringContracts';
|
|
3
3
|
/***
|
|
4
|
-
*
|
|
5
|
-
* @todo Move binding schema
|
|
4
|
+
* Project canonical DataSchema authoring semantics into the bindable metadata used by compatibility policy.
|
|
5
|
+
* @todo Move binding schema projection under src/bindings/.
|
|
6
6
|
*/
|
|
7
7
|
export declare function resolveStudioSchemaValueMeta(schema: DataSchema | undefined, schemas: DataSchemaRegistry | undefined, seen?: ReadonlySet<string>): UiBindableValueMeta;
|
|
8
8
|
/***
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindingSchemaModel.d.ts","sourceRoot":"","sources":["../src/bindingSchemaModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAElB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EACV,0BAA0B,EAC1B,+BAA+B,EAChC,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"bindingSchemaModel.d.ts","sourceRoot":"","sources":["../src/bindingSchemaModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAElB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EACV,0BAA0B,EAC1B,+BAA+B,EAChC,MAAM,6BAA6B,CAAC;AAIrC;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,IAAI,GAAE,WAAW,CAAC,MAAM,CAAa,GACpC,mBAAmB,CAiBrB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,SAAS,+BAA+B,EAAE,CAK5C;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,EAAE,mBAAmB,GAC1B,0BAA0B,CAU5B"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import { resolveSchemaReference
|
|
1
|
+
import { resolveSchemaReference } from '@ankhorage/utility/schema';
|
|
2
|
+
import { resolveDataSchemaAuthoringStructure } from './features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure';
|
|
2
3
|
/***
|
|
3
|
-
*
|
|
4
|
-
* @todo Move binding schema
|
|
4
|
+
* Project canonical DataSchema authoring semantics into the bindable metadata used by compatibility policy.
|
|
5
|
+
* @todo Move binding schema projection under src/bindings/.
|
|
5
6
|
*/
|
|
6
7
|
export function resolveStudioSchemaValueMeta(schema, schemas, seen = new Set()) {
|
|
8
|
+
const structure = resolveDataSchemaAuthoringStructure(schema, schemas, seen);
|
|
7
9
|
const resolved = resolveSchemaReference(schema, schemas, seen);
|
|
8
10
|
if (!resolved)
|
|
9
11
|
return { type: 'unknown' };
|
|
10
|
-
const type =
|
|
11
|
-
const fields = resolveSchemaFields(resolved, schemas, seen);
|
|
12
|
-
const itemType =
|
|
12
|
+
const type = resolveBindableType(resolved, structure);
|
|
13
|
+
const fields = structure.kind === 'object' ? resolveSchemaFields(resolved, schemas, seen) : [];
|
|
14
|
+
const itemType = structure.kind === 'ordered-list'
|
|
15
|
+
? resolveStudioSchemaValueMeta(resolved.items, schemas, seen).type
|
|
16
|
+
: undefined;
|
|
13
17
|
return {
|
|
14
18
|
type,
|
|
15
19
|
...(fields.length > 0 ? { fields } : {}),
|
|
@@ -51,7 +55,7 @@ function collectNestedPaths(schema, schemas, prefix, paths, seen) {
|
|
|
51
55
|
const resolved = resolveSchemaReference(schema, schemas, seen);
|
|
52
56
|
if (!resolved)
|
|
53
57
|
return;
|
|
54
|
-
if (
|
|
58
|
+
if (resolveStudioSchemaValueMeta(resolved, schemas, seen).type === 'array' && resolved.items) {
|
|
55
59
|
const path = prefix ? `${prefix}.0` : '0';
|
|
56
60
|
paths.push({
|
|
57
61
|
path,
|
|
@@ -74,8 +78,7 @@ function collectNestedPaths(schema, schemas, prefix, paths, seen) {
|
|
|
74
78
|
}
|
|
75
79
|
}
|
|
76
80
|
/***
|
|
77
|
-
* Project
|
|
78
|
-
* @todo Keep bindable field projection under src/bindings/.
|
|
81
|
+
* Project resolved object fields into the metadata used by binding compatibility diagnostics.
|
|
79
82
|
*/
|
|
80
83
|
function resolveSchemaFields(schema, schemas, seen) {
|
|
81
84
|
return Object.entries(schema.properties ?? {}).map(([path, property]) => ({
|
|
@@ -84,34 +87,44 @@ function resolveSchemaFields(schema, schemas, seen) {
|
|
|
84
87
|
required: schema.required?.includes(path) ?? false,
|
|
85
88
|
}));
|
|
86
89
|
}
|
|
87
|
-
/***
|
|
88
|
-
|
|
89
|
-
* @utility @ankhorage/utility/schema
|
|
90
|
-
*/
|
|
91
|
-
function resolveSchemaType(schema) {
|
|
90
|
+
/*** Project neutral authoring structure into the older bindable-shape vocabulary without reinterpreting DataSchema shape. */
|
|
91
|
+
function resolveBindableType(schema, structure) {
|
|
92
92
|
if (schema.format === 'date' || schema.format === 'date-time')
|
|
93
93
|
return 'date';
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
switch (structure.kind) {
|
|
95
|
+
case 'scalar':
|
|
96
|
+
if (structure.scalarType === 'integer')
|
|
97
|
+
return 'number';
|
|
98
|
+
if (structure.scalarType === 'boolean' ||
|
|
99
|
+
structure.scalarType === 'number' ||
|
|
100
|
+
structure.scalarType === 'string') {
|
|
101
|
+
return structure.scalarType;
|
|
102
|
+
}
|
|
103
|
+
return 'unknown';
|
|
104
|
+
case 'choice':
|
|
105
|
+
return resolveChoiceType(structure.values);
|
|
106
|
+
case 'object':
|
|
107
|
+
return 'object';
|
|
108
|
+
case 'ordered-list':
|
|
109
|
+
return 'array';
|
|
110
|
+
case 'unsupported':
|
|
111
|
+
return structure.sourceKind === 'record' ? 'record' : 'unknown';
|
|
112
|
+
case 'set':
|
|
113
|
+
return 'unknown';
|
|
104
114
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
115
|
+
}
|
|
116
|
+
/*** Resolve a homogeneous finite primitive choice into the compatibility type it represents. */
|
|
117
|
+
function resolveChoiceType(values) {
|
|
118
|
+
const nonNull = values.filter((value) => value !== null);
|
|
119
|
+
if (nonNull.length === 0)
|
|
120
|
+
return 'unknown';
|
|
121
|
+
const first = typeof nonNull[0];
|
|
122
|
+
if (!nonNull.every((value) => typeof value === first))
|
|
123
|
+
return 'unknown';
|
|
124
|
+
if (first === 'boolean' || first === 'number' || first === 'string')
|
|
125
|
+
return first;
|
|
109
126
|
return 'unknown';
|
|
110
127
|
}
|
|
111
|
-
/***
|
|
112
|
-
* Return a schema primitive type only when the declaration contains exactly one effective type.
|
|
113
|
-
* @utility @ankhorage/utility/schema
|
|
114
|
-
*/
|
|
115
128
|
/***
|
|
116
129
|
* Test whether a bindable value type represents an object-shaped value.
|
|
117
130
|
* @todo Keep this bindable-type semantic predicate under src/bindings/.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindingSchemaModel.js","sourceRoot":"","sources":["../src/bindingSchemaModel.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"bindingSchemaModel.js","sourceRoot":"","sources":["../src/bindingSchemaModel.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAMnE,OAAO,EAAE,mCAAmC,EAAE,MAAM,mFAAmF,CAAC;AAGxI;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAA8B,EAC9B,OAAuC,EACvC,OAA4B,IAAI,GAAG,EAAE;IAErC,MAAM,SAAS,GAAG,mCAAmC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAE1C,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,QAAQ,GACZ,SAAS,CAAC,IAAI,KAAK,cAAc;QAC/B,CAAC,CAAC,4BAA4B,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI;QAClE,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,IAAI;QACJ,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAA8B,EAC9B,OAAuC;IAEvC,MAAM,IAAI,GAAG,4BAA4B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAsC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChG,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,QAA6B,EAC7B,MAA2B;IAE3B,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/E,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,YAAY,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC7D,OAAO,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;IAC/E,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAClF,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,iBAAiB,CAAC,MAAM,CAAC;QAAE,OAAO,YAAY,CAAC;IACrF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,+HAA+H;AAC/H,SAAS,kBAAkB,CACzB,MAA8B,EAC9B,OAAuC,EACvC,MAAc,EACd,KAAwC,EACxC,IAAiB;IAEjB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,IAAI,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC7F,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,4BAA4B,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;SACnE,CAAC,CAAC;QACH,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,UAAU;QAAE,OAAO;IACjC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;SAC7D,CAAC,CAAC;QACH,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,MAAkB,EAClB,OAAuC,EACvC,IAAyB;IAEzB,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI;QACJ,IAAI,EAAE,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI;QAChE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK;KACnD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,6HAA6H;AAC7H,SAAS,mBAAmB,CAC1B,MAAkB,EAClB,SAA6B;IAE7B,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAC;IAE7E,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,QAAQ;YACX,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC;YACxD,IACE,SAAS,CAAC,UAAU,KAAK,SAAS;gBAClC,SAAS,CAAC,UAAU,KAAK,QAAQ;gBACjC,SAAS,CAAC,UAAU,KAAK,QAAQ,EACjC,CAAC;gBACD,OAAO,SAAS,CAAC,UAAU,CAAC;YAC9B,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,cAAc;YACjB,OAAO,OAAO,CAAC;QACjB,KAAK,aAAa;YAChB,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,KAAK,KAAK;YACR,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,SAAS,iBAAiB,CACxB,MAAqD;IAErD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAiC;IACrD,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,KAA0B;IACnD,OAAO,CACL,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;QACxB,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI,CACxF,CAAC;AACJ,CAAC"}
|
package/dist/features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DataSchema, DataSchemaRegistry } from '@ankhorage/contracts';
|
|
2
|
+
import type { AuthoringStructure } from '../../../../types/authoring-engine';
|
|
3
|
+
/*** Translate one Contracts DataSchema into Studio's neutral authoring structure without importing binding workflow policy. */
|
|
4
|
+
export declare function resolveDataSchemaAuthoringStructure(schema: DataSchema | undefined, schemas: DataSchemaRegistry | undefined, seen?: ReadonlySet<string>, path?: readonly string[]): AuthoringStructure;
|
|
5
|
+
//# sourceMappingURL=resolveDataSchemaAuthoringStructure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveDataSchemaAuthoringStructure.d.ts","sourceRoot":"","sources":["../../../../../src/features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,KAAK,EAGV,kBAAkB,EACnB,MAAM,oCAAoC,CAAC;AAE5C,+HAA+H;AAC/H,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,IAAI,GAAE,WAAW,CAAC,MAAM,CAAa,EACrC,IAAI,GAAE,SAAS,MAAM,EAAO,GAC3B,kBAAkB,CAsEpB"}
|
package/dist/features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { resolveSchemaReference, resolveSingleSchemaType } from '@ankhorage/utility/schema';
|
|
2
|
+
/*** Translate one Contracts DataSchema into Studio's neutral authoring structure without importing binding workflow policy. */
|
|
3
|
+
export function resolveDataSchemaAuthoringStructure(schema, schemas, seen = new Set(), path = []) {
|
|
4
|
+
const resolved = resolveSchemaReference(schema, schemas, seen);
|
|
5
|
+
if (!resolved || resolved.ref) {
|
|
6
|
+
return unsupportedDataSchema('unresolved-ref', 'Data schema reference could not be resolved.', path);
|
|
7
|
+
}
|
|
8
|
+
const finiteChoice = resolveFiniteChoice(resolved, path);
|
|
9
|
+
if (finiteChoice)
|
|
10
|
+
return finiteChoice;
|
|
11
|
+
const unsupportedComposition = resolveUnsupportedComposition(resolved, path);
|
|
12
|
+
if (unsupportedComposition)
|
|
13
|
+
return unsupportedComposition;
|
|
14
|
+
const scalarType = resolveSingleSchemaType(resolved.type);
|
|
15
|
+
const effectiveType = scalarType ??
|
|
16
|
+
(resolved.properties ? 'object' : undefined) ??
|
|
17
|
+
(resolved.items ? 'array' : undefined);
|
|
18
|
+
if (resolved.nullable === true && effectiveType !== 'null') {
|
|
19
|
+
return unsupportedDataSchema('nullable', 'Nullable DataSchema values require union authoring semantics.', path);
|
|
20
|
+
}
|
|
21
|
+
switch (effectiveType) {
|
|
22
|
+
case 'array':
|
|
23
|
+
return {
|
|
24
|
+
kind: 'ordered-list',
|
|
25
|
+
item: resolved.items
|
|
26
|
+
? resolveDataSchemaAuthoringStructure(resolved.items, schemas, seen, [...path, '*'])
|
|
27
|
+
: unsupportedDataSchema('array-item', 'Array DataSchema is missing an item schema.', [
|
|
28
|
+
...path,
|
|
29
|
+
'*',
|
|
30
|
+
]),
|
|
31
|
+
};
|
|
32
|
+
case 'boolean':
|
|
33
|
+
case 'integer':
|
|
34
|
+
case 'null':
|
|
35
|
+
case 'number':
|
|
36
|
+
case 'string':
|
|
37
|
+
return { kind: 'scalar', scalarType: effectiveType };
|
|
38
|
+
case 'object':
|
|
39
|
+
if (resolved.additionalProperties) {
|
|
40
|
+
return unsupportedDataSchema('record', 'DataSchema additionalProperties requires value-map authoring semantics.', path);
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
kind: 'object',
|
|
44
|
+
fields: Object.entries(resolved.properties ?? {}).map(([name, field]) => ({
|
|
45
|
+
name,
|
|
46
|
+
optional: resolved.required?.includes(name) !== true,
|
|
47
|
+
structure: resolveDataSchemaAuthoringStructure(field, schemas, seen, [...path, name]),
|
|
48
|
+
})),
|
|
49
|
+
};
|
|
50
|
+
default:
|
|
51
|
+
return unsupportedDataSchema('unknown', 'DataSchema does not declare a supported primitive, object, array, enum, or const shape.', path);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/*** Resolve DataSchema enum/const declarations into finite primitive choice semantics when lossless. */
|
|
55
|
+
function resolveFiniteChoice(schema, path) {
|
|
56
|
+
const values = schema.enum ?? (schema.const === undefined ? undefined : [schema.const]);
|
|
57
|
+
if (!values)
|
|
58
|
+
return undefined;
|
|
59
|
+
if (values.length === 0 || !values.every(isAuthoringPrimitive)) {
|
|
60
|
+
return unsupportedDataSchema(schema.enum ? 'enum' : 'const', 'DataSchema enum/const authoring supports primitive serializable values only.', path);
|
|
61
|
+
}
|
|
62
|
+
return { kind: 'choice', values };
|
|
63
|
+
}
|
|
64
|
+
/*** Reject DataSchema composition forms that require neutral union/intersection semantics not owned by WP4. */
|
|
65
|
+
function resolveUnsupportedComposition(schema, path) {
|
|
66
|
+
if (Array.isArray(schema.type) && schema.type.length > 1) {
|
|
67
|
+
return unsupportedDataSchema('type-union', 'DataSchema multi-type declarations require union authoring semantics.', path);
|
|
68
|
+
}
|
|
69
|
+
if (schema.oneOf && schema.oneOf.length > 0) {
|
|
70
|
+
return unsupportedDataSchema('oneOf', 'DataSchema oneOf requires union authoring semantics.', path);
|
|
71
|
+
}
|
|
72
|
+
if (schema.anyOf && schema.anyOf.length > 0) {
|
|
73
|
+
return unsupportedDataSchema('anyOf', 'DataSchema anyOf requires union authoring semantics.', path);
|
|
74
|
+
}
|
|
75
|
+
if (schema.allOf && schema.allOf.length > 0) {
|
|
76
|
+
return unsupportedDataSchema('allOf', 'DataSchema allOf requires schema-composition authoring semantics.', path);
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
/*** Check whether one serializable DataSchema literal fits the neutral primitive choice vocabulary. */
|
|
81
|
+
function isAuthoringPrimitive(value) {
|
|
82
|
+
return (value === null ||
|
|
83
|
+
typeof value === 'boolean' ||
|
|
84
|
+
typeof value === 'number' ||
|
|
85
|
+
typeof value === 'string');
|
|
86
|
+
}
|
|
87
|
+
/*** Preserve unsupported DataSchema semantics as an explicit neutral authoring diagnostic. */
|
|
88
|
+
function unsupportedDataSchema(sourceKind, message, path) {
|
|
89
|
+
const diagnostic = {
|
|
90
|
+
code: sourceKind === 'unresolved-ref' ? 'unresolved-reference' : 'unsupported-structure',
|
|
91
|
+
message,
|
|
92
|
+
path,
|
|
93
|
+
};
|
|
94
|
+
return { kind: 'unsupported', sourceKind, diagnostic };
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=resolveDataSchemaAuthoringStructure.js.map
|
package/dist/features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveDataSchemaAuthoringStructure.js","sourceRoot":"","sources":["../../../../../src/features/authoring-engine/adapters/outbound/resolveDataSchemaAuthoringStructure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BindingValue } from '@ankhorage/contracts';
|
|
2
|
+
import type { AuthoringStructure } from '../../../../types/authoring-engine';
|
|
3
|
+
/*** Render one DataSchema-backed binding literal through the shared neutral Authoring Engine and emit typed canonical values. */
|
|
4
|
+
export declare function BindingLiteralAuthoringEditor(props: {
|
|
5
|
+
readonly label: string;
|
|
6
|
+
readonly required: boolean;
|
|
7
|
+
readonly structure: AuthoringStructure;
|
|
8
|
+
readonly value: BindingValue | undefined;
|
|
9
|
+
readonly onChange: (value: BindingValue | undefined) => void;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=BindingLiteralAuthoringEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BindingLiteralAuthoringEditor.d.ts","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/BindingLiteralAuthoringEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAM7E,iIAAiI;AACjI,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,KAAK,IAAI,CAAC;CAC9D,+BAqBA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { AuthoringEditor } from '../../../../features/authoring-engine/adapters/inbound/AuthoringEditor';
|
|
3
|
+
import { applyAuthoringMutation } from '../../../../features/authoring-engine/application/use-cases/applyAuthoringMutation';
|
|
4
|
+
import { deriveAuthoringModel } from '../../../../features/authoring-engine/application/use-cases/deriveAuthoringModel';
|
|
5
|
+
/*** Render one DataSchema-backed binding literal through the shared neutral Authoring Engine and emit typed canonical values. */
|
|
6
|
+
export function BindingLiteralAuthoringEditor(props) {
|
|
7
|
+
const structure = {
|
|
8
|
+
kind: 'object',
|
|
9
|
+
fields: [{ name: 'value', optional: !props.required, structure: props.structure }],
|
|
10
|
+
};
|
|
11
|
+
const state = props.value === undefined ? {} : { value: props.value };
|
|
12
|
+
const model = deriveAuthoringModel({
|
|
13
|
+
structure,
|
|
14
|
+
value: state,
|
|
15
|
+
policy: { fields: { value: { label: props.label } } },
|
|
16
|
+
});
|
|
17
|
+
return (_jsx(AuthoringEditor, { model: model, onMutation: (mutation) => {
|
|
18
|
+
const result = applyAuthoringMutation(state, mutation);
|
|
19
|
+
if (result.ok)
|
|
20
|
+
props.onChange(result.value.value);
|
|
21
|
+
} }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=BindingLiteralAuthoringEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BindingLiteralAuthoringEditor.js","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/BindingLiteralAuthoringEditor.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wEAAwE,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,MAAM,oFAAoF,CAAC;AAC5H,OAAO,EAAE,oBAAoB,EAAE,MAAM,kFAAkF,CAAC;AAOxH,iIAAiI;AACjI,MAAM,UAAU,6BAA6B,CAAC,KAM7C;IACC,MAAM,SAAS,GAAuB;QACpC,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;KACnF,CAAC;IACF,MAAM,KAAK,GAAwB,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3F,MAAM,KAAK,GAAG,oBAAoB,CAAC;QACjC,SAAS;QACT,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE;KACtD,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,MAAM,CAAC,EAAE;gBAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC,GACD,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventBindingComposer.d.ts","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/EventBindingComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"EventBindingComposer.d.ts","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/EventBindingComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,mCAAmC,CAAC;AA8B3C,4IAA4I;AAC5I,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;CACjD,+BA6EA"}
|
|
@@ -6,7 +6,9 @@ import { createStudioActionInputFields, } from '../../../../bindingAuthoringMode
|
|
|
6
6
|
import { ACTION_REGISTRY } from '../../../../index';
|
|
7
7
|
import { Field } from '../../adminPagePrimitives';
|
|
8
8
|
import { bindingAdminStyles } from './bindingAdminStyles';
|
|
9
|
-
import { createStudioEventBinding, createStudioEventInputDrafts, createStudioOperationKey, findStudioOperationByKey, } from './bindingEditorModel';
|
|
9
|
+
import { createStudioEventBinding, createStudioEventInputDrafts, createStudioOperationKey, findStudioOperationByKey, formatStudioBindingLiteral, parseStudioBindingLiteral, } from './bindingEditorModel';
|
|
10
|
+
import { BindingLiteralAuthoringEditor } from './BindingLiteralAuthoringEditor';
|
|
11
|
+
import { createBindingLiteralDefaultValue } from './createBindingLiteralDefaultValue';
|
|
10
12
|
const TARGET_OPTIONS = [
|
|
11
13
|
{ value: 'action', label: 'Action' },
|
|
12
14
|
{ value: 'operation', label: 'API operation' },
|
|
@@ -56,8 +58,45 @@ function EventInputDrafts(props) {
|
|
|
56
58
|
return (_jsx(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: "This target has no declared inputs." }));
|
|
57
59
|
}
|
|
58
60
|
return (_jsxs(View, { style: bindingAdminStyles.stack, children: [props.fields.map((field) => {
|
|
59
|
-
const draft = props.drafts[field.name] ?? {
|
|
60
|
-
|
|
61
|
+
const draft = props.drafts[field.name] ?? {
|
|
62
|
+
kind: 'literal',
|
|
63
|
+
value: createBindingLiteralDefaultValue(field),
|
|
64
|
+
included: field.required,
|
|
65
|
+
};
|
|
66
|
+
return (_jsxs(View, { style: bindingAdminStyles.row, children: [_jsx(View, { style: bindingAdminStyles.grow, children: _jsx(Field, { label: `${field.label} · ${field.value.type}${field.required ? ' · required' : ''}`, children: _jsx(Select, { value: draft.kind, options: INPUT_SOURCE_OPTIONS, onValueChange: (kind) => props.onChange({
|
|
67
|
+
...props.drafts,
|
|
68
|
+
[field.name]: kind === 'event'
|
|
69
|
+
? {
|
|
70
|
+
kind,
|
|
71
|
+
value: props.eventFields.includes(field.name) ? field.name : '',
|
|
72
|
+
}
|
|
73
|
+
: {
|
|
74
|
+
kind,
|
|
75
|
+
value: createBindingLiteralDefaultValue(field),
|
|
76
|
+
included: true,
|
|
77
|
+
},
|
|
78
|
+
}) }) }) }), _jsx(View, { style: bindingAdminStyles.grow, children: draft.kind === 'event' ? (_jsx(Field, { label: "Payload path", children: _jsx(TextInput, { value: draft.value, placeholder: "values.name", onChangeText: (value) => props.onChange({
|
|
79
|
+
...props.drafts,
|
|
80
|
+
[field.name]: { kind: 'event', value },
|
|
81
|
+
}) }) })) : field.authoring ? (_jsx(BindingLiteralAuthoringEditor, { label: "Literal value", required: field.required, structure: field.authoring, value: draft.value, onChange: (value) => props.onChange({
|
|
82
|
+
...props.drafts,
|
|
83
|
+
[field.name]: {
|
|
84
|
+
kind: 'literal',
|
|
85
|
+
value,
|
|
86
|
+
included: value !== undefined,
|
|
87
|
+
},
|
|
88
|
+
}) })) : (_jsx(Field, { label: "Literal value", children: _jsx(TextInput, { value: !draft.included && !field.required
|
|
89
|
+
? ''
|
|
90
|
+
: draft.value === undefined
|
|
91
|
+
? ''
|
|
92
|
+
: formatStudioBindingLiteral(draft.value), onChangeText: (value) => props.onChange({
|
|
93
|
+
...props.drafts,
|
|
94
|
+
[field.name]: {
|
|
95
|
+
kind: 'literal',
|
|
96
|
+
value: parseStudioBindingLiteral(value, field.value),
|
|
97
|
+
included: field.required || value !== '',
|
|
98
|
+
},
|
|
99
|
+
}) }) })) })] }, field.name));
|
|
61
100
|
}), props.eventFields.length > 0 ? (_jsxs(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: ["Known payload paths: ", props.eventFields.join(', '), ". Nested paths may be entered manually."] })) : null] }));
|
|
62
101
|
}
|
|
63
102
|
//# sourceMappingURL=EventBindingComposer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventBindingComposer.js","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/EventBindingComposer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EACL,6BAA6B,GAG9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"EventBindingComposer.js","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/EventBindingComposer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EACL,6BAA6B,GAG9B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,GAG1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAEtF,MAAM,cAAc,GAAG;IACrB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE;CACtC,CAAC;AACX,MAAM,oBAAoB,GAAoE;IAC5F,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE;IAC1C,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;CACvC,CAAC;AACF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrE,KAAK,EAAE,MAAM,CAAC,IAAI;IAClB,KAAK,EAAE,MAAM,CAAC,KAAK;CACpB,CAAC,CAAC,CAAC;AAEJ,4IAA4I;AAC5I,MAAM,UAAU,oBAAoB,CAAC,KAIpC;IACC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAyB,QAAQ,CAAC,CAAC;IAC/E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,UAAU,CAAC,CAAC;IACrF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAC9C,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CACvE,CAAC;IACF,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CACH,UAAU,KAAK,QAAQ;QACrB,CAAC,CAAC,6BAA6B,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;QAC3E,CAAC,CAAC,CAAC,iBAAiB,EAAE,WAAW,IAAI,EAAE,CAAC,EAC5C,CAAC,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,CACzD,CAAC;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAChG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAkD,EAAE,CAAC,CAAC;IAE1F,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,4BAA4B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/D,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAE1B,0FAA0F;IAC1F,MAAM,GAAG,GAAG,GAAG,EAAE;QACf,MAAM,MAAM,GACV,UAAU,KAAK,QAAQ;YACrB,CAAC,CAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAY;YACjD,CAAC,CAAC,iBAAiB;gBACjB,CAAC,CAAE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,CAAC,SAAS,EAAY;gBAC1E,CAAC,CAAC,IAAI,CAAC;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,KAAK,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,aACnC,MAAC,IAAI,IAAC,KAAK,EAAE,kBAAkB,CAAC,GAAG,aACjC,KAAC,IAAI,IAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,YAClC,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,YACxB,KAAC,MAAM,IAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,GAAI,GAC9E,GACH,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,YACjC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CACzB,KAAC,KAAK,IAAC,KAAK,EAAC,QAAQ,YACnB,KAAC,MAAM,IAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,GAAI,GAC9E,CACT,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IAAC,KAAK,EAAC,WAAW,YACtB,KAAC,MAAM,IACL,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oCACtC,KAAK,EAAE,wBAAwB,CAAC,SAAS,CAAC,SAAS,CAAC;oCACpD,KAAK,EAAE,SAAS,CAAC,KAAK;iCACvB,CAAC,CAAC,EACH,aAAa,EAAE,eAAe,GAC9B,GACI,CACT,GACI,IACF,EACN,UAAU,KAAK,WAAW,IAAI,iBAAiB,CAAC,CAAC,CAAC,CACjD,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,WAAW,YACvD,iBAAiB,CAAC,QAAQ,GACtB,CACR,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,gBAAgB,IACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EACnD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,GACnB,EACF,KAAC,MAAM,IAAC,QAAQ,EAAE,UAAU,KAAK,WAAW,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,GAAG,4BAEvE,IACJ,CACR,CAAC;AACJ,CAAC;AAED,kHAAkH;AAClH,SAAS,gBAAgB,CAAC,KAKzB;IACC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,WAAW,oDAEnD,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,aAClC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;oBACxC,IAAI,EAAE,SAAkB;oBACxB,KAAK,EAAE,gCAAgC,CAAC,KAAK,CAAC;oBAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC;gBACF,OAAO,CACL,MAAC,IAAI,IAAkB,KAAK,EAAE,kBAAkB,CAAC,GAAG,aAClD,KAAC,IAAI,IAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,YAClC,KAAC,KAAK,IACJ,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,YAEnF,KAAC,MAAM,IACL,KAAK,EAAE,KAAK,CAAC,IAAI,EACjB,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,CAAC,IAAgC,EAAE,EAAE,CAClD,KAAK,CAAC,QAAQ,CAAC;wCACb,GAAG,KAAK,CAAC,MAAM;wCACf,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,IAAI,KAAK,OAAO;4CACd,CAAC,CAAC;gDACE,IAAI;gDACJ,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;6CAChE;4CACH,CAAC,CAAC;gDACE,IAAI;gDACJ,KAAK,EAAE,gCAAgC,CAAC,KAAK,CAAC;gDAC9C,QAAQ,EAAE,IAAI;6CACf;qCACR,CAAC,GAEJ,GACI,GACH,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,YACjC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,KAAK,IAAC,KAAK,EAAC,cAAc,YACzB,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,WAAW,EAAC,aAAa,EACzB,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CACtB,KAAK,CAAC,QAAQ,CAAC;wCACb,GAAG,KAAK,CAAC,MAAM;wCACf,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;qCACvC,CAAC,GAEJ,GACI,CACT,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CACpB,KAAC,6BAA6B,IAC5B,KAAK,EAAC,eAAe,EACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,CAAC,QAAQ,CAAC;oCACb,GAAG,KAAK,CAAC,MAAM;oCACf,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;wCACZ,IAAI,EAAE,SAAS;wCACf,KAAK;wCACL,QAAQ,EAAE,KAAK,KAAK,SAAS;qCAC9B;iCACF,CAAC,GAEJ,CACH,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IAAC,KAAK,EAAC,eAAe,YAC1B,KAAC,SAAS,IACR,KAAK,EACH,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ;wCAChC,CAAC,CAAC,EAAE;wCACJ,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;4CACzB,CAAC,CAAC,EAAE;4CACJ,CAAC,CAAC,0BAA0B,CAAC,KAAK,CAAC,KAAK,CAAC,EAE/C,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CACtB,KAAK,CAAC,QAAQ,CAAC;wCACb,GAAG,KAAK,CAAC,MAAM;wCACf,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;4CACZ,IAAI,EAAE,SAAS;4CACf,KAAK,EAAE,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;4CACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,KAAK,EAAE;yCACzC;qCACF,CAAC,GAEJ,GACI,CACT,GACI,KAjFE,KAAK,CAAC,IAAI,CAkFd,CACR,CAAC;YACJ,CAAC,CAAC,EACD,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9B,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAC,WAAW,sCAClC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,+CAC7C,CACR,CAAC,CAAC,CAAC,IAAI,IACH,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -20,11 +20,15 @@ export declare function createStudioEventBinding(args: {
|
|
|
20
20
|
readonly fields: readonly StudioBindingInputFieldOption[];
|
|
21
21
|
readonly drafts: Readonly<Record<string, StudioEventInputDraft>>;
|
|
22
22
|
}): EventBinding;
|
|
23
|
-
export
|
|
24
|
-
readonly kind:
|
|
23
|
+
export type StudioEventInputDraft = {
|
|
24
|
+
readonly kind: 'event';
|
|
25
25
|
readonly value: string;
|
|
26
|
-
}
|
|
27
|
-
|
|
26
|
+
} | {
|
|
27
|
+
readonly kind: 'literal';
|
|
28
|
+
readonly value: BindingValue | undefined;
|
|
29
|
+
readonly included: boolean;
|
|
30
|
+
};
|
|
31
|
+
/*** Initialize event-input drafts by matching operation input fields to same-path event payload fields, otherwise keeping optional literals omitted until authored. */
|
|
28
32
|
export declare function createStudioEventInputDrafts(fields: readonly StudioBindingInputFieldOption[], eventFields: readonly UiComponentEventPayloadFieldMeta[]): Readonly<Record<string, StudioEventInputDraft>>;
|
|
29
33
|
/*** Parse one binding-editor text input according to the declared binding value metadata and Studio fallback semantics. */
|
|
30
34
|
export declare function parseStudioBindingLiteral(input: string, meta: UiBindableValueMeta): BindingValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindingEditorModel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/bindingEditorModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,gCAAgC,EACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"bindingEditorModel.d.ts","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/bindingEditorModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,gCAAgC,EACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,mCAAmC,CAAC;AAG3C,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7D,eAAO,MAAM,6BAA6B,EAAE,SAAS;IACnD,KAAK,EAAE,uBAAuB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf,EAKA,CAAC;AAEF,iHAAiH;AACjH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,uBAAuB,EAC7B,KAAK,EAAE,mBAAmB,EAC1B,UAAU,EAAE,SAAS,4BAA4B,EAAE,GAClD,WAAW,CASb;AAED,wGAAwG;AACxG,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,QAAQ,CAAC,MAAM,EACX;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAClD;QAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,4BAA4B,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC;IAClG,QAAQ,CAAC,MAAM,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;CAClE,GAAG,YAAY,CAGf;AAED,MAAM,MAAM,qBAAqB,GAC7B;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEN,uKAAuK;AACvK,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,6BAA6B,EAAE,EAChD,WAAW,EAAE,SAAS,gCAAgC,EAAE,GACvD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAYjD;AAED,2HAA2H;AAC3H,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAWhG;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAEtE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,mBAAmB,GAAG,MAAM,CAG/E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,SAAS,4BAA4B,EAAE,EACnD,GAAG,EAAE,MAAM,GACV,4BAA4B,GAAG,SAAS,CAE1C"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createBindingLiteralDefaultValue } from './createBindingLiteralDefaultValue';
|
|
1
2
|
export const STUDIO_BINDING_SOURCE_OPTIONS = [
|
|
2
3
|
{ value: 'literal', label: 'Literal' },
|
|
3
4
|
{ value: 'state', label: 'State' },
|
|
@@ -22,17 +23,19 @@ export function createStudioEventBinding(args) {
|
|
|
22
23
|
const input = createStudioEventInputMap(args.fields, args.drafts);
|
|
23
24
|
return { target: args.target, ...(Object.keys(input).length > 0 ? { input } : {}) };
|
|
24
25
|
}
|
|
25
|
-
/*** Initialize event-input drafts by matching operation input fields to same-path event payload fields,
|
|
26
|
+
/*** Initialize event-input drafts by matching operation input fields to same-path event payload fields, otherwise keeping optional literals omitted until authored. */
|
|
26
27
|
export function createStudioEventInputDrafts(fields, eventFields) {
|
|
27
|
-
return
|
|
28
|
+
return fields.reduce((drafts, field) => {
|
|
28
29
|
const matchingEventField = eventFields.find((candidate) => candidate.path === field.name);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
const draft = matchingEventField
|
|
31
|
+
? { kind: 'event', value: matchingEventField.path }
|
|
32
|
+
: {
|
|
33
|
+
kind: 'literal',
|
|
34
|
+
value: createBindingLiteralDefaultValue(field),
|
|
35
|
+
included: field.required,
|
|
36
|
+
};
|
|
37
|
+
return { ...drafts, [field.name]: draft };
|
|
38
|
+
}, {});
|
|
36
39
|
}
|
|
37
40
|
/*** Parse one binding-editor text input according to the declared binding value metadata and Studio fallback semantics. */
|
|
38
41
|
export function parseStudioBindingLiteral(input, meta) {
|
|
@@ -71,36 +74,25 @@ export function createStudioOperationKey(operation) {
|
|
|
71
74
|
export function findStudioOperationByKey(operations, key) {
|
|
72
75
|
return operations.find((option) => createStudioOperationKey(option.operation) === key);
|
|
73
76
|
}
|
|
74
|
-
/*** Convert event-input drafts into the canonical binding input map, omitting
|
|
77
|
+
/*** Convert event-input drafts into the canonical binding input map, omitting untouched optional literal inputs. */
|
|
75
78
|
function createStudioEventInputMap(fields, drafts) {
|
|
76
79
|
return Object.fromEntries(fields.flatMap((field) => {
|
|
77
80
|
const draft = drafts[field.name];
|
|
78
|
-
if (!draft
|
|
81
|
+
if (!draft)
|
|
82
|
+
return [];
|
|
83
|
+
if (draft.kind === 'event') {
|
|
84
|
+
if (!draft.value && !field.required)
|
|
85
|
+
return [];
|
|
86
|
+
return [[field.name, { kind: 'source', source: { kind: 'event', path: draft.value } }]];
|
|
87
|
+
}
|
|
88
|
+
if (draft.value === undefined || (!draft.included && !field.required))
|
|
79
89
|
return [];
|
|
80
|
-
return [
|
|
81
|
-
[
|
|
82
|
-
field.name,
|
|
83
|
-
draft.kind === 'event'
|
|
84
|
-
? { kind: 'source', source: { kind: 'event', path: draft.value } }
|
|
85
|
-
: {
|
|
86
|
-
kind: 'literal',
|
|
87
|
-
value: parseStudioBindingLiteral(draft.value, field.value),
|
|
88
|
-
},
|
|
89
|
-
],
|
|
90
|
-
];
|
|
90
|
+
return [[field.name, { kind: 'literal', value: draft.value }]];
|
|
91
91
|
}));
|
|
92
92
|
}
|
|
93
93
|
/*** Create the empty/default binding value associated with one Studio binding metadata type. */
|
|
94
94
|
function createDefaultBindingValue(meta) {
|
|
95
|
-
|
|
96
|
-
return false;
|
|
97
|
-
if (meta.type === 'number')
|
|
98
|
-
return 0;
|
|
99
|
-
if (meta.type === 'array')
|
|
100
|
-
return [];
|
|
101
|
-
if (meta.type === 'object' || meta.type === 'record' || meta.type === 'imageAsset')
|
|
102
|
-
return {};
|
|
103
|
-
return '';
|
|
95
|
+
return createBindingLiteralDefaultValue({ value: meta });
|
|
104
96
|
}
|
|
105
97
|
/***
|
|
106
98
|
* Parse JSON and return it only when an injected/value guard accepts the structured value, otherwise return a caller fallback.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindingEditorModel.js","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/bindingEditorModel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bindingEditorModel.js","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/bindingEditorModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BindingValue } from '@ankhorage/contracts';
|
|
2
|
+
import type { StudioBindingInputFieldOption } from '../../../../bindingAuthoringModel';
|
|
3
|
+
/*** Create a deterministic typed literal value for one binding input from neutral authoring semantics, falling back to bindable metadata. */
|
|
4
|
+
export declare function createBindingLiteralDefaultValue(field: Pick<StudioBindingInputFieldOption, 'authoring' | 'value'>): BindingValue;
|
|
5
|
+
//# sourceMappingURL=createBindingLiteralDefaultValue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBindingLiteralDefaultValue.d.ts","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/createBindingLiteralDefaultValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAGvF,6IAA6I;AAC7I,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,IAAI,CAAC,6BAA6B,EAAE,WAAW,GAAG,OAAO,CAAC,GAChE,YAAY,CAOd"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*** Create a deterministic typed literal value for one binding input from neutral authoring semantics, falling back to bindable metadata. */
|
|
2
|
+
export function createBindingLiteralDefaultValue(field) {
|
|
3
|
+
const authoredDefault = field.authoring
|
|
4
|
+
? createDefaultAuthoringValue(field.authoring)
|
|
5
|
+
: undefined;
|
|
6
|
+
return authoredDefault !== undefined
|
|
7
|
+
? authoredDefault
|
|
8
|
+
: createBindableMetaDefaultValue(field.value);
|
|
9
|
+
}
|
|
10
|
+
/*** Build the minimum value needed to render required neutral authoring nodes without guessing unsupported structures. */
|
|
11
|
+
function createDefaultAuthoringValue(structure) {
|
|
12
|
+
switch (structure.kind) {
|
|
13
|
+
case 'choice':
|
|
14
|
+
return structure.values[0];
|
|
15
|
+
case 'object':
|
|
16
|
+
return Object.fromEntries(structure.fields.flatMap((field) => {
|
|
17
|
+
if (field.optional)
|
|
18
|
+
return [];
|
|
19
|
+
const value = createDefaultAuthoringValue(field.structure);
|
|
20
|
+
return value === undefined ? [] : [[field.name, value]];
|
|
21
|
+
}));
|
|
22
|
+
case 'ordered-list':
|
|
23
|
+
return [];
|
|
24
|
+
case 'scalar':
|
|
25
|
+
return createDefaultScalarValue(structure.scalarType);
|
|
26
|
+
case 'set':
|
|
27
|
+
return {};
|
|
28
|
+
case 'unsupported':
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/*** Build the deterministic empty value for one supported neutral scalar type. */
|
|
33
|
+
function createDefaultScalarValue(scalarType) {
|
|
34
|
+
if (scalarType === 'boolean')
|
|
35
|
+
return false;
|
|
36
|
+
if (scalarType === 'integer' || scalarType === 'number')
|
|
37
|
+
return 0;
|
|
38
|
+
if (scalarType === 'null')
|
|
39
|
+
return null;
|
|
40
|
+
return '';
|
|
41
|
+
}
|
|
42
|
+
/*** Preserve the existing binding defaults for non-DataSchema action inputs and unsupported neutral structures. */
|
|
43
|
+
function createBindableMetaDefaultValue(meta) {
|
|
44
|
+
if (meta.type === 'boolean')
|
|
45
|
+
return false;
|
|
46
|
+
if (meta.type === 'number')
|
|
47
|
+
return 0;
|
|
48
|
+
if (meta.type === 'array')
|
|
49
|
+
return [];
|
|
50
|
+
if (meta.type === 'object' || meta.type === 'record' || meta.type === 'imageAsset')
|
|
51
|
+
return {};
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=createBindingLiteralDefaultValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBindingLiteralDefaultValue.js","sourceRoot":"","sources":["../../../../../src/ui/admin/pages/bindings/createBindingLiteralDefaultValue.ts"],"names":[],"mappings":"AAKA,6IAA6I;AAC7I,MAAM,UAAU,gCAAgC,CAC9C,KAAiE;IAEjE,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS;QACrC,CAAC,CAAC,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,eAAe,KAAK,SAAS;QAClC,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,8BAA8B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,0HAA0H;AAC1H,SAAS,2BAA2B,CAAC,SAA6B;IAChE,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,WAAW,CACvB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjC,IAAI,KAAK,CAAC,QAAQ;oBAAE,OAAO,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC3D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,CACH,CAAC;QACJ,KAAK,cAAc;YACjB,OAAO,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxD,KAAK,KAAK;YACR,OAAO,EAAE,CAAC;QACZ,KAAK,aAAa;YAChB,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,wBAAwB,CAC/B,UAAkF;IAElF,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAClE,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,mHAAmH;AACnH,SAAS,8BAA8B,CAAC,IAAyB;IAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,EAAE,CAAC;IAC9F,OAAO,EAAE,CAAC;AACZ,CAAC"}
|