From 75c472b368b349c5cf392285925000f34c3415d3 Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:14:01 +0200
Subject: [PATCH 01/58] feat: define binding authoring model contracts
---
src/bindingAuthoringContracts.ts | 56 ++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 src/bindingAuthoringContracts.ts
diff --git a/src/bindingAuthoringContracts.ts b/src/bindingAuthoringContracts.ts
new file mode 100644
index 0000000..1992fa6
--- /dev/null
+++ b/src/bindingAuthoringContracts.ts
@@ -0,0 +1,56 @@
+import type {
+ BindingOperationRef,
+ DataSourceDiagnostic,
+ UiBindableEventMeta,
+ UiBindablePropMeta,
+ UiBindableValueMeta,
+} from '@ankhorage/contracts';
+
+export type StudioBindingCompatibility = 'compatible' | 'incompatible' | 'unknown';
+
+export interface StudioBindablePropOption {
+ readonly name: string;
+ readonly label: string;
+ readonly meta: UiBindablePropMeta;
+}
+
+export interface StudioBindableEventOption {
+ readonly name: string;
+ readonly label: string;
+ readonly meta: UiBindableEventMeta;
+}
+
+export interface StudioBindingInputFieldOption {
+ readonly name: string;
+ readonly label: string;
+ readonly value: UiBindableValueMeta;
+ readonly required: boolean;
+}
+
+export interface StudioBindingResponsePathOption {
+ readonly path: string;
+ readonly label: string;
+ readonly value: UiBindableValueMeta;
+}
+
+export interface StudioBindingOperationOption {
+ readonly operation: BindingOperationRef;
+ readonly label: string;
+ readonly sourceLabel: string;
+ readonly inputFields: readonly StudioBindingInputFieldOption[];
+ readonly responsePaths: readonly StudioBindingResponsePathOption[];
+}
+
+export interface StudioBindingDiagnostic {
+ readonly code:
+ | 'incompatible-response'
+ | 'missing-action'
+ | 'missing-binding-meta'
+ | 'missing-response-path'
+ | 'unknown-event'
+ | 'unknown-prop';
+ readonly message: string;
+ readonly severity: 'error' | 'warning';
+ readonly path?: string;
+ readonly runtimeDiagnostics?: readonly DataSourceDiagnostic[];
+}
From 5a0e9ab966ba6f81b9aabf6205bfff1ece8fda2c Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:14:11 +0200
Subject: [PATCH 02/58] feat: resolve bindable component metadata
---
src/bindingMetadataModel.ts | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
create mode 100644 src/bindingMetadataModel.ts
diff --git a/src/bindingMetadataModel.ts b/src/bindingMetadataModel.ts
new file mode 100644
index 0000000..ea60c3f
--- /dev/null
+++ b/src/bindingMetadataModel.ts
@@ -0,0 +1,29 @@
+import type { UiComponentMetaRegistry, UiNode } from '@ankhorage/contracts';
+
+import type { StudioBindableEventOption, StudioBindablePropOption } from './bindingAuthoringContracts';
+
+export function resolveStudioBindableProps(
+ node: UiNode,
+ registry: UiComponentMetaRegistry,
+): readonly StudioBindablePropOption[] {
+ const props = registry[node.type]?.bindings?.props ?? {};
+
+ return Object.entries(props).map(([name, meta]) => ({
+ name,
+ label: meta.label ?? name,
+ meta,
+ }));
+}
+
+export function resolveStudioBindableEvents(
+ node: UiNode,
+ registry: UiComponentMetaRegistry,
+): readonly StudioBindableEventOption[] {
+ const events = registry[node.type]?.bindings?.events ?? {};
+
+ return Object.entries(events).map(([name, meta]) => ({
+ name,
+ label: meta.label ?? name,
+ meta,
+ }));
+}
From 8c91a28a96a415ead68a7b000eeeb4ad451b411b Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:14:23 +0200
Subject: [PATCH 03/58] feat: add canonical binding registry mutations
---
src/bindingMutationModel.ts | 84 +++++++++++++++++++++++++++++++++++++
1 file changed, 84 insertions(+)
create mode 100644 src/bindingMutationModel.ts
diff --git a/src/bindingMutationModel.ts b/src/bindingMutationModel.ts
new file mode 100644
index 0000000..7978f71
--- /dev/null
+++ b/src/bindingMutationModel.ts
@@ -0,0 +1,84 @@
+import type {
+ ComponentDataBinding,
+ ComponentDataBindingRegistry,
+ EventBinding,
+ PropBinding,
+ UiNode,
+} from '@ankhorage/contracts';
+
+export function upsertStudioPropBinding(
+ registry: ComponentDataBindingRegistry,
+ node: UiNode,
+ propName: string,
+ binding: PropBinding,
+): ComponentDataBindingRegistry {
+ const current = registry[node.id];
+ return writeBinding(registry, node, {
+ ...current,
+ props: { ...(current?.props ?? {}), [propName]: binding },
+ });
+}
+
+export function removeStudioPropBinding(
+ registry: ComponentDataBindingRegistry,
+ node: UiNode,
+ propName: string,
+): ComponentDataBindingRegistry {
+ const current = registry[node.id];
+ if (!current?.props?.[propName]) return registry;
+ const props = { ...current.props };
+ delete props[propName];
+ return writeBinding(registry, node, { ...current, props });
+}
+
+export function appendStudioEventBinding(
+ registry: ComponentDataBindingRegistry,
+ node: UiNode,
+ eventName: string,
+ binding: EventBinding,
+): ComponentDataBindingRegistry {
+ const current = registry[node.id];
+ return writeBinding(registry, node, {
+ ...current,
+ events: {
+ ...(current?.events ?? {}),
+ [eventName]: [...(current?.events?.[eventName] ?? []), binding],
+ },
+ });
+}
+
+export function removeStudioEventBinding(
+ registry: ComponentDataBindingRegistry,
+ node: UiNode,
+ eventName: string,
+ bindingIndex: number,
+): ComponentDataBindingRegistry {
+ const current = registry[node.id];
+ const bindings = current?.events?.[eventName];
+ if (!bindings?.[bindingIndex]) return registry;
+ const events = { ...(current.events ?? {}) };
+ const next = bindings.filter((_, index) => index !== bindingIndex);
+ if (next.length > 0) events[eventName] = next;
+ else delete events[eventName];
+ return writeBinding(registry, node, { ...current, events });
+}
+
+function writeBinding(
+ registry: ComponentDataBindingRegistry,
+ node: UiNode,
+ value: Omit,
+): ComponentDataBindingRegistry {
+ const next = { ...registry };
+ const binding: ComponentDataBinding = {
+ ...value,
+ componentId: node.id,
+ componentType: node.type,
+ };
+ if (isEmptyBinding(binding)) delete next[node.id];
+ else next[node.id] = binding;
+ return next;
+}
+
+function isEmptyBinding(binding: ComponentDataBinding): boolean {
+ return Object.keys(binding.props ?? {}).length === 0 && Object.keys(binding.events ?? {}).length === 0;
+}
From 5b51711df0d031763f0c534b8ab8af0d87a396d2 Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:14:44 +0200
Subject: [PATCH 04/58] feat: resolve binding schema compatibility
---
src/bindingSchemaModel.ts | 111 ++++++++++++++++++++++++++++++++++++++
1 file changed, 111 insertions(+)
create mode 100644 src/bindingSchemaModel.ts
diff --git a/src/bindingSchemaModel.ts b/src/bindingSchemaModel.ts
new file mode 100644
index 0000000..b29903f
--- /dev/null
+++ b/src/bindingSchemaModel.ts
@@ -0,0 +1,111 @@
+import type {
+ DataSchema,
+ DataSchemaRegistry,
+ UiBindableValueFieldMeta,
+ UiBindableValueMeta,
+} from '@ankhorage/contracts';
+
+import type { StudioBindingCompatibility, StudioBindingResponsePathOption } from './bindingAuthoringContracts';
+
+export function resolveStudioSchemaValueMeta(
+ schema: DataSchema | undefined,
+ schemas: DataSchemaRegistry | undefined,
+ seen: ReadonlySet = new Set(),
+): UiBindableValueMeta {
+ const resolved = resolveSchemaRef(schema, schemas, seen);
+ if (!resolved) return { type: 'unknown' };
+ const type = resolveSchemaType(resolved);
+ const fields = resolveSchemaFields(resolved, schemas, seen);
+ const itemType =
+ type === 'array' ? resolveStudioSchemaValueMeta(resolved.items, schemas, seen).type : undefined;
+
+ return {
+ type,
+ ...(fields.length > 0 ? { fields } : {}),
+ ...(itemType ? { itemType } : {}),
+ };
+}
+
+export function collectStudioResponsePaths(
+ schema: DataSchema | undefined,
+ schemas: DataSchemaRegistry | undefined,
+): readonly StudioBindingResponsePathOption[] {
+ const root = resolveStudioSchemaValueMeta(schema, schemas);
+ const paths: StudioBindingResponsePathOption[] = [{ path: '', label: 'Response', value: root }];
+ collectObjectPaths(schema, schemas, '', paths, new Set());
+ return paths;
+}
+
+export function assessStudioBindingCompatibility(
+ expected: UiBindableValueMeta,
+ actual: UiBindableValueMeta,
+): StudioBindingCompatibility {
+ if (expected.type === 'unknown' || actual.type === 'unknown') return 'unknown';
+ if (expected.type === actual.type) {
+ if (expected.type !== 'array') return 'compatible';
+ if (!expected.itemType || !actual.itemType) return 'unknown';
+ return expected.itemType === actual.itemType ? 'compatible' : 'incompatible';
+ }
+ if (isObjectLike(expected.type) && isObjectLike(actual.type)) return 'compatible';
+ if (expected.type === 'imageAsset' && isImageAssetShape(actual)) return 'compatible';
+ return 'incompatible';
+}
+
+function collectObjectPaths(
+ schema: DataSchema | undefined,
+ schemas: DataSchemaRegistry | undefined,
+ prefix: string,
+ paths: StudioBindingResponsePathOption[],
+ seen: Set,
+): void {
+ const resolved = resolveSchemaRef(schema, schemas, seen);
+ if (!resolved?.properties) return;
+ for (const [name, property] of Object.entries(resolved.properties)) {
+ const path = prefix ? `${prefix}.${name}` : name;
+ paths.push({ path, label: path, value: resolveStudioSchemaValueMeta(property, schemas, seen) });
+ collectObjectPaths(property, schemas, path, paths, new Set(seen));
+ }
+}
+
+function resolveSchemaRef(
+ schema: DataSchema | undefined,
+ schemas: DataSchemaRegistry | undefined,
+ seen: ReadonlySet,
+): DataSchema | undefined {
+ const refId = schema?.ref?.id;
+ if (!refId || !schemas?.[refId] || seen.has(refId)) return schema;
+ return resolveSchemaRef(schemas[refId], schemas, new Set([...seen, refId]));
+}
+
+function resolveSchemaFields(
+ schema: DataSchema,
+ schemas: DataSchemaRegistry | undefined,
+ seen: ReadonlySet,
+): readonly UiBindableValueFieldMeta[] {
+ return Object.entries(schema.properties ?? {}).map(([path, property]) => ({
+ path,
+ type: resolveStudioSchemaValueMeta(property, schemas, seen).type,
+ required: schema.required?.includes(path) ?? false,
+ }));
+}
+
+function resolveSchemaType(schema: DataSchema): UiBindableValueMeta['type'] {
+ if (schema.format === 'date' || schema.format === 'date-time') return 'date';
+ const rawType = Array.isArray(schema.type) ? (schema.type.length === 1 ? schema.type[0] : undefined) : schema.type;
+ if (rawType === 'integer') return 'number';
+ if (rawType === 'object') return schema.additionalProperties ? 'record' : 'object';
+ if (rawType === 'array' || rawType === 'boolean' || rawType === 'number' || rawType === 'string') {
+ return rawType;
+ }
+ if (!rawType && schema.properties) return 'object';
+ if (!rawType && schema.items) return 'array';
+ return 'unknown';
+}
+
+function isObjectLike(type: UiBindableValueMeta['type']): boolean {
+ return type === 'object' || type === 'record';
+}
+
+function isImageAssetShape(value: UiBindableValueMeta): boolean {
+ return isObjectLike(value.type) && value.fields?.some((field) => field.path === 'uri' && field.type === 'string') === true;
+}
From b299d00998d4f373e5ce46f2a59f20d13206307a Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:15:01 +0200
Subject: [PATCH 05/58] feat: enumerate canonical binding operations
---
src/bindingOperationModel.ts | 109 +++++++++++++++++++++++++++++++++++
1 file changed, 109 insertions(+)
create mode 100644 src/bindingOperationModel.ts
diff --git a/src/bindingOperationModel.ts b/src/bindingOperationModel.ts
new file mode 100644
index 0000000..f8e9678
--- /dev/null
+++ b/src/bindingOperationModel.ts
@@ -0,0 +1,109 @@
+import type {
+ BindingOperationRef,
+ DataOperationConfig,
+ DataSchema,
+ DataSourceConfig,
+ DataSourceRegistry,
+ UiBindableValueMeta,
+} from '@ankhorage/contracts';
+
+import type {
+ StudioBindingInputFieldOption,
+ StudioBindingOperationOption,
+} from './bindingAuthoringContracts';
+import { collectStudioResponsePaths, resolveStudioSchemaValueMeta } from './bindingSchemaModel';
+
+export function collectStudioBindingOperationOptions(
+ dataSources: DataSourceRegistry,
+): readonly StudioBindingOperationOption[] {
+ return Object.values(dataSources)
+ .flatMap((source) => collectSourceOperations(source))
+ .sort((left, right) => left.label.localeCompare(right.label));
+}
+
+export function findStudioBindingOperationOption(
+ options: readonly StudioBindingOperationOption[],
+ ref: BindingOperationRef,
+): StudioBindingOperationOption | undefined {
+ return options.find(
+ (option) =>
+ option.operation.dataSourceId === ref.dataSourceId &&
+ option.operation.operationId === ref.operationId &&
+ option.operation.endpointId === ref.endpointId,
+ );
+}
+
+function collectSourceOperations(source: DataSourceConfig): StudioBindingOperationOption[] {
+ return Object.values(source.endpoints).flatMap((endpoint) =>
+ Object.values(endpoint.operations).map((operation) => ({
+ operation: {
+ dataSourceId: source.id,
+ endpointId: endpoint.id,
+ operationId: operation.id,
+ },
+ label: `${source.name ?? source.id} · ${operation.name ?? operation.id}`,
+ sourceLabel: describeSource(source),
+ inputFields: collectOperationInputFields(source, operation),
+ responsePaths: collectStudioResponsePaths(
+ resolveSlotSchema(source, operation.response),
+ source.schemas,
+ ),
+ })),
+ );
+}
+
+function collectOperationInputFields(
+ source: DataSourceConfig,
+ operation: DataOperationConfig,
+): readonly StudioBindingInputFieldOption[] {
+ const fields = new Map();
+ for (const parameter of operation.request?.parameters ?? []) {
+ fields.set(parameter.name, {
+ name: parameter.name,
+ label: parameter.description ?? parameter.name,
+ value: resolveStudioSchemaValueMeta(resolveSlotSchema(source, parameter), source.schemas),
+ required: parameter.required ?? false,
+ });
+ }
+
+ const requestSchema = resolveSlotSchema(source, operation.request);
+ for (const [name, schema] of Object.entries(requestSchema?.properties ?? {})) {
+ if (fields.has(name)) continue;
+ fields.set(name, {
+ name,
+ label: schema.title ?? name,
+ value: resolveStudioSchemaValueMeta(schema, source.schemas),
+ required: requestSchema?.required?.includes(name) ?? false,
+ });
+ }
+
+ return [...fields.values()];
+}
+
+function resolveSlotSchema(
+ source: DataSourceConfig,
+ slot: { readonly schema?: DataSchema; readonly schemaRef?: { readonly id: string } } | undefined,
+): DataSchema | undefined {
+ return slot?.schema ?? (slot?.schemaRef ? source.schemas?.[slot.schemaRef.id] : undefined);
+}
+
+function describeSource(source: DataSourceConfig): string {
+ if (source.kind === 'database') return `${source.id} · database`;
+ return `${source.id} · ${source.origin} · ${source.protocol}`;
+}
+
+export function createStudioActionInputFields(
+ payloadSchema: Readonly> | undefined,
+): readonly StudioBindingInputFieldOption[] {
+ return Object.entries(payloadSchema ?? {}).map(([name, field]) => ({
+ name,
+ label: field.label,
+ value: { type: toBindableType(field.type) },
+ required: field.required ?? false,
+ }));
+}
+
+function toBindableType(type: string): UiBindableValueMeta['type'] {
+ if (type === 'string' || type === 'number' || type === 'boolean' || type === 'object') return type;
+ return 'unknown';
+}
From 7c65fe58e93c2c3547d6b699a2daf80701e0209c Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:15:29 +0200
Subject: [PATCH 06/58] feat: expand binding diagnostics contracts
---
src/bindingAuthoringContracts.ts | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/bindingAuthoringContracts.ts b/src/bindingAuthoringContracts.ts
index 1992fa6..6edd136 100644
--- a/src/bindingAuthoringContracts.ts
+++ b/src/bindingAuthoringContracts.ts
@@ -43,9 +43,12 @@ export interface StudioBindingOperationOption {
export interface StudioBindingDiagnostic {
readonly code:
+ | 'incompatible-input'
| 'incompatible-response'
| 'missing-action'
| 'missing-binding-meta'
+ | 'missing-input'
+ | 'missing-operation'
| 'missing-response-path'
| 'unknown-event'
| 'unknown-prop';
From 0754f9a2cc073a6c5285ad44d721e14428405ddd Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:15:49 +0200
Subject: [PATCH 07/58] feat: diagnose authored component bindings
---
src/bindingDiagnosticsModel.ts | 146 +++++++++++++++++++++++++++++++++
1 file changed, 146 insertions(+)
create mode 100644 src/bindingDiagnosticsModel.ts
diff --git a/src/bindingDiagnosticsModel.ts b/src/bindingDiagnosticsModel.ts
new file mode 100644
index 0000000..032f618
--- /dev/null
+++ b/src/bindingDiagnosticsModel.ts
@@ -0,0 +1,146 @@
+import type {
+ BindingInputValue,
+ ComponentDataBindingRegistry,
+ DataSourceRegistry,
+ EventBinding,
+ PropBinding,
+ UiComponentMetaRegistry,
+ UiNode,
+} from '@ankhorage/contracts';
+import { validateRuntimeBindingOperationRef } from '@ankhorage/runtime';
+
+import type {
+ StudioBindingDiagnostic,
+ StudioBindingInputFieldOption,
+ StudioBindingOperationOption,
+} from './bindingAuthoringContracts';
+import { findStudioBindingOperationOption } from './bindingOperationModel';
+import { assessStudioBindingCompatibility } from './bindingSchemaModel';
+
+export function diagnoseStudioComponentBindings(args: {
+ readonly node: UiNode;
+ readonly registry: ComponentDataBindingRegistry;
+ readonly componentMeta: UiComponentMetaRegistry;
+ readonly dataSources: DataSourceRegistry;
+ readonly operations: readonly StudioBindingOperationOption[];
+ readonly actionTypes: readonly string[];
+}): readonly StudioBindingDiagnostic[] {
+ const binding = args.registry[args.node.id];
+ if (!binding) return [];
+ const meta = args.componentMeta[args.node.type]?.bindings;
+ if (!meta) {
+ return [diagnostic('missing-binding-meta', 'This component exposes no canonical binding metadata.')];
+ }
+
+ return [
+ ...Object.entries(binding.props ?? {}).flatMap(([name, prop]) =>
+ diagnosePropBinding(name, prop, meta.props?.[name], args),
+ ),
+ ...Object.entries(binding.events ?? {}).flatMap(([name, events]) =>
+ events.flatMap((event, index) => diagnoseEventBinding(name, index, event, meta.events?.[name], args)),
+ ),
+ ];
+}
+
+function diagnosePropBinding(
+ name: string,
+ binding: PropBinding,
+ meta: UiComponentMetaRegistry[string]['bindings'] extends infer _T ? unknown : never,
+ args: Parameters[0],
+): readonly StudioBindingDiagnostic[] {
+ const propMeta = args.componentMeta[args.node.type]?.bindings?.props?.[name];
+ if (!propMeta) return [diagnostic('unknown-prop', `Property '${name}' is not bindable.`, `props.${name}`)];
+ if (binding.source.kind !== 'operation') return [];
+
+ const runtimeDiagnostics = validateRuntimeBindingOperationRef(binding.source.operation, args.dataSources);
+ if (runtimeDiagnostics.length > 0) {
+ return [
+ {
+ ...diagnostic('missing-operation', runtimeDiagnostics[0]?.message ?? 'Operation is unavailable.', `props.${name}`),
+ runtimeDiagnostics,
+ },
+ ];
+ }
+
+ const operation = findStudioBindingOperationOption(args.operations, binding.source.operation);
+ const path = binding.source.path ?? '';
+ const response = operation?.responsePaths.find((candidate) => candidate.path === path);
+ if (!response) {
+ return [diagnostic('missing-response-path', `Response path '${path || ''}' is unavailable.`, `props.${name}`)];
+ }
+
+ const compatibility = assessStudioBindingCompatibility(propMeta.value, response.value);
+ return compatibility === 'incompatible'
+ ? [diagnostic('incompatible-response', `Response '${response.label}' is incompatible with ${propMeta.value.type}.`, `props.${name}`)]
+ : [];
+}
+
+function diagnoseEventBinding(
+ eventName: string,
+ index: number,
+ binding: EventBinding,
+ _meta: unknown,
+ args: Parameters[0],
+): readonly StudioBindingDiagnostic[] {
+ const eventMeta = args.componentMeta[args.node.type]?.bindings?.events?.[eventName];
+ const path = `events.${eventName}.${index}`;
+ if (!eventMeta) return [diagnostic('unknown-event', `Event '${eventName}' is not bindable.`, path)];
+
+ if (binding.target.kind === 'action') {
+ if (!args.actionTypes.includes(binding.target.type)) {
+ return [diagnostic('missing-action', `Action '${binding.target.type}' is unavailable.`, path)];
+ }
+ return [];
+ }
+
+ const runtimeDiagnostics = validateRuntimeBindingOperationRef(binding.target.operation, args.dataSources);
+ if (runtimeDiagnostics.length > 0) {
+ return [{ ...diagnostic('missing-operation', runtimeDiagnostics[0]?.message ?? 'Operation is unavailable.', path), runtimeDiagnostics }];
+ }
+
+ const operation = findStudioBindingOperationOption(args.operations, binding.target.operation);
+ return diagnoseEventInputs(binding, operation?.inputFields ?? [], eventMeta.payload?.fields ?? [], path);
+}
+
+function diagnoseEventInputs(
+ binding: EventBinding,
+ fields: readonly StudioBindingInputFieldOption[],
+ eventFields: readonly { readonly path: string; readonly type: string }[],
+ path: string,
+): readonly StudioBindingDiagnostic[] {
+ return fields.flatMap((field) => {
+ const input = binding.input?.[field.name];
+ if (!input) {
+ return field.required ? [diagnostic('missing-input', `Required input '${field.name}' is not mapped.`, `${path}.input.${field.name}`)] : [];
+ }
+ return diagnoseInputCompatibility(input, field, eventFields, `${path}.input.${field.name}`);
+ });
+}
+
+function diagnoseInputCompatibility(
+ input: BindingInputValue,
+ field: StudioBindingInputFieldOption,
+ eventFields: readonly { readonly path: string; readonly type: string }[],
+ path: string,
+): readonly StudioBindingDiagnostic[] {
+ if (input.kind !== 'source' || input.source.kind !== 'event') return [];
+ const eventField = eventFields.find((candidate) => candidate.path === input.source.path);
+ if (!eventField) return [diagnostic('incompatible-input', `Event path '${input.source.path}' is unavailable.`, path)];
+ const compatibility = assessStudioBindingCompatibility(field.value, { type: toBindableType(eventField.type) });
+ return compatibility === 'incompatible'
+ ? [diagnostic('incompatible-input', `Event field '${eventField.path}' is incompatible with ${field.value.type}.`, path)]
+ : [];
+}
+
+function toBindableType(type: string) {
+ if (type === 'string' || type === 'number' || type === 'boolean' || type === 'object' || type === 'record') return type;
+ return 'unknown' as const;
+}
+
+function diagnostic(
+ code: StudioBindingDiagnostic['code'],
+ message: string,
+ path?: string,
+): StudioBindingDiagnostic {
+ return { code, message, severity: 'error', ...(path ? { path } : {}) };
+}
From 6f4e6c8d658f2f7c82e856e4a1b1c8785ed087d5 Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:16:01 +0200
Subject: [PATCH 08/58] feat: expose binding authoring model
---
src/bindingAuthoringModel.ts | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 src/bindingAuthoringModel.ts
diff --git a/src/bindingAuthoringModel.ts b/src/bindingAuthoringModel.ts
new file mode 100644
index 0000000..bfb0909
--- /dev/null
+++ b/src/bindingAuthoringModel.ts
@@ -0,0 +1,6 @@
+export * from './bindingAuthoringContracts';
+export * from './bindingDiagnosticsModel';
+export * from './bindingMetadataModel';
+export * from './bindingMutationModel';
+export * from './bindingOperationModel';
+export * from './bindingSchemaModel';
From fbe5d7f6816bd5fbaebba542e263aef84dc4c2fd Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:16:30 +0200
Subject: [PATCH 09/58] test: cover canonical binding authoring model
---
src/bindingAuthoringModel.test.ts | 177 ++++++++++++++++++++++++++++++
1 file changed, 177 insertions(+)
create mode 100644 src/bindingAuthoringModel.test.ts
diff --git a/src/bindingAuthoringModel.test.ts b/src/bindingAuthoringModel.test.ts
new file mode 100644
index 0000000..a152e68
--- /dev/null
+++ b/src/bindingAuthoringModel.test.ts
@@ -0,0 +1,177 @@
+import type {
+ ComponentDataBindingRegistry,
+ DataSourceRegistry,
+ PropBinding,
+ UiNode,
+} from '@ankhorage/contracts';
+import { ZORA_BINDABLE_COMPONENT_META } from '@ankhorage/zora';
+import { describe, expect, test } from 'bun:test';
+
+import {
+ appendStudioEventBinding,
+ assessStudioBindingCompatibility,
+ collectStudioBindingOperationOptions,
+ diagnoseStudioComponentBindings,
+ removeStudioEventBinding,
+ removeStudioPropBinding,
+ resolveStudioBindableEvents,
+ resolveStudioBindableProps,
+ upsertStudioPropBinding,
+} from './bindingAuthoringModel';
+
+const button: UiNode = { id: 'button-1', type: 'Button', props: { children: 'Save' } };
+
+const dataSources: DataSourceRegistry = {
+ external: {
+ id: 'external',
+ kind: 'api',
+ origin: 'external',
+ protocol: 'rest',
+ baseUrl: 'https://example.test',
+ endpoints: {
+ profile: {
+ id: 'profile',
+ kind: 'http',
+ operations: {
+ 'profile.read': {
+ id: 'profile.read',
+ protocol: 'http',
+ intent: 'read',
+ response: {
+ schema: {
+ type: 'object',
+ properties: { name: { type: 'string' }, age: { type: 'number' } },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ generated: {
+ id: 'generated',
+ kind: 'api',
+ origin: 'generated',
+ protocol: 'rest',
+ generatedApiId: 'generated',
+ adapter: { id: 'primary-db', kind: 'database' },
+ endpoints: {
+ items: {
+ id: 'items',
+ kind: 'database',
+ operations: {
+ 'items.create': {
+ id: 'items.create',
+ protocol: 'database',
+ intent: 'create',
+ request: {
+ schema: {
+ type: 'object',
+ required: ['name'],
+ properties: { name: { type: 'string' }, count: { type: 'integer' } },
+ },
+ },
+ response: {
+ schema: {
+ type: 'object',
+ properties: { id: { type: 'string' }, name: { type: 'string' } },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+};
+
+describe('binding authoring metadata', () => {
+ test('derives only explicitly bindable props and events from ZORA metadata', () => {
+ expect(resolveStudioBindableProps(button, ZORA_BINDABLE_COMPONENT_META).map((entry) => entry.name)).toEqual([
+ 'children',
+ 'disabled',
+ ]);
+ expect(resolveStudioBindableEvents(button, ZORA_BINDABLE_COMPONENT_META).map((entry) => entry.name)).toEqual([
+ 'press',
+ ]);
+ });
+});
+
+describe('binding registry mutations', () => {
+ test('round-trips property and event bindings through the canonical registry', () => {
+ const prop: PropBinding = { source: { kind: 'state', path: 'draft.name' } };
+ const withProp = upsertStudioPropBinding({}, button, 'children', prop);
+ const withEvent = appendStudioEventBinding(withProp, button, 'press', {
+ target: { kind: 'action', type: 'navigate' },
+ input: { route: { kind: 'literal', value: '/done' } },
+ });
+ const serialized = JSON.parse(JSON.stringify(withEvent)) as ComponentDataBindingRegistry;
+
+ expect(serialized[button.id]?.props?.children).toEqual(prop);
+ expect(serialized[button.id]?.events?.press?.[0]?.target).toEqual({
+ kind: 'action',
+ type: 'navigate',
+ });
+ expect(removeStudioEventBinding(removeStudioPropBinding(serialized, button, 'children'), button, 'press', 0)).toEqual({});
+ });
+});
+
+describe('binding operations and schemas', () => {
+ test('enumerates external and generated operations through one canonical model', () => {
+ const options = collectStudioBindingOperationOptions(dataSources);
+ expect(options.map((option) => option.operation.operationId)).toEqual([
+ 'items.create',
+ 'profile.read',
+ ]);
+ expect(options[0]?.inputFields).toMatchObject([
+ { name: 'name', required: true, value: { type: 'string' } },
+ { name: 'count', required: false, value: { type: 'number' } },
+ ]);
+ expect(options[1]?.responsePaths.map((entry) => entry.path)).toEqual(['', 'name', 'age']);
+ });
+
+ test('reports meaningful schema compatibility', () => {
+ expect(assessStudioBindingCompatibility({ type: 'string' }, { type: 'string' })).toBe('compatible');
+ expect(assessStudioBindingCompatibility({ type: 'number' }, { type: 'string' })).toBe('incompatible');
+ expect(assessStudioBindingCompatibility({ type: 'record' }, { type: 'object' })).toBe('compatible');
+ });
+});
+
+describe('binding diagnostics', () => {
+ test('diagnoses missing operations and incompatible response paths', () => {
+ const operations = collectStudioBindingOperationOptions(dataSources);
+ const missingRegistry = upsertStudioPropBinding({}, button, 'children', {
+ source: {
+ kind: 'operation',
+ operation: { dataSourceId: 'missing', endpointId: 'x', operationId: 'x.read' },
+ },
+ });
+ const incompatibleRegistry = upsertStudioPropBinding({}, button, 'children', {
+ source: {
+ kind: 'operation',
+ operation: { dataSourceId: 'external', endpointId: 'profile', operationId: 'profile.read' },
+ path: 'age',
+ },
+ });
+
+ expect(
+ diagnoseStudioComponentBindings({
+ node: button,
+ registry: missingRegistry,
+ componentMeta: ZORA_BINDABLE_COMPONENT_META,
+ dataSources,
+ operations,
+ actionTypes: ['navigate'],
+ })[0]?.code,
+ ).toBe('missing-operation');
+ expect(
+ diagnoseStudioComponentBindings({
+ node: button,
+ registry: incompatibleRegistry,
+ componentMeta: ZORA_BINDABLE_COMPONENT_META,
+ dataSources,
+ operations,
+ actionTypes: ['navigate'],
+ })[0]?.code,
+ ).toBe('incompatible-response');
+ });
+});
From b0c5d4bcf5eaa13456c77bae93770b81ac9dfad0 Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:16:46 +0200
Subject: [PATCH 10/58] ci: validate ADM 6 model branch
---
.github/workflows/validate-adm6.yml | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
create mode 100644 .github/workflows/validate-adm6.yml
diff --git a/.github/workflows/validate-adm6.yml b/.github/workflows/validate-adm6.yml
new file mode 100644
index 0000000..8da5b84
--- /dev/null
+++ b/.github/workflows/validate-adm6.yml
@@ -0,0 +1,25 @@
+name: Validate ADM 6
+
+on:
+ push:
+ branches:
+ - agent/adm-6-binding-authoring
+
+permissions:
+ contents: read
+
+jobs:
+ validate:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: oven-sh/setup-bun@v2
+ with:
+ bun-version: '1.3.13'
+ - run: bun install --frozen-lockfile
+ - run: bun run build
+ - run: bun run lint
+ - run: bun run format:check
+ - run: bun run knip
+ - run: bun run test
+ - run: bun run typecheck
From c5dcb03a8e0c231aa849bd8e32d3908ad0817f80 Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:18:50 +0200
Subject: [PATCH 11/58] fix: narrow binding schema types safely
---
src/bindingSchemaModel.ts | 37 +++++++++++++++++++++++++++++++------
1 file changed, 31 insertions(+), 6 deletions(-)
diff --git a/src/bindingSchemaModel.ts b/src/bindingSchemaModel.ts
index b29903f..4fe14bb 100644
--- a/src/bindingSchemaModel.ts
+++ b/src/bindingSchemaModel.ts
@@ -1,11 +1,15 @@
import type {
DataSchema,
+ DataSchemaPrimitiveType,
DataSchemaRegistry,
UiBindableValueFieldMeta,
UiBindableValueMeta,
} from '@ankhorage/contracts';
-import type { StudioBindingCompatibility, StudioBindingResponsePathOption } from './bindingAuthoringContracts';
+import type {
+ StudioBindingCompatibility,
+ StudioBindingResponsePathOption,
+} from './bindingAuthoringContracts';
export function resolveStudioSchemaValueMeta(
schema: DataSchema | undefined,
@@ -17,7 +21,9 @@ export function resolveStudioSchemaValueMeta(
const type = resolveSchemaType(resolved);
const fields = resolveSchemaFields(resolved, schemas, seen);
const itemType =
- type === 'array' ? resolveStudioSchemaValueMeta(resolved.items, schemas, seen).type : undefined;
+ type === 'array'
+ ? resolveStudioSchemaValueMeta(resolved.items, schemas, seen).type
+ : undefined;
return {
type,
@@ -62,7 +68,11 @@ function collectObjectPaths(
if (!resolved?.properties) return;
for (const [name, property] of Object.entries(resolved.properties)) {
const path = prefix ? `${prefix}.${name}` : name;
- paths.push({ path, label: path, value: resolveStudioSchemaValueMeta(property, schemas, seen) });
+ paths.push({
+ path,
+ label: path,
+ value: resolveStudioSchemaValueMeta(property, schemas, seen),
+ });
collectObjectPaths(property, schemas, path, paths, new Set(seen));
}
}
@@ -91,10 +101,15 @@ function resolveSchemaFields(
function resolveSchemaType(schema: DataSchema): UiBindableValueMeta['type'] {
if (schema.format === 'date' || schema.format === 'date-time') return 'date';
- const rawType = Array.isArray(schema.type) ? (schema.type.length === 1 ? schema.type[0] : undefined) : schema.type;
+ const rawType = resolveSingleSchemaType(schema.type);
if (rawType === 'integer') return 'number';
if (rawType === 'object') return schema.additionalProperties ? 'record' : 'object';
- if (rawType === 'array' || rawType === 'boolean' || rawType === 'number' || rawType === 'string') {
+ if (
+ rawType === 'array' ||
+ rawType === 'boolean' ||
+ rawType === 'number' ||
+ rawType === 'string'
+ ) {
return rawType;
}
if (!rawType && schema.properties) return 'object';
@@ -102,10 +117,20 @@ function resolveSchemaType(schema: DataSchema): UiBindableValueMeta['type'] {
return 'unknown';
}
+function resolveSingleSchemaType(
+ type: DataSchema['type'],
+): DataSchemaPrimitiveType | undefined {
+ if (typeof type === 'string') return type;
+ return type?.length === 1 ? type[0] : undefined;
+}
+
function isObjectLike(type: UiBindableValueMeta['type']): boolean {
return type === 'object' || type === 'record';
}
function isImageAssetShape(value: UiBindableValueMeta): boolean {
- return isObjectLike(value.type) && value.fields?.some((field) => field.path === 'uri' && field.type === 'string') === true;
+ return (
+ isObjectLike(value.type) &&
+ value.fields?.some((field) => field.path === 'uri' && field.type === 'string') === true
+ );
}
From e08326395218779305c3456db51a1912afb3bfdd Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:19:44 +0200
Subject: [PATCH 12/58] ci: format ADM 6 model sources
---
.github/workflows/format-adm6.yml | 33 +++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 .github/workflows/format-adm6.yml
diff --git a/.github/workflows/format-adm6.yml b/.github/workflows/format-adm6.yml
new file mode 100644
index 0000000..0d878e4
--- /dev/null
+++ b/.github/workflows/format-adm6.yml
@@ -0,0 +1,33 @@
+name: Format ADM 6
+
+on:
+ push:
+ branches:
+ - agent/adm-6-binding-authoring
+
+permissions:
+ contents: write
+
+jobs:
+ format:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - uses: oven-sh/setup-bun@v2
+ with:
+ bun-version: '1.3.13'
+ - run: bun install --frozen-lockfile
+ - run: bun run lint:fix
+ - run: bun run format
+ - name: Remove temporary formatter
+ run: rm .github/workflows/format-adm6.yml
+ - name: Commit formatted model
+ run: |
+ git config user.name "Fabio Gartenmann"
+ git config user.email "137318798+artiphishle@users.noreply.github.com"
+ git add -A
+ if git diff --cached --quiet; then exit 0; fi
+ git commit -m "style: format ADM 6 binding model"
+ git push origin HEAD:agent/adm-6-binding-authoring
From ae837165496b7e8f3741d3845f32d793f1008611 Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Mon, 10 Aug 2026 23:20:27 +0000
Subject: [PATCH 13/58] style: format ADM 6 binding model
---
.github/workflows/format-adm6.yml | 33 ----------
src/bindingAuthoringModel.test.ts | 34 ++++++----
src/bindingDiagnosticsModel.ts | 104 +++++++++++++++++++++++++-----
src/bindingMetadataModel.ts | 5 +-
src/bindingMutationModel.ts | 4 +-
src/bindingOperationModel.ts | 12 +++-
src/bindingSchemaModel.ts | 8 +--
7 files changed, 129 insertions(+), 71 deletions(-)
delete mode 100644 .github/workflows/format-adm6.yml
diff --git a/.github/workflows/format-adm6.yml b/.github/workflows/format-adm6.yml
deleted file mode 100644
index 0d878e4..0000000
--- a/.github/workflows/format-adm6.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-name: Format ADM 6
-
-on:
- push:
- branches:
- - agent/adm-6-binding-authoring
-
-permissions:
- contents: write
-
-jobs:
- format:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
- - uses: oven-sh/setup-bun@v2
- with:
- bun-version: '1.3.13'
- - run: bun install --frozen-lockfile
- - run: bun run lint:fix
- - run: bun run format
- - name: Remove temporary formatter
- run: rm .github/workflows/format-adm6.yml
- - name: Commit formatted model
- run: |
- git config user.name "Fabio Gartenmann"
- git config user.email "137318798+artiphishle@users.noreply.github.com"
- git add -A
- if git diff --cached --quiet; then exit 0; fi
- git commit -m "style: format ADM 6 binding model"
- git push origin HEAD:agent/adm-6-binding-authoring
diff --git a/src/bindingAuthoringModel.test.ts b/src/bindingAuthoringModel.test.ts
index a152e68..80e933e 100644
--- a/src/bindingAuthoringModel.test.ts
+++ b/src/bindingAuthoringModel.test.ts
@@ -86,13 +86,12 @@ const dataSources: DataSourceRegistry = {
describe('binding authoring metadata', () => {
test('derives only explicitly bindable props and events from ZORA metadata', () => {
- expect(resolveStudioBindableProps(button, ZORA_BINDABLE_COMPONENT_META).map((entry) => entry.name)).toEqual([
- 'children',
- 'disabled',
- ]);
- expect(resolveStudioBindableEvents(button, ZORA_BINDABLE_COMPONENT_META).map((entry) => entry.name)).toEqual([
- 'press',
- ]);
+ expect(
+ resolveStudioBindableProps(button, ZORA_BINDABLE_COMPONENT_META).map((entry) => entry.name),
+ ).toEqual(['children', 'disabled']);
+ expect(
+ resolveStudioBindableEvents(button, ZORA_BINDABLE_COMPONENT_META).map((entry) => entry.name),
+ ).toEqual(['press']);
});
});
@@ -111,7 +110,14 @@ describe('binding registry mutations', () => {
kind: 'action',
type: 'navigate',
});
- expect(removeStudioEventBinding(removeStudioPropBinding(serialized, button, 'children'), button, 'press', 0)).toEqual({});
+ expect(
+ removeStudioEventBinding(
+ removeStudioPropBinding(serialized, button, 'children'),
+ button,
+ 'press',
+ 0,
+ ),
+ ).toEqual({});
});
});
@@ -130,9 +136,15 @@ describe('binding operations and schemas', () => {
});
test('reports meaningful schema compatibility', () => {
- expect(assessStudioBindingCompatibility({ type: 'string' }, { type: 'string' })).toBe('compatible');
- expect(assessStudioBindingCompatibility({ type: 'number' }, { type: 'string' })).toBe('incompatible');
- expect(assessStudioBindingCompatibility({ type: 'record' }, { type: 'object' })).toBe('compatible');
+ expect(assessStudioBindingCompatibility({ type: 'string' }, { type: 'string' })).toBe(
+ 'compatible',
+ );
+ expect(assessStudioBindingCompatibility({ type: 'number' }, { type: 'string' })).toBe(
+ 'incompatible',
+ );
+ expect(assessStudioBindingCompatibility({ type: 'record' }, { type: 'object' })).toBe(
+ 'compatible',
+ );
});
});
diff --git a/src/bindingDiagnosticsModel.ts b/src/bindingDiagnosticsModel.ts
index 032f618..d2cafaa 100644
--- a/src/bindingDiagnosticsModel.ts
+++ b/src/bindingDiagnosticsModel.ts
@@ -29,7 +29,9 @@ export function diagnoseStudioComponentBindings(args: {
if (!binding) return [];
const meta = args.componentMeta[args.node.type]?.bindings;
if (!meta) {
- return [diagnostic('missing-binding-meta', 'This component exposes no canonical binding metadata.')];
+ return [
+ diagnostic('missing-binding-meta', 'This component exposes no canonical binding metadata.'),
+ ];
}
return [
@@ -37,7 +39,9 @@ export function diagnoseStudioComponentBindings(args: {
diagnosePropBinding(name, prop, meta.props?.[name], args),
),
...Object.entries(binding.events ?? {}).flatMap(([name, events]) =>
- events.flatMap((event, index) => diagnoseEventBinding(name, index, event, meta.events?.[name], args)),
+ events.flatMap((event, index) =>
+ diagnoseEventBinding(name, index, event, meta.events?.[name], args),
+ ),
),
];
}
@@ -49,14 +53,22 @@ function diagnosePropBinding(
args: Parameters[0],
): readonly StudioBindingDiagnostic[] {
const propMeta = args.componentMeta[args.node.type]?.bindings?.props?.[name];
- if (!propMeta) return [diagnostic('unknown-prop', `Property '${name}' is not bindable.`, `props.${name}`)];
+ if (!propMeta)
+ return [diagnostic('unknown-prop', `Property '${name}' is not bindable.`, `props.${name}`)];
if (binding.source.kind !== 'operation') return [];
- const runtimeDiagnostics = validateRuntimeBindingOperationRef(binding.source.operation, args.dataSources);
+ const runtimeDiagnostics = validateRuntimeBindingOperationRef(
+ binding.source.operation,
+ args.dataSources,
+ );
if (runtimeDiagnostics.length > 0) {
return [
{
- ...diagnostic('missing-operation', runtimeDiagnostics[0]?.message ?? 'Operation is unavailable.', `props.${name}`),
+ ...diagnostic(
+ 'missing-operation',
+ runtimeDiagnostics[0]?.message ?? 'Operation is unavailable.',
+ `props.${name}`,
+ ),
runtimeDiagnostics,
},
];
@@ -66,12 +78,24 @@ function diagnosePropBinding(
const path = binding.source.path ?? '';
const response = operation?.responsePaths.find((candidate) => candidate.path === path);
if (!response) {
- return [diagnostic('missing-response-path', `Response path '${path || ''}' is unavailable.`, `props.${name}`)];
+ return [
+ diagnostic(
+ 'missing-response-path',
+ `Response path '${path || ''}' is unavailable.`,
+ `props.${name}`,
+ ),
+ ];
}
const compatibility = assessStudioBindingCompatibility(propMeta.value, response.value);
return compatibility === 'incompatible'
- ? [diagnostic('incompatible-response', `Response '${response.label}' is incompatible with ${propMeta.value.type}.`, `props.${name}`)]
+ ? [
+ diagnostic(
+ 'incompatible-response',
+ `Response '${response.label}' is incompatible with ${propMeta.value.type}.`,
+ `props.${name}`,
+ ),
+ ]
: [];
}
@@ -84,22 +108,42 @@ function diagnoseEventBinding(
): readonly StudioBindingDiagnostic[] {
const eventMeta = args.componentMeta[args.node.type]?.bindings?.events?.[eventName];
const path = `events.${eventName}.${index}`;
- if (!eventMeta) return [diagnostic('unknown-event', `Event '${eventName}' is not bindable.`, path)];
+ if (!eventMeta)
+ return [diagnostic('unknown-event', `Event '${eventName}' is not bindable.`, path)];
if (binding.target.kind === 'action') {
if (!args.actionTypes.includes(binding.target.type)) {
- return [diagnostic('missing-action', `Action '${binding.target.type}' is unavailable.`, path)];
+ return [
+ diagnostic('missing-action', `Action '${binding.target.type}' is unavailable.`, path),
+ ];
}
return [];
}
- const runtimeDiagnostics = validateRuntimeBindingOperationRef(binding.target.operation, args.dataSources);
+ const runtimeDiagnostics = validateRuntimeBindingOperationRef(
+ binding.target.operation,
+ args.dataSources,
+ );
if (runtimeDiagnostics.length > 0) {
- return [{ ...diagnostic('missing-operation', runtimeDiagnostics[0]?.message ?? 'Operation is unavailable.', path), runtimeDiagnostics }];
+ return [
+ {
+ ...diagnostic(
+ 'missing-operation',
+ runtimeDiagnostics[0]?.message ?? 'Operation is unavailable.',
+ path,
+ ),
+ runtimeDiagnostics,
+ },
+ ];
}
const operation = findStudioBindingOperationOption(args.operations, binding.target.operation);
- return diagnoseEventInputs(binding, operation?.inputFields ?? [], eventMeta.payload?.fields ?? [], path);
+ return diagnoseEventInputs(
+ binding,
+ operation?.inputFields ?? [],
+ eventMeta.payload?.fields ?? [],
+ path,
+ );
}
function diagnoseEventInputs(
@@ -111,7 +155,15 @@ function diagnoseEventInputs(
return fields.flatMap((field) => {
const input = binding.input?.[field.name];
if (!input) {
- return field.required ? [diagnostic('missing-input', `Required input '${field.name}' is not mapped.`, `${path}.input.${field.name}`)] : [];
+ return field.required
+ ? [
+ diagnostic(
+ 'missing-input',
+ `Required input '${field.name}' is not mapped.`,
+ `${path}.input.${field.name}`,
+ ),
+ ]
+ : [];
}
return diagnoseInputCompatibility(input, field, eventFields, `${path}.input.${field.name}`);
});
@@ -125,15 +177,33 @@ function diagnoseInputCompatibility(
): readonly StudioBindingDiagnostic[] {
if (input.kind !== 'source' || input.source.kind !== 'event') return [];
const eventField = eventFields.find((candidate) => candidate.path === input.source.path);
- if (!eventField) return [diagnostic('incompatible-input', `Event path '${input.source.path}' is unavailable.`, path)];
- const compatibility = assessStudioBindingCompatibility(field.value, { type: toBindableType(eventField.type) });
+ if (!eventField)
+ return [
+ diagnostic('incompatible-input', `Event path '${input.source.path}' is unavailable.`, path),
+ ];
+ const compatibility = assessStudioBindingCompatibility(field.value, {
+ type: toBindableType(eventField.type),
+ });
return compatibility === 'incompatible'
- ? [diagnostic('incompatible-input', `Event field '${eventField.path}' is incompatible with ${field.value.type}.`, path)]
+ ? [
+ diagnostic(
+ 'incompatible-input',
+ `Event field '${eventField.path}' is incompatible with ${field.value.type}.`,
+ path,
+ ),
+ ]
: [];
}
function toBindableType(type: string) {
- if (type === 'string' || type === 'number' || type === 'boolean' || type === 'object' || type === 'record') return type;
+ if (
+ type === 'string' ||
+ type === 'number' ||
+ type === 'boolean' ||
+ type === 'object' ||
+ type === 'record'
+ )
+ return type;
return 'unknown' as const;
}
diff --git a/src/bindingMetadataModel.ts b/src/bindingMetadataModel.ts
index ea60c3f..e6e9f8f 100644
--- a/src/bindingMetadataModel.ts
+++ b/src/bindingMetadataModel.ts
@@ -1,6 +1,9 @@
import type { UiComponentMetaRegistry, UiNode } from '@ankhorage/contracts';
-import type { StudioBindableEventOption, StudioBindablePropOption } from './bindingAuthoringContracts';
+import type {
+ StudioBindableEventOption,
+ StudioBindablePropOption,
+} from './bindingAuthoringContracts';
export function resolveStudioBindableProps(
node: UiNode,
diff --git a/src/bindingMutationModel.ts b/src/bindingMutationModel.ts
index 7978f71..7f2e004 100644
--- a/src/bindingMutationModel.ts
+++ b/src/bindingMutationModel.ts
@@ -80,5 +80,7 @@ function writeBinding(
}
function isEmptyBinding(binding: ComponentDataBinding): boolean {
- return Object.keys(binding.props ?? {}).length === 0 && Object.keys(binding.events ?? {}).length === 0;
+ return (
+ Object.keys(binding.props ?? {}).length === 0 && Object.keys(binding.events ?? {}).length === 0
+ );
}
diff --git a/src/bindingOperationModel.ts b/src/bindingOperationModel.ts
index f8e9678..b88ffa4 100644
--- a/src/bindingOperationModel.ts
+++ b/src/bindingOperationModel.ts
@@ -93,7 +93,14 @@ function describeSource(source: DataSourceConfig): string {
}
export function createStudioActionInputFields(
- payloadSchema: Readonly> | undefined,
+ payloadSchema:
+ | Readonly<
+ Record<
+ string,
+ { readonly label: string; readonly type: string; readonly required?: boolean }
+ >
+ >
+ | undefined,
): readonly StudioBindingInputFieldOption[] {
return Object.entries(payloadSchema ?? {}).map(([name, field]) => ({
name,
@@ -104,6 +111,7 @@ export function createStudioActionInputFields(
}
function toBindableType(type: string): UiBindableValueMeta['type'] {
- if (type === 'string' || type === 'number' || type === 'boolean' || type === 'object') return type;
+ if (type === 'string' || type === 'number' || type === 'boolean' || type === 'object')
+ return type;
return 'unknown';
}
diff --git a/src/bindingSchemaModel.ts b/src/bindingSchemaModel.ts
index 4fe14bb..22fb96d 100644
--- a/src/bindingSchemaModel.ts
+++ b/src/bindingSchemaModel.ts
@@ -21,9 +21,7 @@ export function resolveStudioSchemaValueMeta(
const type = resolveSchemaType(resolved);
const fields = resolveSchemaFields(resolved, schemas, seen);
const itemType =
- type === 'array'
- ? resolveStudioSchemaValueMeta(resolved.items, schemas, seen).type
- : undefined;
+ type === 'array' ? resolveStudioSchemaValueMeta(resolved.items, schemas, seen).type : undefined;
return {
type,
@@ -117,9 +115,7 @@ function resolveSchemaType(schema: DataSchema): UiBindableValueMeta['type'] {
return 'unknown';
}
-function resolveSingleSchemaType(
- type: DataSchema['type'],
-): DataSchemaPrimitiveType | undefined {
+function resolveSingleSchemaType(type: DataSchema['type']): DataSchemaPrimitiveType | undefined {
if (typeof type === 'string') return type;
return type?.length === 1 ? type[0] : undefined;
}
From 31f08b25d42c62d4adbdc2b827de36c5d3bf3433 Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:24:11 +0200
Subject: [PATCH 14/58] feat: add binding editor draft helpers
---
.../pages/bindings/bindingEditorModel.ts | 151 ++++++++++++++++++
1 file changed, 151 insertions(+)
create mode 100644 src/ui/admin/pages/bindings/bindingEditorModel.ts
diff --git a/src/ui/admin/pages/bindings/bindingEditorModel.ts b/src/ui/admin/pages/bindings/bindingEditorModel.ts
new file mode 100644
index 0000000..05aa80e
--- /dev/null
+++ b/src/ui/admin/pages/bindings/bindingEditorModel.ts
@@ -0,0 +1,151 @@
+import type {
+ BindingInputMap,
+ BindingValue,
+ EventBinding,
+ PropBinding,
+ UiBindableValueMeta,
+ UiComponentEventPayloadFieldMeta,
+} from '@ankhorage/contracts';
+
+import type {
+ StudioBindingInputFieldOption,
+ StudioBindingOperationOption,
+} from '../../../../bindingAuthoringModel';
+
+export type StudioBindingSourceKind = PropBinding['source']['kind'];
+export type StudioEventInputSourceKind = 'event' | 'literal';
+
+export const STUDIO_BINDING_SOURCE_OPTIONS: readonly {
+ value: StudioBindingSourceKind;
+ label: string;
+}[] = [
+ { value: 'literal', label: 'Literal' },
+ { value: 'state', label: 'State' },
+ { value: 'context', label: 'Context' },
+ { value: 'operation', label: 'Operation result' },
+];
+
+export function createStudioPropBindingForSource(
+ kind: StudioBindingSourceKind,
+ value: UiBindableValueMeta,
+ operations: readonly StudioBindingOperationOption[],
+): PropBinding {
+ if (kind === 'literal') return { source: { kind, value: createDefaultBindingValue(value) } };
+ if (kind === 'state' || kind === 'context') return { source: { kind, path: '' } };
+ if (kind === 'event') return { source: { kind, path: '' } };
+
+ const operation = operations[0];
+ return operation
+ ? { source: { kind, operation: operation.operation, path: operation.responsePaths[0]?.path } }
+ : { source: { kind: 'context', path: '' } };
+}
+
+export function createStudioEventBinding(args: {
+ readonly target:
+ | { readonly kind: 'action'; readonly type: string }
+ | { readonly kind: 'operation'; readonly operation: StudioBindingOperationOption['operation'] };
+ readonly fields: readonly StudioBindingInputFieldOption[];
+ readonly drafts: Readonly>;
+}): EventBinding {
+ const input = createStudioEventInputMap(args.fields, args.drafts);
+ return { target: args.target, ...(Object.keys(input).length > 0 ? { input } : {}) };
+}
+
+export interface StudioEventInputDraft {
+ readonly kind: StudioEventInputSourceKind;
+ readonly value: string;
+}
+
+export function createStudioEventInputDrafts(
+ fields: readonly StudioBindingInputFieldOption[],
+ eventFields: readonly UiComponentEventPayloadFieldMeta[],
+): Readonly> {
+ return Object.fromEntries(
+ fields.map((field) => {
+ const matchingEventField = eventFields.find((candidate) => candidate.path === field.name);
+ return [
+ field.name,
+ matchingEventField
+ ? { kind: 'event', value: matchingEventField.path }
+ : { kind: 'literal', value: '' },
+ ];
+ }),
+ );
+}
+
+export function parseStudioBindingLiteral(
+ input: string,
+ meta: UiBindableValueMeta,
+): BindingValue {
+ if (meta.type === 'boolean') return input === 'true';
+ if (meta.type === 'number') {
+ const number = Number(input);
+ return Number.isFinite(number) ? number : 0;
+ }
+ if (meta.type === 'array') return parseStructuredValue(input, []);
+ if (meta.type === 'object' || meta.type === 'record' || meta.type === 'imageAsset') {
+ return parseStructuredValue(input, {});
+ }
+ return input;
+}
+
+export function formatStudioBindingLiteral(value: BindingValue): string {
+ return typeof value === 'string' ? value : JSON.stringify(value);
+}
+
+export function createStudioOperationKey(option: StudioBindingOperationOption): string {
+ const { dataSourceId, endpointId, operationId } = option.operation;
+ return `${dataSourceId}::${endpointId ?? ''}::${operationId}`;
+}
+
+export function findStudioOperationByKey(
+ operations: readonly StudioBindingOperationOption[],
+ key: string,
+): StudioBindingOperationOption | undefined {
+ return operations.find((option) => createStudioOperationKey(option) === key);
+}
+
+function createStudioEventInputMap(
+ fields: readonly StudioBindingInputFieldOption[],
+ drafts: Readonly>,
+): BindingInputMap {
+ return Object.fromEntries(
+ fields.flatMap((field) => {
+ const draft = drafts[field.name];
+ if (!draft || (!draft.value && !field.required)) return [];
+ return [
+ [
+ field.name,
+ draft.kind === 'event'
+ ? { kind: 'source' as const, source: { kind: 'event' as const, path: draft.value } }
+ : { kind: 'literal' as const, value: parseStudioBindingLiteral(draft.value, field.value) },
+ ],
+ ];
+ }),
+ );
+}
+
+function createDefaultBindingValue(meta: UiBindableValueMeta): BindingValue {
+ if (meta.type === 'boolean') return false;
+ if (meta.type === 'number') return 0;
+ if (meta.type === 'array') return [];
+ if (meta.type === 'object' || meta.type === 'record' || meta.type === 'imageAsset') return {};
+ return '';
+}
+
+function parseStructuredValue(input: string, fallback: BindingValue): BindingValue {
+ try {
+ const value: unknown = JSON.parse(input);
+ return isBindingValue(value) ? value : fallback;
+ } catch {
+ return fallback;
+ }
+}
+
+function isBindingValue(value: unknown): value is BindingValue {
+ if (value === null) return true;
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') return true;
+ if (Array.isArray(value)) return value.every(isBindingValue);
+ if (typeof value !== 'object') return false;
+ return Object.values(value as Record).every(isBindingValue);
+}
From 04b290b1cf156c05dbfe1de0d510c7cc36d1f273 Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:24:23 +0200
Subject: [PATCH 15/58] feat: add binding admin styles
---
.../pages/bindings/bindingAdminStyles.ts | 29 +++++++++++++++++++
1 file changed, 29 insertions(+)
create mode 100644 src/ui/admin/pages/bindings/bindingAdminStyles.ts
diff --git a/src/ui/admin/pages/bindings/bindingAdminStyles.ts b/src/ui/admin/pages/bindings/bindingAdminStyles.ts
new file mode 100644
index 0000000..75df2f1
--- /dev/null
+++ b/src/ui/admin/pages/bindings/bindingAdminStyles.ts
@@ -0,0 +1,29 @@
+import { StyleSheet } from 'react-native';
+
+export const bindingAdminStyles = StyleSheet.create({
+ stack: {
+ gap: 12,
+ },
+ compactStack: {
+ gap: 8,
+ },
+ row: {
+ flexDirection: 'row',
+ flexWrap: 'wrap',
+ gap: 10,
+ alignItems: 'flex-end',
+ },
+ grow: {
+ flexGrow: 1,
+ flexBasis: 220,
+ },
+ actions: {
+ flexDirection: 'row',
+ flexWrap: 'wrap',
+ gap: 8,
+ },
+ divider: {
+ height: 1,
+ backgroundColor: 'rgba(127, 127, 127, 0.2)',
+ },
+});
From 889aaf5342706ca1fd6c54bbdbff6f79fa62fc78 Mon Sep 17 00:00:00 2001
From: Fabio Gartenmann <137318798+artiphishle@users.noreply.github.com>
Date: Tue, 11 Aug 2026 01:24:46 +0200
Subject: [PATCH 16/58] feat: add property binding editor
---
.../pages/bindings/PropertyBindingEditor.tsx | 175 ++++++++++++++++++
1 file changed, 175 insertions(+)
create mode 100644 src/ui/admin/pages/bindings/PropertyBindingEditor.tsx
diff --git a/src/ui/admin/pages/bindings/PropertyBindingEditor.tsx b/src/ui/admin/pages/bindings/PropertyBindingEditor.tsx
new file mode 100644
index 0000000..4954c54
--- /dev/null
+++ b/src/ui/admin/pages/bindings/PropertyBindingEditor.tsx
@@ -0,0 +1,175 @@
+import type { PropBinding } from '@ankhorage/contracts';
+import { Button, Input, Select, Text } from '@ankhorage/zora';
+import { View } from 'react-native';
+
+import {
+ assessStudioBindingCompatibility,
+ type StudioBindablePropOption,
+ type StudioBindingOperationOption,
+} from '../../../../bindingAuthoringModel';
+import { Field } from '../../adminPagePrimitives';
+import { bindingAdminStyles } from './bindingAdminStyles';
+import {
+ createStudioOperationKey,
+ createStudioPropBindingForSource,
+ findStudioOperationByKey,
+ formatStudioBindingLiteral,
+ parseStudioBindingLiteral,
+ STUDIO_BINDING_SOURCE_OPTIONS,
+ type StudioBindingSourceKind,
+} from './bindingEditorModel';
+
+export function PropertyBindingEditor(props: {
+ readonly option: StudioBindablePropOption;
+ readonly binding: PropBinding | undefined;
+ readonly operations: readonly StudioBindingOperationOption[];
+ readonly onChange: (binding: PropBinding) => void;
+ readonly onRemove: () => void;
+}) {
+ const { binding, onChange, onRemove, operationOptions, option, operations } = {
+ ...props,
+ operationOptions: props.operations.map((operation) => ({
+ value: createStudioOperationKey(operation),
+ label: operation.label,
+ })),
+ };
+ const sourceKind = binding?.source.kind ?? 'literal';
+
+ return (
+
+
+
+
+
+
+ {binding ? (
+
+ ) : null}
+
+ {binding ? (
+
+ ) : (
+
+ )}
+
+ );
+}
+
+function PropertyBindingSourceFields(props: {
+ readonly binding: PropBinding;
+ readonly expected: StudioBindablePropOption['meta']['value'];
+ readonly operations: readonly StudioBindingOperationOption[];
+ readonly operationOptions: readonly { readonly value: string; readonly label: string }[];
+ readonly onChange: (binding: PropBinding) => void;
+}) {
+ const { binding, expected, onChange, operationOptions, operations } = props;
+ const { source } = binding;
+
+ if (source.kind === 'literal') {
+ if (expected.type === 'boolean') {
+ return (
+
+
+ src/bindingAuthoringContracts.ts
+ Referenced module
+ Dependencies: None
+
+ Exports: StudioBindableEventOption,
+ StudioBindablePropOption, StudioBindingCompatibility,
+ StudioBindingDiagnostic, StudioBindingInputFieldOption,
+ StudioBindingOperationOption,
+ StudioBindingResponsePathOption
+
+
+
+ src/bindingAuthoringModel.test.ts
+ Referenced module
+ Dependencies: src/bindingAuthoringModel.ts
+ Exports: None
+
+
+ src/bindingAuthoringModel.ts
+ Referenced module
+ Dependencies: None
+
+ Exports: appendStudioEventBinding,
+ assessStudioBindingCompatibility,
+ collectStudioBindingOperationOptions,
+ collectStudioResponsePaths, createStudioActionInputFields,
+ diagnoseStudioComponentBindings,
+ findStudioBindingOperationOption,
+ removeStudioEventBinding, removeStudioPropBinding,
+ resolveStudioBindableEvents, resolveStudioBindableProps,
+ resolveStudioSchemaValueMeta, StudioBindableEventOption,
+ StudioBindablePropOption, StudioBindingCompatibility,
+ StudioBindingDiagnostic, StudioBindingInputFieldOption,
+ StudioBindingOperationOption,
+ StudioBindingResponsePathOption, upsertStudioPropBinding
+
+
+
+ src/bindingDiagnosticsModel.ts
+ Referenced module
+
+ Dependencies: src/bindingAuthoringContracts.ts,
+ src/bindingOperationModel.ts, src/bindingSchemaModel.ts
+
+ Exports: diagnoseStudioComponentBindings
+
+
+ src/bindingManifestPersistence.test.ts
+ Referenced module
+
+ Dependencies: src/core/studioManifestDraftModel.ts,
+ src/index.ts, src/manifestSync.ts
+
+ Exports: None
+
+
+ src/bindingMetadataModel.ts
+ Referenced module
+ Dependencies: src/bindingAuthoringContracts.ts
+
+ Exports: resolveStudioBindableEvents,
+ resolveStudioBindableProps
+
+
+
+ src/bindingMutationAcceptance.test.ts
+ Referenced module
+ Dependencies: src/bindingAuthoringModel.ts
+ Exports: None
+
+
+ src/bindingMutationModel.ts
+ Referenced module
+ Dependencies: None
+
+ Exports: appendStudioEventBinding,
+ removeStudioEventBinding, removeStudioPropBinding,
+ upsertStudioPropBinding
+
+
+
+ src/bindingOperationModel.ts
+ Referenced module
+
+ Dependencies: src/bindingAuthoringContracts.ts,
+ src/bindingSchemaModel.ts
+
+
+ Exports: collectStudioBindingOperationOptions,
+ createStudioActionInputFields,
+ findStudioBindingOperationOption
+
+
+
+ src/bindingSchemaModel.ts
+ Referenced module
+ Dependencies: src/bindingAuthoringContracts.ts
+
+ Exports: assessStudioBindingCompatibility,
+ collectStudioResponsePaths, resolveStudioSchemaValueMeta
+
+
src/index.test.ts
src/index.ts
Configured entrypoint
@@ -4137,10 +4380,15 @@ src/index.ts
Exports: ACTION_REGISTRY,
ActionDefinition, addNodeToTree,
+ appendStudioEventBinding,
+ assessStudioBindingCompatibility,
buildInsertCatalogEntries, canAcceptChild,
- cloneWithNewIds, createNodeFromCatalogEntry,
+ cloneWithNewIds, collectStudioBindingOperationOptions,
+ collectStudioResponsePaths, createNodeFromCatalogEntry,
+ createStudioActionInputFields,
createStudioInstancePropertyPatch, deriveProjectId,
- findNodeById, generateStudioId,
+ diagnoseStudioComponentBindings, findNodeById,
+ findStudioBindingOperationOption, generateStudioId,
getInsertCatalogCategoryLabel,
InsertCatalogComponentEntry, InsertCatalogDisabledReason,
InsertCatalogDisabledReasonCode, InsertCatalogEntry,
@@ -4164,17 +4412,24 @@
src/index.ts
ProjectOAuthProviderHealthStatus, ProjectSecretUsage,
ProjectSecretUsageCategory, ProjectSecretUsageSummary,
ProjectSortKey, removeNodeFromTree,
+ removeStudioEventBinding, removeStudioPropBinding,
resolveDefaultInsertPlacement,
resolveInsertCatalogEntries, resolveInsertPlacement,
+ resolveStudioBindableEvents, resolveStudioBindableProps,
resolveStudioInstancePropertyFields,
resolveStudioInstancePropertyGroups,
- STUDIO_INSERT_RECIPES, STUDIO_PACKAGE_BOUNDARY,
- STUDIO_PACKAGE_NAME, STUDIO_PUBLIC_CONTRACTS,
- StudioActionPayloadField, StudioActionPayloadPrimitive,
- StudioActionPayloadSchema, StudioAdminRouteId,
- StudioAdminRoutePath, StudioAdminStaticRoutePath,
- StudioAuthoringComponentMeta, StudioAuthoringMetaRegistry,
- StudioAuthoringPropSchema, StudioCommand,
+ resolveStudioSchemaValueMeta, STUDIO_INSERT_RECIPES,
+ STUDIO_PACKAGE_BOUNDARY, STUDIO_PACKAGE_NAME,
+ STUDIO_PUBLIC_CONTRACTS, StudioActionPayloadField,
+ StudioActionPayloadPrimitive, StudioActionPayloadSchema,
+ StudioAdminRouteId, StudioAdminRoutePath,
+ StudioAdminStaticRoutePath, StudioAuthoringComponentMeta,
+ StudioAuthoringMetaRegistry, StudioAuthoringPropSchema,
+ StudioBindableEventOption, StudioBindablePropOption,
+ StudioBindingCompatibility, StudioBindingDiagnostic,
+ StudioBindingInputFieldOption,
+ StudioBindingOperationOption,
+ StudioBindingResponsePathOption, StudioCommand,
StudioComponentBlueprint, StudioComponentMeta,
StudioComponentMetaRegistry, StudioContextValue,
StudioEvent, StudioIdGenerator,
@@ -4191,8 +4446,8 @@ src/index.ts
TemplateCatalogCategory, TemplateCatalogTemplate,
TemplateEntry, ThemeUpdates,
TPL_SCREEN_EMPTY, updateNodeInTree,
- validateInsertRecipe, validateNodePlacement,
- validateProjectCreationInput
+ upsertStudioPropBinding, validateInsertRecipe,
+ validateNodePlacement, validateProjectCreationInput
src/root.test.ts
src/root.ts
Referenced module
@@ -4647,14 +4902,18 @@ src/root.ts
ActionDefinition, addNodeToTree,
analyzeProjectAuthHealth, AnkhAdminPage,
AnkhAdminShell, AnkhStudio,
- assertMetadataOnlyResponse, buildInsertCatalogEntries,
- canAcceptChild, cloneWithNewIds,
- CreateCategoriesScreen, CreateCategoryTemplatesScreen,
- createNodeFromCatalogEntry,
+ appendStudioEventBinding, assertMetadataOnlyResponse,
+ assessStudioBindingCompatibility,
+ buildInsertCatalogEntries, canAcceptChild,
+ cloneWithNewIds, collectStudioBindingOperationOptions,
+ collectStudioResponsePaths, CreateCategoriesScreen,
+ CreateCategoryTemplatesScreen, createNodeFromCatalogEntry,
CreateProjectFromTemplateScreen,
+ createStudioActionInputFields,
createStudioInstancePropertyPatch, deriveProjectId,
- findNodeById, findProjectSecretUsages,
- findRawSecretResponseKey, generateStudioId,
+ diagnoseStudioComponentBindings, findNodeById,
+ findProjectSecretUsages, findRawSecretResponseKey,
+ findStudioBindingOperationOption, generateStudioId,
getInsertCatalogCategoryLabel,
InsertCatalogComponentEntry, InsertCatalogDisabledReason,
InsertCatalogDisabledReasonCode, InsertCatalogEntry,
@@ -4679,21 +4938,28 @@ src/root.ts
ProjectSecretUsageCategory, ProjectSecretUsageSummary,
ProjectSortKey, ProjectsOverviewScreen,
RAW_SECRET_RESPONSE_KEYS, RawSecretResponseKeyMatch,
- removeNodeFromTree, resolveDefaultInsertPlacement,
+ removeNodeFromTree, removeStudioEventBinding,
+ removeStudioPropBinding, resolveDefaultInsertPlacement,
resolveInsertCatalogEntries, resolveInsertPlacement,
+ resolveStudioBindableEvents, resolveStudioBindableProps,
resolveStudioInstancePropertyFields,
resolveStudioInstancePropertyGroups,
- STUDIO_INSERT_RECIPES, STUDIO_PACKAGE_BOUNDARY,
- STUDIO_PACKAGE_NAME, STUDIO_PUBLIC_CONTRACTS,
- StudioActionPayloadField, StudioActionPayloadPrimitive,
- StudioActionPayloadSchema, StudioAdminRouteId,
- StudioAdminRoutePath, StudioAdminStaticRoutePath,
- StudioApp, StudioAuthoringComponentMeta,
- StudioAuthoringMetaRegistry, StudioAuthoringPropSchema,
- StudioCommand, StudioComponentBlueprint,
- StudioComponentMeta, StudioComponentMetaRegistry,
- StudioContextValue, StudioEvent,
- StudioIdGenerator, StudioInstancePropertyEditorKind,
+ resolveStudioSchemaValueMeta, STUDIO_INSERT_RECIPES,
+ STUDIO_PACKAGE_BOUNDARY, STUDIO_PACKAGE_NAME,
+ STUDIO_PUBLIC_CONTRACTS, StudioActionPayloadField,
+ StudioActionPayloadPrimitive, StudioActionPayloadSchema,
+ StudioAdminRouteId, StudioAdminRoutePath,
+ StudioAdminStaticRoutePath, StudioApp,
+ StudioAuthoringComponentMeta, StudioAuthoringMetaRegistry,
+ StudioAuthoringPropSchema, StudioBindableEventOption,
+ StudioBindablePropOption, StudioBindingCompatibility,
+ StudioBindingDiagnostic, StudioBindingInputFieldOption,
+ StudioBindingOperationOption,
+ StudioBindingResponsePathOption, StudioCommand,
+ StudioComponentBlueprint, StudioComponentMeta,
+ StudioComponentMetaRegistry, StudioContextValue,
+ StudioEvent, StudioIdGenerator,
+ StudioInstancePropertyEditorKind,
StudioInstancePropertyField, StudioInstancePropertyGroup,
StudioInstancePropertyValue, StudioLocale,
StudioManifest, StudioMode, StudioModuleId,
@@ -4706,9 +4972,10 @@ src/root.ts
TemplateCatalog, TemplateCatalogCategory,
TemplateCatalogTemplate, TemplateEntry,
ThemeUpdates, TPL_SCREEN_EMPTY,
- updateNodeInTree, useStudio,
- useStudioAppBarAugmentation, validateInsertRecipe,
- validateNodePlacement, validateProjectCreationInput
+ updateNodeInTree, upsertStudioPropBinding,
+ useStudio, useStudioAppBarAugmentation,
+ validateInsertRecipe, validateNodePlacement,
+ validateProjectCreationInput
@@ -5186,7 +5453,7 @@ src/studioAdminRouteModel.test.ts
src/studioAdminRouteModel.ts
Referenced module
@@ -5194,11 +5461,13 @@ src/studioAdminRouteModel.ts
Exports: createStudioAdminRoutePath,
createStudioAdminRouteRenderState,
+ createStudioBindingsRoutePath,
createStudioPropertiesRoutePath,
getStudioAdminRouteDefinition, isStudioAdminPath,
isStudioAdminRouteActive, isStudioAdminRouteAvailable,
openStudioAdminRoute, resolveStudioAdminActiveRouteId,
resolveStudioAdminRouteId, resolveStudioAdminRoutePath,
+ resolveStudioBindingsNodeId,
resolveStudioLastNonAdminLocation,
resolveStudioNavigableLocation,
resolveStudioPropertiesNodeId,
@@ -5291,7 +5560,7 @@
src/ui/admin/AnkhAdminPage.test.ts
src/ui/admin/AnkhAdminPage.tsx
Referenced module
@@ -5300,6 +5569,7 @@ src/ui/admin/AnkhAdminPage.tsx
src/index.ts, src/studioAdminRouteModel.ts,
src/ui/admin/pages/ApisAdminPage.tsx,
src/ui/admin/pages/AuthAdminPage.tsx,
+ src/ui/admin/pages/BindingsAdminPage.tsx,
src/ui/admin/pages/OverviewAdminPage.tsx,
src/ui/admin/pages/PropertiesAdminPage.tsx,
src/ui/admin/pages/SecretsAdminPage.tsx,
@@ -5548,6 +5818,115 @@ src/ui/admin/pages/AuthAdminPage.tsx
AuthAdminPageProps
+
+ src/ui/admin/pages/bindings/bindingAdminStyles.ts
+ Referenced module
+ Dependencies: None
+ Exports: bindingAdminStyles
+
+
+ src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx
+ Referenced module
+
+ Dependencies: src/bindingAuthoringModel.ts,
+ src/ui/admin/pages/bindings/bindingAdminStyles.ts
+
+ Exports: BindingDiagnosticsCard
+
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts
+ Referenced module
+ Dependencies: src/bindingAuthoringModel.ts
+
+ Exports: createStudioEventBinding,
+ createStudioEventInputDrafts, createStudioOperationKey,
+ createStudioPropBindingForSource,
+ findStudioOperationByKey, formatStudioBindingLiteral,
+ parseStudioBindingLiteral, STUDIO_BINDING_SOURCE_OPTIONS,
+ StudioBindingSourceKind, StudioEventInputDraft,
+ StudioEventInputSourceKind
+
+
+
+ src/ui/admin/pages/bindings/EventBindingComposer.tsx
+ Referenced module
+
+ Dependencies: src/bindingAuthoringModel.ts,
+ src/index.ts, src/ui/admin/adminPagePrimitives.tsx,
+ src/ui/admin/pages/bindings/bindingAdminStyles.ts,
+ src/ui/admin/pages/bindings/bindingEditorModel.ts
+
+ Exports: EventBindingComposer
+
+
+ src/ui/admin/pages/bindings/EventBindingsCard.tsx
+ Referenced module
+
+ Dependencies: src/bindingAuthoringModel.ts,
+ src/ui/admin/pages/bindings/bindingAdminStyles.ts,
+ src/ui/admin/pages/bindings/EventBindingComposer.tsx
+
+ Exports: EventBindingsCard
+
+
+ src/ui/admin/pages/bindings/PropertyBindingEditor.tsx
+ Referenced module
+
+ Dependencies: src/bindingAuthoringModel.ts,
+ src/ui/admin/adminPagePrimitives.tsx,
+ src/ui/admin/pages/bindings/bindingAdminStyles.ts,
+ src/ui/admin/pages/bindings/bindingEditorModel.ts
+
+ Exports: PropertyBindingEditor
+
+
+ src/ui/admin/pages/bindings/PropertyBindingsCard.tsx
+ Referenced module
+
+ Dependencies: src/bindingAuthoringModel.ts,
+ src/ui/admin/pages/bindings/bindingAdminStyles.ts,
+ src/ui/admin/pages/bindings/PropertyBindingEditor.tsx
+
+ Exports: PropertyBindingsCard
+
+
+ src/ui/admin/pages/BindingsAdminPage.tsx
+ Referenced module
+
+ Dependencies: src/bindingAuthoringModel.ts,
+ src/core/StudioContext.ts, src/index.ts,
+ src/manifestState.ts,
+ src/ui/admin/adminPagePrimitives.tsx,
+ src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx,
+ src/ui/admin/pages/bindings/EventBindingsCard.tsx,
+ src/ui/admin/pages/bindings/PropertyBindingsCard.tsx
+
+ Exports: BindingsAdminPage
+
src/workspaceSearch.ts
Public API
- src/index.ts
+ src/bindingAuthoringContracts.ts
- ACTION_REGISTRY
- value • src/index.ts:378:14
+ StudioBindableEventOption
+ type • src/bindingAuthoringContracts.ts:16:1
Export paths: src/index.ts
Related symbols: None
-
-
- ActionDefinition
- type • src/index.ts:284:1
-
- Export paths: src/index.ts
-
-
Related symbols:
-
- - StudioActionPayloadSchema
-
-
@@ -5971,21 +6334,1044 @@ ActionDefinition
- description |
+ label |
property |
string |
yes |
|
- label |
+ meta |
property |
- string |
+ UiBindableEventMeta |
yes |
|
- payloadSchema |
+ name |
+ property |
+ string |
+ yes |
+ |
+
+
+
+
+
+ StudioBindablePropOption
+ type • src/bindingAuthoringContracts.ts:10:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
+
+
+ | Member |
+ Kind |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ label |
+ property |
+ string |
+ yes |
+ |
+
+
+ meta |
+ property |
+ UiBindablePropMeta |
+ yes |
+ |
+
+
+ name |
+ property |
+ string |
+ yes |
+ |
+
+
+
+
+
+ StudioBindingCompatibility
+ unknown • src/bindingAuthoringContracts.ts:8:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
+ StudioBindingDiagnostic
+ type • src/bindingAuthoringContracts.ts:43:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
+
+
+ | Member |
+ Kind |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ code |
+ property |
+
+ "incompatible-input" | "incompatible-response" |
+ "missing-action" | "missing-binding-meta" |
+ "missing-input" | "missing-operation" |
+ "missing-response-path" | "unknown-event" |
+ "unknown-prop"
+ |
+ yes |
+ |
+
+
+ message |
+ property |
+ string |
+ yes |
+ |
+
+
+ path |
+ property |
+ string | undefined |
+ no |
+ |
+
+
+ severity |
+ property |
+ "warning" | "error" |
+ yes |
+ |
+
+
+
+
+
+ StudioBindingInputFieldOption
+ type • src/bindingAuthoringContracts.ts:22:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
+
+
+ | Member |
+ Kind |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ label |
+ property |
+ string |
+ yes |
+ |
+
+
+ name |
+ property |
+ string |
+ yes |
+ |
+
+
+ required |
+ property |
+ boolean |
+ yes |
+ |
+
+
+ value |
+ property |
+ UiBindableValueMeta |
+ yes |
+ |
+
+
+
+
+
+ StudioBindingOperationOption
+ type • src/bindingAuthoringContracts.ts:35:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioBindingInputFieldOption
+ - StudioBindingResponsePathOption
+
+
+
+
+
+
+ | Member |
+ Kind |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ inputFields |
+ property |
+ readonly StudioBindingInputFieldOption[] |
+ yes |
+ |
+
+
+ label |
+ property |
+ string |
+ yes |
+ |
+
+
+ operation |
+ property |
+ BindingOperationRef |
+ yes |
+ |
+
+
+ responsePaths |
+ property |
+ readonly StudioBindingResponsePathOption[] |
+ yes |
+ |
+
+
+ sourceLabel |
+ property |
+ string |
+ yes |
+ |
+
+
+
+
+
+ StudioBindingResponsePathOption
+ type • src/bindingAuthoringContracts.ts:29:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
+
+
+ | Member |
+ Kind |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ label |
+ property |
+ string |
+ yes |
+ |
+
+
+ path |
+ property |
+ string |
+ yes |
+ |
+
+
+ value |
+ property |
+ UiBindableValueMeta |
+ yes |
+ |
+
+
+
+
+
+
+ src/bindingDiagnosticsModel.ts
+
+ diagnoseStudioComponentBindings
+ function • src/bindingDiagnosticsModel.ts:20:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioBindingDiagnostic
+ - StudioBindingOperationOption
+
+
+
+
Signature
+
+(args: { readonly node: UiNode; readonly registry: ComponentDataBindingRegistry; readonly componentMeta: UiComponentMetaRegistry; readonly operations: readonly StudioBindingOperationOption[]; readonly actionTypes: readonly string[]; }) => readonly StudioBindingDiagnostic[]
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ args |
+
+ { readonly node: UiNode; readonly registry:
+ ComponentDataBindingRegistry; readonly componentMeta:
+ UiComponentMetaRegistry; readonly operations: readonly
+ StudioBindingOperationOption[]; readonly actionTypes: readonly string[];
+ }
+ |
+ yes |
+ |
+
+
+
+
Returns: readonly StudioBindingDiagnostic[]
+
+
+
+
+ src/bindingMetadataModel.ts
+
+ resolveStudioBindableEvents
+ function • src/bindingMetadataModel.ts:21:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioBindableEventOption
+
+
+
+
Signature
+
+(node: UiNode, registry: Readonly<Record<string, import("/Users/a_rtiphishl_e/git/studio/node_modules/.bun/@ankhorage+contracts@4.0.2/node_modules/@ankhorage/contracts/dist/ui").UiComponentMeta>>) => readonly StudioBindableEventOption[]
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ node |
+ UiNode |
+ yes |
+ |
+
+
+ registry |
+
+ Readonly<Record<string,
+ import("/Users/a_rtiphishl_e/git/studio/node_modules/.bun/@ankhorage+contracts@4.0.2/node_modules/@ankhorage/contracts/dist/ui").UiComponentMeta>>
+ |
+ yes |
+ |
+
+
+
+
Returns: readonly StudioBindableEventOption[]
+
+
+
+ resolveStudioBindableProps
+ function • src/bindingMetadataModel.ts:8:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioBindablePropOption
+
+
+
+
Signature
+
+(node: UiNode, registry: Readonly<Record<string, import("/Users/a_rtiphishl_e/git/studio/node_modules/.bun/@ankhorage+contracts@4.0.2/node_modules/@ankhorage/contracts/dist/ui").UiComponentMeta>>) => readonly StudioBindablePropOption[]
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ node |
+ UiNode |
+ yes |
+ |
+
+
+ registry |
+
+ Readonly<Record<string,
+ import("/Users/a_rtiphishl_e/git/studio/node_modules/.bun/@ankhorage+contracts@4.0.2/node_modules/@ankhorage/contracts/dist/ui").UiComponentMeta>>
+ |
+ yes |
+ |
+
+
+
+
Returns: readonly StudioBindablePropOption[]
+
+
+
+
+ src/bindingMutationModel.ts
+
+ appendStudioEventBinding
+ function • src/bindingMutationModel.ts:34:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
Signature
+
+(registry: Readonly<Record<string, ComponentDataBinding>>, node: UiNode, eventName: string, binding: EventBinding) => Readonly<Record<string, ComponentDataBinding>>
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ binding |
+ EventBinding |
+ yes |
+ |
+
+
+ eventName |
+ string |
+ yes |
+ |
+
+
+ node |
+ UiNode |
+ yes |
+ |
+
+
+ registry |
+
+ Readonly<Record<string, ComponentDataBinding>>
+ |
+ yes |
+ |
+
+
+
+
+ Returns:
+ Readonly<Record<string, ComponentDataBinding>>
+
+
+
+
+ removeStudioEventBinding
+ function • src/bindingMutationModel.ts:50:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
Signature
+
+(registry: Readonly<Record<string, ComponentDataBinding>>, node: UiNode, eventName: string, bindingIndex: number) => Readonly<Record<string, ComponentDataBinding>>
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ bindingIndex |
+ number |
+ yes |
+ |
+
+
+ eventName |
+ string |
+ yes |
+ |
+
+
+ node |
+ UiNode |
+ yes |
+ |
+
+
+ registry |
+
+ Readonly<Record<string, ComponentDataBinding>>
+ |
+ yes |
+ |
+
+
+
+
+ Returns:
+ Readonly<Record<string, ComponentDataBinding>>
+
+
+
+
+ removeStudioPropBinding
+ function • src/bindingMutationModel.ts:22:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
Signature
+
+(registry: Readonly<Record<string, ComponentDataBinding>>, node: UiNode, propName: string) => Readonly<Record<string, ComponentDataBinding>>
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ node |
+ UiNode |
+ yes |
+ |
+
+
+ propName |
+ string |
+ yes |
+ |
+
+
+ registry |
+
+ Readonly<Record<string, ComponentDataBinding>>
+ |
+ yes |
+ |
+
+
+
+
+ Returns:
+ Readonly<Record<string, ComponentDataBinding>>
+
+
+
+
+ upsertStudioPropBinding
+ function • src/bindingMutationModel.ts:9:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
Signature
+
+(registry: Readonly<Record<string, ComponentDataBinding>>, node: UiNode, propName: string, binding: PropBinding) => Readonly<Record<string, ComponentDataBinding>>
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ binding |
+ PropBinding |
+ yes |
+ |
+
+
+ node |
+ UiNode |
+ yes |
+ |
+
+
+ propName |
+ string |
+ yes |
+ |
+
+
+ registry |
+
+ Readonly<Record<string, ComponentDataBinding>>
+ |
+ yes |
+ |
+
+
+
+
+ Returns:
+ Readonly<Record<string, ComponentDataBinding>>
+
+
+
+
+
+ src/bindingOperationModel.ts
+
+ collectStudioBindingOperationOptions
+ function • src/bindingOperationModel.ts:16:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioBindingOperationOption
+
+
+
+
Signature
+
+(dataSources: Readonly<Record<string, DataSourceConfig>>) => readonly StudioBindingOperationOption[]
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ dataSources |
+ Readonly<Record<string, DataSourceConfig>> |
+ yes |
+ |
+
+
+
+
+ Returns: readonly StudioBindingOperationOption[]
+
+
+
+
+ createStudioActionInputFields
+ function • src/bindingOperationModel.ts:95:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioBindingInputFieldOption
+
+
+
+
Signature
+
+(payloadSchema: Readonly<Record<string, { readonly label: string; readonly type: string; readonly required?: boolean; }>> | undefined) => readonly StudioBindingInputFieldOption[]
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ payloadSchema |
+
+ Readonly<Record<string, { readonly label: string; readonly type:
+ string; readonly required?: boolean; }>> | undefined
+ |
+ yes |
+ |
+
+
+
+
+ Returns: readonly StudioBindingInputFieldOption[]
+
+
+
+
+ findStudioBindingOperationOption
+ function • src/bindingOperationModel.ts:24:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioBindingOperationOption
+
+
+
+
Signature
+
+(options: readonly StudioBindingOperationOption[], ref: BindingOperationRef) => StudioBindingOperationOption | undefined
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ options |
+ readonly StudioBindingOperationOption[] |
+ yes |
+ |
+
+
+ ref |
+ BindingOperationRef |
+ yes |
+ |
+
+
+
+
+ Returns: StudioBindingOperationOption | undefined
+
+
+
+
+
+ src/bindingSchemaModel.ts
+
+ assessStudioBindingCompatibility
+ function • src/bindingSchemaModel.ts:43:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioBindingCompatibility
+
+
+
+
Signature
+
+(expected: UiBindableValueMeta, actual: UiBindableValueMeta) => StudioBindingCompatibility
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ actual |
+ UiBindableValueMeta |
+ yes |
+ |
+
+
+ expected |
+ UiBindableValueMeta |
+ yes |
+ |
+
+
+
+
Returns: StudioBindingCompatibility
+
+
+
+ collectStudioResponsePaths
+ function • src/bindingSchemaModel.ts:33:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioBindingResponsePathOption
+
+
+
+
Signature
+
+(schema: DataSchema | undefined, schemas: Readonly<Record<string, DataSchema>> | undefined) => readonly StudioBindingResponsePathOption[]
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ schema |
+ DataSchema | undefined |
+ yes |
+ |
+
+
+ schemas |
+
+ Readonly<Record<string, DataSchema>> | undefined
+ |
+ yes |
+ |
+
+
+
+
+ Returns:
+ readonly StudioBindingResponsePathOption[]
+
+
+
+
+ resolveStudioSchemaValueMeta
+ function • src/bindingSchemaModel.ts:14:1
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
Signature
+
+(schema: DataSchema | undefined, schemas: Readonly<Record<string, DataSchema>> | undefined, seen?: ReadonlySet<string>) => UiBindableValueMeta
+
+
+
+ | Parameter |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ schema |
+ DataSchema | undefined |
+ yes |
+ |
+
+
+ schemas |
+
+ Readonly<Record<string, DataSchema>> | undefined
+ |
+ yes |
+ |
+
+
+ seen |
+ ReadonlySet<string> |
+ no |
+ |
+
+
+
+
Returns: UiBindableValueMeta
+
+
+
+
+ src/index.ts
+
+ ACTION_REGISTRY
+ value • src/index.ts:384:14
+
+ Export paths: src/index.ts
+ Related symbols: None
+
+
+ ActionDefinition
+ type • src/index.ts:290:1
+
+ Export paths: src/index.ts
+
+
Related symbols:
+
+ - StudioActionPayloadSchema
+
+
+
+
+
+
+ | Member |
+ Kind |
+ Type |
+ Required |
+ Description |
+
+
+
+
+ description |
+ property |
+ string |
+ yes |
+ |
+
+
+ label |
+ property |
+ string |
+ yes |
+ |
+
+
+ payloadSchema |
property |
StudioActionPayloadSchema | undefined |
no |
@@ -6014,7 +7400,7 @@ ActionDefinition
data-search='addNodeToTree value src/index.ts StudioComponentMetaRegistry (args: { root: UiNode; targetId: string; newNode: UiNode; componentMeta: StudioComponentMetaRegistry; mode?: "append" | "prepend"; }) => UiNode'
>
addNodeToTree
- value • src/index.ts:600:14
+ value • src/index.ts:606:14
Export paths: src/index.ts
@@ -6060,7 +7446,7 @@
Signature
data-search="buildInsertCatalogEntries function src/index.ts InsertCatalogEntry InsertRecipe StudioComponentMetaRegistry (args: { componentMeta: StudioComponentMetaRegistry; recipes?: readonly InsertRecipe[]; }) => InsertCatalogEntry[]"
>
buildInsertCatalogEntries
-
function • src/index.ts:1312:1
+
function • src/index.ts:1318:1
Export paths: src/index.ts
@@ -6107,7 +7493,7 @@
Signature
data-search="canAcceptChild function src/index.ts StudioComponentMetaRegistry (args: { parentType: string; childType: string; componentMeta: StudioComponentMetaRegistry; }) => boolean"
>
canAcceptChild
-
function • src/index.ts:759:1
+
function • src/index.ts:765:1
Export paths: src/index.ts
@@ -6152,7 +7538,7 @@
Signature
data-search="cloneWithNewIds value src/index.ts StudioIdGenerator (node: UiNode, createId?: StudioIdGenerator) => UiNode"
>
cloneWithNewIds
-
value • src/index.ts:525:14
+
value • src/index.ts:531:14
Export paths: src/index.ts
@@ -6197,7 +7583,7 @@
Signature
data-search="createNodeFromCatalogEntry function src/index.ts InsertCatalogEntry StudioComponentMetaRegistry StudioIdGenerator (entry: InsertCatalogEntry, componentMeta: StudioComponentMetaRegistry, createId?: StudioIdGenerator) => UiNode"
>
createNodeFromCatalogEntry
-
function • src/index.ts:1231:1
+
function • src/index.ts:1237:1
Export paths: src/index.ts
@@ -6251,7 +7637,7 @@
Signature
data-search="findNodeById value src/index.ts (root: UiNode, id: string) => UiNode | null"
>
findNodeById
-
value • src/index.ts:542:14
+
value • src/index.ts:548:14
Export paths: src/index.ts
Related symbols: None
@@ -6291,7 +7677,7 @@
Signature
data-search="generateStudioId value src/index.ts (prefix?: string | undefined) => string"
>
generateStudioId
-
value • src/index.ts:518:14
+
value • src/index.ts:524:14
Export paths: src/index.ts
Related symbols: None
@@ -6325,7 +7711,7 @@
Signature
data-search="getInsertCatalogCategoryLabel function src/index.ts (category: string) => string"
>
getInsertCatalogCategoryLabel
-
function • src/index.ts:1157:1
+
function • src/index.ts:1163:1
Export paths: src/index.ts
Related symbols: None
@@ -6359,7 +7745,7 @@
Signature
data-search="InsertCatalogComponentEntry type src/index.ts InsertCatalogDisabledReason InsertCatalogEntryStatus NodePlacement"
>
InsertCatalogComponentEntry
-
type • src/index.ts:262:1
+
type • src/index.ts:268:1
Export paths: src/index.ts
@@ -6461,7 +7847,7 @@
InsertCatalogComponentEntry
data-search="InsertCatalogDisabledReason type src/index.ts InsertCatalogDisabledReasonCode InsertRecipeIssue"
>
InsertCatalogDisabledReason
-
type • src/index.ts:244:1
+
type • src/index.ts:250:1
Export paths: src/index.ts
@@ -6513,7 +7899,7 @@
InsertCatalogDisabledReason
data-search="InsertCatalogDisabledReasonCode unknown src/index.ts "
>
InsertCatalogDisabledReasonCode
-
unknown • src/index.ts:221:1
+
unknown • src/index.ts:227:1
Export paths: src/index.ts
Related symbols: None
@@ -6524,7 +7910,7 @@
InsertCatalogDisabledReasonCode
data-search="InsertCatalogEntry unknown src/index.ts "
>
InsertCatalogEntry
-
unknown • src/index.ts:272:1
+
unknown • src/index.ts:278:1
Export paths: src/index.ts
Related symbols: None
@@ -6535,7 +7921,7 @@
InsertCatalogEntry
data-search="InsertCatalogEntryBase type src/index.ts InsertCatalogDisabledReason InsertCatalogEntryKind InsertCatalogEntryStatus NodePlacement"
>
InsertCatalogEntryBase
-
type • src/index.ts:250:1
+
type • src/index.ts:256:1
Export paths: src/index.ts
@@ -6631,7 +8017,7 @@
InsertCatalogEntryBase
data-search="InsertCatalogEntryKind unknown src/index.ts "
>
InsertCatalogEntryKind
-
unknown • src/index.ts:218:1
+
unknown • src/index.ts:224:1
Export paths: src/index.ts
Related symbols: None
@@ -6642,7 +8028,7 @@
InsertCatalogEntryKind
data-search="InsertCatalogEntryStatus unknown src/index.ts "
>
InsertCatalogEntryStatus
-
unknown • src/index.ts:219:1
+
unknown • src/index.ts:225:1
Export paths: src/index.ts
Related symbols: None
@@ -6653,7 +8039,7 @@
InsertCatalogEntryStatus
data-search="InsertCatalogRecipeEntry type src/index.ts InsertCatalogDisabledReason InsertCatalogEntryStatus InsertRecipe NodePlacement"
>
InsertCatalogRecipeEntry
-
type • src/index.ts:267:1
+
type • src/index.ts:273:1
Export paths: src/index.ts
@@ -6756,7 +8142,7 @@
InsertCatalogRecipeEntry
data-search="insertNodeAtPlacement function src/index.ts InsertNodeAtPlacementArgs InsertNodeAtPlacementResult (args: InsertNodeAtPlacementArgs) => InsertNodeAtPlacementResult | null"
>
insertNodeAtPlacement
-
function • src/index.ts:989:1
+
function • src/index.ts:995:1
Export paths: src/index.ts
@@ -6797,7 +8183,7 @@
Signature
data-search="InsertNodeAtPlacementArgs type src/index.ts NodePlacement StudioComponentMetaRegistry"
>
InsertNodeAtPlacementArgs
-
type • src/index.ts:932:1
+
type • src/index.ts:938:1
Export paths: src/index.ts
@@ -6856,7 +8242,7 @@
InsertNodeAtPlacementArgs
data-search="InsertNodeAtPlacementResult type src/index.ts "
>
InsertNodeAtPlacementResult
-
type • src/index.ts:939:1
+
type • src/index.ts:945:1
Export paths: src/index.ts
Related symbols: None
@@ -6895,7 +8281,7 @@
InsertNodeAtPlacementResult
data-search="InsertRecipe type src/index.ts InsertRecipeNode"
>
InsertRecipe
-
type • src/index.ts:229:1
+
type • src/index.ts:235:1
Export paths: src/index.ts
@@ -6960,7 +8346,7 @@
InsertRecipe
data-search="InsertRecipeIssue type src/index.ts "
>
InsertRecipeIssue
-
type • src/index.ts:237:1
+
type • src/index.ts:243:1
Export paths: src/index.ts
Related symbols: None
@@ -7013,7 +8399,7 @@
InsertRecipeIssue
data-search="InsertRecipeNode type src/index.ts "
>
InsertRecipeNode
-
type • src/index.ts:224:1
+
type • src/index.ts:230:1
Export paths: src/index.ts
Related symbols: None
@@ -7052,7 +8438,7 @@
InsertRecipeNode
data-search="ModuleDefinition type src/index.ts "
>
ModuleDefinition
-
type • src/index.ts:292:1
+
type • src/index.ts:298:1
Export paths: src/index.ts
Related symbols: None
@@ -7105,7 +8491,7 @@
ModuleDefinition
data-search='moveNodeInTree value src/index.ts (root: UiNode, nodeId: string, direction: "up" | "down") => UiNode'
>
moveNodeInTree
-
value • src/index.ts:633:14
+
value • src/index.ts:639:14
Export paths: src/index.ts
Related symbols: None
@@ -7152,7 +8538,7 @@
Signature
data-search="moveNodeToPlacement function src/index.ts MoveNodeToPlacementArgs MoveNodeToPlacementResult (args: MoveNodeToPlacementArgs) => MoveNodeToPlacementResult | null"
>
moveNodeToPlacement
-
function • src/index.ts:1057:1
+
function • src/index.ts:1063:1
Export paths: src/index.ts
@@ -7192,7 +8578,7 @@
Signature
data-search="MoveNodeToPlacementArgs type src/index.ts NodePlacement StudioComponentMetaRegistry"
>
MoveNodeToPlacementArgs
-
type • src/index.ts:1016:1
+
type • src/index.ts:1022:1
Export paths: src/index.ts
@@ -7251,7 +8637,7 @@
MoveNodeToPlacementArgs
data-search="MoveNodeToPlacementResult type src/index.ts "
>
MoveNodeToPlacementResult
-
type • src/index.ts:1023:1
+
type • src/index.ts:1029:1
Export paths: src/index.ts
Related symbols: None
@@ -7290,7 +8676,7 @@
MoveNodeToPlacementResult
data-search="NodePlacement type src/index.ts PlacementKind"
>
NodePlacement
-
type • src/index.ts:180:1
+
type • src/index.ts:186:1
Export paths: src/index.ts
@@ -7348,7 +8734,7 @@
NodePlacement
data-search="PlacementFailureCode unknown src/index.ts "
>
PlacementFailureCode
-
unknown • src/index.ts:187:1
+
unknown • src/index.ts:193:1
Export paths: src/index.ts
Related symbols: None
@@ -7359,7 +8745,7 @@
PlacementFailureCode
data-search="PlacementFailureReason type src/index.ts PlacementFailureCode"
>
PlacementFailureReason
-
type • src/index.ts:199:1
+
type • src/index.ts:205:1
Export paths: src/index.ts
@@ -7403,7 +8789,7 @@
PlacementFailureReason
data-search="PlacementKind unknown src/index.ts "
>
PlacementKind
-
unknown • src/index.ts:178:1
+
unknown • src/index.ts:184:1
Export paths: src/index.ts
Related symbols: None
@@ -7414,7 +8800,7 @@
PlacementKind
data-search="PlacementResolutionResult unknown src/index.ts "
>
PlacementResolutionResult
-
unknown • src/index.ts:211:1
+
unknown • src/index.ts:217:1
Export paths: src/index.ts
Related symbols: None
@@ -7425,7 +8811,7 @@
PlacementResolutionResult
data-search="PlacementValidationResult unknown src/index.ts "
>
PlacementValidationResult
-
unknown • src/index.ts:204:1
+
unknown • src/index.ts:210:1
Export paths: src/index.ts
Related symbols: None
@@ -7436,7 +8822,7 @@
PlacementValidationResult
data-search="removeNodeFromTree value src/index.ts (root: UiNode, nodeId: string) => UiNode | null"
>
removeNodeFromTree
-
value • src/index.ts:582:14
+
value • src/index.ts:588:14
Export paths: src/index.ts
Related symbols: None
@@ -7476,7 +8862,7 @@
Signature
data-search="resolveDefaultInsertPlacement function src/index.ts PlacementResolutionResult StudioComponentMetaRegistry (args: { root: UiNode; selectedNodeId: string | null; childType: string; componentMeta: StudioComponentMetaRegistry; }) => PlacementResolutionResult"
>
resolveDefaultInsertPlacement
-
function • src/index.ts:887:1
+
function • src/index.ts:893:1
Export paths: src/index.ts
@@ -7522,7 +8908,7 @@
Signature
data-search="resolveInsertCatalogEntries function src/index.ts InsertCatalogEntry StudioComponentMetaRegistry (args: { entries: readonly InsertCatalogEntry[]; root: UiNode | null; selectedNodeId: string | null; componentMeta: StudioComponentMetaRegistry; }) => InsertCatalogEntry[]"
>
resolveInsertCatalogEntries
-
function • src/index.ts:1354:1
+
function • src/index.ts:1360:1
Export paths: src/index.ts
@@ -7569,7 +8955,7 @@
Signature
data-search="resolveInsertPlacement function src/index.ts PlacementKind PlacementResolutionResult StudioComponentMetaRegistry (args: { root: UiNode; targetNodeId: string; childType: string; componentMeta: StudioComponentMetaRegistry; kind: PlacementKind; }) => PlacementResolutionResult"
>
resolveInsertPlacement
-
function • src/index.ts:826:1
+
function • src/index.ts:832:1
Export paths: src/index.ts
@@ -7616,7 +9002,7 @@
Signature
data-search="STUDIO_INSERT_RECIPES value src/index.ts "
>
STUDIO_INSERT_RECIPES
-
value • src/index.ts:1124:14
+
value • src/index.ts:1130:14
Export paths: src/index.ts
Related symbols: None
@@ -7627,7 +9013,7 @@
STUDIO_INSERT_RECIPES
data-search="STUDIO_PACKAGE_BOUNDARY value src/index.ts "
>
STUDIO_PACKAGE_BOUNDARY
-
value • src/index.ts:59:14
+
value • src/index.ts:60:14
Export paths: src/index.ts
Related symbols: None
@@ -7638,7 +9024,7 @@
STUDIO_PACKAGE_BOUNDARY
data-search="STUDIO_PACKAGE_NAME value src/index.ts "
>
STUDIO_PACKAGE_NAME
-
value • src/index.ts:51:14
+
value • src/index.ts:52:14
Export paths: src/index.ts
Related symbols: None
@@ -7649,7 +9035,7 @@
STUDIO_PACKAGE_NAME
data-search="STUDIO_PUBLIC_CONTRACTS value src/index.ts "
>
STUDIO_PUBLIC_CONTRACTS
-
value • src/index.ts:87:14
+
value • src/index.ts:88:14
Export paths: src/index.ts
Related symbols: None
@@ -7660,7 +9046,7 @@
STUDIO_PUBLIC_CONTRACTS
data-search="StudioActionPayloadField type src/index.ts StudioActionPayloadPrimitive"
>
StudioActionPayloadField
-
type • src/index.ts:276:1
+
type • src/index.ts:282:1
Export paths: src/index.ts
@@ -7711,7 +9097,7 @@
StudioActionPayloadField
data-search="StudioActionPayloadPrimitive unknown src/index.ts "
>
StudioActionPayloadPrimitive
-
unknown • src/index.ts:274:1
+
unknown • src/index.ts:280:1
Export paths: src/index.ts
Related symbols: None
@@ -7722,7 +9108,7 @@
StudioActionPayloadPrimitive
data-search="StudioActionPayloadSchema unknown src/index.ts "
>
StudioActionPayloadSchema
-
unknown • src/index.ts:282:1
+
unknown • src/index.ts:288:1
Export paths: src/index.ts
Related symbols: None
@@ -7733,7 +9119,7 @@
StudioActionPayloadSchema
data-search="StudioAdminRouteId unknown src/index.ts "
>
StudioAdminRouteId
-
unknown • src/index.ts:122:1
+
unknown • src/index.ts:126:1
Export paths: src/index.ts
Related symbols: None
@@ -7744,7 +9130,7 @@
StudioAdminRouteId
data-search="StudioAdminRoutePath unknown src/index.ts "
>
StudioAdminRoutePath
-
unknown • src/index.ts:145:1
+
unknown • src/index.ts:150:1
Export paths: src/index.ts
Related symbols: None
@@ -7755,7 +9141,7 @@
StudioAdminRoutePath
data-search="StudioAdminStaticRoutePath unknown src/index.ts "
>
StudioAdminStaticRoutePath
-
unknown • src/index.ts:134:1
+
unknown • src/index.ts:139:1
Export paths: src/index.ts
Related symbols: None
@@ -7766,7 +9152,7 @@
StudioAdminStaticRoutePath
data-search="StudioCommand unknown src/index.ts "
>
StudioCommand
-
unknown • src/index.ts:317:1
+
unknown • src/index.ts:323:1
Export paths: src/index.ts
Related symbols: None
@@ -7777,7 +9163,7 @@
StudioCommand
data-search="StudioComponentBlueprint type src/index.ts "
>
StudioComponentBlueprint
-
type • src/index.ts:301:1
+
type • src/index.ts:307:1
Export paths: src/index.ts
Related symbols: None
@@ -7816,7 +9202,7 @@
StudioComponentBlueprint
data-search="StudioComponentMeta type src/index.ts StudioComponentBlueprint"
>
StudioComponentMeta
-
type • src/index.ts:306:1
+
type • src/index.ts:312:1
Export paths: src/index.ts
@@ -7874,7 +9260,7 @@
StudioComponentMeta
data-search="StudioComponentMetaRegistry unknown src/index.ts "
>
StudioComponentMetaRegistry
-
unknown • src/index.ts:313:1
+
unknown • src/index.ts:319:1
Export paths: src/index.ts
Related symbols: None
@@ -7885,7 +9271,7 @@
StudioComponentMetaRegistry
data-search="StudioContextValue type src/index.ts InsertCatalogEntry NodePlacement StudioAdminRouteId StudioLocale StudioManifest StudioMode StudioModuleId StudioNodeId StudioPanelId StudioSaveStatus StudioScreenId ThemeUpdates"
>
StudioContextValue
-
type • src/index.ts:333:1
+
type • src/index.ts:339:1
Export paths: src/index.ts
@@ -8324,7 +9710,7 @@
StudioContextValue
data-search="StudioEvent unknown src/index.ts "
>
StudioEvent
-
unknown • src/index.ts:326:1
+
unknown • src/index.ts:332:1
Export paths: src/index.ts
Related symbols: None
@@ -8335,7 +9721,7 @@
StudioEvent
data-search="StudioIdGenerator unknown src/index.ts "
>
StudioIdGenerator
-
unknown • src/index.ts:315:1
+
unknown • src/index.ts:321:1
Export paths: src/index.ts
Related symbols: None
@@ -8346,7 +9732,7 @@
StudioIdGenerator
data-search="StudioLocale unknown src/index.ts "
>
StudioLocale
-
unknown • src/index.ts:117:1
+
unknown • src/index.ts:121:1
Export paths: src/index.ts
Related symbols: None
@@ -8357,7 +9743,7 @@
StudioLocale
data-search="StudioManifest unknown src/index.ts "
>
StudioManifest
-
unknown • src/index.ts:147:1
+
unknown • src/index.ts:153:1
Export paths: src/index.ts
Related symbols: None
@@ -8368,7 +9754,7 @@
StudioManifest
data-search="StudioMode unknown src/index.ts "
>
StudioMode
-
unknown • src/index.ts:119:1
+
unknown • src/index.ts:123:1
Export paths: src/index.ts
Related symbols: None
@@ -8379,7 +9765,7 @@
StudioMode
data-search="StudioModuleId unknown src/index.ts "
>
StudioModuleId
-
unknown • src/index.ts:116:1
+
unknown • src/index.ts:120:1
Export paths: src/index.ts
Related symbols: None
@@ -8390,7 +9776,7 @@
StudioModuleId
data-search="StudioNodeId unknown src/index.ts "
>
StudioNodeId
-
unknown • src/index.ts:114:1
+
unknown • src/index.ts:118:1
Export paths: src/index.ts
Related symbols: None
@@ -8401,7 +9787,7 @@
StudioNodeId
data-search="StudioPackageBoundary type src/index.ts "
>
StudioPackageBoundary
-
type • src/index.ts:53:1
+
type • src/index.ts:54:1
Export paths: src/index.ts
Related symbols: None
@@ -8447,7 +9833,7 @@
StudioPackageBoundary
data-search="StudioPanelId unknown src/index.ts "
>
StudioPanelId
-
unknown • src/index.ts:121:1
+
unknown • src/index.ts:125:1
Export paths: src/index.ts
Related symbols: None
@@ -8458,7 +9844,7 @@
StudioPanelId
data-search="StudioProjectId unknown src/index.ts "
>
StudioProjectId
-
unknown • src/index.ts:112:1
+
unknown • src/index.ts:116:1
Export paths: src/index.ts
Related symbols: None
@@ -8469,7 +9855,7 @@
StudioProjectId
data-search="StudioPublicContract unknown src/index.ts "
>
StudioPublicContract
-
unknown • src/index.ts:110:1
+
unknown • src/index.ts:114:1
Export paths: src/index.ts
Related symbols: None
@@ -8480,7 +9866,7 @@
StudioPublicContract
data-search="StudioSaveStatus unknown src/index.ts "
>
StudioSaveStatus
-
unknown • src/index.ts:120:1
+
unknown • src/index.ts:124:1
Export paths: src/index.ts
Related symbols: None
@@ -8491,7 +9877,7 @@
StudioSaveStatus
data-search="StudioScreenId unknown src/index.ts "
>
StudioScreenId
-
unknown • src/index.ts:115:1
+
unknown • src/index.ts:119:1
Export paths: src/index.ts
Related symbols: None
@@ -8502,7 +9888,7 @@
StudioScreenId
data-search="StudioSelectionState type src/index.ts StudioAdminRouteId StudioPanelId"
>
StudioSelectionState
-
type • src/index.ts:158:1
+
type • src/index.ts:164:1
Export paths: src/index.ts
@@ -8568,7 +9954,7 @@
StudioSelectionState
data-search="StudioSessionId unknown src/index.ts "
>
StudioSessionId
-
unknown • src/index.ts:113:1
+
unknown • src/index.ts:117:1
Export paths: src/index.ts
Related symbols: None
@@ -8579,7 +9965,7 @@
StudioSessionId
data-search="StudioSessionState type src/index.ts StudioMode StudioSaveStatus"
>
StudioSessionState
-
type • src/index.ts:166:1
+
type • src/index.ts:172:1
Export paths: src/index.ts
@@ -8673,7 +10059,7 @@
StudioSessionState
data-search="ThemeUpdates unknown src/index.ts "
>
ThemeUpdates
-
unknown • src/index.ts:153:1
+
unknown • src/index.ts:159:1
Export paths: src/index.ts
Related symbols: None
@@ -8684,7 +10070,7 @@
ThemeUpdates
data-search="TPL_SCREEN_EMPTY value src/index.ts "
>
TPL_SCREEN_EMPTY
-
value • src/index.ts:470:14
+
value • src/index.ts:476:14
Export paths: src/index.ts
Related symbols: None
@@ -8695,7 +10081,7 @@
TPL_SCREEN_EMPTY
data-search="updateNodeInTree value src/index.ts (root: UiNode, id: string, newProps: Record<string, unknown>) => UiNode"
>
updateNodeInTree
-
value • src/index.ts:554:14
+
value • src/index.ts:560:14
Export paths: src/index.ts
Related symbols: None
@@ -8742,7 +10128,7 @@
Signature
data-search="validateInsertRecipe function src/index.ts InsertRecipe InsertRecipeIssue StudioComponentMetaRegistry (recipe: InsertRecipe, componentMeta: StudioComponentMetaRegistry) => InsertRecipeIssue | null"
>
validateInsertRecipe
-
function • src/index.ts:1174:1
+
function • src/index.ts:1180:1
Export paths: src/index.ts
@@ -8790,7 +10176,7 @@
Signature
data-search="validateNodePlacement function src/index.ts NodePlacement PlacementValidationResult StudioComponentMetaRegistry (args: { root: UiNode; placement: NodePlacement; childType: string; componentMeta: StudioComponentMetaRegistry; }) => PlacementValidationResult"
>
validateNodePlacement
-
function • src/index.ts:771:1
+
function • src/index.ts:777:1
Export paths: src/index.ts
@@ -10272,6 +11658,40 @@
Architecture overview
module_src_authSettings_test_ts --> module_src_authSettings_ts
module_src_authSettings_ts["src/authSettings.ts"]
package__ankhorage_studio -.-> module_src_authSettings_ts
+ module_src_bindingAuthoringContracts_ts["src/bindingAuthoringContracts.ts"]
+ package__ankhorage_studio -.-> module_src_bindingAuthoringContracts_ts
+ module_src_bindingAuthoringModel_test_ts["src/bindingAuthoringModel.test.ts"]
+ package__ankhorage_studio -.-> module_src_bindingAuthoringModel_test_ts
+ module_src_bindingAuthoringModel_test_ts --> module_src_bindingAuthoringModel_ts
+ module_src_bindingAuthoringModel_ts["src/bindingAuthoringModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingAuthoringModel_ts
+ module_src_bindingDiagnosticsModel_ts["src/bindingDiagnosticsModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingDiagnosticsModel_ts
+ module_src_bindingDiagnosticsModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingDiagnosticsModel_ts --> module_src_bindingOperationModel_ts
+ module_src_bindingDiagnosticsModel_ts --> module_src_bindingSchemaModel_ts
+ module_src_bindingManifestPersistence_test_ts["src/bindingManifestPersistence.test.ts"]
+ package__ankhorage_studio -.-> module_src_bindingManifestPersistence_test_ts
+ module_src_bindingManifestPersistence_test_ts -->
+ module_src_core_studioManifestDraftModel_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_index_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_manifestSync_ts
+ module_src_bindingMetadataModel_ts["src/bindingMetadataModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingMetadataModel_ts
+ module_src_bindingMetadataModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingMutationAcceptance_test_ts["src/bindingMutationAcceptance.test.ts"]
+ package__ankhorage_studio -.-> module_src_bindingMutationAcceptance_test_ts
+ module_src_bindingMutationAcceptance_test_ts -->
+ module_src_bindingAuthoringModel_ts
+ module_src_bindingMutationModel_ts["src/bindingMutationModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingMutationModel_ts
+ module_src_bindingOperationModel_ts["src/bindingOperationModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingOperationModel_ts
+ module_src_bindingOperationModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingOperationModel_ts --> module_src_bindingSchemaModel_ts
+ module_src_bindingSchemaModel_ts["src/bindingSchemaModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingSchemaModel_ts
+ module_src_bindingSchemaModel_ts --> module_src_bindingAuthoringContracts_ts
module_src_canvasDragModel_public_test_ts["src/canvasDragModel.public.test.ts"]
package__ankhorage_studio -.-> module_src_canvasDragModel_public_test_ts
module_src_canvasDragModel_public_test_ts --> module_src_canvasDragModel_ts
@@ -11288,6 +12708,8 @@
Architecture overview
module_src_ui_admin_pages_ApisAdminPage_tsx module_src_ui_admin_AnkhAdminPage_tsx
--> module_src_ui_admin_pages_AuthAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx -->
+ module_src_ui_admin_pages_BindingsAdminPage_tsx
+ module_src_ui_admin_AnkhAdminPage_tsx -->
module_src_ui_admin_pages_OverviewAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx -->
module_src_ui_admin_pages_PropertiesAdminPage_tsx
@@ -11397,6 +12819,77 @@
Architecture overview
module_src_ui_admin_pages_adminAuthHealthFlow_ts
module_src_ui_admin_pages_AuthAdminPage_tsx -->
module_src_ui_admin_pages_adminAuthSessionModel_ts
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts["src/ui/admin/pages/bindings/bindingAdminStyles.ts"]
+ package__ankhorage_studio -.->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx["src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx"]
+ package__ankhorage_studio -.->
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts["src/ui/admin/pages/bindings/bindingEditorModel.ts"]
+ package__ankhorage_studio -.->
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx["src/ui/admin/pages/bindings/EventBindingComposer.tsx"]
+ package__ankhorage_studio -.->
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx -->
+ module_src_index_ts module_src_ui_admin_pages_bindings_EventBindingComposer_tsx
+ --> module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx -->
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx["src/ui/admin/pages/bindings/EventBindingsCard.tsx"]
+ package__ankhorage_studio -.->
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx -->
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx["src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"]
+ package__ankhorage_studio -.->
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx -->
+ module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx -->
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx["src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"]
+ package__ankhorage_studio -.->
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx -->
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx["src/ui/admin/pages/BindingsAdminPage.tsx"]
+ package__ankhorage_studio -.-> module_src_ui_admin_pages_BindingsAdminPage_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_bindingAuthoringModel_ts module_src_ui_admin_pages_BindingsAdminPage_tsx
+ --> module_src_core_StudioContext_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_index_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_manifestState_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx
module_src_ui_admin_pages_DataSourceCatalogCard_tsx["src/ui/admin/pages/DataSourceCatalogCard.tsx"]
package__ankhorage_studio -.->
module_src_ui_admin_pages_DataSourceCatalogCard_tsx
@@ -11661,6 +13154,38 @@
Architecture overview
module_src_authSettings_test_ts --> module_src_authSettings_ts
module_src_authSettings_ts["src/authSettings.ts"]
package__ankhorage_studio -.-> module_src_authSettings_ts
+ module_src_bindingAuthoringContracts_ts["src/bindingAuthoringContracts.ts"]
+ package__ankhorage_studio -.-> module_src_bindingAuthoringContracts_ts
+ module_src_bindingAuthoringModel_test_ts["src/bindingAuthoringModel.test.ts"]
+ package__ankhorage_studio -.-> module_src_bindingAuthoringModel_test_ts
+ module_src_bindingAuthoringModel_test_ts --> module_src_bindingAuthoringModel_ts
+ module_src_bindingAuthoringModel_ts["src/bindingAuthoringModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingAuthoringModel_ts
+ module_src_bindingDiagnosticsModel_ts["src/bindingDiagnosticsModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingDiagnosticsModel_ts
+ module_src_bindingDiagnosticsModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingDiagnosticsModel_ts --> module_src_bindingOperationModel_ts
+ module_src_bindingDiagnosticsModel_ts --> module_src_bindingSchemaModel_ts
+ module_src_bindingManifestPersistence_test_ts["src/bindingManifestPersistence.test.ts"]
+ package__ankhorage_studio -.-> module_src_bindingManifestPersistence_test_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_core_studioManifestDraftModel_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_index_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_manifestSync_ts
+ module_src_bindingMetadataModel_ts["src/bindingMetadataModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingMetadataModel_ts
+ module_src_bindingMetadataModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingMutationAcceptance_test_ts["src/bindingMutationAcceptance.test.ts"]
+ package__ankhorage_studio -.-> module_src_bindingMutationAcceptance_test_ts
+ module_src_bindingMutationAcceptance_test_ts --> module_src_bindingAuthoringModel_ts
+ module_src_bindingMutationModel_ts["src/bindingMutationModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingMutationModel_ts
+ module_src_bindingOperationModel_ts["src/bindingOperationModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingOperationModel_ts
+ module_src_bindingOperationModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingOperationModel_ts --> module_src_bindingSchemaModel_ts
+ module_src_bindingSchemaModel_ts["src/bindingSchemaModel.ts"]
+ package__ankhorage_studio -.-> module_src_bindingSchemaModel_ts
+ module_src_bindingSchemaModel_ts --> module_src_bindingAuthoringContracts_ts
module_src_canvasDragModel_public_test_ts["src/canvasDragModel.public.test.ts"]
package__ankhorage_studio -.-> module_src_canvasDragModel_public_test_ts
module_src_canvasDragModel_public_test_ts --> module_src_canvasDragModel_ts
@@ -12433,6 +13958,7 @@
Architecture overview
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_studioAdminRouteModel_ts
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_ApisAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_AuthAdminPage_tsx
+ module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_BindingsAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_OverviewAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_PropertiesAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_SecretsAdminPage_tsx
@@ -12512,6 +14038,48 @@
Architecture overview
module_src_ui_admin_pages_AuthAdminPage_tsx --> module_src_ui_admin_pages_adminAuthCredentialFlow_ts
module_src_ui_admin_pages_AuthAdminPage_tsx --> module_src_ui_admin_pages_adminAuthHealthFlow_ts
module_src_ui_admin_pages_AuthAdminPage_tsx --> module_src_ui_admin_pages_adminAuthSessionModel_ts
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts["src/ui/admin/pages/bindings/bindingAdminStyles.ts"]
+ package__ankhorage_studio -.-> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx["src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx"]
+ package__ankhorage_studio -.-> module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts["src/ui/admin/pages/bindings/bindingEditorModel.ts"]
+ package__ankhorage_studio -.-> module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx["src/ui/admin/pages/bindings/EventBindingComposer.tsx"]
+ package__ankhorage_studio -.-> module_src_ui_admin_pages_bindings_EventBindingComposer_tsx
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_index_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx["src/ui/admin/pages/bindings/EventBindingsCard.tsx"]
+ package__ankhorage_studio -.-> module_src_ui_admin_pages_bindings_EventBindingsCard_tsx
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx --> module_src_ui_admin_pages_bindings_EventBindingComposer_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx["src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"]
+ package__ankhorage_studio -.-> module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx --> module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx --> module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx["src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"]
+ package__ankhorage_studio -.-> module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx --> module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx["src/ui/admin/pages/BindingsAdminPage.tsx"]
+ package__ankhorage_studio -.-> module_src_ui_admin_pages_BindingsAdminPage_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_core_StudioContext_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_index_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_manifestState_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_ui_admin_pages_bindings_EventBindingsCard_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx
module_src_ui_admin_pages_DataSourceCatalogCard_tsx["src/ui/admin/pages/DataSourceCatalogCard.tsx"]
package__ankhorage_studio -.-> module_src_ui_admin_pages_DataSourceCatalogCard_tsx
module_src_ui_admin_pages_DataSourceCatalogCard_tsx --> module_src_ui_admin_pages_ExternalApiAdminPrimitives_tsx
@@ -12667,6 +14235,16 @@
Module relationships
module_src_authFlowContract_test_ts["src/authFlowContract.test.ts"]
module_src_authSettings_test_ts["src/authSettings.test.ts"]
module_src_authSettings_ts["src/authSettings.ts"]
+ module_src_bindingAuthoringContracts_ts["src/bindingAuthoringContracts.ts"]
+ module_src_bindingAuthoringModel_test_ts["src/bindingAuthoringModel.test.ts"]
+ module_src_bindingAuthoringModel_ts["src/bindingAuthoringModel.ts"]
+ module_src_bindingDiagnosticsModel_ts["src/bindingDiagnosticsModel.ts"]
+ module_src_bindingManifestPersistence_test_ts["src/bindingManifestPersistence.test.ts"]
+ module_src_bindingMetadataModel_ts["src/bindingMetadataModel.ts"]
+ module_src_bindingMutationAcceptance_test_ts["src/bindingMutationAcceptance.test.ts"]
+ module_src_bindingMutationModel_ts["src/bindingMutationModel.ts"]
+ module_src_bindingOperationModel_ts["src/bindingOperationModel.ts"]
+ module_src_bindingSchemaModel_ts["src/bindingSchemaModel.ts"]
module_src_canvasDragModel_public_test_ts["src/canvasDragModel.public.test.ts"]
module_src_canvasDragModel_test_ts["src/canvasDragModel.test.ts"]
module_src_canvasDragModel_ts["src/canvasDragModel.ts"]
@@ -12908,6 +14486,14 @@
Module relationships
module_src_ui_admin_pages_ApisAdminPage_tsx["src/ui/admin/pages/ApisAdminPage.tsx"]
module_src_ui_admin_pages_AuthAdminPage_test_ts["src/ui/admin/pages/AuthAdminPage.test.ts"]
module_src_ui_admin_pages_AuthAdminPage_tsx["src/ui/admin/pages/AuthAdminPage.tsx"]
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts["src/ui/admin/pages/bindings/bindingAdminStyles.ts"]
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx["src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx"]
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts["src/ui/admin/pages/bindings/bindingEditorModel.ts"]
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx["src/ui/admin/pages/bindings/EventBindingComposer.tsx"]
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx["src/ui/admin/pages/bindings/EventBindingsCard.tsx"]
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx["src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"]
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx["src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"]
+ module_src_ui_admin_pages_BindingsAdminPage_tsx["src/ui/admin/pages/BindingsAdminPage.tsx"]
module_src_ui_admin_pages_DataSourceCatalogCard_tsx["src/ui/admin/pages/DataSourceCatalogCard.tsx"]
module_src_ui_admin_pages_DataSourceOperationsCard_tsx["src/ui/admin/pages/DataSourceOperationsCard.tsx"]
module_src_ui_admin_pages_ExternalApiAdminPrimitives_tsx["src/ui/admin/pages/ExternalApiAdminPrimitives.tsx"]
@@ -12985,9 +14571,22 @@
Module relationships
module_src_projectWorkspaceContracts_ts
module_src_app_workspace_WorkspacePrimitives_tsx -->
module_src_templateCatalogContracts_ts module_src_authSettings_test_ts -->
- module_src_authSettings_ts module_src_canvasDragModel_public_test_ts -->
- module_src_canvasDragModel_ts module_src_canvasDragModel_public_test_ts -->
- module_src_canvasDropZones_ts module_src_canvasDragModel_test_ts -->
+ module_src_authSettings_ts module_src_bindingAuthoringModel_test_ts -->
+ module_src_bindingAuthoringModel_ts module_src_bindingDiagnosticsModel_ts -->
+ module_src_bindingAuthoringContracts_ts module_src_bindingDiagnosticsModel_ts -->
+ module_src_bindingOperationModel_ts module_src_bindingDiagnosticsModel_ts -->
+ module_src_bindingSchemaModel_ts module_src_bindingManifestPersistence_test_ts
+ --> module_src_core_studioManifestDraftModel_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_index_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_manifestSync_ts
+ module_src_bindingMetadataModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingMutationAcceptance_test_ts -->
+ module_src_bindingAuthoringModel_ts module_src_bindingOperationModel_ts -->
+ module_src_bindingAuthoringContracts_ts module_src_bindingOperationModel_ts -->
+ module_src_bindingSchemaModel_ts module_src_bindingSchemaModel_ts -->
+ module_src_bindingAuthoringContracts_ts module_src_canvasDragModel_public_test_ts
+ --> module_src_canvasDragModel_ts module_src_canvasDragModel_public_test_ts
+ --> module_src_canvasDropZones_ts module_src_canvasDragModel_test_ts -->
module_src_canvasDragModel_ts module_src_canvasDragModel_test_ts -->
module_src_canvasDropZones_ts module_src_canvasDragModel_ts -->
module_src_canvasDropZones_ts module_src_canvasDragModel_ts -->
@@ -13486,6 +15085,8 @@
Module relationships
module_src_ui_admin_pages_ApisAdminPage_tsx module_src_ui_admin_AnkhAdminPage_tsx
--> module_src_ui_admin_pages_AuthAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx -->
+ module_src_ui_admin_pages_BindingsAdminPage_tsx
+ module_src_ui_admin_AnkhAdminPage_tsx -->
module_src_ui_admin_pages_OverviewAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx -->
module_src_ui_admin_pages_PropertiesAdminPage_tsx
@@ -13552,6 +15153,54 @@
Module relationships
module_src_ui_admin_pages_adminAuthHealthFlow_ts
module_src_ui_admin_pages_AuthAdminPage_tsx -->
module_src_ui_admin_pages_adminAuthSessionModel_ts
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx -->
+ module_src_index_ts module_src_ui_admin_pages_bindings_EventBindingComposer_tsx
+ --> module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx -->
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx -->
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx -->
+ module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx -->
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx -->
+ module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx -->
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx -->
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_bindingAuthoringModel_ts module_src_ui_admin_pages_BindingsAdminPage_tsx
+ --> module_src_core_StudioContext_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_index_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_manifestState_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx -->
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx
module_src_ui_admin_pages_DataSourceCatalogCard_tsx -->
module_src_ui_admin_pages_ExternalApiAdminPrimitives_tsx
module_src_ui_admin_pages_DataSourceOperationsCard_tsx -->
@@ -13688,6 +15337,16 @@
Module relationships
module_src_authFlowContract_test_ts["src/authFlowContract.test.ts"]
module_src_authSettings_test_ts["src/authSettings.test.ts"]
module_src_authSettings_ts["src/authSettings.ts"]
+ module_src_bindingAuthoringContracts_ts["src/bindingAuthoringContracts.ts"]
+ module_src_bindingAuthoringModel_test_ts["src/bindingAuthoringModel.test.ts"]
+ module_src_bindingAuthoringModel_ts["src/bindingAuthoringModel.ts"]
+ module_src_bindingDiagnosticsModel_ts["src/bindingDiagnosticsModel.ts"]
+ module_src_bindingManifestPersistence_test_ts["src/bindingManifestPersistence.test.ts"]
+ module_src_bindingMetadataModel_ts["src/bindingMetadataModel.ts"]
+ module_src_bindingMutationAcceptance_test_ts["src/bindingMutationAcceptance.test.ts"]
+ module_src_bindingMutationModel_ts["src/bindingMutationModel.ts"]
+ module_src_bindingOperationModel_ts["src/bindingOperationModel.ts"]
+ module_src_bindingSchemaModel_ts["src/bindingSchemaModel.ts"]
module_src_canvasDragModel_public_test_ts["src/canvasDragModel.public.test.ts"]
module_src_canvasDragModel_test_ts["src/canvasDragModel.test.ts"]
module_src_canvasDragModel_ts["src/canvasDragModel.ts"]
@@ -13929,6 +15588,14 @@
Module relationships
module_src_ui_admin_pages_ApisAdminPage_tsx["src/ui/admin/pages/ApisAdminPage.tsx"]
module_src_ui_admin_pages_AuthAdminPage_test_ts["src/ui/admin/pages/AuthAdminPage.test.ts"]
module_src_ui_admin_pages_AuthAdminPage_tsx["src/ui/admin/pages/AuthAdminPage.tsx"]
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts["src/ui/admin/pages/bindings/bindingAdminStyles.ts"]
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx["src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx"]
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts["src/ui/admin/pages/bindings/bindingEditorModel.ts"]
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx["src/ui/admin/pages/bindings/EventBindingComposer.tsx"]
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx["src/ui/admin/pages/bindings/EventBindingsCard.tsx"]
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx["src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"]
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx["src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"]
+ module_src_ui_admin_pages_BindingsAdminPage_tsx["src/ui/admin/pages/BindingsAdminPage.tsx"]
module_src_ui_admin_pages_DataSourceCatalogCard_tsx["src/ui/admin/pages/DataSourceCatalogCard.tsx"]
module_src_ui_admin_pages_DataSourceOperationsCard_tsx["src/ui/admin/pages/DataSourceOperationsCard.tsx"]
module_src_ui_admin_pages_ExternalApiAdminPrimitives_tsx["src/ui/admin/pages/ExternalApiAdminPrimitives.tsx"]
@@ -13990,6 +15657,18 @@
Module relationships
module_src_app_workspace_WorkspacePrimitives_tsx --> module_src_projectWorkspaceContracts_ts
module_src_app_workspace_WorkspacePrimitives_tsx --> module_src_templateCatalogContracts_ts
module_src_authSettings_test_ts --> module_src_authSettings_ts
+ module_src_bindingAuthoringModel_test_ts --> module_src_bindingAuthoringModel_ts
+ module_src_bindingDiagnosticsModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingDiagnosticsModel_ts --> module_src_bindingOperationModel_ts
+ module_src_bindingDiagnosticsModel_ts --> module_src_bindingSchemaModel_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_core_studioManifestDraftModel_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_index_ts
+ module_src_bindingManifestPersistence_test_ts --> module_src_manifestSync_ts
+ module_src_bindingMetadataModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingMutationAcceptance_test_ts --> module_src_bindingAuthoringModel_ts
+ module_src_bindingOperationModel_ts --> module_src_bindingAuthoringContracts_ts
+ module_src_bindingOperationModel_ts --> module_src_bindingSchemaModel_ts
+ module_src_bindingSchemaModel_ts --> module_src_bindingAuthoringContracts_ts
module_src_canvasDragModel_public_test_ts --> module_src_canvasDragModel_ts
module_src_canvasDragModel_public_test_ts --> module_src_canvasDropZones_ts
module_src_canvasDragModel_test_ts --> module_src_canvasDragModel_ts
@@ -14317,6 +15996,7 @@
Module relationships
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_studioAdminRouteModel_ts
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_ApisAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_AuthAdminPage_tsx
+ module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_BindingsAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_OverviewAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_PropertiesAdminPage_tsx
module_src_ui_admin_AnkhAdminPage_tsx --> module_src_ui_admin_pages_SecretsAdminPage_tsx
@@ -14360,6 +16040,32 @@
Module relationships
module_src_ui_admin_pages_AuthAdminPage_tsx --> module_src_ui_admin_pages_adminAuthCredentialFlow_ts
module_src_ui_admin_pages_AuthAdminPage_tsx --> module_src_ui_admin_pages_adminAuthHealthFlow_ts
module_src_ui_admin_pages_AuthAdminPage_tsx --> module_src_ui_admin_pages_adminAuthSessionModel_ts
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_index_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx --> module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx --> module_src_ui_admin_pages_bindings_EventBindingComposer_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx --> module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx --> module_src_ui_admin_pages_bindings_bindingEditorModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx --> module_src_ui_admin_pages_bindings_bindingAdminStyles_ts
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx --> module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_bindingAuthoringModel_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_core_StudioContext_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_index_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_manifestState_ts
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_ui_admin_adminPagePrimitives_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_ui_admin_pages_bindings_EventBindingsCard_tsx
+ module_src_ui_admin_pages_BindingsAdminPage_tsx --> module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx
module_src_ui_admin_pages_DataSourceCatalogCard_tsx --> module_src_ui_admin_pages_ExternalApiAdminPrimitives_tsx
module_src_ui_admin_pages_DataSourceOperationsCard_tsx --> module_src_core_StudioContext_ts
module_src_ui_admin_pages_DataSourceOperationsCard_tsx --> module_src_externalApiApi_ts
@@ -14452,6 +16158,16 @@
Export graph
module_src_authFlowContract_test_ts["src/authFlowContract.test.ts"]
module_src_authSettings_test_ts["src/authSettings.test.ts"]
module_src_authSettings_ts["src/authSettings.ts"]
+ module_src_bindingAuthoringContracts_ts["src/bindingAuthoringContracts.ts"]
+ module_src_bindingAuthoringModel_test_ts["src/bindingAuthoringModel.test.ts"]
+ module_src_bindingAuthoringModel_ts["src/bindingAuthoringModel.ts"]
+ module_src_bindingDiagnosticsModel_ts["src/bindingDiagnosticsModel.ts"]
+ module_src_bindingManifestPersistence_test_ts["src/bindingManifestPersistence.test.ts"]
+ module_src_bindingMetadataModel_ts["src/bindingMetadataModel.ts"]
+ module_src_bindingMutationAcceptance_test_ts["src/bindingMutationAcceptance.test.ts"]
+ module_src_bindingMutationModel_ts["src/bindingMutationModel.ts"]
+ module_src_bindingOperationModel_ts["src/bindingOperationModel.ts"]
+ module_src_bindingSchemaModel_ts["src/bindingSchemaModel.ts"]
module_src_canvasDragModel_public_test_ts["src/canvasDragModel.public.test.ts"]
module_src_canvasDragModel_test_ts["src/canvasDragModel.test.ts"]
module_src_canvasDragModel_ts["src/canvasDragModel.ts"]
@@ -14693,6 +16409,14 @@
Export graph
module_src_ui_admin_pages_ApisAdminPage_tsx["src/ui/admin/pages/ApisAdminPage.tsx"]
module_src_ui_admin_pages_AuthAdminPage_test_ts["src/ui/admin/pages/AuthAdminPage.test.ts"]
module_src_ui_admin_pages_AuthAdminPage_tsx["src/ui/admin/pages/AuthAdminPage.tsx"]
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts["src/ui/admin/pages/bindings/bindingAdminStyles.ts"]
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx["src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx"]
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts["src/ui/admin/pages/bindings/bindingEditorModel.ts"]
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx["src/ui/admin/pages/bindings/EventBindingComposer.tsx"]
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx["src/ui/admin/pages/bindings/EventBindingsCard.tsx"]
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx["src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"]
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx["src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"]
+ module_src_ui_admin_pages_BindingsAdminPage_tsx["src/ui/admin/pages/BindingsAdminPage.tsx"]
module_src_ui_admin_pages_DataSourceCatalogCard_tsx["src/ui/admin/pages/DataSourceCatalogCard.tsx"]
module_src_ui_admin_pages_DataSourceOperationsCard_tsx["src/ui/admin/pages/DataSourceOperationsCard.tsx"]
module_src_ui_admin_pages_ExternalApiAdminPrimitives_tsx["src/ui/admin/pages/ExternalApiAdminPrimitives.tsx"]
@@ -14729,6 +16453,11 @@
Export graph
export_StudioActionPayloadSchema export_addNodeToTree["addNodeToTree"]
module_src_index_ts --> export_addNodeToTree export_addNodeToTree -.->
export_StudioComponentMetaRegistry
+ export_appendStudioEventBinding["appendStudioEventBinding"]
+ module_src_bindingMutationModel_ts --> export_appendStudioEventBinding
+ export_assessStudioBindingCompatibility["assessStudioBindingCompatibility"]
+ module_src_bindingSchemaModel_ts --> export_assessStudioBindingCompatibility
+ export_assessStudioBindingCompatibility -.-> export_StudioBindingCompatibility
export_buildInsertCatalogEntries["buildInsertCatalogEntries"]
module_src_index_ts --> export_buildInsertCatalogEntries
export_buildInsertCatalogEntries -.-> export_InsertCatalogEntry
@@ -14739,18 +16468,37 @@
Export graph
export_StudioComponentMetaRegistry
export_cloneWithNewIds["cloneWithNewIds"] module_src_index_ts -->
export_cloneWithNewIds export_cloneWithNewIds -.-> export_StudioIdGenerator
+ export_collectStudioBindingOperationOptions["collectStudioBindingOperationOptions"]
+ module_src_bindingOperationModel_ts -->
+ export_collectStudioBindingOperationOptions
+ export_collectStudioBindingOperationOptions -.->
+ export_StudioBindingOperationOption
+ export_collectStudioResponsePaths["collectStudioResponsePaths"]
+ module_src_bindingSchemaModel_ts --> export_collectStudioResponsePaths
+ export_collectStudioResponsePaths -.-> export_StudioBindingResponsePathOption
export_createNodeFromCatalogEntry["createNodeFromCatalogEntry"]
module_src_index_ts --> export_createNodeFromCatalogEntry
export_createNodeFromCatalogEntry -.-> export_InsertCatalogEntry
export_createNodeFromCatalogEntry -.-> export_StudioComponentMetaRegistry
export_createNodeFromCatalogEntry -.-> export_StudioIdGenerator
+ export_createStudioActionInputFields["createStudioActionInputFields"]
+ module_src_bindingOperationModel_ts --> export_createStudioActionInputFields
+ export_createStudioActionInputFields -.-> export_StudioBindingInputFieldOption
export_createStudioInstancePropertyPatch["createStudioInstancePropertyPatch"]
module_src_propertiesAuthoringModel_ts -->
export_createStudioInstancePropertyPatch export_createStudioInstancePropertyPatch
-.-> export_StudioInstancePropertyValue
export_deriveProjectId["deriveProjectId"] module_src_projectIdentity_ts
- --> export_deriveProjectId export_findNodeById["findNodeById"]
- module_src_index_ts --> export_findNodeById
+ --> export_deriveProjectId
+ export_diagnoseStudioComponentBindings["diagnoseStudioComponentBindings"]
+ module_src_bindingDiagnosticsModel_ts --> export_diagnoseStudioComponentBindings
+ export_diagnoseStudioComponentBindings -.-> export_StudioBindingDiagnostic
+ export_diagnoseStudioComponentBindings -.-> export_StudioBindingOperationOption
+ export_findNodeById["findNodeById"] module_src_index_ts -->
+ export_findNodeById
+ export_findStudioBindingOperationOption["findStudioBindingOperationOption"]
+ module_src_bindingOperationModel_ts --> export_findStudioBindingOperationOption
+ export_findStudioBindingOperationOption -.-> export_StudioBindingOperationOption
export_generateStudioId["generateStudioId"] module_src_index_ts -->
export_generateStudioId
export_getInsertCatalogCategoryLabel["getInsertCatalogCategoryLabel"]
@@ -14865,6 +16613,10 @@
Export graph
module_src_projectWorkspaceContracts_ts --> export_ProjectSortKey
export_removeNodeFromTree["removeNodeFromTree"] module_src_index_ts -->
export_removeNodeFromTree
+ export_removeStudioEventBinding["removeStudioEventBinding"]
+ module_src_bindingMutationModel_ts --> export_removeStudioEventBinding
+ export_removeStudioPropBinding["removeStudioPropBinding"]
+ module_src_bindingMutationModel_ts --> export_removeStudioPropBinding
export_resolveDefaultInsertPlacement["resolveDefaultInsertPlacement"]
module_src_index_ts --> export_resolveDefaultInsertPlacement
export_resolveDefaultInsertPlacement -.-> export_PlacementResolutionResult
@@ -14878,6 +16630,12 @@
Export graph
export_resolveInsertPlacement -.-> export_PlacementKind
export_resolveInsertPlacement -.-> export_PlacementResolutionResult
export_resolveInsertPlacement -.-> export_StudioComponentMetaRegistry
+ export_resolveStudioBindableEvents["resolveStudioBindableEvents"]
+ module_src_bindingMetadataModel_ts --> export_resolveStudioBindableEvents
+ export_resolveStudioBindableEvents -.-> export_StudioBindableEventOption
+ export_resolveStudioBindableProps["resolveStudioBindableProps"]
+ module_src_bindingMetadataModel_ts --> export_resolveStudioBindableProps
+ export_resolveStudioBindableProps -.-> export_StudioBindablePropOption
export_resolveStudioInstancePropertyFields["resolveStudioInstancePropertyFields"]
module_src_propertiesAuthoringModel_ts -->
export_resolveStudioInstancePropertyFields
@@ -14890,6 +16648,8 @@
Export graph
export_resolveStudioInstancePropertyGroups -.->
export_StudioAuthoringComponentMeta export_resolveStudioInstancePropertyGroups
-.-> export_StudioInstancePropertyGroup
+ export_resolveStudioSchemaValueMeta["resolveStudioSchemaValueMeta"]
+ module_src_bindingSchemaModel_ts --> export_resolveStudioSchemaValueMeta
export_STUDIO_INSERT_RECIPES["STUDIO_INSERT_RECIPES"] module_src_index_ts
--> export_STUDIO_INSERT_RECIPES
export_STUDIO_PACKAGE_BOUNDARY["STUDIO_PACKAGE_BOUNDARY"]
@@ -14918,6 +16678,23 @@
Export graph
module_src_propertiesAuthoringModel_ts --> export_StudioAuthoringMetaRegistry
export_StudioAuthoringPropSchema["StudioAuthoringPropSchema"]
module_src_propertiesAuthoringModel_ts --> export_StudioAuthoringPropSchema
+ export_StudioBindableEventOption["StudioBindableEventOption"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindableEventOption
+ export_StudioBindablePropOption["StudioBindablePropOption"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindablePropOption
+ export_StudioBindingCompatibility["StudioBindingCompatibility"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindingCompatibility
+ export_StudioBindingDiagnostic["StudioBindingDiagnostic"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindingDiagnostic
+ export_StudioBindingInputFieldOption["StudioBindingInputFieldOption"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindingInputFieldOption
+ export_StudioBindingOperationOption["StudioBindingOperationOption"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindingOperationOption
+ export_StudioBindingOperationOption -.-> export_StudioBindingInputFieldOption
+ export_StudioBindingOperationOption -.-> export_StudioBindingResponsePathOption
+ export_StudioBindingResponsePathOption["StudioBindingResponsePathOption"]
+ module_src_bindingAuthoringContracts_ts -->
+ export_StudioBindingResponsePathOption
export_StudioCommand["StudioCommand"] module_src_index_ts -->
export_StudioCommand
export_StudioComponentBlueprint["StudioComponentBlueprint"]
@@ -14992,6 +16769,8 @@
Export graph
module_src_index_ts --> export_TPL_SCREEN_EMPTY
export_updateNodeInTree["updateNodeInTree"] module_src_index_ts -->
export_updateNodeInTree
+ export_upsertStudioPropBinding["upsertStudioPropBinding"]
+ module_src_bindingMutationModel_ts --> export_upsertStudioPropBinding
export_validateInsertRecipe["validateInsertRecipe"] module_src_index_ts
--> export_validateInsertRecipe export_validateInsertRecipe -.->
export_InsertRecipe export_validateInsertRecipe -.-> export_InsertRecipeIssue
@@ -15031,6 +16810,16 @@
Export graph
module_src_authFlowContract_test_ts["src/authFlowContract.test.ts"]
module_src_authSettings_test_ts["src/authSettings.test.ts"]
module_src_authSettings_ts["src/authSettings.ts"]
+ module_src_bindingAuthoringContracts_ts["src/bindingAuthoringContracts.ts"]
+ module_src_bindingAuthoringModel_test_ts["src/bindingAuthoringModel.test.ts"]
+ module_src_bindingAuthoringModel_ts["src/bindingAuthoringModel.ts"]
+ module_src_bindingDiagnosticsModel_ts["src/bindingDiagnosticsModel.ts"]
+ module_src_bindingManifestPersistence_test_ts["src/bindingManifestPersistence.test.ts"]
+ module_src_bindingMetadataModel_ts["src/bindingMetadataModel.ts"]
+ module_src_bindingMutationAcceptance_test_ts["src/bindingMutationAcceptance.test.ts"]
+ module_src_bindingMutationModel_ts["src/bindingMutationModel.ts"]
+ module_src_bindingOperationModel_ts["src/bindingOperationModel.ts"]
+ module_src_bindingSchemaModel_ts["src/bindingSchemaModel.ts"]
module_src_canvasDragModel_public_test_ts["src/canvasDragModel.public.test.ts"]
module_src_canvasDragModel_test_ts["src/canvasDragModel.test.ts"]
module_src_canvasDragModel_ts["src/canvasDragModel.ts"]
@@ -15272,6 +17061,14 @@
Export graph
module_src_ui_admin_pages_ApisAdminPage_tsx["src/ui/admin/pages/ApisAdminPage.tsx"]
module_src_ui_admin_pages_AuthAdminPage_test_ts["src/ui/admin/pages/AuthAdminPage.test.ts"]
module_src_ui_admin_pages_AuthAdminPage_tsx["src/ui/admin/pages/AuthAdminPage.tsx"]
+ module_src_ui_admin_pages_bindings_bindingAdminStyles_ts["src/ui/admin/pages/bindings/bindingAdminStyles.ts"]
+ module_src_ui_admin_pages_bindings_BindingDiagnosticsCard_tsx["src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx"]
+ module_src_ui_admin_pages_bindings_bindingEditorModel_ts["src/ui/admin/pages/bindings/bindingEditorModel.ts"]
+ module_src_ui_admin_pages_bindings_EventBindingComposer_tsx["src/ui/admin/pages/bindings/EventBindingComposer.tsx"]
+ module_src_ui_admin_pages_bindings_EventBindingsCard_tsx["src/ui/admin/pages/bindings/EventBindingsCard.tsx"]
+ module_src_ui_admin_pages_bindings_PropertyBindingEditor_tsx["src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"]
+ module_src_ui_admin_pages_bindings_PropertyBindingsCard_tsx["src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"]
+ module_src_ui_admin_pages_BindingsAdminPage_tsx["src/ui/admin/pages/BindingsAdminPage.tsx"]
module_src_ui_admin_pages_DataSourceCatalogCard_tsx["src/ui/admin/pages/DataSourceCatalogCard.tsx"]
module_src_ui_admin_pages_DataSourceOperationsCard_tsx["src/ui/admin/pages/DataSourceOperationsCard.tsx"]
module_src_ui_admin_pages_ExternalApiAdminPrimitives_tsx["src/ui/admin/pages/ExternalApiAdminPrimitives.tsx"]
@@ -15310,6 +17107,11 @@
Export graph
export_addNodeToTree["addNodeToTree"]
module_src_index_ts --> export_addNodeToTree
export_addNodeToTree -.-> export_StudioComponentMetaRegistry
+ export_appendStudioEventBinding["appendStudioEventBinding"]
+ module_src_bindingMutationModel_ts --> export_appendStudioEventBinding
+ export_assessStudioBindingCompatibility["assessStudioBindingCompatibility"]
+ module_src_bindingSchemaModel_ts --> export_assessStudioBindingCompatibility
+ export_assessStudioBindingCompatibility -.-> export_StudioBindingCompatibility
export_buildInsertCatalogEntries["buildInsertCatalogEntries"]
module_src_index_ts --> export_buildInsertCatalogEntries
export_buildInsertCatalogEntries -.-> export_InsertCatalogEntry
@@ -15321,18 +17123,34 @@
Export graph
export_cloneWithNewIds["cloneWithNewIds"]
module_src_index_ts --> export_cloneWithNewIds
export_cloneWithNewIds -.-> export_StudioIdGenerator
+ export_collectStudioBindingOperationOptions["collectStudioBindingOperationOptions"]
+ module_src_bindingOperationModel_ts --> export_collectStudioBindingOperationOptions
+ export_collectStudioBindingOperationOptions -.-> export_StudioBindingOperationOption
+ export_collectStudioResponsePaths["collectStudioResponsePaths"]
+ module_src_bindingSchemaModel_ts --> export_collectStudioResponsePaths
+ export_collectStudioResponsePaths -.-> export_StudioBindingResponsePathOption
export_createNodeFromCatalogEntry["createNodeFromCatalogEntry"]
module_src_index_ts --> export_createNodeFromCatalogEntry
export_createNodeFromCatalogEntry -.-> export_InsertCatalogEntry
export_createNodeFromCatalogEntry -.-> export_StudioComponentMetaRegistry
export_createNodeFromCatalogEntry -.-> export_StudioIdGenerator
+ export_createStudioActionInputFields["createStudioActionInputFields"]
+ module_src_bindingOperationModel_ts --> export_createStudioActionInputFields
+ export_createStudioActionInputFields -.-> export_StudioBindingInputFieldOption
export_createStudioInstancePropertyPatch["createStudioInstancePropertyPatch"]
module_src_propertiesAuthoringModel_ts --> export_createStudioInstancePropertyPatch
export_createStudioInstancePropertyPatch -.-> export_StudioInstancePropertyValue
export_deriveProjectId["deriveProjectId"]
module_src_projectIdentity_ts --> export_deriveProjectId
+ export_diagnoseStudioComponentBindings["diagnoseStudioComponentBindings"]
+ module_src_bindingDiagnosticsModel_ts --> export_diagnoseStudioComponentBindings
+ export_diagnoseStudioComponentBindings -.-> export_StudioBindingDiagnostic
+ export_diagnoseStudioComponentBindings -.-> export_StudioBindingOperationOption
export_findNodeById["findNodeById"]
module_src_index_ts --> export_findNodeById
+ export_findStudioBindingOperationOption["findStudioBindingOperationOption"]
+ module_src_bindingOperationModel_ts --> export_findStudioBindingOperationOption
+ export_findStudioBindingOperationOption -.-> export_StudioBindingOperationOption
export_generateStudioId["generateStudioId"]
module_src_index_ts --> export_generateStudioId
export_getInsertCatalogCategoryLabel["getInsertCatalogCategoryLabel"]
@@ -15449,6 +17267,10 @@
Export graph
module_src_projectWorkspaceContracts_ts --> export_ProjectSortKey
export_removeNodeFromTree["removeNodeFromTree"]
module_src_index_ts --> export_removeNodeFromTree
+ export_removeStudioEventBinding["removeStudioEventBinding"]
+ module_src_bindingMutationModel_ts --> export_removeStudioEventBinding
+ export_removeStudioPropBinding["removeStudioPropBinding"]
+ module_src_bindingMutationModel_ts --> export_removeStudioPropBinding
export_resolveDefaultInsertPlacement["resolveDefaultInsertPlacement"]
module_src_index_ts --> export_resolveDefaultInsertPlacement
export_resolveDefaultInsertPlacement -.-> export_PlacementResolutionResult
@@ -15462,6 +17284,12 @@
Export graph
export_resolveInsertPlacement -.-> export_PlacementKind
export_resolveInsertPlacement -.-> export_PlacementResolutionResult
export_resolveInsertPlacement -.-> export_StudioComponentMetaRegistry
+ export_resolveStudioBindableEvents["resolveStudioBindableEvents"]
+ module_src_bindingMetadataModel_ts --> export_resolveStudioBindableEvents
+ export_resolveStudioBindableEvents -.-> export_StudioBindableEventOption
+ export_resolveStudioBindableProps["resolveStudioBindableProps"]
+ module_src_bindingMetadataModel_ts --> export_resolveStudioBindableProps
+ export_resolveStudioBindableProps -.-> export_StudioBindablePropOption
export_resolveStudioInstancePropertyFields["resolveStudioInstancePropertyFields"]
module_src_propertiesAuthoringModel_ts --> export_resolveStudioInstancePropertyFields
export_resolveStudioInstancePropertyFields -.-> export_StudioAuthoringComponentMeta
@@ -15470,6 +17298,8 @@
Export graph
module_src_propertiesAuthoringModel_ts --> export_resolveStudioInstancePropertyGroups
export_resolveStudioInstancePropertyGroups -.-> export_StudioAuthoringComponentMeta
export_resolveStudioInstancePropertyGroups -.-> export_StudioInstancePropertyGroup
+ export_resolveStudioSchemaValueMeta["resolveStudioSchemaValueMeta"]
+ module_src_bindingSchemaModel_ts --> export_resolveStudioSchemaValueMeta
export_STUDIO_INSERT_RECIPES["STUDIO_INSERT_RECIPES"]
module_src_index_ts --> export_STUDIO_INSERT_RECIPES
export_STUDIO_PACKAGE_BOUNDARY["STUDIO_PACKAGE_BOUNDARY"]
@@ -15498,6 +17328,22 @@
Export graph
module_src_propertiesAuthoringModel_ts --> export_StudioAuthoringMetaRegistry
export_StudioAuthoringPropSchema["StudioAuthoringPropSchema"]
module_src_propertiesAuthoringModel_ts --> export_StudioAuthoringPropSchema
+ export_StudioBindableEventOption["StudioBindableEventOption"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindableEventOption
+ export_StudioBindablePropOption["StudioBindablePropOption"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindablePropOption
+ export_StudioBindingCompatibility["StudioBindingCompatibility"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindingCompatibility
+ export_StudioBindingDiagnostic["StudioBindingDiagnostic"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindingDiagnostic
+ export_StudioBindingInputFieldOption["StudioBindingInputFieldOption"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindingInputFieldOption
+ export_StudioBindingOperationOption["StudioBindingOperationOption"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindingOperationOption
+ export_StudioBindingOperationOption -.-> export_StudioBindingInputFieldOption
+ export_StudioBindingOperationOption -.-> export_StudioBindingResponsePathOption
+ export_StudioBindingResponsePathOption["StudioBindingResponsePathOption"]
+ module_src_bindingAuthoringContracts_ts --> export_StudioBindingResponsePathOption
export_StudioCommand["StudioCommand"]
module_src_index_ts --> export_StudioCommand
export_StudioComponentBlueprint["StudioComponentBlueprint"]
@@ -15585,6 +17431,8 @@
Export graph
module_src_index_ts --> export_TPL_SCREEN_EMPTY
export_updateNodeInTree["updateNodeInTree"]
module_src_index_ts --> export_updateNodeInTree
+ export_upsertStudioPropBinding["upsertStudioPropBinding"]
+ module_src_bindingMutationModel_ts --> export_upsertStudioPropBinding
export_validateInsertRecipe["validateInsertRecipe"]
module_src_index_ts --> export_validateInsertRecipe
export_validateInsertRecipe -.-> export_InsertRecipe
@@ -15622,6 +17470,75 @@
addNodeToTree sequence
participant participant_canAcceptChild as canAcceptChild
participant_addNodeToTree->>participant_canAcceptChild: canAcceptChild()
participant_canAcceptChild-->>participant_addNodeToTree: return
+
+
+
+
+ appendStudioEventBinding sequence
+ diagrams/sequences/append-studio-event-binding.mmd
+
+ sequenceDiagram participant participant_appendStudioEventBinding as
+ appendStudioEventBinding participant participant_isEmptyBinding as isEmptyBinding
+ participant participant_writeBinding as writeBinding
+ participant_appendStudioEventBinding->>participant_writeBinding:
+ writeBinding() participant_writeBinding->>participant_isEmptyBinding:
+ isEmptyBinding() participant_isEmptyBinding-->>participant_writeBinding:
+ return participant_writeBinding-->>participant_appendStudioEventBinding:
+ return
+
+
+ View Mermaid source
+
+sequenceDiagram
+ participant participant_appendStudioEventBinding as appendStudioEventBinding
+ participant participant_isEmptyBinding as isEmptyBinding
+ participant participant_writeBinding as writeBinding
+ participant_appendStudioEventBinding->>participant_writeBinding: writeBinding()
+ participant_writeBinding->>participant_isEmptyBinding: isEmptyBinding()
+ participant_isEmptyBinding-->>participant_writeBinding: return
+ participant_writeBinding-->>participant_appendStudioEventBinding: return
+
+
+
+
+ assessStudioBindingCompatibility sequence
+
+ diagrams/sequences/assess-studio-binding-compatibility.mmd
+
+
+ sequenceDiagram participant participant_assessStudioBindingCompatibility as
+ assessStudioBindingCompatibility participant participant_isImageAssetShape as
+ isImageAssetShape participant participant_isObjectLike as isObjectLike
+ participant_assessStudioBindingCompatibility->>participant_isObjectLike:
+ isObjectLike()
+ participant_isObjectLike-->>participant_assessStudioBindingCompatibility:
+ return
+ participant_assessStudioBindingCompatibility->>participant_isImageAssetShape:
+ isImageAssetShape() participant_isImageAssetShape->>participant_isObjectLike:
+ isObjectLike() participant_isObjectLike-->>participant_isImageAssetShape:
+ return
+ participant_isImageAssetShape-->>participant_assessStudioBindingCompatibility:
+ return
+
+
+ View Mermaid source
+
+sequenceDiagram
+ participant participant_assessStudioBindingCompatibility as assessStudioBindingCompatibility
+ participant participant_isImageAssetShape as isImageAssetShape
+ participant participant_isObjectLike as isObjectLike
+ participant_assessStudioBindingCompatibility->>participant_isObjectLike: isObjectLike()
+ participant_isObjectLike-->>participant_assessStudioBindingCompatibility: return
+ participant_assessStudioBindingCompatibility->>participant_isImageAssetShape: isImageAssetShape()
+ participant_isImageAssetShape->>participant_isObjectLike: isObjectLike()
+ participant_isObjectLike-->>participant_isImageAssetShape: return
+ participant_isImageAssetShape-->>participant_assessStudioBindingCompatibility: return
@@ -15671,6 +17588,96 @@
cloneWithNewIds sequence
participant participant_createId as createId
participant_cloneWithNewIds->>participant_createId: createId()
participant_createId-->>participant_cloneWithNewIds: return
+
+
+
+
+ collectStudioResponsePaths sequence
+ diagrams/sequences/collect-studio-response-paths.mmd
+
+ sequenceDiagram participant participant_collectObjectPaths as collectObjectPaths
+ participant participant_collectStudioResponsePaths as collectStudioResponsePaths
+ participant participant_resolveSchemaFields as resolveSchemaFields participant
+ participant_resolveSchemaRef as resolveSchemaRef participant
+ participant_resolveSchemaType as resolveSchemaType participant
+ participant_resolveSingleSchemaType as resolveSingleSchemaType participant
+ participant_resolveStudioSchemaValueMeta as resolveStudioSchemaValueMeta
+ participant_collectStudioResponsePaths->>participant_resolveStudioSchemaValueMeta:
+ resolveStudioSchemaValueMeta()
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaRef:
+ resolveSchemaRef()
+ participant_resolveSchemaRef->>participant_resolveSchemaRef:
+ resolveSchemaRef()
+ participant_resolveSchemaRef-->>participant_resolveSchemaRef: return
+ participant_resolveSchemaRef-->>participant_resolveStudioSchemaValueMeta:
+ return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaType:
+ resolveSchemaType()
+ participant_resolveSchemaType->>participant_resolveSingleSchemaType:
+ resolveSingleSchemaType()
+ participant_resolveSingleSchemaType-->>participant_resolveSchemaType: return
+ participant_resolveSchemaType-->>participant_resolveStudioSchemaValueMeta:
+ return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaFields:
+ resolveSchemaFields()
+ participant_resolveSchemaFields-->>participant_resolveStudioSchemaValueMeta:
+ return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveStudioSchemaValueMeta:
+ resolveStudioSchemaValueMeta()
+ participant_resolveStudioSchemaValueMeta-->>participant_resolveStudioSchemaValueMeta:
+ return
+ participant_resolveStudioSchemaValueMeta-->>participant_collectStudioResponsePaths:
+ return
+ participant_collectStudioResponsePaths->>participant_collectObjectPaths:
+ collectObjectPaths()
+ participant_collectObjectPaths->>participant_resolveSchemaRef:
+ resolveSchemaRef()
+ participant_resolveSchemaRef-->>participant_collectObjectPaths: return
+ participant_collectObjectPaths->>participant_resolveStudioSchemaValueMeta:
+ resolveStudioSchemaValueMeta()
+ participant_resolveStudioSchemaValueMeta-->>participant_collectObjectPaths:
+ return participant_collectObjectPaths->>participant_collectObjectPaths:
+ collectObjectPaths()
+ participant_collectObjectPaths-->>participant_collectObjectPaths: return
+ participant_collectObjectPaths-->>participant_collectStudioResponsePaths:
+ return
+
+
+ View Mermaid source
+
+sequenceDiagram
+ participant participant_collectObjectPaths as collectObjectPaths
+ participant participant_collectStudioResponsePaths as collectStudioResponsePaths
+ participant participant_resolveSchemaFields as resolveSchemaFields
+ participant participant_resolveSchemaRef as resolveSchemaRef
+ participant participant_resolveSchemaType as resolveSchemaType
+ participant participant_resolveSingleSchemaType as resolveSingleSchemaType
+ participant participant_resolveStudioSchemaValueMeta as resolveStudioSchemaValueMeta
+ participant_collectStudioResponsePaths->>participant_resolveStudioSchemaValueMeta: resolveStudioSchemaValueMeta()
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaRef: resolveSchemaRef()
+ participant_resolveSchemaRef->>participant_resolveSchemaRef: resolveSchemaRef()
+ participant_resolveSchemaRef-->>participant_resolveSchemaRef: return
+ participant_resolveSchemaRef-->>participant_resolveStudioSchemaValueMeta: return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaType: resolveSchemaType()
+ participant_resolveSchemaType->>participant_resolveSingleSchemaType: resolveSingleSchemaType()
+ participant_resolveSingleSchemaType-->>participant_resolveSchemaType: return
+ participant_resolveSchemaType-->>participant_resolveStudioSchemaValueMeta: return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaFields: resolveSchemaFields()
+ participant_resolveSchemaFields-->>participant_resolveStudioSchemaValueMeta: return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveStudioSchemaValueMeta: resolveStudioSchemaValueMeta()
+ participant_resolveStudioSchemaValueMeta-->>participant_resolveStudioSchemaValueMeta: return
+ participant_resolveStudioSchemaValueMeta-->>participant_collectStudioResponsePaths: return
+ participant_collectStudioResponsePaths->>participant_collectObjectPaths: collectObjectPaths()
+ participant_collectObjectPaths->>participant_resolveSchemaRef: resolveSchemaRef()
+ participant_resolveSchemaRef-->>participant_collectObjectPaths: return
+ participant_collectObjectPaths->>participant_resolveStudioSchemaValueMeta: resolveStudioSchemaValueMeta()
+ participant_resolveStudioSchemaValueMeta-->>participant_collectObjectPaths: return
+ participant_collectObjectPaths->>participant_collectObjectPaths: collectObjectPaths()
+ participant_collectObjectPaths-->>participant_collectObjectPaths: return
+ participant_collectObjectPaths-->>participant_collectStudioResponsePaths: return
@@ -15714,6 +17721,32 @@
createNodeFromCatalogEntry sequence
participant_createNodeFromRecipe-->>participant_createNodeFromCatalogEntry: return
participant_createNodeFromCatalogEntry->>participant_createId: createId()
participant_createId-->>participant_createNodeFromCatalogEntry: return
+
+
+
+
+ diagnoseStudioComponentBindings sequence
+
+ diagrams/sequences/diagnose-studio-component-bindings.mmd
+
+
+ sequenceDiagram participant participant_diagnoseStudioComponentBindings as
+ diagnoseStudioComponentBindings participant participant_diagnostic as diagnostic
+ participant_diagnoseStudioComponentBindings->>participant_diagnostic:
+ diagnostic()
+ participant_diagnostic-->>participant_diagnoseStudioComponentBindings: return
+
+
+ View Mermaid source
+
+sequenceDiagram
+ participant participant_diagnoseStudioComponentBindings as diagnoseStudioComponentBindings
+ participant participant_diagnostic as diagnostic
+ participant_diagnoseStudioComponentBindings->>participant_diagnostic: diagnostic()
+ participant_diagnostic-->>participant_diagnoseStudioComponentBindings: return
@@ -15735,6 +17768,65 @@
findNodeById sequence
participant participant_findNodeById as findNodeById
participant_findNodeById->>participant_findNodeById: findNodeById()
participant_findNodeById-->>participant_findNodeById: return
+
+
+
+
+ removeStudioEventBinding sequence
+ diagrams/sequences/remove-studio-event-binding.mmd
+
+ sequenceDiagram participant participant_isEmptyBinding as isEmptyBinding participant
+ participant_removeStudioEventBinding as removeStudioEventBinding participant
+ participant_writeBinding as writeBinding
+ participant_removeStudioEventBinding->>participant_writeBinding:
+ writeBinding() participant_writeBinding->>participant_isEmptyBinding:
+ isEmptyBinding() participant_isEmptyBinding-->>participant_writeBinding:
+ return participant_writeBinding-->>participant_removeStudioEventBinding:
+ return
+
+
+ View Mermaid source
+
+sequenceDiagram
+ participant participant_isEmptyBinding as isEmptyBinding
+ participant participant_removeStudioEventBinding as removeStudioEventBinding
+ participant participant_writeBinding as writeBinding
+ participant_removeStudioEventBinding->>participant_writeBinding: writeBinding()
+ participant_writeBinding->>participant_isEmptyBinding: isEmptyBinding()
+ participant_isEmptyBinding-->>participant_writeBinding: return
+ participant_writeBinding-->>participant_removeStudioEventBinding: return
+
+
+
+
+ removeStudioPropBinding sequence
+ diagrams/sequences/remove-studio-prop-binding.mmd
+
+ sequenceDiagram participant participant_isEmptyBinding as isEmptyBinding participant
+ participant_removeStudioPropBinding as removeStudioPropBinding participant
+ participant_writeBinding as writeBinding
+ participant_removeStudioPropBinding->>participant_writeBinding: writeBinding()
+ participant_writeBinding->>participant_isEmptyBinding: isEmptyBinding()
+ participant_isEmptyBinding-->>participant_writeBinding: return
+ participant_writeBinding-->>participant_removeStudioPropBinding: return
+
+
+ View Mermaid source
+
+sequenceDiagram
+ participant participant_isEmptyBinding as isEmptyBinding
+ participant participant_removeStudioPropBinding as removeStudioPropBinding
+ participant participant_writeBinding as writeBinding
+ participant_removeStudioPropBinding->>participant_writeBinding: writeBinding()
+ participant_writeBinding->>participant_isEmptyBinding: isEmptyBinding()
+ participant_isEmptyBinding-->>participant_writeBinding: return
+ participant_writeBinding-->>participant_removeStudioPropBinding: return
@@ -15764,6 +17856,67 @@
resolveStudioInstancePropertyGroups sequence
participant participant_resolveStudioInstancePropertyGroups as resolveStudioInstancePropertyGroups
participant_resolveStudioInstancePropertyGroups->>participant_resolveStudioInstancePropertyFields: resolveStudioInstancePropertyFields()
participant_resolveStudioInstancePropertyFields-->>participant_resolveStudioInstancePropertyGroups: return
+
+
+
+
+ resolveStudioSchemaValueMeta sequence
+
+ diagrams/sequences/resolve-studio-schema-value-meta.mmd
+
+
+ sequenceDiagram participant participant_resolveSchemaFields as resolveSchemaFields
+ participant participant_resolveSchemaRef as resolveSchemaRef participant
+ participant_resolveSchemaType as resolveSchemaType participant
+ participant_resolveSingleSchemaType as resolveSingleSchemaType participant
+ participant_resolveStudioSchemaValueMeta as resolveStudioSchemaValueMeta
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaRef:
+ resolveSchemaRef()
+ participant_resolveSchemaRef->>participant_resolveSchemaRef:
+ resolveSchemaRef()
+ participant_resolveSchemaRef-->>participant_resolveSchemaRef: return
+ participant_resolveSchemaRef-->>participant_resolveStudioSchemaValueMeta:
+ return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaType:
+ resolveSchemaType()
+ participant_resolveSchemaType->>participant_resolveSingleSchemaType:
+ resolveSingleSchemaType()
+ participant_resolveSingleSchemaType-->>participant_resolveSchemaType: return
+ participant_resolveSchemaType-->>participant_resolveStudioSchemaValueMeta:
+ return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaFields:
+ resolveSchemaFields()
+ participant_resolveSchemaFields-->>participant_resolveStudioSchemaValueMeta:
+ return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveStudioSchemaValueMeta:
+ resolveStudioSchemaValueMeta()
+ participant_resolveStudioSchemaValueMeta-->>participant_resolveStudioSchemaValueMeta:
+ return
+
+
+ View Mermaid source
+
+sequenceDiagram
+ participant participant_resolveSchemaFields as resolveSchemaFields
+ participant participant_resolveSchemaRef as resolveSchemaRef
+ participant participant_resolveSchemaType as resolveSchemaType
+ participant participant_resolveSingleSchemaType as resolveSingleSchemaType
+ participant participant_resolveStudioSchemaValueMeta as resolveStudioSchemaValueMeta
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaRef: resolveSchemaRef()
+ participant_resolveSchemaRef->>participant_resolveSchemaRef: resolveSchemaRef()
+ participant_resolveSchemaRef-->>participant_resolveSchemaRef: return
+ participant_resolveSchemaRef-->>participant_resolveStudioSchemaValueMeta: return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaType: resolveSchemaType()
+ participant_resolveSchemaType->>participant_resolveSingleSchemaType: resolveSingleSchemaType()
+ participant_resolveSingleSchemaType-->>participant_resolveSchemaType: return
+ participant_resolveSchemaType-->>participant_resolveStudioSchemaValueMeta: return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveSchemaFields: resolveSchemaFields()
+ participant_resolveSchemaFields-->>participant_resolveStudioSchemaValueMeta: return
+ participant_resolveStudioSchemaValueMeta->>participant_resolveStudioSchemaValueMeta: resolveStudioSchemaValueMeta()
+ participant_resolveStudioSchemaValueMeta-->>participant_resolveStudioSchemaValueMeta: return
@@ -15787,6 +17940,35 @@
updateNodeInTree sequence
participant participant_updateNodeInTree as updateNodeInTree
participant_updateNodeInTree->>participant_isStyleRecord: isStyleRecord()
participant_isStyleRecord-->>participant_updateNodeInTree: return
+
+
+
+
+ upsertStudioPropBinding sequence
+ diagrams/sequences/upsert-studio-prop-binding.mmd
+
+ sequenceDiagram participant participant_isEmptyBinding as isEmptyBinding participant
+ participant_upsertStudioPropBinding as upsertStudioPropBinding participant
+ participant_writeBinding as writeBinding
+ participant_upsertStudioPropBinding->>participant_writeBinding: writeBinding()
+ participant_writeBinding->>participant_isEmptyBinding: isEmptyBinding()
+ participant_isEmptyBinding-->>participant_writeBinding: return
+ participant_writeBinding-->>participant_upsertStudioPropBinding: return
+
+
+ View Mermaid source
+
+sequenceDiagram
+ participant participant_isEmptyBinding as isEmptyBinding
+ participant participant_upsertStudioPropBinding as upsertStudioPropBinding
+ participant participant_writeBinding as writeBinding
+ participant_upsertStudioPropBinding->>participant_writeBinding: writeBinding()
+ participant_writeBinding->>participant_isEmptyBinding: isEmptyBinding()
+ participant_isEmptyBinding-->>participant_writeBinding: return
+ participant_writeBinding-->>participant_upsertStudioPropBinding: return
@@ -16428,44 +18610,344 @@
readCallbackRoute
src/authSettings.ts:473:1
No description available.
-
- readStringArray
- src/authSettings.ts:489:1
+
+ readStringArray
+ src/authSettings.ts:489:1
+ No description available.
+
+
+ readOptionalStringRecord
+ src/authSettings.ts:512:1
+ No description available.
+
+
+ readOptionalIcon
+ src/authSettings.ts:526:1
+ No description available.
+
+
+ findForbiddenInlineSecretPath
+ src/authSettings.ts:561:1
+ No description available.
+
+
+ hasOnlyKeys
+ src/authSettings.ts:581:1
+ No description available.
+
+
+ asRecord
+ src/authSettings.ts:586:1
+ No description available.
+
+
+ success
+ src/authSettings.ts:592:1
+ No description available.
+
+
+ invalid
+ src/authSettings.ts:596:1
+ No description available.
+
+
+
+
+
+ src/bindingDiagnosticsModel.ts
+
+ diagnoseStudioComponentBindings
+ src/bindingDiagnosticsModel.ts:20:1
+ No description available.
+
+
+ diagnosePropBinding
+ src/bindingDiagnosticsModel.ts:46:1
+ No description available.
+
+
+ diagnoseEventBinding
+ src/bindingDiagnosticsModel.ts:86:1
+ No description available.
+
+
+ diagnoseEventInputs
+ src/bindingDiagnosticsModel.ts:112:1
+ No description available.
+
+
+ diagnoseInputCompatibility
+ src/bindingDiagnosticsModel.ts:135:1
+ No description available.
+
+
+ resolveEventSourceValue
+ src/bindingDiagnosticsModel.ts:160:1
+ No description available.
+
+
+ missingOperationDiagnostic
+ src/bindingDiagnosticsModel.ts:175:1
+ No description available.
+
+
+ toBindableType
+ src/bindingDiagnosticsModel.ts:185:1
+ No description available.
+
+
+ diagnostic
+ src/bindingDiagnosticsModel.ts:198:1
+ No description available.
+
+
+
+
+
+ src/bindingManifestPersistence.test.ts
+
+ createManifest
+ src/bindingManifestPersistence.test.ts:8:1
+ No description available.
+
+
+
+
+
+
+ src/bindingMutationModel.ts
+
+ upsertStudioPropBinding
+ src/bindingMutationModel.ts:9:1
+ No description available.
+
+
+ removeStudioPropBinding
+ src/bindingMutationModel.ts:22:1
+ No description available.
+
+
+ appendStudioEventBinding
+ src/bindingMutationModel.ts:34:1
+ No description available.
+
+
+ removeStudioEventBinding
+ src/bindingMutationModel.ts:50:1
+ No description available.
+
+
+ writeBinding
+ src/bindingMutationModel.ts:66:1
+ No description available.
+
+
+ isEmptyBinding
+ src/bindingMutationModel.ts:82:1
+ No description available.
+
+
+
+
+
+ src/bindingOperationModel.ts
+
+ collectStudioBindingOperationOptions
+ src/bindingOperationModel.ts:16:1
+ No description available.
+
+
+ findStudioBindingOperationOption
+ src/bindingOperationModel.ts:24:1
+ No description available.
+
+
+ collectSourceOperations
+ src/bindingOperationModel.ts:36:1
+ No description available.
+
+
+ collectOperationInputFields
+ src/bindingOperationModel.ts:55:1
+ No description available.
+
+
+ resolveSlotSchema
+ src/bindingOperationModel.ts:83:1
+ No description available.
+
+
+ describeSource
+ src/bindingOperationModel.ts:90:1
+ No description available.
+
+
+ createStudioActionInputFields
+ src/bindingOperationModel.ts:95:1
+ No description available.
+
+
+ toBindableType
+ src/bindingOperationModel.ts:113:1
+ No description available.
+
+
+
+
+
+ src/bindingSchemaModel.ts
+
+ resolveStudioSchemaValueMeta
+ src/bindingSchemaModel.ts:14:1
+ No description available.
+
+
+ collectStudioResponsePaths
+ src/bindingSchemaModel.ts:33:1
+ No description available.
+
+
+ assessStudioBindingCompatibility
+ src/bindingSchemaModel.ts:43:1
No description available.
-
- readOptionalStringRecord
- src/authSettings.ts:512:1
+
+ collectObjectPaths
+ src/bindingSchemaModel.ts:58:1
No description available.
-
- readOptionalIcon
- src/authSettings.ts:526:1
+
+ resolveSchemaRef
+ src/bindingSchemaModel.ts:78:1
No description available.
-
- findForbiddenInlineSecretPath
- src/authSettings.ts:561:1
+
+ resolveSchemaFields
+ src/bindingSchemaModel.ts:88:1
No description available.
-
- hasOnlyKeys
- src/authSettings.ts:581:1
+
+ resolveSchemaType
+ src/bindingSchemaModel.ts:100:1
No description available.
-
- asRecord
- src/authSettings.ts:586:1
+
+ resolveSingleSchemaType
+ src/bindingSchemaModel.ts:118:1
No description available.
-
- success
- src/authSettings.ts:592:1
+
+ isObjectLike
+ src/bindingSchemaModel.ts:123:1
No description available.
-
- invalid
- src/authSettings.ts:596:1
+
+ isImageAssetShape
+ src/bindingSchemaModel.ts:127:1
No description available.
@@ -21879,167 +24361,167 @@ createRoot
src/index.ts
generateStudioId
- src/index.ts:518:14
+ src/index.ts:524:14
No description available.
cloneWithNewIds
- src/index.ts:525:14
+ src/index.ts:531:14
No description available.
findNodeById
- src/index.ts:542:14
+ src/index.ts:548:14
No description available.
updateNodeInTree
- src/index.ts:554:14
+ src/index.ts:560:14
No description available.
removeNodeFromTree
- src/index.ts:582:14
+ src/index.ts:588:14
No description available.
addNodeToTree
- src/index.ts:600:14
+ src/index.ts:606:14
No description available.
moveNodeInTree
- src/index.ts:633:14
+ src/index.ts:639:14
No description available.
findNodeWithParent
- src/index.ts:669:1
+ src/index.ts:675:1
No description available.
visit
- src/index.ts:674:9
+ src/index.ts:680:9
No description available.
isDescendantNode
- src/index.ts:693:1
+ src/index.ts:699:1
No description available.
removeNodeForMove
- src/index.ts:704:1
+ src/index.ts:710:1
No description available.
canAcceptChild
- src/index.ts:759:1
+ src/index.ts:765:1
No description available.
validateNodePlacement
- src/index.ts:771:1
+ src/index.ts:777:1
No description available.
resolveInsertPlacement
- src/index.ts:826:1
+ src/index.ts:832:1
No description available.
resolveDefaultInsertPlacement
- src/index.ts:887:1
+ src/index.ts:893:1
No description available.
insertChildAtIndex
- src/index.ts:944:1
+ src/index.ts:950:1
No description available.
insertNodeAtPlacement
- src/index.ts:989:1
+ src/index.ts:995:1
No description available.
getAdjustedMovePlacement
- src/index.ts:1028:1
+ src/index.ts:1034:1
No description available.
moveNodeToPlacement
- src/index.ts:1057:1
+ src/index.ts:1063:1
No description available.
getInsertCatalogCategoryLabel
- src/index.ts:1157:1
+ src/index.ts:1163:1
No description available.
resolveCategoryOrder
- src/index.ts:1161:1
+ src/index.ts:1167:1
No description available.
describeInsertRecipeIssue
- src/index.ts:1166:1
+ src/index.ts:1172:1
No description available.
validateInsertRecipe
- src/index.ts:1174:1
+ src/index.ts:1180:1
No description available.
visit
- src/index.ts:1178:9
+ src/index.ts:1184:9
No description available.
createNodeFromRecipe
- src/index.ts:1211:1
+ src/index.ts:1217:1
No description available.
buildNode
- src/index.ts:1216:9
+ src/index.ts:1222:9
No description available.
createNodeFromCatalogEntry
- src/index.ts:1231:1
+ src/index.ts:1237:1
No description available.
createComponentEntry
- src/index.ts:1251:1
+ src/index.ts:1257:1
No description available.
createRecipeEntry
- src/index.ts:1274:1
+ src/index.ts:1280:1
No description available.
buildInsertCatalogEntries
- src/index.ts:1312:1
+ src/index.ts:1318:1
No description available.
resolvePlacementForEntry
- src/index.ts:1338:1
+ src/index.ts:1344:1
No description available.
resolveInsertCatalogEntries
- src/index.ts:1354:1
+ src/index.ts:1360:1
No description available.
isStyleRecord
- src/index.ts:1403:1
+ src/index.ts:1409:1
No description available.
@@ -24238,7 +26720,7 @@ src/studioAdminRouteModel.ts
data-search="getStudioAdminRouteDefinition src/studioAdminRouteModel.ts "
>
getStudioAdminRouteDefinition
- src/studioAdminRouteModel.ts:131:1
+ src/studioAdminRouteModel.ts:142:1
No description available.
getStudioAdminRouteDefinition
data-search="resolveStudioAdminRouteId src/studioAdminRouteModel.ts "
>
resolveStudioAdminRouteId
- src/studioAdminRouteModel.ts:142:1
+ src/studioAdminRouteModel.ts:153:1
No description available.
resolveStudioAdminRouteId
data-search="resolveStudioAdminRoutePath src/studioAdminRouteModel.ts "
>
resolveStudioAdminRoutePath
- src/studioAdminRouteModel.ts:154:1
+ src/studioAdminRouteModel.ts:172:1
+ No description available.
+
+
+ resolveStudioBindingsNodeId
+ src/studioAdminRouteModel.ts:187:1
+ No description available.
+
+
+ createStudioBindingsRoutePath
+ src/studioAdminRouteModel.ts:191:1
No description available.
resolveStudioAdminRoutePath
data-search="resolveStudioPropertiesNodeId src/studioAdminRouteModel.ts "
>
resolveStudioPropertiesNodeId
- src/studioAdminRouteModel.ts:165:1
+ src/studioAdminRouteModel.ts:195:1
No description available.
resolveStudioPropertiesNodeId
data-search="createStudioPropertiesRoutePath src/studioAdminRouteModel.ts "
>
createStudioPropertiesRoutePath
- src/studioAdminRouteModel.ts:182:1
+ src/studioAdminRouteModel.ts:199:1
No description available.
createStudioPropertiesRoutePath
data-search="createStudioAdminRoutePath src/studioAdminRouteModel.ts "
>
createStudioAdminRoutePath
- src/studioAdminRouteModel.ts:186:1
+ src/studioAdminRouteModel.ts:203:1
No description available.
createStudioAdminRoutePath
data-search="isStudioAdminRouteAvailable src/studioAdminRouteModel.ts "
>
isStudioAdminRouteAvailable
- src/studioAdminRouteModel.ts:197:1
+ src/studioAdminRouteModel.ts:217:1
No description available.
isStudioAdminRouteAvailable
data-search="resolveStudioAdminActiveRouteId src/studioAdminRouteModel.ts "
>
resolveStudioAdminActiveRouteId
- src/studioAdminRouteModel.ts:208:1
+ src/studioAdminRouteModel.ts:228:1
No description available.
resolveStudioAdminActiveRouteId
data-search="isStudioAdminRouteActive src/studioAdminRouteModel.ts "
>
isStudioAdminRouteActive
- src/studioAdminRouteModel.ts:212:1
+ src/studioAdminRouteModel.ts:232:1
No description available.
isStudioAdminRouteActive
data-search="createStudioAdminRouteRenderState src/studioAdminRouteModel.ts "
>
createStudioAdminRouteRenderState
- src/studioAdminRouteModel.ts:229:1
+ src/studioAdminRouteModel.ts:249:1
No description available.
openStudioAdminRoute
- src/studioAdminRouteModel.ts:247:1
+ src/studioAdminRouteModel.ts:268:1
No description available.
isStudioAdminPath
- src/studioAdminRouteModel.ts:264:1
+ src/studioAdminRouteModel.ts:285:1
No description available.
isStudioAdminPath
data-search="resolveStudioNavigableLocation src/studioAdminRouteModel.ts "
>
resolveStudioNavigableLocation
- src/studioAdminRouteModel.ts:268:1
+ src/studioAdminRouteModel.ts:289:1
No description available.
resolveStudioNavigableLocation
data-search="resolveStudioLastNonAdminLocation src/studioAdminRouteModel.ts "
>
resolveStudioLastNonAdminLocation
- src/studioAdminRouteModel.ts:278:1
+ src/studioAdminRouteModel.ts:299:1
+ No description available.
+
+
+ resolveStudioContextNodeId
+ src/studioAdminRouteModel.ts:307:1
No description available.
@@ -24493,7 +26999,7 @@
KeyValue
src/ui/admin/AnkhAdminPage.tsx
AnkhAdminPage
- src/ui/admin/AnkhAdminPage.tsx:67:1
+ src/ui/admin/AnkhAdminPage.tsx:74:1
No description available.
@@ -25179,6 +27685,304 @@
Message
+
+
+ src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx
+
+ BindingDiagnosticsCard
+
+ src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx:7:1
+
+ No description available.
+
+
+
+
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts
+
+ createStudioPropBindingForSource
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:29:1
+
+ No description available.
+
+
+ createStudioEventBinding
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:44:1
+
+ No description available.
+
+
+ createStudioEventInputDrafts
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:60:1
+
+ No description available.
+
+
+ parseStudioBindingLiteral
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:77:1
+
+ No description available.
+
+
+ formatStudioBindingLiteral
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:90:1
+
+ No description available.
+
+
+ createStudioOperationKey
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:94:1
+
+ No description available.
+
+
+ findStudioOperationByKey
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:99:1
+
+ No description available.
+
+
+ createStudioEventInputMap
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:106:1
+
+ No description available.
+
+
+ createDefaultBindingValue
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:129:1
+
+ No description available.
+
+
+ parseStructuredValue
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:137:1
+
+ No description available.
+
+
+ isBindingValue
+
+ src/ui/admin/pages/bindings/bindingEditorModel.ts:146:1
+
+ No description available.
+
+
+
+
+
+ src/ui/admin/pages/bindings/EventBindingComposer.tsx
+
+ EventBindingComposer
+
+ src/ui/admin/pages/bindings/EventBindingComposer.tsx:36:1
+
+ No description available.
+
+
+ add
+
+ src/ui/admin/pages/bindings/EventBindingComposer.tsx:62:9
+
+ No description available.
+
+
+ EventInputDrafts
+
+ src/ui/admin/pages/bindings/EventBindingComposer.tsx:118:1
+
+ No description available.
+
+
+
+
+
+ src/ui/admin/pages/bindings/EventBindingsCard.tsx
+
+ EventBindingsCard
+
+ src/ui/admin/pages/bindings/EventBindingsCard.tsx:14:1
+
+ No description available.
+
+
+ EventPayloadSummary
+
+ src/ui/admin/pages/bindings/EventBindingsCard.tsx:77:1
+
+ No description available.
+
+
+ describeEventBinding
+
+ src/ui/admin/pages/bindings/EventBindingsCard.tsx:89:1
+
+ No description available.
+
+
+ describeBindingInput
+
+ src/ui/admin/pages/bindings/EventBindingsCard.tsx:100:1
+
+ No description available.
+
+
+
+
+
+ src/ui/admin/pages/bindings/PropertyBindingEditor.tsx
+
+ PropertyBindingEditor
+
+ src/ui/admin/pages/bindings/PropertyBindingEditor.tsx:22:1
+
+ No description available.
+
+
+ PropertyBindingSourceFields
+
+ src/ui/admin/pages/bindings/PropertyBindingEditor.tsx:78:1
+
+ No description available.
+
+
+
+
+
+ src/ui/admin/pages/bindings/PropertyBindingsCard.tsx
+
+ PropertyBindingsCard
+
+ src/ui/admin/pages/bindings/PropertyBindingsCard.tsx:15:1
+
+ No description available.
+
+
+
+
+
+ src/ui/admin/pages/BindingsAdminPage.tsx
+
+ BindingsAdminPage
+ src/ui/admin/pages/BindingsAdminPage.tsx:19:1
+ No description available.
+
+
+
src/ui/useStudioAppBarAugmentation.ts
data-search="useStudioAppBarAugmentation src/ui/useStudioAppBarAugmentation.ts "
>
useStudioAppBarAugmentation
- src/ui/useStudioAppBarAugmentation.ts:21:1
+ src/ui/useStudioAppBarAugmentation.ts:22:1
No description available.
diff --git a/paradox/paradox.json b/paradox/paradox.json
index 8bd10b4..a6d5588 100644
--- a/paradox/paradox.json
+++ b/paradox/paradox.json
@@ -12,7 +12,7 @@
{
"id": "npm",
"label": "npm",
- "value": "v0.12.0",
+ "value": "v0.13.0",
"color": "cb3837"
},
{
@@ -253,6 +253,116 @@
"validateStudioAuthSettings"
]
},
+ {
+ "path": "src/bindingAuthoringContracts.ts",
+ "isEntrypoint": false,
+ "dependencies": [],
+ "exports": [
+ "StudioBindableEventOption",
+ "StudioBindablePropOption",
+ "StudioBindingCompatibility",
+ "StudioBindingDiagnostic",
+ "StudioBindingInputFieldOption",
+ "StudioBindingOperationOption",
+ "StudioBindingResponsePathOption"
+ ]
+ },
+ {
+ "path": "src/bindingAuthoringModel.test.ts",
+ "isEntrypoint": false,
+ "dependencies": ["src/bindingAuthoringModel.ts"],
+ "exports": []
+ },
+ {
+ "path": "src/bindingAuthoringModel.ts",
+ "isEntrypoint": false,
+ "dependencies": [],
+ "exports": [
+ "appendStudioEventBinding",
+ "assessStudioBindingCompatibility",
+ "collectStudioBindingOperationOptions",
+ "collectStudioResponsePaths",
+ "createStudioActionInputFields",
+ "diagnoseStudioComponentBindings",
+ "findStudioBindingOperationOption",
+ "removeStudioEventBinding",
+ "removeStudioPropBinding",
+ "resolveStudioBindableEvents",
+ "resolveStudioBindableProps",
+ "resolveStudioSchemaValueMeta",
+ "StudioBindableEventOption",
+ "StudioBindablePropOption",
+ "StudioBindingCompatibility",
+ "StudioBindingDiagnostic",
+ "StudioBindingInputFieldOption",
+ "StudioBindingOperationOption",
+ "StudioBindingResponsePathOption",
+ "upsertStudioPropBinding"
+ ]
+ },
+ {
+ "path": "src/bindingDiagnosticsModel.ts",
+ "isEntrypoint": false,
+ "dependencies": [
+ "src/bindingAuthoringContracts.ts",
+ "src/bindingOperationModel.ts",
+ "src/bindingSchemaModel.ts"
+ ],
+ "exports": ["diagnoseStudioComponentBindings"]
+ },
+ {
+ "path": "src/bindingManifestPersistence.test.ts",
+ "isEntrypoint": false,
+ "dependencies": [
+ "src/core/studioManifestDraftModel.ts",
+ "src/index.ts",
+ "src/manifestSync.ts"
+ ],
+ "exports": []
+ },
+ {
+ "path": "src/bindingMetadataModel.ts",
+ "isEntrypoint": false,
+ "dependencies": ["src/bindingAuthoringContracts.ts"],
+ "exports": ["resolveStudioBindableEvents", "resolveStudioBindableProps"]
+ },
+ {
+ "path": "src/bindingMutationAcceptance.test.ts",
+ "isEntrypoint": false,
+ "dependencies": ["src/bindingAuthoringModel.ts"],
+ "exports": []
+ },
+ {
+ "path": "src/bindingMutationModel.ts",
+ "isEntrypoint": false,
+ "dependencies": [],
+ "exports": [
+ "appendStudioEventBinding",
+ "removeStudioEventBinding",
+ "removeStudioPropBinding",
+ "upsertStudioPropBinding"
+ ]
+ },
+ {
+ "path": "src/bindingOperationModel.ts",
+ "isEntrypoint": false,
+ "dependencies": ["src/bindingAuthoringContracts.ts", "src/bindingSchemaModel.ts"],
+ "exports": [
+ "collectStudioBindingOperationOptions",
+ "createStudioActionInputFields",
+ "findStudioBindingOperationOption"
+ ]
+ },
+ {
+ "path": "src/bindingSchemaModel.ts",
+ "isEntrypoint": false,
+ "dependencies": ["src/bindingAuthoringContracts.ts"],
+ "exports": [
+ "assessStudioBindingCompatibility",
+ "collectStudioResponsePaths",
+ "resolveStudioSchemaValueMeta"
+ ]
+ },
{
"path": "src/canvasDragModel.public.test.ts",
"isEntrypoint": false,
@@ -1629,13 +1739,20 @@
"ACTION_REGISTRY",
"ActionDefinition",
"addNodeToTree",
+ "appendStudioEventBinding",
+ "assessStudioBindingCompatibility",
"buildInsertCatalogEntries",
"canAcceptChild",
"cloneWithNewIds",
+ "collectStudioBindingOperationOptions",
+ "collectStudioResponsePaths",
"createNodeFromCatalogEntry",
+ "createStudioActionInputFields",
"createStudioInstancePropertyPatch",
"deriveProjectId",
+ "diagnoseStudioComponentBindings",
"findNodeById",
+ "findStudioBindingOperationOption",
"generateStudioId",
"getInsertCatalogCategoryLabel",
"InsertCatalogComponentEntry",
@@ -1678,11 +1795,16 @@
"ProjectSecretUsageSummary",
"ProjectSortKey",
"removeNodeFromTree",
+ "removeStudioEventBinding",
+ "removeStudioPropBinding",
"resolveDefaultInsertPlacement",
"resolveInsertCatalogEntries",
"resolveInsertPlacement",
+ "resolveStudioBindableEvents",
+ "resolveStudioBindableProps",
"resolveStudioInstancePropertyFields",
"resolveStudioInstancePropertyGroups",
+ "resolveStudioSchemaValueMeta",
"STUDIO_INSERT_RECIPES",
"STUDIO_PACKAGE_BOUNDARY",
"STUDIO_PACKAGE_NAME",
@@ -1696,6 +1818,13 @@
"StudioAuthoringComponentMeta",
"StudioAuthoringMetaRegistry",
"StudioAuthoringPropSchema",
+ "StudioBindableEventOption",
+ "StudioBindablePropOption",
+ "StudioBindingCompatibility",
+ "StudioBindingDiagnostic",
+ "StudioBindingInputFieldOption",
+ "StudioBindingOperationOption",
+ "StudioBindingResponsePathOption",
"StudioCommand",
"StudioComponentBlueprint",
"StudioComponentMeta",
@@ -1729,6 +1858,7 @@
"ThemeUpdates",
"TPL_SCREEN_EMPTY",
"updateNodeInTree",
+ "upsertStudioPropBinding",
"validateInsertRecipe",
"validateNodePlacement",
"validateProjectCreationInput"
@@ -2091,19 +2221,26 @@
"AnkhAdminPage",
"AnkhAdminShell",
"AnkhStudio",
+ "appendStudioEventBinding",
"assertMetadataOnlyResponse",
+ "assessStudioBindingCompatibility",
"buildInsertCatalogEntries",
"canAcceptChild",
"cloneWithNewIds",
+ "collectStudioBindingOperationOptions",
+ "collectStudioResponsePaths",
"CreateCategoriesScreen",
"CreateCategoryTemplatesScreen",
"createNodeFromCatalogEntry",
"CreateProjectFromTemplateScreen",
+ "createStudioActionInputFields",
"createStudioInstancePropertyPatch",
"deriveProjectId",
+ "diagnoseStudioComponentBindings",
"findNodeById",
"findProjectSecretUsages",
"findRawSecretResponseKey",
+ "findStudioBindingOperationOption",
"generateStudioId",
"getInsertCatalogCategoryLabel",
"InsertCatalogComponentEntry",
@@ -2150,11 +2287,16 @@
"RAW_SECRET_RESPONSE_KEYS",
"RawSecretResponseKeyMatch",
"removeNodeFromTree",
+ "removeStudioEventBinding",
+ "removeStudioPropBinding",
"resolveDefaultInsertPlacement",
"resolveInsertCatalogEntries",
"resolveInsertPlacement",
+ "resolveStudioBindableEvents",
+ "resolveStudioBindableProps",
"resolveStudioInstancePropertyFields",
"resolveStudioInstancePropertyGroups",
+ "resolveStudioSchemaValueMeta",
"STUDIO_INSERT_RECIPES",
"STUDIO_PACKAGE_BOUNDARY",
"STUDIO_PACKAGE_NAME",
@@ -2169,6 +2311,13 @@
"StudioAuthoringComponentMeta",
"StudioAuthoringMetaRegistry",
"StudioAuthoringPropSchema",
+ "StudioBindableEventOption",
+ "StudioBindablePropOption",
+ "StudioBindingCompatibility",
+ "StudioBindingDiagnostic",
+ "StudioBindingInputFieldOption",
+ "StudioBindingOperationOption",
+ "StudioBindingResponsePathOption",
"StudioCommand",
"StudioComponentBlueprint",
"StudioComponentMeta",
@@ -2203,6 +2352,7 @@
"ThemeUpdates",
"TPL_SCREEN_EMPTY",
"updateNodeInTree",
+ "upsertStudioPropBinding",
"useStudio",
"useStudioAppBarAugmentation",
"validateInsertRecipe",
@@ -2597,6 +2747,7 @@
"exports": [
"createStudioAdminRoutePath",
"createStudioAdminRouteRenderState",
+ "createStudioBindingsRoutePath",
"createStudioPropertiesRoutePath",
"getStudioAdminRouteDefinition",
"isStudioAdminPath",
@@ -2606,6 +2757,7 @@
"resolveStudioAdminActiveRouteId",
"resolveStudioAdminRouteId",
"resolveStudioAdminRoutePath",
+ "resolveStudioBindingsNodeId",
"resolveStudioLastNonAdminLocation",
"resolveStudioNavigableLocation",
"resolveStudioPropertiesNodeId",
@@ -2693,6 +2845,7 @@
"src/studioAdminRouteModel.ts",
"src/ui/admin/pages/ApisAdminPage.tsx",
"src/ui/admin/pages/AuthAdminPage.tsx",
+ "src/ui/admin/pages/BindingsAdminPage.tsx",
"src/ui/admin/pages/OverviewAdminPage.tsx",
"src/ui/admin/pages/PropertiesAdminPage.tsx",
"src/ui/admin/pages/SecretsAdminPage.tsx",
@@ -2857,6 +3010,97 @@
],
"exports": ["AuthAdminPage", "AuthAdminPageProps"]
},
+ {
+ "path": "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "isEntrypoint": false,
+ "dependencies": [],
+ "exports": ["bindingAdminStyles"]
+ },
+ {
+ "path": "src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx",
+ "isEntrypoint": false,
+ "dependencies": [
+ "src/bindingAuthoringModel.ts",
+ "src/ui/admin/pages/bindings/bindingAdminStyles.ts"
+ ],
+ "exports": ["BindingDiagnosticsCard"]
+ },
+ {
+ "path": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "isEntrypoint": false,
+ "dependencies": ["src/bindingAuthoringModel.ts"],
+ "exports": [
+ "createStudioEventBinding",
+ "createStudioEventInputDrafts",
+ "createStudioOperationKey",
+ "createStudioPropBindingForSource",
+ "findStudioOperationByKey",
+ "formatStudioBindingLiteral",
+ "parseStudioBindingLiteral",
+ "STUDIO_BINDING_SOURCE_OPTIONS",
+ "StudioBindingSourceKind",
+ "StudioEventInputDraft",
+ "StudioEventInputSourceKind"
+ ]
+ },
+ {
+ "path": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "isEntrypoint": false,
+ "dependencies": [
+ "src/bindingAuthoringModel.ts",
+ "src/index.ts",
+ "src/ui/admin/adminPagePrimitives.tsx",
+ "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "src/ui/admin/pages/bindings/bindingEditorModel.ts"
+ ],
+ "exports": ["EventBindingComposer"]
+ },
+ {
+ "path": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "isEntrypoint": false,
+ "dependencies": [
+ "src/bindingAuthoringModel.ts",
+ "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ ],
+ "exports": ["EventBindingsCard"]
+ },
+ {
+ "path": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "isEntrypoint": false,
+ "dependencies": [
+ "src/bindingAuthoringModel.ts",
+ "src/ui/admin/adminPagePrimitives.tsx",
+ "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "src/ui/admin/pages/bindings/bindingEditorModel.ts"
+ ],
+ "exports": ["PropertyBindingEditor"]
+ },
+ {
+ "path": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx",
+ "isEntrypoint": false,
+ "dependencies": [
+ "src/bindingAuthoringModel.ts",
+ "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ ],
+ "exports": ["PropertyBindingsCard"]
+ },
+ {
+ "path": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "isEntrypoint": false,
+ "dependencies": [
+ "src/bindingAuthoringModel.ts",
+ "src/core/StudioContext.ts",
+ "src/index.ts",
+ "src/manifestState.ts",
+ "src/ui/admin/adminPagePrimitives.tsx",
+ "src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx",
+ "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"
+ ],
+ "exports": ["BindingsAdminPage"]
+ },
{
"path": "src/ui/admin/pages/DataSourceCatalogCard.tsx",
"isEntrypoint": false,
@@ -3138,7 +3382,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 378,
+ "line": 384,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -3156,7 +3400,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 284,
+ "line": 290,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3210,7 +3454,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 600,
+ "line": 606,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -3233,6 +3477,94 @@
"members": [],
"structuredRows": []
},
+ {
+ "name": "appendStudioEventBinding",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingMutationModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 34,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [
+ {
+ "label": "(registry: Readonly
>, node: UiNode, eventName: string, binding: EventBinding) => Readonly>",
+ "parameters": [
+ {
+ "name": "binding",
+ "type": "EventBinding",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "eventName",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "node",
+ "type": "UiNode",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "registry",
+ "type": "Readonly>",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "Readonly>",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
+ {
+ "name": "assessStudioBindingCompatibility",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingSchemaModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 43,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": ["StudioBindingCompatibility"],
+ "signatures": [
+ {
+ "label": "(expected: UiBindableValueMeta, actual: UiBindableValueMeta) => StudioBindingCompatibility",
+ "parameters": [
+ {
+ "name": "actual",
+ "type": "UiBindableValueMeta",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "expected",
+ "type": "UiBindableValueMeta",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "StudioBindingCompatibility",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
{
"name": "buildInsertCatalogEntries",
"description": null,
@@ -3242,7 +3574,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1312,
+ "line": 1318,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3274,7 +3606,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 759,
+ "line": 765,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3306,7 +3638,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 525,
+ "line": 531,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -3335,6 +3667,76 @@
"members": [],
"structuredRows": []
},
+ {
+ "name": "collectStudioBindingOperationOptions",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingOperationModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 16,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": ["StudioBindingOperationOption"],
+ "signatures": [
+ {
+ "label": "(dataSources: Readonly>) => readonly StudioBindingOperationOption[]",
+ "parameters": [
+ {
+ "name": "dataSources",
+ "type": "Readonly>",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "readonly StudioBindingOperationOption[]",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
+ {
+ "name": "collectStudioResponsePaths",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingSchemaModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 33,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": ["StudioBindingResponsePathOption"],
+ "signatures": [
+ {
+ "label": "(schema: DataSchema | undefined, schemas: Readonly> | undefined) => readonly StudioBindingResponsePathOption[]",
+ "parameters": [
+ {
+ "name": "schema",
+ "type": "DataSchema | undefined",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "schemas",
+ "type": "Readonly> | undefined",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "readonly StudioBindingResponsePathOption[]",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
{
"name": "createNodeFromCatalogEntry",
"description": null,
@@ -3344,7 +3746,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1231,
+ "line": 1237,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3379,6 +3781,38 @@
"members": [],
"structuredRows": []
},
+ {
+ "name": "createStudioActionInputFields",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingOperationModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 95,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": ["StudioBindingInputFieldOption"],
+ "signatures": [
+ {
+ "label": "(payloadSchema: Readonly> | undefined) => readonly StudioBindingInputFieldOption[]",
+ "parameters": [
+ {
+ "name": "payloadSchema",
+ "type": "Readonly> | undefined",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "readonly StudioBindingInputFieldOption[]",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
{
"name": "createStudioInstancePropertyPatch",
"description": null,
@@ -3455,6 +3889,38 @@
"members": [],
"structuredRows": []
},
+ {
+ "name": "diagnoseStudioComponentBindings",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingDiagnosticsModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 20,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": ["StudioBindingDiagnostic", "StudioBindingOperationOption"],
+ "signatures": [
+ {
+ "label": "(args: { readonly node: UiNode; readonly registry: ComponentDataBindingRegistry; readonly componentMeta: UiComponentMetaRegistry; readonly operations: readonly StudioBindingOperationOption[]; readonly actionTypes: readonly string[]; }) => readonly StudioBindingDiagnostic[]",
+ "parameters": [
+ {
+ "name": "args",
+ "type": "{ readonly node: UiNode; readonly registry: ComponentDataBindingRegistry; readonly componentMeta: UiComponentMetaRegistry; readonly operations: readonly StudioBindingOperationOption[]; readonly actionTypes: readonly string[]; }",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "readonly StudioBindingDiagnostic[]",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
{
"name": "findNodeById",
"description": null,
@@ -3464,7 +3930,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 542,
+ "line": 548,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -3493,6 +3959,44 @@
"members": [],
"structuredRows": []
},
+ {
+ "name": "findStudioBindingOperationOption",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingOperationModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 24,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": ["StudioBindingOperationOption"],
+ "signatures": [
+ {
+ "label": "(options: readonly StudioBindingOperationOption[], ref: BindingOperationRef) => StudioBindingOperationOption | undefined",
+ "parameters": [
+ {
+ "name": "options",
+ "type": "readonly StudioBindingOperationOption[]",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "ref",
+ "type": "BindingOperationRef",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "StudioBindingOperationOption | undefined",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
{
"name": "generateStudioId",
"description": null,
@@ -3502,7 +4006,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 518,
+ "line": 524,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -3534,7 +4038,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1157,
+ "line": 1163,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3566,7 +4070,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 262,
+ "line": 268,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3659,7 +4163,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 244,
+ "line": 250,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3699,7 +4203,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 221,
+ "line": 227,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3717,7 +4221,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 272,
+ "line": 278,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3735,7 +4239,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 250,
+ "line": 256,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3822,7 +4326,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 218,
+ "line": 224,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3840,7 +4344,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 219,
+ "line": 225,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3858,7 +4362,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 267,
+ "line": 273,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3952,7 +4456,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 989,
+ "line": 995,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -3984,7 +4488,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 932,
+ "line": 938,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4031,7 +4535,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 939,
+ "line": 945,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4064,7 +4568,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 229,
+ "line": 235,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4118,7 +4622,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 237,
+ "line": 243,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4165,7 +4669,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 224,
+ "line": 230,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4198,7 +4702,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 292,
+ "line": 298,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4245,7 +4749,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 633,
+ "line": 639,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -4289,7 +4793,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1057,
+ "line": 1063,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4321,7 +4825,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1016,
+ "line": 1022,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4368,7 +4872,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1023,
+ "line": 1029,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4401,7 +4905,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 180,
+ "line": 186,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4448,7 +4952,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 187,
+ "line": 193,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4466,7 +4970,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 199,
+ "line": 205,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4499,7 +5003,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 178,
+ "line": 184,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4517,7 +5021,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 211,
+ "line": 217,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -4535,7 +5039,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 204,
+ "line": 210,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5011,7 +5515,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 582,
+ "line": 588,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -5040,6 +5544,100 @@
"members": [],
"structuredRows": []
},
+ {
+ "name": "removeStudioEventBinding",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingMutationModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 50,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [
+ {
+ "label": "(registry: Readonly>, node: UiNode, eventName: string, bindingIndex: number) => Readonly>",
+ "parameters": [
+ {
+ "name": "bindingIndex",
+ "type": "number",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "eventName",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "node",
+ "type": "UiNode",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "registry",
+ "type": "Readonly>",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "Readonly>",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
+ {
+ "name": "removeStudioPropBinding",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingMutationModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 22,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [
+ {
+ "label": "(registry: Readonly>, node: UiNode, propName: string) => Readonly>",
+ "parameters": [
+ {
+ "name": "node",
+ "type": "UiNode",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "propName",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "registry",
+ "type": "Readonly>",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "Readonly>",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
{
"name": "resolveDefaultInsertPlacement",
"description": null,
@@ -5049,7 +5647,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 887,
+ "line": 893,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5081,7 +5679,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1354,
+ "line": 1360,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5113,7 +5711,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 826,
+ "line": 832,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5140,6 +5738,82 @@
"members": [],
"structuredRows": []
},
+ {
+ "name": "resolveStudioBindableEvents",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingMetadataModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingMetadataModel.ts",
+ "line": 21,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": ["StudioBindableEventOption"],
+ "signatures": [
+ {
+ "label": "(node: UiNode, registry: Readonly>) => readonly StudioBindableEventOption[]",
+ "parameters": [
+ {
+ "name": "node",
+ "type": "UiNode",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "registry",
+ "type": "Readonly>",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "readonly StudioBindableEventOption[]",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
+ {
+ "name": "resolveStudioBindableProps",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingMetadataModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingMetadataModel.ts",
+ "line": 8,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": ["StudioBindablePropOption"],
+ "signatures": [
+ {
+ "label": "(node: UiNode, registry: Readonly>) => readonly StudioBindablePropOption[]",
+ "parameters": [
+ {
+ "name": "node",
+ "type": "UiNode",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "registry",
+ "type": "Readonly>",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "readonly StudioBindablePropOption[]",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
{
"name": "resolveStudioInstancePropertyFields",
"description": null,
@@ -5216,6 +5890,50 @@
"members": [],
"structuredRows": []
},
+ {
+ "name": "resolveStudioSchemaValueMeta",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingSchemaModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 14,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [
+ {
+ "label": "(schema: DataSchema | undefined, schemas: Readonly> | undefined, seen?: ReadonlySet) => UiBindableValueMeta",
+ "parameters": [
+ {
+ "name": "schema",
+ "type": "DataSchema | undefined",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "schemas",
+ "type": "Readonly> | undefined",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "seen",
+ "type": "ReadonlySet",
+ "required": false,
+ "description": null
+ }
+ ],
+ "returnType": "UiBindableValueMeta",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
{
"name": "STUDIO_INSERT_RECIPES",
"description": null,
@@ -5225,7 +5943,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1124,
+ "line": 1130,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -5268,7 +5986,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 59,
+ "line": 60,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -5286,7 +6004,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 51,
+ "line": 52,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -5304,7 +6022,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 87,
+ "line": 88,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -5322,7 +6040,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 276,
+ "line": 282,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5362,7 +6080,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 274,
+ "line": 280,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5380,7 +6098,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 282,
+ "line": 288,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5398,7 +6116,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 122,
+ "line": 126,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5416,7 +6134,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 145,
+ "line": 150,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5434,7 +6152,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 134,
+ "line": 139,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5555,6 +6273,292 @@
],
"structuredRows": []
},
+ {
+ "name": "StudioBindableEventOption",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "type",
+ "modulePath": "src/bindingAuthoringContracts.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingAuthoringContracts.ts",
+ "line": 16,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [],
+ "members": [
+ {
+ "name": "label",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "meta",
+ "kind": "property",
+ "type": "UiBindableEventMeta",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "name",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ }
+ ],
+ "structuredRows": []
+ },
+ {
+ "name": "StudioBindablePropOption",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "type",
+ "modulePath": "src/bindingAuthoringContracts.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingAuthoringContracts.ts",
+ "line": 10,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [],
+ "members": [
+ {
+ "name": "label",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "meta",
+ "kind": "property",
+ "type": "UiBindablePropMeta",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "name",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ }
+ ],
+ "structuredRows": []
+ },
+ {
+ "name": "StudioBindingCompatibility",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "unknown",
+ "modulePath": "src/bindingAuthoringContracts.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingAuthoringContracts.ts",
+ "line": 8,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [],
+ "members": [],
+ "structuredRows": []
+ },
+ {
+ "name": "StudioBindingDiagnostic",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "type",
+ "modulePath": "src/bindingAuthoringContracts.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingAuthoringContracts.ts",
+ "line": 43,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [],
+ "members": [
+ {
+ "name": "code",
+ "kind": "property",
+ "type": "\"incompatible-input\" | \"incompatible-response\" | \"missing-action\" | \"missing-binding-meta\" | \"missing-input\" | \"missing-operation\" | \"missing-response-path\" | \"unknown-event\" | \"unknown-prop\"",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "message",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "path",
+ "kind": "property",
+ "type": "string | undefined",
+ "required": false,
+ "description": null
+ },
+ {
+ "name": "severity",
+ "kind": "property",
+ "type": "\"warning\" | \"error\"",
+ "required": true,
+ "description": null
+ }
+ ],
+ "structuredRows": []
+ },
+ {
+ "name": "StudioBindingInputFieldOption",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "type",
+ "modulePath": "src/bindingAuthoringContracts.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingAuthoringContracts.ts",
+ "line": 22,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [],
+ "members": [
+ {
+ "name": "label",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "name",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "required",
+ "kind": "property",
+ "type": "boolean",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "value",
+ "kind": "property",
+ "type": "UiBindableValueMeta",
+ "required": true,
+ "description": null
+ }
+ ],
+ "structuredRows": []
+ },
+ {
+ "name": "StudioBindingOperationOption",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "type",
+ "modulePath": "src/bindingAuthoringContracts.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingAuthoringContracts.ts",
+ "line": 35,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": ["StudioBindingInputFieldOption", "StudioBindingResponsePathOption"],
+ "signatures": [],
+ "members": [
+ {
+ "name": "inputFields",
+ "kind": "property",
+ "type": "readonly StudioBindingInputFieldOption[]",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "label",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "operation",
+ "kind": "property",
+ "type": "BindingOperationRef",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "responsePaths",
+ "kind": "property",
+ "type": "readonly StudioBindingResponsePathOption[]",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "sourceLabel",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ }
+ ],
+ "structuredRows": []
+ },
+ {
+ "name": "StudioBindingResponsePathOption",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "type",
+ "modulePath": "src/bindingAuthoringContracts.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingAuthoringContracts.ts",
+ "line": 29,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [],
+ "members": [
+ {
+ "name": "label",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "path",
+ "kind": "property",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "value",
+ "kind": "property",
+ "type": "UiBindableValueMeta",
+ "required": true,
+ "description": null
+ }
+ ],
+ "structuredRows": []
+ },
{
"name": "StudioCommand",
"description": null,
@@ -5564,7 +6568,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 317,
+ "line": 323,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5582,7 +6586,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 301,
+ "line": 307,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5615,7 +6619,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 306,
+ "line": 312,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5662,7 +6666,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 313,
+ "line": 319,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -5680,7 +6684,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 333,
+ "line": 339,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6083,7 +7087,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 326,
+ "line": 332,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6101,7 +7105,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 315,
+ "line": 321,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6270,7 +7274,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 117,
+ "line": 121,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6288,7 +7292,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 147,
+ "line": 153,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6306,7 +7310,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 119,
+ "line": 123,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6324,7 +7328,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 116,
+ "line": 120,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6342,7 +7346,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 114,
+ "line": 118,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6360,7 +7364,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 53,
+ "line": 54,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6400,7 +7404,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 121,
+ "line": 125,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6418,7 +7422,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 112,
+ "line": 116,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6525,7 +7529,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 110,
+ "line": 114,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6543,7 +7547,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 120,
+ "line": 124,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6561,7 +7565,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 115,
+ "line": 119,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6579,7 +7583,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 158,
+ "line": 164,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6633,7 +7637,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 113,
+ "line": 117,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6651,7 +7655,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 166,
+ "line": 172,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6899,7 +7903,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 153,
+ "line": 159,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -6917,7 +7921,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 470,
+ "line": 476,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -6935,7 +7939,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 554,
+ "line": 560,
"column": 14
},
"exportPaths": ["src/index.ts"],
@@ -6970,6 +7974,56 @@
"members": [],
"structuredRows": []
},
+ {
+ "name": "upsertStudioPropBinding",
+ "description": null,
+ "isReadme": false,
+ "examples": [],
+ "kind": "function",
+ "modulePath": "src/bindingMutationModel.ts",
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 9,
+ "column": 1
+ },
+ "exportPaths": ["src/index.ts"],
+ "relatedSymbols": [],
+ "signatures": [
+ {
+ "label": "(registry: Readonly>, node: UiNode, propName: string, binding: PropBinding) => Readonly>",
+ "parameters": [
+ {
+ "name": "binding",
+ "type": "PropBinding",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "node",
+ "type": "UiNode",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "propName",
+ "type": "string",
+ "required": true,
+ "description": null
+ },
+ {
+ "name": "registry",
+ "type": "Readonly>",
+ "required": true,
+ "description": null
+ }
+ ],
+ "returnType": "Readonly>",
+ "returnDescription": null
+ }
+ ],
+ "members": [],
+ "structuredRows": []
+ },
{
"name": "validateInsertRecipe",
"description": null,
@@ -6979,7 +8033,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1174,
+ "line": 1180,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -7017,7 +8071,7 @@
"modulePath": "src/index.ts",
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 771,
+ "line": 777,
"column": 1
},
"exportPaths": ["src/index.ts"],
@@ -7664,6 +8718,330 @@
"column": 1
}
},
+ {
+ "name": "diagnoseStudioComponentBindings",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 20,
+ "column": 1
+ }
+ },
+ {
+ "name": "diagnosePropBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 46,
+ "column": 1
+ }
+ },
+ {
+ "name": "diagnoseEventBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 86,
+ "column": 1
+ }
+ },
+ {
+ "name": "diagnoseEventInputs",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 112,
+ "column": 1
+ }
+ },
+ {
+ "name": "diagnoseInputCompatibility",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 135,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveEventSourceValue",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 160,
+ "column": 1
+ }
+ },
+ {
+ "name": "missingOperationDiagnostic",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 175,
+ "column": 1
+ }
+ },
+ {
+ "name": "toBindableType",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 185,
+ "column": 1
+ }
+ },
+ {
+ "name": "diagnostic",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingDiagnosticsModel.ts",
+ "line": 198,
+ "column": 1
+ }
+ },
+ {
+ "name": "createManifest",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingManifestPersistence.test.ts",
+ "line": 8,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveStudioBindableProps",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingMetadataModel.ts",
+ "line": 8,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveStudioBindableEvents",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingMetadataModel.ts",
+ "line": 21,
+ "column": 1
+ }
+ },
+ {
+ "name": "upsertStudioPropBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 9,
+ "column": 1
+ }
+ },
+ {
+ "name": "removeStudioPropBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 22,
+ "column": 1
+ }
+ },
+ {
+ "name": "appendStudioEventBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 34,
+ "column": 1
+ }
+ },
+ {
+ "name": "removeStudioEventBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 50,
+ "column": 1
+ }
+ },
+ {
+ "name": "writeBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 66,
+ "column": 1
+ }
+ },
+ {
+ "name": "isEmptyBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingMutationModel.ts",
+ "line": 82,
+ "column": 1
+ }
+ },
+ {
+ "name": "collectStudioBindingOperationOptions",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 16,
+ "column": 1
+ }
+ },
+ {
+ "name": "findStudioBindingOperationOption",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 24,
+ "column": 1
+ }
+ },
+ {
+ "name": "collectSourceOperations",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 36,
+ "column": 1
+ }
+ },
+ {
+ "name": "collectOperationInputFields",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 55,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveSlotSchema",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 83,
+ "column": 1
+ }
+ },
+ {
+ "name": "describeSource",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 90,
+ "column": 1
+ }
+ },
+ {
+ "name": "createStudioActionInputFields",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 95,
+ "column": 1
+ }
+ },
+ {
+ "name": "toBindableType",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingOperationModel.ts",
+ "line": 113,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveStudioSchemaValueMeta",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 14,
+ "column": 1
+ }
+ },
+ {
+ "name": "collectStudioResponsePaths",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 33,
+ "column": 1
+ }
+ },
+ {
+ "name": "assessStudioBindingCompatibility",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 43,
+ "column": 1
+ }
+ },
+ {
+ "name": "collectObjectPaths",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 58,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveSchemaRef",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 78,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveSchemaFields",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 88,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveSchemaType",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 100,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveSingleSchemaType",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 118,
+ "column": 1
+ }
+ },
+ {
+ "name": "isObjectLike",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 123,
+ "column": 1
+ }
+ },
+ {
+ "name": "isImageAssetShape",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/bindingSchemaModel.ts",
+ "line": 127,
+ "column": 1
+ }
+ },
{
"name": "createStudioCanvasDragPayload",
"description": null,
@@ -13087,7 +14465,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 518,
+ "line": 524,
"column": 14
}
},
@@ -13096,7 +14474,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 525,
+ "line": 531,
"column": 14
}
},
@@ -13105,7 +14483,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 542,
+ "line": 548,
"column": 14
}
},
@@ -13114,7 +14492,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 554,
+ "line": 560,
"column": 14
}
},
@@ -13123,7 +14501,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 582,
+ "line": 588,
"column": 14
}
},
@@ -13132,7 +14510,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 600,
+ "line": 606,
"column": 14
}
},
@@ -13141,7 +14519,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 633,
+ "line": 639,
"column": 14
}
},
@@ -13150,7 +14528,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 669,
+ "line": 675,
"column": 1
}
},
@@ -13159,7 +14537,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 674,
+ "line": 680,
"column": 9
}
},
@@ -13168,7 +14546,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 693,
+ "line": 699,
"column": 1
}
},
@@ -13177,7 +14555,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 704,
+ "line": 710,
"column": 1
}
},
@@ -13186,7 +14564,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 759,
+ "line": 765,
"column": 1
}
},
@@ -13195,7 +14573,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 771,
+ "line": 777,
"column": 1
}
},
@@ -13204,7 +14582,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 826,
+ "line": 832,
"column": 1
}
},
@@ -13213,7 +14591,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 887,
+ "line": 893,
"column": 1
}
},
@@ -13222,7 +14600,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 944,
+ "line": 950,
"column": 1
}
},
@@ -13231,7 +14609,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 989,
+ "line": 995,
"column": 1
}
},
@@ -13240,7 +14618,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1028,
+ "line": 1034,
"column": 1
}
},
@@ -13249,7 +14627,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1057,
+ "line": 1063,
"column": 1
}
},
@@ -13258,7 +14636,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1157,
+ "line": 1163,
"column": 1
}
},
@@ -13267,7 +14645,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1161,
+ "line": 1167,
"column": 1
}
},
@@ -13276,7 +14654,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1166,
+ "line": 1172,
"column": 1
}
},
@@ -13285,7 +14663,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1174,
+ "line": 1180,
"column": 1
}
},
@@ -13294,7 +14672,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1178,
+ "line": 1184,
"column": 9
}
},
@@ -13303,7 +14681,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1211,
+ "line": 1217,
"column": 1
}
},
@@ -13312,7 +14690,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1216,
+ "line": 1222,
"column": 9
}
},
@@ -13321,7 +14699,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1231,
+ "line": 1237,
"column": 1
}
},
@@ -13330,7 +14708,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1251,
+ "line": 1257,
"column": 1
}
},
@@ -13339,7 +14717,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1274,
+ "line": 1280,
"column": 1
}
},
@@ -13348,7 +14726,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1312,
+ "line": 1318,
"column": 1
}
},
@@ -13357,7 +14735,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1338,
+ "line": 1344,
"column": 1
}
},
@@ -13366,7 +14744,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1354,
+ "line": 1360,
"column": 1
}
},
@@ -13375,7 +14753,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/index.ts",
- "line": 1403,
+ "line": 1409,
"column": 1
}
},
@@ -15778,7 +17156,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 131,
+ "line": 142,
"column": 1
}
},
@@ -15787,7 +17165,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 142,
+ "line": 153,
"column": 1
}
},
@@ -15796,7 +17174,25 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 154,
+ "line": 172,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveStudioBindingsNodeId",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/studioAdminRouteModel.ts",
+ "line": 187,
+ "column": 1
+ }
+ },
+ {
+ "name": "createStudioBindingsRoutePath",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/studioAdminRouteModel.ts",
+ "line": 191,
"column": 1
}
},
@@ -15805,7 +17201,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 165,
+ "line": 195,
"column": 1
}
},
@@ -15814,7 +17210,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 182,
+ "line": 199,
"column": 1
}
},
@@ -15823,7 +17219,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 186,
+ "line": 203,
"column": 1
}
},
@@ -15832,7 +17228,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 197,
+ "line": 217,
"column": 1
}
},
@@ -15841,7 +17237,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 208,
+ "line": 228,
"column": 1
}
},
@@ -15850,7 +17246,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 212,
+ "line": 232,
"column": 1
}
},
@@ -15859,7 +17255,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 229,
+ "line": 249,
"column": 1
}
},
@@ -15868,7 +17264,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 247,
+ "line": 268,
"column": 1
}
},
@@ -15877,7 +17273,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 264,
+ "line": 285,
"column": 1
}
},
@@ -15886,7 +17282,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 268,
+ "line": 289,
"column": 1
}
},
@@ -15895,7 +17291,16 @@
"description": null,
"sourceLocation": {
"filePath": "src/studioAdminRouteModel.ts",
- "line": 278,
+ "line": 299,
+ "column": 1
+ }
+ },
+ {
+ "name": "resolveStudioContextNodeId",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/studioAdminRouteModel.ts",
+ "line": 307,
"column": 1
}
},
@@ -16066,7 +17471,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/ui/admin/AnkhAdminPage.tsx",
- "line": 67,
+ "line": 74,
"column": 1
}
},
@@ -16745,6 +18150,213 @@
"column": 1
}
},
+ {
+ "name": "BindingDiagnosticsCard",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx",
+ "line": 7,
+ "column": 1
+ }
+ },
+ {
+ "name": "createStudioPropBindingForSource",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 29,
+ "column": 1
+ }
+ },
+ {
+ "name": "createStudioEventBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 44,
+ "column": 1
+ }
+ },
+ {
+ "name": "createStudioEventInputDrafts",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 60,
+ "column": 1
+ }
+ },
+ {
+ "name": "parseStudioBindingLiteral",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 77,
+ "column": 1
+ }
+ },
+ {
+ "name": "formatStudioBindingLiteral",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 90,
+ "column": 1
+ }
+ },
+ {
+ "name": "createStudioOperationKey",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 94,
+ "column": 1
+ }
+ },
+ {
+ "name": "findStudioOperationByKey",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 99,
+ "column": 1
+ }
+ },
+ {
+ "name": "createStudioEventInputMap",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 106,
+ "column": 1
+ }
+ },
+ {
+ "name": "createDefaultBindingValue",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 129,
+ "column": 1
+ }
+ },
+ {
+ "name": "parseStructuredValue",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 137,
+ "column": 1
+ }
+ },
+ {
+ "name": "isBindingValue",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "line": 146,
+ "column": 1
+ }
+ },
+ {
+ "name": "EventBindingComposer",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "line": 36,
+ "column": 1
+ }
+ },
+ {
+ "name": "add",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "line": 62,
+ "column": 9
+ }
+ },
+ {
+ "name": "EventInputDrafts",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "line": 118,
+ "column": 1
+ }
+ },
+ {
+ "name": "EventBindingsCard",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "line": 14,
+ "column": 1
+ }
+ },
+ {
+ "name": "EventPayloadSummary",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "line": 77,
+ "column": 1
+ }
+ },
+ {
+ "name": "describeEventBinding",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "line": 89,
+ "column": 1
+ }
+ },
+ {
+ "name": "describeBindingInput",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "line": 100,
+ "column": 1
+ }
+ },
+ {
+ "name": "PropertyBindingEditor",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "line": 22,
+ "column": 1
+ }
+ },
+ {
+ "name": "PropertyBindingSourceFields",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "line": 78,
+ "column": 1
+ }
+ },
+ {
+ "name": "PropertyBindingsCard",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx",
+ "line": 15,
+ "column": 1
+ }
+ },
+ {
+ "name": "BindingsAdminPage",
+ "description": null,
+ "sourceLocation": {
+ "filePath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "line": 19,
+ "column": 1
+ }
+ },
{
"name": "DataSourceCatalogCard",
"description": null,
@@ -17407,7 +19019,7 @@
"description": null,
"sourceLocation": {
"filePath": "src/ui/useStudioAppBarAugmentation.ts",
- "line": 21,
+ "line": 22,
"column": 1
}
},
@@ -17520,6 +19132,22 @@
"description": null,
"isReadme": false
},
+ {
+ "kind": "export",
+ "name": "appendStudioEventBinding",
+ "sourcePath": "src/bindingMutationModel.ts",
+ "symbolName": "appendStudioEventBinding",
+ "description": null,
+ "isReadme": false
+ },
+ {
+ "kind": "export",
+ "name": "assessStudioBindingCompatibility",
+ "sourcePath": "src/bindingSchemaModel.ts",
+ "symbolName": "assessStudioBindingCompatibility",
+ "description": null,
+ "isReadme": false
+ },
{
"kind": "export",
"name": "buildInsertCatalogEntries",
@@ -17544,6 +19172,22 @@
"description": null,
"isReadme": false
},
+ {
+ "kind": "export",
+ "name": "collectStudioBindingOperationOptions",
+ "sourcePath": "src/bindingOperationModel.ts",
+ "symbolName": "collectStudioBindingOperationOptions",
+ "description": null,
+ "isReadme": false
+ },
+ {
+ "kind": "export",
+ "name": "collectStudioResponsePaths",
+ "sourcePath": "src/bindingSchemaModel.ts",
+ "symbolName": "collectStudioResponsePaths",
+ "description": null,
+ "isReadme": false
+ },
{
"kind": "export",
"name": "createNodeFromCatalogEntry",
@@ -17552,6 +19196,14 @@
"description": null,
"isReadme": false
},
+ {
+ "kind": "export",
+ "name": "createStudioActionInputFields",
+ "sourcePath": "src/bindingOperationModel.ts",
+ "symbolName": "createStudioActionInputFields",
+ "description": null,
+ "isReadme": false
+ },
{
"kind": "export",
"name": "createStudioInstancePropertyPatch",
@@ -17568,6 +19220,14 @@
"description": null,
"isReadme": false
},
+ {
+ "kind": "export",
+ "name": "diagnoseStudioComponentBindings",
+ "sourcePath": "src/bindingDiagnosticsModel.ts",
+ "symbolName": "diagnoseStudioComponentBindings",
+ "description": null,
+ "isReadme": false
+ },
{
"kind": "export",
"name": "findNodeById",
@@ -17576,6 +19236,14 @@
"description": null,
"isReadme": false
},
+ {
+ "kind": "export",
+ "name": "findStudioBindingOperationOption",
+ "sourcePath": "src/bindingOperationModel.ts",
+ "symbolName": "findStudioBindingOperationOption",
+ "description": null,
+ "isReadme": false
+ },
{
"kind": "export",
"name": "generateStudioId",
@@ -17624,6 +19292,22 @@
"description": null,
"isReadme": false
},
+ {
+ "kind": "export",
+ "name": "removeStudioEventBinding",
+ "sourcePath": "src/bindingMutationModel.ts",
+ "symbolName": "removeStudioEventBinding",
+ "description": null,
+ "isReadme": false
+ },
+ {
+ "kind": "export",
+ "name": "removeStudioPropBinding",
+ "sourcePath": "src/bindingMutationModel.ts",
+ "symbolName": "removeStudioPropBinding",
+ "description": null,
+ "isReadme": false
+ },
{
"kind": "export",
"name": "resolveDefaultInsertPlacement",
@@ -17648,6 +19332,22 @@
"description": null,
"isReadme": false
},
+ {
+ "kind": "export",
+ "name": "resolveStudioBindableEvents",
+ "sourcePath": "src/bindingMetadataModel.ts",
+ "symbolName": "resolveStudioBindableEvents",
+ "description": null,
+ "isReadme": false
+ },
+ {
+ "kind": "export",
+ "name": "resolveStudioBindableProps",
+ "sourcePath": "src/bindingMetadataModel.ts",
+ "symbolName": "resolveStudioBindableProps",
+ "description": null,
+ "isReadme": false
+ },
{
"kind": "export",
"name": "resolveStudioInstancePropertyFields",
@@ -17664,6 +19364,14 @@
"description": null,
"isReadme": false
},
+ {
+ "kind": "export",
+ "name": "resolveStudioSchemaValueMeta",
+ "sourcePath": "src/bindingSchemaModel.ts",
+ "symbolName": "resolveStudioSchemaValueMeta",
+ "description": null,
+ "isReadme": false
+ },
{
"kind": "export",
"name": "updateNodeInTree",
@@ -17672,6 +19380,14 @@
"description": null,
"isReadme": false
},
+ {
+ "kind": "export",
+ "name": "upsertStudioPropBinding",
+ "sourcePath": "src/bindingMutationModel.ts",
+ "symbolName": "upsertStudioPropBinding",
+ "description": null,
+ "isReadme": false
+ },
{
"kind": "export",
"name": "validateInsertRecipe",
@@ -17709,6 +19425,96 @@
"toPath": "src/authSettings.ts",
"sourcePath": "src/authSettings.test.ts"
},
+ {
+ "fromPath": "src/bindingAuthoringModel.test.ts",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromPath": "src/bindingAuthoringModel.ts",
+ "toPath": "src/bindingAuthoringContracts.ts",
+ "sourcePath": "src/bindingAuthoringModel.ts"
+ },
+ {
+ "fromPath": "src/bindingAuthoringModel.ts",
+ "toPath": "src/bindingDiagnosticsModel.ts",
+ "sourcePath": "src/bindingAuthoringModel.ts"
+ },
+ {
+ "fromPath": "src/bindingAuthoringModel.ts",
+ "toPath": "src/bindingMetadataModel.ts",
+ "sourcePath": "src/bindingAuthoringModel.ts"
+ },
+ {
+ "fromPath": "src/bindingAuthoringModel.ts",
+ "toPath": "src/bindingMutationModel.ts",
+ "sourcePath": "src/bindingAuthoringModel.ts"
+ },
+ {
+ "fromPath": "src/bindingAuthoringModel.ts",
+ "toPath": "src/bindingOperationModel.ts",
+ "sourcePath": "src/bindingAuthoringModel.ts"
+ },
+ {
+ "fromPath": "src/bindingAuthoringModel.ts",
+ "toPath": "src/bindingSchemaModel.ts",
+ "sourcePath": "src/bindingAuthoringModel.ts"
+ },
+ {
+ "fromPath": "src/bindingDiagnosticsModel.ts",
+ "toPath": "src/bindingAuthoringContracts.ts",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromPath": "src/bindingDiagnosticsModel.ts",
+ "toPath": "src/bindingOperationModel.ts",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromPath": "src/bindingDiagnosticsModel.ts",
+ "toPath": "src/bindingSchemaModel.ts",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromPath": "src/bindingManifestPersistence.test.ts",
+ "toPath": "src/core/studioManifestDraftModel.ts",
+ "sourcePath": "src/bindingManifestPersistence.test.ts"
+ },
+ {
+ "fromPath": "src/bindingManifestPersistence.test.ts",
+ "toPath": "src/index.ts",
+ "sourcePath": "src/bindingManifestPersistence.test.ts"
+ },
+ {
+ "fromPath": "src/bindingManifestPersistence.test.ts",
+ "toPath": "src/manifestSync.ts",
+ "sourcePath": "src/bindingManifestPersistence.test.ts"
+ },
+ {
+ "fromPath": "src/bindingMetadataModel.ts",
+ "toPath": "src/bindingAuthoringContracts.ts",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromPath": "src/bindingMutationAcceptance.test.ts",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/bindingMutationAcceptance.test.ts"
+ },
+ {
+ "fromPath": "src/bindingOperationModel.ts",
+ "toPath": "src/bindingAuthoringContracts.ts",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromPath": "src/bindingOperationModel.ts",
+ "toPath": "src/bindingSchemaModel.ts",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromPath": "src/bindingSchemaModel.ts",
+ "toPath": "src/bindingAuthoringContracts.ts",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
{
"fromPath": "src/canvasDragModel.public.test.ts",
"toPath": "src/canvasDragModel.ts",
@@ -17814,6 +19620,11 @@
"toPath": "src/authSettings.ts",
"sourcePath": "src/index.ts"
},
+ {
+ "fromPath": "src/index.ts",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/index.ts"
+ },
{
"fromPath": "src/index.ts",
"toPath": "src/projectAuthHealth.ts",
@@ -19704,6 +21515,11 @@
"toPath": "src/ui/admin/pages/AuthAdminPage.tsx",
"sourcePath": "src/ui/admin/AnkhAdminPage.tsx"
},
+ {
+ "fromPath": "src/ui/admin/AnkhAdminPage.tsx",
+ "toPath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "sourcePath": "src/ui/admin/AnkhAdminPage.tsx"
+ },
{
"fromPath": "src/ui/admin/AnkhAdminPage.tsx",
"toPath": "src/ui/admin/pages/OverviewAdminPage.tsx",
@@ -20054,6 +21870,46 @@
"toPath": "src/ui/admin/pages/adminAuthSessionModel.ts",
"sourcePath": "src/ui/admin/pages/AuthAdminPage.tsx"
},
+ {
+ "fromPath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toPath": "src/core/StudioContext.ts",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toPath": "src/index.ts",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toPath": "src/manifestState.ts",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toPath": "src/ui/admin/adminPagePrimitives.tsx",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toPath": "src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toPath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toPath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
{
"fromPath": "src/ui/admin/pages/DataSourceCatalogCard.tsx",
"toPath": "src/ui/admin/pages/ExternalApiAdminPrimitives.tsx",
@@ -20388,6 +22244,96 @@
"fromPath": "src/host/manifestSystem/auth/shared/index.ts",
"toPath": "src/host/manifestSystem/auth/shared/global.auth.system.tpl.ts",
"sourcePath": "src/host/manifestSystem/auth/shared/index.ts"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx",
+ "toPath": "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toPath": "src/index.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toPath": "src/ui/admin/adminPagePrimitives.tsx",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toPath": "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toPath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "toPath": "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "toPath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toPath": "src/ui/admin/adminPagePrimitives.tsx",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toPath": "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toPath": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx",
+ "toPath": "src/bindingAuthoringModel.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx",
+ "toPath": "src/ui/admin/pages/bindings/bindingAdminStyles.ts",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"
+ },
+ {
+ "fromPath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx",
+ "toPath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"
}
],
"calls": [
@@ -20877,6 +22823,420 @@
"callExpression": "asRecord",
"sourcePath": "src/authSettings.ts"
},
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "describe",
+ "callExpression": "describe",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "test",
+ "callExpression": "test",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "expect",
+ "callExpression": "expect",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "resolveStudioBindableProps",
+ "callExpression": "resolveStudioBindableProps",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "resolveStudioBindableEvents",
+ "callExpression": "resolveStudioBindableEvents",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "upsertStudioPropBinding",
+ "callExpression": "upsertStudioPropBinding",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "appendStudioEventBinding",
+ "callExpression": "appendStudioEventBinding",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "removeStudioEventBinding",
+ "callExpression": "removeStudioEventBinding",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "removeStudioPropBinding",
+ "callExpression": "removeStudioPropBinding",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "collectStudioBindingOperationOptions",
+ "callExpression": "collectStudioBindingOperationOptions",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "assessStudioBindingCompatibility",
+ "callExpression": "assessStudioBindingCompatibility",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingAuthoringModel.test.ts",
+ "toSymbol": "diagnoseStudioComponentBindings",
+ "callExpression": "diagnoseStudioComponentBindings",
+ "sourcePath": "src/bindingAuthoringModel.test.ts"
+ },
+ {
+ "fromSymbol": "diagnoseStudioComponentBindings",
+ "toSymbol": "diagnostic",
+ "callExpression": "diagnostic",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingDiagnosticsModel.ts",
+ "toSymbol": "diagnosePropBinding",
+ "callExpression": "diagnosePropBinding",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingDiagnosticsModel.ts",
+ "toSymbol": "diagnoseEventBinding",
+ "callExpression": "diagnoseEventBinding",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnosePropBinding",
+ "toSymbol": "diagnostic",
+ "callExpression": "diagnostic",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnosePropBinding",
+ "toSymbol": "findStudioBindingOperationOption",
+ "callExpression": "findStudioBindingOperationOption",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnosePropBinding",
+ "toSymbol": "missingOperationDiagnostic",
+ "callExpression": "missingOperationDiagnostic",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnosePropBinding",
+ "toSymbol": "assessStudioBindingCompatibility",
+ "callExpression": "assessStudioBindingCompatibility",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseEventBinding",
+ "toSymbol": "diagnostic",
+ "callExpression": "diagnostic",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseEventBinding",
+ "toSymbol": "findStudioBindingOperationOption",
+ "callExpression": "findStudioBindingOperationOption",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseEventBinding",
+ "toSymbol": "missingOperationDiagnostic",
+ "callExpression": "missingOperationDiagnostic",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseEventBinding",
+ "toSymbol": "diagnoseEventInputs",
+ "callExpression": "diagnoseEventInputs",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingDiagnosticsModel.ts",
+ "toSymbol": "diagnostic",
+ "callExpression": "diagnostic",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingDiagnosticsModel.ts",
+ "toSymbol": "diagnoseInputCompatibility",
+ "callExpression": "diagnoseInputCompatibility",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseInputCompatibility",
+ "toSymbol": "resolveEventSourceValue",
+ "callExpression": "resolveEventSourceValue",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseInputCompatibility",
+ "toSymbol": "diagnostic",
+ "callExpression": "diagnostic",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseInputCompatibility",
+ "toSymbol": "assessStudioBindingCompatibility",
+ "callExpression": "assessStudioBindingCompatibility",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "resolveEventSourceValue",
+ "toSymbol": "toBindableType",
+ "callExpression": "toBindableType",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "missingOperationDiagnostic",
+ "toSymbol": "diagnostic",
+ "callExpression": "diagnostic",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingManifestPersistence.test.ts",
+ "toSymbol": "describe",
+ "callExpression": "describe",
+ "sourcePath": "src/bindingManifestPersistence.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingManifestPersistence.test.ts",
+ "toSymbol": "test",
+ "callExpression": "test",
+ "sourcePath": "src/bindingManifestPersistence.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingManifestPersistence.test.ts",
+ "toSymbol": "updateStudioManifestDraftDataBindings",
+ "callExpression": "updateStudioManifestDraftDataBindings",
+ "sourcePath": "src/bindingManifestPersistence.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingManifestPersistence.test.ts",
+ "toSymbol": "createManifest",
+ "callExpression": "createManifest",
+ "sourcePath": "src/bindingManifestPersistence.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingManifestPersistence.test.ts",
+ "toSymbol": "expect",
+ "callExpression": "expect",
+ "sourcePath": "src/bindingManifestPersistence.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingManifestPersistence.test.ts",
+ "toSymbol": "createStudioManifestSignature",
+ "callExpression": "createStudioManifestSignature",
+ "sourcePath": "src/bindingManifestPersistence.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingMutationAcceptance.test.ts",
+ "toSymbol": "describe",
+ "callExpression": "describe",
+ "sourcePath": "src/bindingMutationAcceptance.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingMutationAcceptance.test.ts",
+ "toSymbol": "test",
+ "callExpression": "test",
+ "sourcePath": "src/bindingMutationAcceptance.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingMutationAcceptance.test.ts",
+ "toSymbol": "upsertStudioPropBinding",
+ "callExpression": "upsertStudioPropBinding",
+ "sourcePath": "src/bindingMutationAcceptance.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingMutationAcceptance.test.ts",
+ "toSymbol": "expect",
+ "callExpression": "expect",
+ "sourcePath": "src/bindingMutationAcceptance.test.ts"
+ },
+ {
+ "fromSymbol": "src/bindingMutationAcceptance.test.ts",
+ "toSymbol": "appendStudioEventBinding",
+ "callExpression": "appendStudioEventBinding",
+ "sourcePath": "src/bindingMutationAcceptance.test.ts"
+ },
+ {
+ "fromSymbol": "upsertStudioPropBinding",
+ "toSymbol": "writeBinding",
+ "callExpression": "writeBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "removeStudioPropBinding",
+ "toSymbol": "writeBinding",
+ "callExpression": "writeBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "appendStudioEventBinding",
+ "toSymbol": "writeBinding",
+ "callExpression": "writeBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "removeStudioEventBinding",
+ "toSymbol": "writeBinding",
+ "callExpression": "writeBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "writeBinding",
+ "toSymbol": "isEmptyBinding",
+ "callExpression": "isEmptyBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingOperationModel.ts",
+ "toSymbol": "collectSourceOperations",
+ "callExpression": "collectSourceOperations",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingOperationModel.ts",
+ "toSymbol": "describeSource",
+ "callExpression": "describeSource",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingOperationModel.ts",
+ "toSymbol": "collectOperationInputFields",
+ "callExpression": "collectOperationInputFields",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingOperationModel.ts",
+ "toSymbol": "collectStudioResponsePaths",
+ "callExpression": "collectStudioResponsePaths",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingOperationModel.ts",
+ "toSymbol": "resolveSlotSchema",
+ "callExpression": "resolveSlotSchema",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "collectOperationInputFields",
+ "toSymbol": "resolveStudioSchemaValueMeta",
+ "callExpression": "resolveStudioSchemaValueMeta",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "collectOperationInputFields",
+ "toSymbol": "resolveSlotSchema",
+ "callExpression": "resolveSlotSchema",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingOperationModel.ts",
+ "toSymbol": "toBindableType",
+ "callExpression": "toBindableType",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioSchemaValueMeta",
+ "toSymbol": "resolveSchemaRef",
+ "callExpression": "resolveSchemaRef",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioSchemaValueMeta",
+ "toSymbol": "resolveSchemaType",
+ "callExpression": "resolveSchemaType",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioSchemaValueMeta",
+ "toSymbol": "resolveSchemaFields",
+ "callExpression": "resolveSchemaFields",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioSchemaValueMeta",
+ "toSymbol": "resolveStudioSchemaValueMeta",
+ "callExpression": "resolveStudioSchemaValueMeta",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "collectStudioResponsePaths",
+ "toSymbol": "resolveStudioSchemaValueMeta",
+ "callExpression": "resolveStudioSchemaValueMeta",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "collectStudioResponsePaths",
+ "toSymbol": "collectObjectPaths",
+ "callExpression": "collectObjectPaths",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "assessStudioBindingCompatibility",
+ "toSymbol": "isObjectLike",
+ "callExpression": "isObjectLike",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "assessStudioBindingCompatibility",
+ "toSymbol": "isImageAssetShape",
+ "callExpression": "isImageAssetShape",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "collectObjectPaths",
+ "toSymbol": "resolveSchemaRef",
+ "callExpression": "resolveSchemaRef",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "collectObjectPaths",
+ "toSymbol": "resolveStudioSchemaValueMeta",
+ "callExpression": "resolveStudioSchemaValueMeta",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "collectObjectPaths",
+ "toSymbol": "collectObjectPaths",
+ "callExpression": "collectObjectPaths",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "resolveSchemaRef",
+ "toSymbol": "resolveSchemaRef",
+ "callExpression": "resolveSchemaRef",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "src/bindingSchemaModel.ts",
+ "toSymbol": "resolveStudioSchemaValueMeta",
+ "callExpression": "resolveStudioSchemaValueMeta",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "resolveSchemaType",
+ "toSymbol": "resolveSingleSchemaType",
+ "callExpression": "resolveSingleSchemaType",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "isImageAssetShape",
+ "toSymbol": "isObjectLike",
+ "callExpression": "isObjectLike",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
{
"fromSymbol": "src/canvasDragModel.public.test.ts",
"toSymbol": "describe",
@@ -25121,14 +27481,14 @@
},
{
"fromSymbol": "src/studioAdminRouteModel.test.ts",
- "toSymbol": "resolveStudioPropertiesNodeId",
- "callExpression": "resolveStudioPropertiesNodeId",
+ "toSymbol": "resolveStudioBindingsNodeId",
+ "callExpression": "resolveStudioBindingsNodeId",
"sourcePath": "src/studioAdminRouteModel.test.ts"
},
{
"fromSymbol": "src/studioAdminRouteModel.test.ts",
- "toSymbol": "createStudioPropertiesRoutePath",
- "callExpression": "createStudioPropertiesRoutePath",
+ "toSymbol": "createStudioBindingsRoutePath",
+ "callExpression": "createStudioBindingsRoutePath",
"sourcePath": "src/studioAdminRouteModel.test.ts"
},
{
@@ -25137,6 +27497,18 @@
"callExpression": "createStudioAdminRoutePath",
"sourcePath": "src/studioAdminRouteModel.test.ts"
},
+ {
+ "fromSymbol": "src/studioAdminRouteModel.test.ts",
+ "toSymbol": "resolveStudioPropertiesNodeId",
+ "callExpression": "resolveStudioPropertiesNodeId",
+ "sourcePath": "src/studioAdminRouteModel.test.ts"
+ },
+ {
+ "fromSymbol": "src/studioAdminRouteModel.test.ts",
+ "toSymbol": "createStudioPropertiesRoutePath",
+ "callExpression": "createStudioPropertiesRoutePath",
+ "sourcePath": "src/studioAdminRouteModel.test.ts"
+ },
{
"fromSymbol": "src/studioAdminRouteModel.test.ts",
"toSymbol": "createStudioAdminRouteRenderState",
@@ -25173,6 +27545,12 @@
"callExpression": "resolveStudioLastNonAdminLocation",
"sourcePath": "src/studioAdminRouteModel.test.ts"
},
+ {
+ "fromSymbol": "resolveStudioAdminRouteId",
+ "toSymbol": "resolveStudioBindingsNodeId",
+ "callExpression": "resolveStudioBindingsNodeId",
+ "sourcePath": "src/studioAdminRouteModel.ts"
+ },
{
"fromSymbol": "resolveStudioAdminRouteId",
"toSymbol": "resolveStudioPropertiesNodeId",
@@ -25185,6 +27563,18 @@
"callExpression": "resolveStudioAdminRouteId",
"sourcePath": "src/studioAdminRouteModel.ts"
},
+ {
+ "fromSymbol": "resolveStudioAdminRoutePath",
+ "toSymbol": "resolveStudioBindingsNodeId",
+ "callExpression": "resolveStudioBindingsNodeId",
+ "sourcePath": "src/studioAdminRouteModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioAdminRoutePath",
+ "toSymbol": "createStudioBindingsRoutePath",
+ "callExpression": "createStudioBindingsRoutePath",
+ "sourcePath": "src/studioAdminRouteModel.ts"
+ },
{
"fromSymbol": "resolveStudioAdminRoutePath",
"toSymbol": "resolveStudioPropertiesNodeId",
@@ -25203,6 +27593,24 @@
"callExpression": "getStudioAdminRouteDefinition",
"sourcePath": "src/studioAdminRouteModel.ts"
},
+ {
+ "fromSymbol": "resolveStudioBindingsNodeId",
+ "toSymbol": "resolveStudioContextNodeId",
+ "callExpression": "resolveStudioContextNodeId",
+ "sourcePath": "src/studioAdminRouteModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioPropertiesNodeId",
+ "toSymbol": "resolveStudioContextNodeId",
+ "callExpression": "resolveStudioContextNodeId",
+ "sourcePath": "src/studioAdminRouteModel.ts"
+ },
+ {
+ "fromSymbol": "createStudioAdminRoutePath",
+ "toSymbol": "createStudioBindingsRoutePath",
+ "callExpression": "createStudioBindingsRoutePath",
+ "sourcePath": "src/studioAdminRouteModel.ts"
+ },
{
"fromSymbol": "createStudioAdminRoutePath",
"toSymbol": "createStudioPropertiesRoutePath",
@@ -25239,6 +27647,12 @@
"callExpression": "resolveStudioAdminRoutePath",
"sourcePath": "src/studioAdminRouteModel.ts"
},
+ {
+ "fromSymbol": "createStudioAdminRouteRenderState",
+ "toSymbol": "resolveStudioBindingsNodeId",
+ "callExpression": "resolveStudioBindingsNodeId",
+ "sourcePath": "src/studioAdminRouteModel.ts"
+ },
{
"fromSymbol": "createStudioAdminRouteRenderState",
"toSymbol": "resolveStudioPropertiesNodeId",
@@ -31155,6 +33569,12 @@
"callExpression": "createStudioSelectionContext",
"sourcePath": "src/ui/useStudioAppBarAugmentation.ts"
},
+ {
+ "fromSymbol": "src/ui/useStudioAppBarAugmentation.ts",
+ "toSymbol": "createStudioBindingsRoutePath",
+ "callExpression": "createStudioBindingsRoutePath",
+ "sourcePath": "src/ui/useStudioAppBarAugmentation.ts"
+ },
{
"fromSymbol": "src/ui/useStudioAppBarAugmentation.ts",
"toSymbol": "createStudioPropertiesRoutePath",
@@ -36423,6 +38843,12 @@
"callExpression": "expect",
"sourcePath": "src/ui/admin/AnkhAdminPage.test.ts"
},
+ {
+ "fromSymbol": "bindings",
+ "toSymbol": "resolveStudioBindingsNodeId",
+ "callExpression": "resolveStudioBindingsNodeId",
+ "sourcePath": "src/ui/admin/AnkhAdminPage.tsx"
+ },
{
"fromSymbol": "properties",
"toSymbol": "resolveStudioPropertiesNodeId",
@@ -38547,6 +40973,48 @@
"callExpression": "useZoraTheme",
"sourcePath": "src/ui/admin/pages/AuthAdminPage.tsx"
},
+ {
+ "fromSymbol": "BindingsAdminPage",
+ "toSymbol": "useStudio",
+ "callExpression": "useStudio",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromSymbol": "BindingsAdminPage",
+ "toSymbol": "findScreenIdForNode",
+ "callExpression": "findScreenIdForNode",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromSymbol": "BindingsAdminPage",
+ "toSymbol": "findNodeInManifest",
+ "callExpression": "findNodeInManifest",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toSymbol": "setActiveScreenId",
+ "callExpression": "studio.setActiveScreenId",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/BindingsAdminPage.tsx",
+ "toSymbol": "selectNode",
+ "callExpression": "studio.selectNode",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromSymbol": "BindingsAdminPage",
+ "toSymbol": "collectStudioBindingOperationOptions",
+ "callExpression": "collectStudioBindingOperationOptions",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
+ {
+ "fromSymbol": "BindingsAdminPage",
+ "toSymbol": "diagnoseStudioComponentBindings",
+ "callExpression": "diagnoseStudioComponentBindings",
+ "sourcePath": "src/ui/admin/pages/BindingsAdminPage.tsx"
+ },
{
"fromSymbol": "src/ui/admin/pages/DataSourceCatalogCard.tsx",
"toSymbol": "describeSourceKind",
@@ -39752,6 +42220,228 @@
"toSymbol": "escapeStringLiteral",
"callExpression": "escapeStringLiteral",
"sourcePath": "src/host/layout/templates/auth/screen.ts"
+ },
+ {
+ "fromSymbol": "createStudioPropBindingForSource",
+ "toSymbol": "createDefaultBindingValue",
+ "callExpression": "createDefaultBindingValue",
+ "sourcePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts"
+ },
+ {
+ "fromSymbol": "createStudioEventBinding",
+ "toSymbol": "createStudioEventInputMap",
+ "callExpression": "createStudioEventInputMap",
+ "sourcePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts"
+ },
+ {
+ "fromSymbol": "parseStudioBindingLiteral",
+ "toSymbol": "parseStructuredValue",
+ "callExpression": "parseStructuredValue",
+ "sourcePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "toSymbol": "createStudioOperationKey",
+ "callExpression": "createStudioOperationKey",
+ "sourcePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/bindingEditorModel.ts",
+ "toSymbol": "parseStudioBindingLiteral",
+ "callExpression": "parseStudioBindingLiteral",
+ "sourcePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts"
+ },
+ {
+ "fromSymbol": "parseStructuredValue",
+ "toSymbol": "isBindingValue",
+ "callExpression": "isBindingValue",
+ "sourcePath": "src/ui/admin/pages/bindings/bindingEditorModel.ts"
+ },
+ {
+ "fromSymbol": "EventBindingComposer",
+ "toSymbol": "useState",
+ "callExpression": "useState",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "EventBindingComposer",
+ "toSymbol": "createStudioOperationKey",
+ "callExpression": "createStudioOperationKey",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "EventBindingComposer",
+ "toSymbol": "findStudioOperationByKey",
+ "callExpression": "findStudioOperationByKey",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "EventBindingComposer",
+ "toSymbol": "useMemo",
+ "callExpression": "useMemo",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toSymbol": "createStudioActionInputFields",
+ "callExpression": "createStudioActionInputFields",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "EventBindingComposer",
+ "toSymbol": "useEffect",
+ "callExpression": "useEffect",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toSymbol": "setDrafts",
+ "callExpression": "setDrafts",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toSymbol": "createStudioEventInputDrafts",
+ "callExpression": "createStudioEventInputDrafts",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "add",
+ "toSymbol": "onAdd",
+ "callExpression": "onAdd",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "add",
+ "toSymbol": "createStudioEventBinding",
+ "callExpression": "createStudioEventBinding",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toSymbol": "createStudioOperationKey",
+ "callExpression": "createStudioOperationKey",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingComposer.tsx",
+ "toSymbol": "onChange",
+ "callExpression": "props.onChange",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingComposer.tsx"
+ },
+ {
+ "fromSymbol": "EventBindingsCard",
+ "toSymbol": "resolveStudioBindableEvents",
+ "callExpression": "resolveStudioBindableEvents",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "toSymbol": "describeEventBinding",
+ "callExpression": "describeEventBinding",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "toSymbol": "describeBindingInput",
+ "callExpression": "describeBindingInput",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "toSymbol": "onChange",
+ "callExpression": "props.onChange",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "toSymbol": "removeStudioEventBinding",
+ "callExpression": "removeStudioEventBinding",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/EventBindingsCard.tsx",
+ "toSymbol": "appendStudioEventBinding",
+ "callExpression": "appendStudioEventBinding",
+ "sourcePath": "src/ui/admin/pages/bindings/EventBindingsCard.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toSymbol": "createStudioOperationKey",
+ "callExpression": "createStudioOperationKey",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toSymbol": "onChange",
+ "callExpression": "onChange",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toSymbol": "createStudioPropBindingForSource",
+ "callExpression": "createStudioPropBindingForSource",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromSymbol": "PropertyBindingSourceFields",
+ "toSymbol": "formatStudioBindingLiteral",
+ "callExpression": "formatStudioBindingLiteral",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toSymbol": "parseStudioBindingLiteral",
+ "callExpression": "parseStudioBindingLiteral",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromSymbol": "PropertyBindingSourceFields",
+ "toSymbol": "createStudioOperationKey",
+ "callExpression": "createStudioOperationKey",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromSymbol": "PropertyBindingSourceFields",
+ "toSymbol": "findStudioOperationByKey",
+ "callExpression": "findStudioOperationByKey",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toSymbol": "assessStudioBindingCompatibility",
+ "callExpression": "assessStudioBindingCompatibility",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx",
+ "toSymbol": "findStudioOperationByKey",
+ "callExpression": "findStudioOperationByKey",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingEditor.tsx"
+ },
+ {
+ "fromSymbol": "PropertyBindingsCard",
+ "toSymbol": "resolveStudioBindableProps",
+ "callExpression": "resolveStudioBindableProps",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx",
+ "toSymbol": "onChange",
+ "callExpression": "props.onChange",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx",
+ "toSymbol": "upsertStudioPropBinding",
+ "callExpression": "upsertStudioPropBinding",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"
+ },
+ {
+ "fromSymbol": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx",
+ "toSymbol": "removeStudioPropBinding",
+ "callExpression": "removeStudioPropBinding",
+ "sourcePath": "src/ui/admin/pages/bindings/PropertyBindingsCard.tsx"
}
],
"typeReferences": [
@@ -40275,6 +42965,266 @@
"toType": "UiNode",
"sourcePath": "src/index.ts"
},
+ {
+ "fromSymbol": "StudioBindablePropOption",
+ "toType": "UiBindablePropMeta",
+ "sourcePath": "src/bindingAuthoringContracts.ts"
+ },
+ {
+ "fromSymbol": "StudioBindableEventOption",
+ "toType": "UiBindableEventMeta",
+ "sourcePath": "src/bindingAuthoringContracts.ts"
+ },
+ {
+ "fromSymbol": "StudioBindingInputFieldOption",
+ "toType": "UiBindableValueMeta",
+ "sourcePath": "src/bindingAuthoringContracts.ts"
+ },
+ {
+ "fromSymbol": "StudioBindingResponsePathOption",
+ "toType": "UiBindableValueMeta",
+ "sourcePath": "src/bindingAuthoringContracts.ts"
+ },
+ {
+ "fromSymbol": "StudioBindingOperationOption",
+ "toType": "BindingOperationRef",
+ "sourcePath": "src/bindingAuthoringContracts.ts"
+ },
+ {
+ "fromSymbol": "StudioBindingOperationOption",
+ "toType": "StudioBindingInputFieldOption",
+ "sourcePath": "src/bindingAuthoringContracts.ts"
+ },
+ {
+ "fromSymbol": "StudioBindingOperationOption",
+ "toType": "StudioBindingResponsePathOption",
+ "sourcePath": "src/bindingAuthoringContracts.ts"
+ },
+ {
+ "fromSymbol": "diagnoseStudioComponentBindings",
+ "toType": "ComponentDataBindingRegistry",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseStudioComponentBindings",
+ "toType": "StudioBindingDiagnostic",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseStudioComponentBindings",
+ "toType": "StudioBindingOperationOption",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseStudioComponentBindings",
+ "toType": "UiComponentMetaRegistry",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "diagnoseStudioComponentBindings",
+ "toType": "UiNode",
+ "sourcePath": "src/bindingDiagnosticsModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableProps",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableProps",
+ "toType": "StudioBindablePropOption",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableProps",
+ "toType": "UiComponentMeta",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableProps",
+ "toType": "UiNode",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableProps",
+ "toType": "Users",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableEvents",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableEvents",
+ "toType": "StudioBindableEventOption",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableEvents",
+ "toType": "UiComponentMeta",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableEvents",
+ "toType": "UiNode",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioBindableEvents",
+ "toType": "Users",
+ "sourcePath": "src/bindingMetadataModel.ts"
+ },
+ {
+ "fromSymbol": "upsertStudioPropBinding",
+ "toType": "ComponentDataBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "upsertStudioPropBinding",
+ "toType": "PropBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "upsertStudioPropBinding",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "upsertStudioPropBinding",
+ "toType": "UiNode",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "removeStudioPropBinding",
+ "toType": "ComponentDataBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "removeStudioPropBinding",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "removeStudioPropBinding",
+ "toType": "UiNode",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "appendStudioEventBinding",
+ "toType": "ComponentDataBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "appendStudioEventBinding",
+ "toType": "EventBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "appendStudioEventBinding",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "appendStudioEventBinding",
+ "toType": "UiNode",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "removeStudioEventBinding",
+ "toType": "ComponentDataBinding",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "removeStudioEventBinding",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "removeStudioEventBinding",
+ "toType": "UiNode",
+ "sourcePath": "src/bindingMutationModel.ts"
+ },
+ {
+ "fromSymbol": "collectStudioBindingOperationOptions",
+ "toType": "DataSourceConfig",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "collectStudioBindingOperationOptions",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "collectStudioBindingOperationOptions",
+ "toType": "StudioBindingOperationOption",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "findStudioBindingOperationOption",
+ "toType": "BindingOperationRef",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "findStudioBindingOperationOption",
+ "toType": "StudioBindingOperationOption",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "createStudioActionInputFields",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "createStudioActionInputFields",
+ "toType": "StudioBindingInputFieldOption",
+ "sourcePath": "src/bindingOperationModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioSchemaValueMeta",
+ "toType": "DataSchema",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioSchemaValueMeta",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioSchemaValueMeta",
+ "toType": "ReadonlySet",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "resolveStudioSchemaValueMeta",
+ "toType": "UiBindableValueMeta",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "collectStudioResponsePaths",
+ "toType": "DataSchema",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "collectStudioResponsePaths",
+ "toType": "Readonly",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "collectStudioResponsePaths",
+ "toType": "StudioBindingResponsePathOption",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "assessStudioBindingCompatibility",
+ "toType": "StudioBindingCompatibility",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
+ {
+ "fromSymbol": "assessStudioBindingCompatibility",
+ "toType": "UiBindableValueMeta",
+ "sourcePath": "src/bindingSchemaModel.ts"
+ },
{
"fromSymbol": "resolveStudioInstancePropertyFields",
"toType": "Readonly",
diff --git a/src/ui/admin/AnkhAdminPage.tsx b/src/ui/admin/AnkhAdminPage.tsx
index a183f5c..f44bd04 100644
--- a/src/ui/admin/AnkhAdminPage.tsx
+++ b/src/ui/admin/AnkhAdminPage.tsx
@@ -63,9 +63,7 @@ const ADMIN_PAGE_RENDERERS = {
),
secrets: ({ studio }) => ,
theme: () => ,
- bindings: ({ pathname }) => (
-
- ),
+ bindings: ({ pathname }) => ,
properties: ({ pathname }) => (
),
diff --git a/src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx b/src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx
index 2d51b9d..2c1a8fc 100644
--- a/src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx
+++ b/src/ui/admin/pages/bindings/BindingDiagnosticsCard.tsx
@@ -17,7 +17,10 @@ export function BindingDiagnosticsCard(props: {
) : (
props.diagnostics.map((diagnostic, index) => (
-
+
{diagnostic.message}
{diagnostic.path ? (
diff --git a/src/ui/admin/pages/bindings/EventBindingComposer.tsx b/src/ui/admin/pages/bindings/EventBindingComposer.tsx
index 964f4b1..dfdd604 100644
--- a/src/ui/admin/pages/bindings/EventBindingComposer.tsx
+++ b/src/ui/admin/pages/bindings/EventBindingComposer.tsx
@@ -136,7 +136,9 @@ function EventInputDrafts(props: {
return (
-
+
@@ -89,7 +93,14 @@ function EventPayloadSummary(props: {
function describeEventBinding(binding: {
readonly target:
| { readonly kind: 'action'; readonly type: string }
- | { readonly kind: 'operation'; readonly operation: { readonly dataSourceId: string; readonly endpointId?: string; readonly operationId: string } };
+ | {
+ readonly kind: 'operation';
+ readonly operation: {
+ readonly dataSourceId: string;
+ readonly endpointId?: string;
+ readonly operationId: string;
+ };
+ };
readonly input?: Readonly>;
}): string {
if (binding.target.kind === 'action') return `Action · ${binding.target.type}`;
diff --git a/src/ui/admin/pages/bindings/PropertyBindingEditor.tsx b/src/ui/admin/pages/bindings/PropertyBindingEditor.tsx
index 0716d95..7a22653 100644
--- a/src/ui/admin/pages/bindings/PropertyBindingEditor.tsx
+++ b/src/ui/admin/pages/bindings/PropertyBindingEditor.tsx
@@ -124,7 +124,9 @@ function PropertyBindingSourceFields(props: {
}
if (source.kind === 'event') {
- return Event sources are not available for persistent property bindings.;
+ return (
+ Event sources are not available for persistent property bindings.
+ );
}
const operationKey = createStudioOperationKey(source.operation);