@ankhorage/runtime 5.3.10 → 5.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ankhorage/runtime
2
2
 
3
+ ## 5.4.1
4
+
5
+ ### Patch Changes
6
+
7
+ - c78ddc8: Emit browser-consumable JavaScript without raw JSX in published artifacts.
8
+
9
+ ## 5.4.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 83b83c2: Expose a platform-neutral authoring overlay adapter for component identity, selection, bounds, gesture arbitration, and edit-mode action suppression.
14
+
3
15
  ## 5.3.10
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/runtime
5
5
 
6
- ![license: MIT](./paradox/badges/license.svg) ![npm: v5.3.10](./paradox/badges/npm.svg) ![runtime: bun](./paradox/badges/runtime.svg) ![typescript: strict](./paradox/badges/typescript.svg) ![eslint: checked](./paradox/badges/eslint.svg) ![prettier: checked](./paradox/badges/prettier.svg) ![build: checked](./paradox/badges/build.svg) ![tests: checked](./paradox/badges/tests.svg) ![paradox: warnings](./paradox/badges/docs.svg)
6
+ ![license: MIT](./paradox/badges/license.svg) ![npm: v5.4.1](./paradox/badges/npm.svg) ![runtime: bun](./paradox/badges/runtime.svg) ![typescript: strict](./paradox/badges/typescript.svg) ![eslint: checked](./paradox/badges/eslint.svg) ![prettier: checked](./paradox/badges/prettier.svg) ![build: checked](./paradox/badges/build.svg) ![tests: checked](./paradox/badges/tests.svg) ![paradox: warnings](./paradox/badges/docs.svg)
7
7
 
8
8
  Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.
9
9
 
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import React, { createContext, use } from 'react';
2
3
  import { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';
3
4
  export const ManifestContext = createContext(null);
@@ -6,9 +7,7 @@ export function ManifestProvider(props) {
6
7
  const { manifest, activeScreenId, onScreenChange, stateAdapter: injectedStateAdapter, children, } = props;
7
8
  const fallbackStateAdapter = React.useMemo(() => (manifest.state?.provider === 'legend' ? createRuntimeMemoryStateAdapter() : undefined), [manifest.state?.provider]);
8
9
  const stateAdapter = injectedStateAdapter ?? fallbackStateAdapter;
9
- return (<ManifestContext value={{ manifest, activeScreenId, onScreenChange, stateAdapter }}>
10
- {children}
11
- </ManifestContext>);
10
+ return (_jsx(ManifestContext, { value: { manifest, activeScreenId, onScreenChange, stateAdapter }, children: children }));
12
11
  }
13
12
  /*** Returns the active application manifest from the owning Runtime provider. */
14
13
  export function useManifest() {
@@ -1 +1 @@
1
- {"version":3,"file":"ManifestContext.js","sourceRoot":"","sources":["../src/ManifestContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AASxE,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAA8B,IAAI,CAAC,CAAC;AAEhF,0FAA0F;AAC1F,MAAM,UAAU,gBAAgB,CAAC,KAA2D;IAC1F,MAAM,EACJ,QAAQ,EACR,cAAc,EACd,cAAc,EACd,YAAY,EAAE,oBAAoB,EAClC,QAAQ,GACT,GAAG,KAAK,CAAC;IACV,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CACxC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAC7F,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC3B,CAAC;IACF,MAAM,YAAY,GAAG,oBAAoB,IAAI,oBAAoB,CAAC;IAElE,OAAO,CACL,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CACjF;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,eAAe,CAAC,CACnB,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW;IACzB,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,CAAC;AAC1B,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,0BAA0B;IACxC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC;AAC9B,CAAC","sourcesContent":["import type { AppManifest, StateAdapter } from '@ankhorage/contracts';\nimport React, { createContext, use } from 'react';\n\nimport { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';\n\nexport interface ManifestContextValue {\n manifest: AppManifest;\n activeScreenId?: string;\n onScreenChange?: (screenId: string) => void;\n stateAdapter?: StateAdapter;\n}\n\nexport const ManifestContext = createContext<ManifestContextValue | null>(null);\n\n/*** Owns one configured state adapter for every Runtime screen in an application tree. */\nexport function ManifestProvider(props: ManifestContextValue & { children: React.ReactNode }) {\n const {\n manifest,\n activeScreenId,\n onScreenChange,\n stateAdapter: injectedStateAdapter,\n children,\n } = props;\n const fallbackStateAdapter = React.useMemo(\n () => (manifest.state?.provider === 'legend' ? createRuntimeMemoryStateAdapter() : undefined),\n [manifest.state?.provider],\n );\n const stateAdapter = injectedStateAdapter ?? fallbackStateAdapter;\n\n return (\n <ManifestContext value={{ manifest, activeScreenId, onScreenChange, stateAdapter }}>\n {children}\n </ManifestContext>\n );\n}\n\n/*** Returns the active application manifest from the owning Runtime provider. */\nexport function useManifest() {\n const context = use(ManifestContext);\n if (!context) {\n throw new Error('useManifest must be used within a ManifestProvider');\n }\n return context.manifest;\n}\n\n/*** Returns the active manifest scope, including its application-lifetime state adapter. */\nexport function useManifestContext() {\n const context = use(ManifestContext);\n if (!context) {\n throw new Error('useManifestContext must be used within a ManifestProvider');\n }\n return context;\n}\n\n/*** Reads an enclosing manifest scope without requiring hosts to provide one. */\nexport function useOptionalManifestContext() {\n return use(ManifestContext);\n}\n"]}
1
+ {"version":3,"file":"ManifestContext.js","sourceRoot":"","sources":["../src/ManifestContext.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AASxE,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAA8B,IAAI,CAAC,CAAC;AAEhF,0FAA0F;AAC1F,MAAM,UAAU,gBAAgB,CAAC,KAA2D;IAC1F,MAAM,EACJ,QAAQ,EACR,cAAc,EACd,cAAc,EACd,YAAY,EAAE,oBAAoB,EAClC,QAAQ,GACT,GAAG,KAAK,CAAC;IACV,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CACxC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAC7F,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC3B,CAAC;IACF,MAAM,YAAY,GAAG,oBAAoB,IAAI,oBAAoB,CAAC;IAElE,OAAO,CACL,KAAC,eAAe,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,YAC/E,QAAQ,GACO,CACnB,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW;IACzB,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,CAAC;AAC1B,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,0BAA0B;IACxC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC;AAC9B,CAAC","sourcesContent":["import type { AppManifest, StateAdapter } from '@ankhorage/contracts';\nimport React, { createContext, use } from 'react';\n\nimport { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';\n\nexport interface ManifestContextValue {\n manifest: AppManifest;\n activeScreenId?: string;\n onScreenChange?: (screenId: string) => void;\n stateAdapter?: StateAdapter;\n}\n\nexport const ManifestContext = createContext<ManifestContextValue | null>(null);\n\n/*** Owns one configured state adapter for every Runtime screen in an application tree. */\nexport function ManifestProvider(props: ManifestContextValue & { children: React.ReactNode }) {\n const {\n manifest,\n activeScreenId,\n onScreenChange,\n stateAdapter: injectedStateAdapter,\n children,\n } = props;\n const fallbackStateAdapter = React.useMemo(\n () => (manifest.state?.provider === 'legend' ? createRuntimeMemoryStateAdapter() : undefined),\n [manifest.state?.provider],\n );\n const stateAdapter = injectedStateAdapter ?? fallbackStateAdapter;\n\n return (\n <ManifestContext value={{ manifest, activeScreenId, onScreenChange, stateAdapter }}>\n {children}\n </ManifestContext>\n );\n}\n\n/*** Returns the active application manifest from the owning Runtime provider. */\nexport function useManifest() {\n const context = use(ManifestContext);\n if (!context) {\n throw new Error('useManifest must be used within a ManifestProvider');\n }\n return context.manifest;\n}\n\n/*** Returns the active manifest scope, including its application-lifetime state adapter. */\nexport function useManifestContext() {\n const context = use(ManifestContext);\n if (!context) {\n throw new Error('useManifestContext must be used within a ManifestProvider');\n }\n return context;\n}\n\n/*** Reads an enclosing manifest scope without requiring hosts to provide one. */\nexport function useOptionalManifestContext() {\n return use(ManifestContext);\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
2
  import React from 'react';
2
3
  import { StyleSheet, Text, View } from 'react-native';
3
4
  import { getUnknownComponentDiagnostic, resolveRenderedChildren, resolveRuntimeRegistry, } from './rendering';
@@ -203,11 +204,7 @@ export function RuntimeRenderer(props) {
203
204
  : mediaResolvedProps;
204
205
  if (!Component) {
205
206
  const diagnostic = getUnknownComponentDiagnostic(node.type, effectiveRegistry);
206
- return (<View style={styles.errorBox}>
207
- <Text style={styles.errorTitle}>{diagnostic.title}</Text>
208
- <Text style={styles.errorText}>{diagnostic.suggestion}</Text>
209
- <Text style={styles.errorMeta}>{diagnostic.detail}</Text>
210
- </View>);
207
+ return (_jsxs(View, { style: styles.errorBox, children: [_jsx(Text, { style: styles.errorTitle, children: diagnostic.title }), _jsx(Text, { style: styles.errorText, children: diagnostic.suggestion }), _jsx(Text, { style: styles.errorMeta, children: diagnostic.detail })] }));
211
208
  }
212
209
  const repeatItems = repeatSyncResult?.status === 'ready' ? repeatSyncResult.items : currentAsyncRepeatResult?.items;
213
210
  const shouldRenderRepeatEmptyState = shouldRenderRuntimeRepeatEmptyState({
@@ -231,16 +228,16 @@ export function RuntimeRenderer(props) {
231
228
  index: itemIndex,
232
229
  keyPath: node.repeat?.keyPath,
233
230
  });
234
- return (<RuntimeRenderer key={`${child.id}:${String(repeatKey)}`} node={child} registry={effectiveRegistry} bindingContext={createRuntimeRepeatBindingContext({
231
+ return (_jsx(RuntimeRenderer, { node: child, registry: effectiveRegistry, bindingContext: createRuntimeRepeatBindingContext({
235
232
  baseContext: effectiveConfig.bindingContext,
236
233
  item,
237
234
  itemAlias,
238
- })}/>);
235
+ }) }, `${child.id}:${String(repeatKey)}`));
239
236
  }))
240
237
  : shouldRenderRepeatEmptyState
241
- ? node.repeat.empty?.map((child) => (<RuntimeRenderer key={child.id} node={child} registry={effectiveRegistry}/>))
238
+ ? node.repeat.empty?.map((child) => (_jsx(RuntimeRenderer, { node: child, registry: effectiveRegistry }, child.id)))
242
239
  : undefined
243
- : node.children?.map((child) => (<RuntimeRenderer key={child.id} node={child} registry={effectiveRegistry}/>));
240
+ : node.children?.map((child) => (_jsx(RuntimeRenderer, { node: child, registry: effectiveRegistry }, child.id)));
244
241
  const propsWithEvents = wrapRuntimeEventProps({
245
242
  context: effectiveConfig.bindingContext,
246
243
  dataBindings: effectiveConfig.dataBindings,
@@ -255,15 +252,11 @@ export function RuntimeRenderer(props) {
255
252
  propChildren: propsWithEvents.children,
256
253
  renderedChildren,
257
254
  });
258
- let content = <Component {...propsWithEvents}>{componentChildren}</Component>;
255
+ let content = _jsx(Component, { ...propsWithEvents, children: componentChildren });
259
256
  if (effectiveConfig.wrapNode) {
260
257
  content = effectiveConfig.wrapNode({ node, rendered: content, isRoot });
261
258
  }
262
- return (<RuntimeMediaResolutionCacheProvider value={mediaResolutionCache}>
263
- <RuntimeRendererConfigProvider value={explicitConfig}>
264
- {content}
265
- </RuntimeRendererConfigProvider>
266
- </RuntimeMediaResolutionCacheProvider>);
259
+ return (_jsx(RuntimeMediaResolutionCacheProvider, { value: mediaResolutionCache, children: _jsx(RuntimeRendererConfigProvider, { value: explicitConfig, children: content }) }));
267
260
  }
268
261
  const styles = StyleSheet.create({
269
262
  errorBox: {
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeRenderer.js","sourceRoot":"","sources":["../src/RuntimeRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {\n BindingValue,\n ComponentDataBindingRegistry,\n DataSourceDiagnostic,\n DbAdapter,\n DbRealtimeAdapter,\n MediaAssetRegistry,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport type { ComponentRegistry } from './registry';\nimport {\n getUnknownComponentDiagnostic,\n resolveRenderedChildren,\n resolveRuntimeRegistry,\n} from './rendering';\nimport {\n type RuntimeComponentEventDispatchArgs,\n type RuntimeEventCapabilityResolver,\n wrapRuntimeEventProps,\n} from './runtimeActionRegistry';\nimport type { RuntimeBindingResultCache, RuntimeCapabilityExecutor } from './runtimeBindings';\nimport { dispatchRuntimeComponentEventWithReporting } from './runtimeEventExecution';\nimport {\n createRuntimeEventOperationBindingContext,\n createRuntimeEventOperationLifecycle,\n IDLE_RUNTIME_EVENT_OPERATION_STATE,\n} from './runtimeEventOperationLifecycle';\nimport type { RuntimeMediaAssetResolver } from './runtimeMedia';\nimport {\n RuntimeMediaResolutionCacheProvider,\n useRuntimeMediaResolutionCache,\n} from './runtimeMediaCache';\nimport { resolveRuntimeNodeProps } from './runtimeNodeProps';\nimport {\n mergeRuntimeRendererConfig,\n RuntimeRendererConfigProvider,\n type RuntimeRendererWrapArgs,\n useRuntimeRendererConfig,\n} from './RuntimeRendererConfig';\nimport {\n createRuntimeRepeatBindingContext,\n resolveRuntimeRepeatItemKey,\n resolveRuntimeRepeatItemsAsync,\n resolveRuntimeRepeatItemsSync,\n} from './runtimeRepeat';\nimport { createRepeatDiagnosticsKey } from './runtimeRepeatDiagnostics';\nimport { shouldRenderRuntimeRepeatEmptyState } from './runtimeRepeatEmptyState';\nimport { useRuntimeMediaProps } from './useRuntimeMediaProps';\nimport { useRuntimeStateBindings } from './useRuntimeStateBindings';\n\nexport interface RuntimeRendererProps {\n node: UiNode;\n isRoot?: boolean;\n registry?: ComponentRegistry;\n disableActions?: boolean;\n wrapNode?: (args: RuntimeRendererWrapArgs) => React.ReactNode;\n dbAdapter?: DbAdapter;\n dbRealtimeAdapter?: DbRealtimeAdapter;\n stateAdapter?: StateAdapter;\n bindingContext?: Record<string, unknown>;\n dataBindings?: ComponentDataBindingRegistry;\n mediaAssets?: MediaAssetRegistry;\n resolveMediaAsset?: RuntimeMediaAssetResolver;\n resultSlots?: RuntimeBindingResultCache;\n executeCapability?: RuntimeCapabilityExecutor;\n resolveEventCapability?: RuntimeEventCapabilityResolver;\n onDiagnostics?: (diagnostics: readonly DataSourceDiagnostic[]) => void;\n}\n\nexport function RuntimeRenderer(props: RuntimeRendererProps) {\n const {\n node,\n isRoot = false,\n registry,\n disableActions = false,\n wrapNode,\n dbAdapter,\n dbRealtimeAdapter,\n stateAdapter,\n bindingContext,\n dataBindings,\n mediaAssets,\n resolveMediaAsset,\n resultSlots,\n executeCapability,\n resolveEventCapability,\n onDiagnostics,\n } = props;\n const inheritedConfig = useRuntimeRendererConfig();\n const [rootEventOperationState, setRootEventOperationState] = React.useState(\n IDLE_RUNTIME_EVENT_OPERATION_STATE,\n );\n const rootEventOperationLifecycle = React.useMemo(\n () => createRuntimeEventOperationLifecycle(setRootEventOperationState),\n [],\n );\n const eventOperationState = isRoot\n ? rootEventOperationState\n : inheritedConfig.eventOperationState;\n const rootBindingContext = React.useMemo(\n () =>\n mergeRuntimeRendererConfig(\n { bindingContext },\n { bindingContext: inheritedConfig.bindingContext },\n ).bindingContext,\n [bindingContext, inheritedConfig.bindingContext],\n );\n const effectiveBindingContext = React.useMemo(\n () =>\n isRoot && eventOperationState !== undefined\n ? createRuntimeEventOperationBindingContext(rootBindingContext, eventOperationState)\n : bindingContext,\n [bindingContext, eventOperationState, isRoot, rootBindingContext],\n );\n const mediaResolutionCache = useRuntimeMediaResolutionCache();\n const inheritedResultSlots = inheritedConfig.resultSlots;\n const [localResultSlots, setLocalResultSlots] = React.useState<RuntimeBindingResultCache>({});\n const writeLocalResultSlot = React.useCallback((key: string, value: BindingValue | undefined) => {\n setLocalResultSlots((currentResults) => ({\n ...currentResults,\n [key]: value,\n }));\n }, []);\n const effectiveResultSlots = React.useMemo(\n () => ({\n ...(inheritedResultSlots ?? {}),\n ...(resultSlots ?? {}),\n ...localResultSlots,\n }),\n [inheritedResultSlots, localResultSlots, resultSlots],\n );\n const explicitConfig = React.useMemo(\n () => ({\n bindingContext: effectiveBindingContext,\n dataBindings,\n dbAdapter,\n dbRealtimeAdapter,\n disableActions,\n executeCapability,\n resolveEventCapability,\n mediaAssets,\n resultSlots: effectiveResultSlots,\n onDiagnostics,\n registry,\n resolveMediaAsset,\n stateAdapter,\n wrapNode,\n writeResultSlot: inheritedConfig.writeResultSlot ?? writeLocalResultSlot,\n eventOperationLifecycle: isRoot\n ? rootEventOperationLifecycle\n : inheritedConfig.eventOperationLifecycle,\n eventOperationState,\n }),\n [\n effectiveBindingContext,\n dataBindings,\n dbAdapter,\n dbRealtimeAdapter,\n disableActions,\n executeCapability,\n resolveEventCapability,\n effectiveResultSlots,\n inheritedConfig.writeResultSlot,\n inheritedConfig.eventOperationLifecycle,\n isRoot,\n mediaAssets,\n onDiagnostics,\n registry,\n resolveMediaAsset,\n stateAdapter,\n wrapNode,\n writeLocalResultSlot,\n eventOperationState,\n rootEventOperationLifecycle,\n ],\n );\n const effectiveConfig = React.useMemo(\n () => mergeRuntimeRendererConfig(explicitConfig, inheritedConfig),\n [explicitConfig, inheritedConfig],\n );\n useRuntimeStateBindings({\n dataBindings: effectiveConfig.dataBindings,\n nodeId: node.id,\n repeatSource: node.repeat?.source,\n stateAdapter: effectiveConfig.stateAdapter,\n });\n const dispatchRuntimeEvent = React.useCallback(\n async (eventArgs: RuntimeComponentEventDispatchArgs) => {\n await dispatchRuntimeComponentEventWithReporting({\n ...eventArgs,\n dataBindings: eventArgs.dataBindings ?? effectiveConfig.dataBindings,\n executeCapability: eventArgs.executeCapability ?? effectiveConfig.executeCapability,\n onDiagnostics: effectiveConfig.onDiagnostics,\n resultSlots: eventArgs.resultSlots ?? effectiveConfig.resultSlots,\n writeResultSlot: eventArgs.writeResultSlot ?? effectiveConfig.writeResultSlot,\n eventOperationLifecycle:\n eventArgs.eventOperationLifecycle ?? effectiveConfig.eventOperationLifecycle,\n });\n },\n [effectiveConfig],\n );\n const effectiveRegistry = React.useMemo(\n () =>\n resolveRuntimeRegistry({\n propRegistry: registry,\n configRegistry: effectiveConfig.registry,\n }),\n [effectiveConfig.registry, registry],\n );\n const Component = effectiveRegistry[node.type];\n\n const repeatSyncResult = (() => {\n const { repeat } = node;\n if (!repeat) {\n return null;\n }\n\n return resolveRuntimeRepeatItemsSync(repeat, {\n context: effectiveConfig.bindingContext,\n dataBindings: effectiveConfig.dataBindings,\n executeCapability: effectiveConfig.executeCapability,\n node,\n resultSlots: effectiveConfig.resultSlots,\n stateAdapter: effectiveConfig.stateAdapter,\n writeResultSlot: effectiveConfig.writeResultSlot,\n });\n })();\n const repeatRequest = React.useMemo(\n () =>\n node.repeat && repeatSyncResult?.status === 'pending'\n ? {\n context: effectiveConfig.bindingContext,\n dataBindings: effectiveConfig.dataBindings,\n executeCapability: effectiveConfig.executeCapability,\n node,\n repeat: node.repeat,\n resultSlots: effectiveConfig.resultSlots,\n stateAdapter: effectiveConfig.stateAdapter,\n writeResultSlot: effectiveConfig.writeResultSlot,\n }\n : null,\n [\n node,\n repeatSyncResult?.status,\n effectiveConfig.bindingContext,\n effectiveConfig.dataBindings,\n effectiveConfig.executeCapability,\n effectiveConfig.resultSlots,\n effectiveConfig.stateAdapter,\n effectiveConfig.writeResultSlot,\n ],\n );\n const repeatRequestToken = React.useMemo(() => (repeatRequest ? {} : null), [repeatRequest]);\n const [asyncRepeatResult, setAsyncRepeatResult] = React.useState<{\n readonly requestToken: object;\n readonly items: readonly BindingValue[];\n readonly diagnostics: readonly DataSourceDiagnostic[];\n } | null>(null);\n const repeatRequestIdRef = React.useRef(0);\n const lastRepeatDiagnosticsKeyRef = React.useRef<string | null>(null);\n\n React.useEffect(() => {\n repeatRequestIdRef.current += 1;\n const requestId = repeatRequestIdRef.current;\n if (repeatRequest === null || repeatRequestToken === null) {\n return undefined;\n }\n\n void (async () => {\n const result = await resolveRuntimeRepeatItemsAsync(repeatRequest.repeat, {\n context: repeatRequest.context,\n dataBindings: repeatRequest.dataBindings,\n executeCapability: repeatRequest.executeCapability,\n node: repeatRequest.node,\n resultSlots: repeatRequest.resultSlots,\n stateAdapter: repeatRequest.stateAdapter,\n writeResultSlot: repeatRequest.writeResultSlot,\n });\n\n if (repeatRequestIdRef.current !== requestId) {\n return;\n }\n\n setAsyncRepeatResult({ ...result, requestToken: repeatRequestToken });\n })();\n\n return () => {\n repeatRequestIdRef.current += 1;\n };\n }, [repeatRequest, repeatRequestToken]);\n const currentAsyncRepeatResult =\n asyncRepeatResult?.requestToken === repeatRequestToken ? asyncRepeatResult : null;\n const repeatDiagnostics =\n repeatSyncResult?.status === 'ready'\n ? repeatSyncResult.diagnostics\n : currentAsyncRepeatResult?.diagnostics;\n\n React.useEffect(() => {\n if (!node.repeat || repeatDiagnostics === undefined) {\n return;\n }\n\n const diagnosticsKey = createRepeatDiagnosticsKey(node.id, repeatDiagnostics);\n if (lastRepeatDiagnosticsKeyRef.current === diagnosticsKey) {\n return;\n }\n\n lastRepeatDiagnosticsKeyRef.current = diagnosticsKey;\n effectiveConfig.onDiagnostics?.(repeatDiagnostics);\n }, [effectiveConfig, node, repeatDiagnostics]);\n\n const bindingResolvedProps = resolveRuntimeNodeProps({\n bindingContext: effectiveConfig.bindingContext,\n dataBindings: effectiveConfig.dataBindings,\n dbAdapter: effectiveConfig.dbAdapter,\n dbRealtimeAdapter: effectiveConfig.dbRealtimeAdapter,\n node,\n resultSlots: effectiveConfig.resultSlots,\n stateAdapter: effectiveConfig.stateAdapter,\n });\n const mediaResolvedProps = useRuntimeMediaProps({\n cache: mediaResolutionCache,\n mediaAssets: effectiveConfig.mediaAssets,\n props: bindingResolvedProps,\n resolveMediaAsset: effectiveConfig.resolveMediaAsset,\n });\n const resolvedProps = effectiveConfig.resolveNodeProps\n ? effectiveConfig.resolveNodeProps({ node, props: mediaResolvedProps })\n : mediaResolvedProps;\n\n if (!Component) {\n const diagnostic = getUnknownComponentDiagnostic(node.type, effectiveRegistry);\n return (\n <View style={styles.errorBox}>\n <Text style={styles.errorTitle}>{diagnostic.title}</Text>\n <Text style={styles.errorText}>{diagnostic.suggestion}</Text>\n <Text style={styles.errorMeta}>{diagnostic.detail}</Text>\n </View>\n );\n }\n\n const repeatItems =\n repeatSyncResult?.status === 'ready' ? repeatSyncResult.items : currentAsyncRepeatResult?.items;\n const shouldRenderRepeatEmptyState = shouldRenderRuntimeRepeatEmptyState({\n diagnostics: repeatDiagnostics,\n items: repeatItems,\n status:\n repeatSyncResult?.status === 'ready'\n ? 'ready'\n : repeatSyncResult?.status === 'pending'\n ? 'pending'\n : currentAsyncRepeatResult\n ? 'ready'\n : undefined,\n });\n const renderedChildren = node.repeat\n ? repeatItems && repeatItems.length > 0\n ? repeatItems.flatMap((item, itemIndex) =>\n (node.children ?? []).map((child) => {\n const itemAlias = node.repeat?.itemAlias ?? 'item';\n const repeatKey = resolveRuntimeRepeatItemKey({\n item,\n itemAlias,\n index: itemIndex,\n keyPath: node.repeat?.keyPath,\n });\n\n return (\n <RuntimeRenderer\n key={`${child.id}:${String(repeatKey)}`}\n node={child}\n registry={effectiveRegistry}\n bindingContext={createRuntimeRepeatBindingContext({\n baseContext: effectiveConfig.bindingContext,\n item,\n itemAlias,\n })}\n />\n );\n }),\n )\n : shouldRenderRepeatEmptyState\n ? node.repeat.empty?.map((child) => (\n <RuntimeRenderer key={child.id} node={child} registry={effectiveRegistry} />\n ))\n : undefined\n : node.children?.map((child) => (\n <RuntimeRenderer key={child.id} node={child} registry={effectiveRegistry} />\n ));\n\n const propsWithEvents = wrapRuntimeEventProps({\n context: effectiveConfig.bindingContext,\n dataBindings: effectiveConfig.dataBindings,\n props: resolvedProps,\n disableActions: effectiveConfig.disableActions === true,\n dispatchComponentEvent: dispatchRuntimeEvent,\n node,\n resultSlots: effectiveConfig.resultSlots,\n resolveEventCapability: effectiveConfig.resolveEventCapability,\n });\n\n const componentChildren = resolveRenderedChildren({\n propChildren: propsWithEvents.children as React.ReactNode,\n renderedChildren,\n });\n\n let content: React.ReactNode = <Component {...propsWithEvents}>{componentChildren}</Component>;\n if (effectiveConfig.wrapNode) {\n content = effectiveConfig.wrapNode({ node, rendered: content, isRoot });\n }\n\n return (\n <RuntimeMediaResolutionCacheProvider value={mediaResolutionCache}>\n <RuntimeRendererConfigProvider value={explicitConfig}>\n {content}\n </RuntimeRendererConfigProvider>\n </RuntimeMediaResolutionCacheProvider>\n );\n}\n\nconst styles = StyleSheet.create({\n errorBox: {\n borderColor: '#ef4444',\n borderRadius: 8,\n borderWidth: 1,\n margin: 8,\n padding: 8,\n },\n errorTitle: {\n color: '#991b1b',\n fontSize: 13,\n fontWeight: '700',\n marginBottom: 4,\n },\n errorText: {\n color: '#ef4444',\n fontWeight: '600',\n },\n errorMeta: {\n color: '#7f1d1d',\n fontSize: 12,\n marginTop: 4,\n },\n});\n"]}
1
+ {"version":3,"file":"RuntimeRenderer.js","sourceRoot":"","sources":["../src/RuntimeRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {\n BindingValue,\n ComponentDataBindingRegistry,\n DataSourceDiagnostic,\n DbAdapter,\n DbRealtimeAdapter,\n MediaAssetRegistry,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport type { ComponentRegistry } from './registry';\nimport {\n getUnknownComponentDiagnostic,\n resolveRenderedChildren,\n resolveRuntimeRegistry,\n} from './rendering';\nimport {\n type RuntimeComponentEventDispatchArgs,\n type RuntimeEventCapabilityResolver,\n wrapRuntimeEventProps,\n} from './runtimeActionRegistry';\nimport type { RuntimeBindingResultCache, RuntimeCapabilityExecutor } from './runtimeBindings';\nimport { dispatchRuntimeComponentEventWithReporting } from './runtimeEventExecution';\nimport {\n createRuntimeEventOperationBindingContext,\n createRuntimeEventOperationLifecycle,\n IDLE_RUNTIME_EVENT_OPERATION_STATE,\n} from './runtimeEventOperationLifecycle';\nimport type { RuntimeMediaAssetResolver } from './runtimeMedia';\nimport {\n RuntimeMediaResolutionCacheProvider,\n useRuntimeMediaResolutionCache,\n} from './runtimeMediaCache';\nimport { resolveRuntimeNodeProps } from './runtimeNodeProps';\nimport {\n mergeRuntimeRendererConfig,\n RuntimeRendererConfigProvider,\n type RuntimeRendererWrapArgs,\n useRuntimeRendererConfig,\n} from './RuntimeRendererConfig';\nimport {\n createRuntimeRepeatBindingContext,\n resolveRuntimeRepeatItemKey,\n resolveRuntimeRepeatItemsAsync,\n resolveRuntimeRepeatItemsSync,\n} from './runtimeRepeat';\nimport { createRepeatDiagnosticsKey } from './runtimeRepeatDiagnostics';\nimport { shouldRenderRuntimeRepeatEmptyState } from './runtimeRepeatEmptyState';\nimport { useRuntimeMediaProps } from './useRuntimeMediaProps';\nimport { useRuntimeStateBindings } from './useRuntimeStateBindings';\n\nexport interface RuntimeRendererProps {\n node: UiNode;\n isRoot?: boolean;\n registry?: ComponentRegistry;\n disableActions?: boolean;\n wrapNode?: (args: RuntimeRendererWrapArgs) => React.ReactNode;\n dbAdapter?: DbAdapter;\n dbRealtimeAdapter?: DbRealtimeAdapter;\n stateAdapter?: StateAdapter;\n bindingContext?: Record<string, unknown>;\n dataBindings?: ComponentDataBindingRegistry;\n mediaAssets?: MediaAssetRegistry;\n resolveMediaAsset?: RuntimeMediaAssetResolver;\n resultSlots?: RuntimeBindingResultCache;\n executeCapability?: RuntimeCapabilityExecutor;\n resolveEventCapability?: RuntimeEventCapabilityResolver;\n onDiagnostics?: (diagnostics: readonly DataSourceDiagnostic[]) => void;\n}\n\nexport function RuntimeRenderer(props: RuntimeRendererProps) {\n const {\n node,\n isRoot = false,\n registry,\n disableActions = false,\n wrapNode,\n dbAdapter,\n dbRealtimeAdapter,\n stateAdapter,\n bindingContext,\n dataBindings,\n mediaAssets,\n resolveMediaAsset,\n resultSlots,\n executeCapability,\n resolveEventCapability,\n onDiagnostics,\n } = props;\n const inheritedConfig = useRuntimeRendererConfig();\n const [rootEventOperationState, setRootEventOperationState] = React.useState(\n IDLE_RUNTIME_EVENT_OPERATION_STATE,\n );\n const rootEventOperationLifecycle = React.useMemo(\n () => createRuntimeEventOperationLifecycle(setRootEventOperationState),\n [],\n );\n const eventOperationState = isRoot\n ? rootEventOperationState\n : inheritedConfig.eventOperationState;\n const rootBindingContext = React.useMemo(\n () =>\n mergeRuntimeRendererConfig(\n { bindingContext },\n { bindingContext: inheritedConfig.bindingContext },\n ).bindingContext,\n [bindingContext, inheritedConfig.bindingContext],\n );\n const effectiveBindingContext = React.useMemo(\n () =>\n isRoot && eventOperationState !== undefined\n ? createRuntimeEventOperationBindingContext(rootBindingContext, eventOperationState)\n : bindingContext,\n [bindingContext, eventOperationState, isRoot, rootBindingContext],\n );\n const mediaResolutionCache = useRuntimeMediaResolutionCache();\n const inheritedResultSlots = inheritedConfig.resultSlots;\n const [localResultSlots, setLocalResultSlots] = React.useState<RuntimeBindingResultCache>({});\n const writeLocalResultSlot = React.useCallback((key: string, value: BindingValue | undefined) => {\n setLocalResultSlots((currentResults) => ({\n ...currentResults,\n [key]: value,\n }));\n }, []);\n const effectiveResultSlots = React.useMemo(\n () => ({\n ...(inheritedResultSlots ?? {}),\n ...(resultSlots ?? {}),\n ...localResultSlots,\n }),\n [inheritedResultSlots, localResultSlots, resultSlots],\n );\n const explicitConfig = React.useMemo(\n () => ({\n bindingContext: effectiveBindingContext,\n dataBindings,\n dbAdapter,\n dbRealtimeAdapter,\n disableActions,\n executeCapability,\n resolveEventCapability,\n mediaAssets,\n resultSlots: effectiveResultSlots,\n onDiagnostics,\n registry,\n resolveMediaAsset,\n stateAdapter,\n wrapNode,\n writeResultSlot: inheritedConfig.writeResultSlot ?? writeLocalResultSlot,\n eventOperationLifecycle: isRoot\n ? rootEventOperationLifecycle\n : inheritedConfig.eventOperationLifecycle,\n eventOperationState,\n }),\n [\n effectiveBindingContext,\n dataBindings,\n dbAdapter,\n dbRealtimeAdapter,\n disableActions,\n executeCapability,\n resolveEventCapability,\n effectiveResultSlots,\n inheritedConfig.writeResultSlot,\n inheritedConfig.eventOperationLifecycle,\n isRoot,\n mediaAssets,\n onDiagnostics,\n registry,\n resolveMediaAsset,\n stateAdapter,\n wrapNode,\n writeLocalResultSlot,\n eventOperationState,\n rootEventOperationLifecycle,\n ],\n );\n const effectiveConfig = React.useMemo(\n () => mergeRuntimeRendererConfig(explicitConfig, inheritedConfig),\n [explicitConfig, inheritedConfig],\n );\n useRuntimeStateBindings({\n dataBindings: effectiveConfig.dataBindings,\n nodeId: node.id,\n repeatSource: node.repeat?.source,\n stateAdapter: effectiveConfig.stateAdapter,\n });\n const dispatchRuntimeEvent = React.useCallback(\n async (eventArgs: RuntimeComponentEventDispatchArgs) => {\n await dispatchRuntimeComponentEventWithReporting({\n ...eventArgs,\n dataBindings: eventArgs.dataBindings ?? effectiveConfig.dataBindings,\n executeCapability: eventArgs.executeCapability ?? effectiveConfig.executeCapability,\n onDiagnostics: effectiveConfig.onDiagnostics,\n resultSlots: eventArgs.resultSlots ?? effectiveConfig.resultSlots,\n writeResultSlot: eventArgs.writeResultSlot ?? effectiveConfig.writeResultSlot,\n eventOperationLifecycle:\n eventArgs.eventOperationLifecycle ?? effectiveConfig.eventOperationLifecycle,\n });\n },\n [effectiveConfig],\n );\n const effectiveRegistry = React.useMemo(\n () =>\n resolveRuntimeRegistry({\n propRegistry: registry,\n configRegistry: effectiveConfig.registry,\n }),\n [effectiveConfig.registry, registry],\n );\n const Component = effectiveRegistry[node.type];\n\n const repeatSyncResult = (() => {\n const { repeat } = node;\n if (!repeat) {\n return null;\n }\n\n return resolveRuntimeRepeatItemsSync(repeat, {\n context: effectiveConfig.bindingContext,\n dataBindings: effectiveConfig.dataBindings,\n executeCapability: effectiveConfig.executeCapability,\n node,\n resultSlots: effectiveConfig.resultSlots,\n stateAdapter: effectiveConfig.stateAdapter,\n writeResultSlot: effectiveConfig.writeResultSlot,\n });\n })();\n const repeatRequest = React.useMemo(\n () =>\n node.repeat && repeatSyncResult?.status === 'pending'\n ? {\n context: effectiveConfig.bindingContext,\n dataBindings: effectiveConfig.dataBindings,\n executeCapability: effectiveConfig.executeCapability,\n node,\n repeat: node.repeat,\n resultSlots: effectiveConfig.resultSlots,\n stateAdapter: effectiveConfig.stateAdapter,\n writeResultSlot: effectiveConfig.writeResultSlot,\n }\n : null,\n [\n node,\n repeatSyncResult?.status,\n effectiveConfig.bindingContext,\n effectiveConfig.dataBindings,\n effectiveConfig.executeCapability,\n effectiveConfig.resultSlots,\n effectiveConfig.stateAdapter,\n effectiveConfig.writeResultSlot,\n ],\n );\n const repeatRequestToken = React.useMemo(() => (repeatRequest ? {} : null), [repeatRequest]);\n const [asyncRepeatResult, setAsyncRepeatResult] = React.useState<{\n readonly requestToken: object;\n readonly items: readonly BindingValue[];\n readonly diagnostics: readonly DataSourceDiagnostic[];\n } | null>(null);\n const repeatRequestIdRef = React.useRef(0);\n const lastRepeatDiagnosticsKeyRef = React.useRef<string | null>(null);\n\n React.useEffect(() => {\n repeatRequestIdRef.current += 1;\n const requestId = repeatRequestIdRef.current;\n if (repeatRequest === null || repeatRequestToken === null) {\n return undefined;\n }\n\n void (async () => {\n const result = await resolveRuntimeRepeatItemsAsync(repeatRequest.repeat, {\n context: repeatRequest.context,\n dataBindings: repeatRequest.dataBindings,\n executeCapability: repeatRequest.executeCapability,\n node: repeatRequest.node,\n resultSlots: repeatRequest.resultSlots,\n stateAdapter: repeatRequest.stateAdapter,\n writeResultSlot: repeatRequest.writeResultSlot,\n });\n\n if (repeatRequestIdRef.current !== requestId) {\n return;\n }\n\n setAsyncRepeatResult({ ...result, requestToken: repeatRequestToken });\n })();\n\n return () => {\n repeatRequestIdRef.current += 1;\n };\n }, [repeatRequest, repeatRequestToken]);\n const currentAsyncRepeatResult =\n asyncRepeatResult?.requestToken === repeatRequestToken ? asyncRepeatResult : null;\n const repeatDiagnostics =\n repeatSyncResult?.status === 'ready'\n ? repeatSyncResult.diagnostics\n : currentAsyncRepeatResult?.diagnostics;\n\n React.useEffect(() => {\n if (!node.repeat || repeatDiagnostics === undefined) {\n return;\n }\n\n const diagnosticsKey = createRepeatDiagnosticsKey(node.id, repeatDiagnostics);\n if (lastRepeatDiagnosticsKeyRef.current === diagnosticsKey) {\n return;\n }\n\n lastRepeatDiagnosticsKeyRef.current = diagnosticsKey;\n effectiveConfig.onDiagnostics?.(repeatDiagnostics);\n }, [effectiveConfig, node, repeatDiagnostics]);\n\n const bindingResolvedProps = resolveRuntimeNodeProps({\n bindingContext: effectiveConfig.bindingContext,\n dataBindings: effectiveConfig.dataBindings,\n dbAdapter: effectiveConfig.dbAdapter,\n dbRealtimeAdapter: effectiveConfig.dbRealtimeAdapter,\n node,\n resultSlots: effectiveConfig.resultSlots,\n stateAdapter: effectiveConfig.stateAdapter,\n });\n const mediaResolvedProps = useRuntimeMediaProps({\n cache: mediaResolutionCache,\n mediaAssets: effectiveConfig.mediaAssets,\n props: bindingResolvedProps,\n resolveMediaAsset: effectiveConfig.resolveMediaAsset,\n });\n const resolvedProps = effectiveConfig.resolveNodeProps\n ? effectiveConfig.resolveNodeProps({ node, props: mediaResolvedProps })\n : mediaResolvedProps;\n\n if (!Component) {\n const diagnostic = getUnknownComponentDiagnostic(node.type, effectiveRegistry);\n return (\n <View style={styles.errorBox}>\n <Text style={styles.errorTitle}>{diagnostic.title}</Text>\n <Text style={styles.errorText}>{diagnostic.suggestion}</Text>\n <Text style={styles.errorMeta}>{diagnostic.detail}</Text>\n </View>\n );\n }\n\n const repeatItems =\n repeatSyncResult?.status === 'ready' ? repeatSyncResult.items : currentAsyncRepeatResult?.items;\n const shouldRenderRepeatEmptyState = shouldRenderRuntimeRepeatEmptyState({\n diagnostics: repeatDiagnostics,\n items: repeatItems,\n status:\n repeatSyncResult?.status === 'ready'\n ? 'ready'\n : repeatSyncResult?.status === 'pending'\n ? 'pending'\n : currentAsyncRepeatResult\n ? 'ready'\n : undefined,\n });\n const renderedChildren = node.repeat\n ? repeatItems && repeatItems.length > 0\n ? repeatItems.flatMap((item, itemIndex) =>\n (node.children ?? []).map((child) => {\n const itemAlias = node.repeat?.itemAlias ?? 'item';\n const repeatKey = resolveRuntimeRepeatItemKey({\n item,\n itemAlias,\n index: itemIndex,\n keyPath: node.repeat?.keyPath,\n });\n\n return (\n <RuntimeRenderer\n key={`${child.id}:${String(repeatKey)}`}\n node={child}\n registry={effectiveRegistry}\n bindingContext={createRuntimeRepeatBindingContext({\n baseContext: effectiveConfig.bindingContext,\n item,\n itemAlias,\n })}\n />\n );\n }),\n )\n : shouldRenderRepeatEmptyState\n ? node.repeat.empty?.map((child) => (\n <RuntimeRenderer key={child.id} node={child} registry={effectiveRegistry} />\n ))\n : undefined\n : node.children?.map((child) => (\n <RuntimeRenderer key={child.id} node={child} registry={effectiveRegistry} />\n ));\n\n const propsWithEvents = wrapRuntimeEventProps({\n context: effectiveConfig.bindingContext,\n dataBindings: effectiveConfig.dataBindings,\n props: resolvedProps,\n disableActions: effectiveConfig.disableActions === true,\n dispatchComponentEvent: dispatchRuntimeEvent,\n node,\n resultSlots: effectiveConfig.resultSlots,\n resolveEventCapability: effectiveConfig.resolveEventCapability,\n });\n\n const componentChildren = resolveRenderedChildren({\n propChildren: propsWithEvents.children as React.ReactNode,\n renderedChildren,\n });\n\n let content: React.ReactNode = <Component {...propsWithEvents}>{componentChildren}</Component>;\n if (effectiveConfig.wrapNode) {\n content = effectiveConfig.wrapNode({ node, rendered: content, isRoot });\n }\n\n return (\n <RuntimeMediaResolutionCacheProvider value={mediaResolutionCache}>\n <RuntimeRendererConfigProvider value={explicitConfig}>\n {content}\n </RuntimeRendererConfigProvider>\n </RuntimeMediaResolutionCacheProvider>\n );\n}\n\nconst styles = StyleSheet.create({\n errorBox: {\n borderColor: '#ef4444',\n borderRadius: 8,\n borderWidth: 1,\n margin: 8,\n padding: 8,\n },\n errorTitle: {\n color: '#991b1b',\n fontSize: 13,\n fontWeight: '700',\n marginBottom: 4,\n },\n errorText: {\n color: '#ef4444',\n fontWeight: '600',\n },\n errorMeta: {\n color: '#7f1d1d',\n fontSize: 12,\n marginTop: 4,\n },\n});\n"]}
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import React, { createContext, use } from 'react';
2
3
  const EMPTY_RUNTIME_RENDERER_CONFIG = {};
3
4
  const RuntimeRendererConfigContext = createContext(EMPTY_RUNTIME_RENDERER_CONFIG);
@@ -53,7 +54,7 @@ export function RuntimeRendererConfigProvider(props) {
53
54
  const { value, children } = props;
54
55
  const inheritedConfig = use(RuntimeRendererConfigContext);
55
56
  const mergedConfig = mergeRuntimeRendererConfig(value, inheritedConfig);
56
- return (<RuntimeRendererConfigContext value={mergedConfig}>{children}</RuntimeRendererConfigContext>);
57
+ return (_jsx(RuntimeRendererConfigContext, { value: mergedConfig, children: children }));
57
58
  }
58
59
  export function useRuntimeRendererConfig() {
59
60
  return use(RuntimeRendererConfigContext);
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeRendererConfig.js","sourceRoot":"","sources":["../src/RuntimeRendererConfig.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {\n ComponentDataBindingRegistry,\n DataSourceDiagnostic,\n DbAdapter,\n DbRealtimeAdapter,\n MediaAssetRegistry,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport type { RuntimeNodePropsResolver } from '@ankhorage/contracts/runtime';\nimport React, { createContext, use } from 'react';\n\nimport type { ComponentRegistry } from './registry';\nimport type { RuntimeEventCapabilityResolver } from './runtimeActionRegistry';\nimport type {\n RuntimeBindingResultCache,\n RuntimeBindingResultWriter,\n RuntimeCapabilityExecutor,\n} from './runtimeBindings';\nimport type {\n RuntimeEventOperationLifecycle,\n RuntimeEventOperationState,\n} from './runtimeEventOperationLifecycle';\nimport type { RuntimeMediaAssetResolver } from './runtimeMedia';\n\nexport type {\n RuntimeNodePropsResolver,\n RuntimeResolveNodePropsArgs,\n} from '@ankhorage/contracts/runtime';\n\nexport interface RuntimeRendererWrapArgs {\n node: UiNode;\n rendered: React.ReactNode;\n isRoot: boolean;\n}\n\nexport interface RuntimeRendererConfig {\n disableActions?: boolean;\n registry?: ComponentRegistry;\n wrapNode?: (args: RuntimeRendererWrapArgs) => React.ReactNode;\n resolveNodeProps?: RuntimeNodePropsResolver;\n resolveMediaAsset?: RuntimeMediaAssetResolver;\n mediaAssets?: MediaAssetRegistry;\n dbAdapter?: DbAdapter;\n dbRealtimeAdapter?: DbRealtimeAdapter;\n stateAdapter?: StateAdapter;\n bindingContext?: Record<string, unknown>;\n dataBindings?: ComponentDataBindingRegistry;\n resultSlots?: RuntimeBindingResultCache;\n writeResultSlot?: RuntimeBindingResultWriter;\n executeCapability?: RuntimeCapabilityExecutor;\n resolveEventCapability?: RuntimeEventCapabilityResolver;\n onDiagnostics?: (diagnostics: readonly DataSourceDiagnostic[]) => void;\n eventOperationLifecycle?: RuntimeEventOperationLifecycle;\n eventOperationState?: RuntimeEventOperationState;\n}\n\nconst EMPTY_RUNTIME_RENDERER_CONFIG: RuntimeRendererConfig = {};\n\nconst RuntimeRendererConfigContext = createContext<RuntimeRendererConfig>(\n EMPTY_RUNTIME_RENDERER_CONFIG,\n);\n\nexport function composeRuntimeRendererWrapNode(\n innerWrapNode?: RuntimeRendererConfig['wrapNode'],\n outerWrapNode?: RuntimeRendererConfig['wrapNode'],\n): RuntimeRendererConfig['wrapNode'] {\n if (!innerWrapNode) {\n return outerWrapNode;\n }\n\n if (!outerWrapNode) {\n return innerWrapNode;\n }\n\n return (args) => outerWrapNode({ ...args, rendered: innerWrapNode(args) });\n}\n\nexport function composeRuntimeNodePropsResolver(\n localResolver?: RuntimeRendererConfig['resolveNodeProps'],\n inheritedResolver?: RuntimeRendererConfig['resolveNodeProps'],\n): RuntimeRendererConfig['resolveNodeProps'] {\n if (!localResolver) {\n return inheritedResolver;\n }\n\n if (!inheritedResolver) {\n return localResolver;\n }\n\n return (args) => {\n const inheritedProps = inheritedResolver(args);\n return localResolver({ ...args, props: inheritedProps });\n };\n}\n\nexport function mergeRuntimeRendererConfig(\n localConfig: RuntimeRendererConfig | undefined,\n inheritedConfig: RuntimeRendererConfig | undefined,\n): RuntimeRendererConfig {\n if (!localConfig && !inheritedConfig) {\n return EMPTY_RUNTIME_RENDERER_CONFIG;\n }\n\n const bindingContext = mergeRecordConfig(\n inheritedConfig?.bindingContext,\n localConfig?.bindingContext,\n );\n const resultSlots = mergeRecordConfig(inheritedConfig?.resultSlots, localConfig?.resultSlots);\n\n return {\n disableActions:\n localConfig?.disableActions === true || inheritedConfig?.disableActions === true,\n registry: localConfig?.registry ?? inheritedConfig?.registry,\n wrapNode: composeRuntimeRendererWrapNode(localConfig?.wrapNode, inheritedConfig?.wrapNode),\n resolveNodeProps: composeRuntimeNodePropsResolver(\n localConfig?.resolveNodeProps,\n inheritedConfig?.resolveNodeProps,\n ),\n resolveMediaAsset: localConfig?.resolveMediaAsset ?? inheritedConfig?.resolveMediaAsset,\n mediaAssets: localConfig?.mediaAssets ?? inheritedConfig?.mediaAssets,\n dbAdapter: localConfig?.dbAdapter ?? inheritedConfig?.dbAdapter,\n dbRealtimeAdapter: localConfig?.dbRealtimeAdapter ?? inheritedConfig?.dbRealtimeAdapter,\n stateAdapter: localConfig?.stateAdapter ?? inheritedConfig?.stateAdapter,\n bindingContext,\n dataBindings: localConfig?.dataBindings ?? inheritedConfig?.dataBindings,\n resultSlots,\n writeResultSlot: localConfig?.writeResultSlot ?? inheritedConfig?.writeResultSlot,\n executeCapability: localConfig?.executeCapability ?? inheritedConfig?.executeCapability,\n resolveEventCapability:\n localConfig?.resolveEventCapability ?? inheritedConfig?.resolveEventCapability,\n onDiagnostics: localConfig?.onDiagnostics ?? inheritedConfig?.onDiagnostics,\n eventOperationLifecycle:\n localConfig?.eventOperationLifecycle ?? inheritedConfig?.eventOperationLifecycle,\n eventOperationState: localConfig?.eventOperationState ?? inheritedConfig?.eventOperationState,\n };\n}\n\nexport function RuntimeRendererConfigProvider(props: {\n value: RuntimeRendererConfig;\n children: React.ReactNode;\n}) {\n const { value, children } = props;\n const inheritedConfig = use(RuntimeRendererConfigContext);\n const mergedConfig = mergeRuntimeRendererConfig(value, inheritedConfig);\n\n return (\n <RuntimeRendererConfigContext value={mergedConfig}>{children}</RuntimeRendererConfigContext>\n );\n}\n\nexport function useRuntimeRendererConfig(): RuntimeRendererConfig {\n return use(RuntimeRendererConfigContext);\n}\n\nfunction mergeRecordConfig<TValue>(\n inherited: Readonly<Record<string, TValue>> | undefined,\n local: Readonly<Record<string, TValue>> | undefined,\n): Record<string, TValue> | undefined {\n if (!inherited && !local) return undefined;\n\n return {\n ...(inherited ?? {}),\n ...(local ?? {}),\n };\n}\n"]}
1
+ {"version":3,"file":"RuntimeRendererConfig.js","sourceRoot":"","sources":["../src/RuntimeRendererConfig.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {\n ComponentDataBindingRegistry,\n DataSourceDiagnostic,\n DbAdapter,\n DbRealtimeAdapter,\n MediaAssetRegistry,\n StateAdapter,\n UiNode,\n} from '@ankhorage/contracts';\nimport type { RuntimeNodePropsResolver } from '@ankhorage/contracts/runtime';\nimport React, { createContext, use } from 'react';\n\nimport type { ComponentRegistry } from './registry';\nimport type { RuntimeEventCapabilityResolver } from './runtimeActionRegistry';\nimport type {\n RuntimeBindingResultCache,\n RuntimeBindingResultWriter,\n RuntimeCapabilityExecutor,\n} from './runtimeBindings';\nimport type {\n RuntimeEventOperationLifecycle,\n RuntimeEventOperationState,\n} from './runtimeEventOperationLifecycle';\nimport type { RuntimeMediaAssetResolver } from './runtimeMedia';\n\nexport type {\n RuntimeNodePropsResolver,\n RuntimeResolveNodePropsArgs,\n} from '@ankhorage/contracts/runtime';\n\nexport interface RuntimeRendererWrapArgs {\n node: UiNode;\n rendered: React.ReactNode;\n isRoot: boolean;\n}\n\nexport interface RuntimeRendererConfig {\n disableActions?: boolean;\n registry?: ComponentRegistry;\n wrapNode?: (args: RuntimeRendererWrapArgs) => React.ReactNode;\n resolveNodeProps?: RuntimeNodePropsResolver;\n resolveMediaAsset?: RuntimeMediaAssetResolver;\n mediaAssets?: MediaAssetRegistry;\n dbAdapter?: DbAdapter;\n dbRealtimeAdapter?: DbRealtimeAdapter;\n stateAdapter?: StateAdapter;\n bindingContext?: Record<string, unknown>;\n dataBindings?: ComponentDataBindingRegistry;\n resultSlots?: RuntimeBindingResultCache;\n writeResultSlot?: RuntimeBindingResultWriter;\n executeCapability?: RuntimeCapabilityExecutor;\n resolveEventCapability?: RuntimeEventCapabilityResolver;\n onDiagnostics?: (diagnostics: readonly DataSourceDiagnostic[]) => void;\n eventOperationLifecycle?: RuntimeEventOperationLifecycle;\n eventOperationState?: RuntimeEventOperationState;\n}\n\nconst EMPTY_RUNTIME_RENDERER_CONFIG: RuntimeRendererConfig = {};\n\nconst RuntimeRendererConfigContext = createContext<RuntimeRendererConfig>(\n EMPTY_RUNTIME_RENDERER_CONFIG,\n);\n\nexport function composeRuntimeRendererWrapNode(\n innerWrapNode?: RuntimeRendererConfig['wrapNode'],\n outerWrapNode?: RuntimeRendererConfig['wrapNode'],\n): RuntimeRendererConfig['wrapNode'] {\n if (!innerWrapNode) {\n return outerWrapNode;\n }\n\n if (!outerWrapNode) {\n return innerWrapNode;\n }\n\n return (args) => outerWrapNode({ ...args, rendered: innerWrapNode(args) });\n}\n\nexport function composeRuntimeNodePropsResolver(\n localResolver?: RuntimeRendererConfig['resolveNodeProps'],\n inheritedResolver?: RuntimeRendererConfig['resolveNodeProps'],\n): RuntimeRendererConfig['resolveNodeProps'] {\n if (!localResolver) {\n return inheritedResolver;\n }\n\n if (!inheritedResolver) {\n return localResolver;\n }\n\n return (args) => {\n const inheritedProps = inheritedResolver(args);\n return localResolver({ ...args, props: inheritedProps });\n };\n}\n\nexport function mergeRuntimeRendererConfig(\n localConfig: RuntimeRendererConfig | undefined,\n inheritedConfig: RuntimeRendererConfig | undefined,\n): RuntimeRendererConfig {\n if (!localConfig && !inheritedConfig) {\n return EMPTY_RUNTIME_RENDERER_CONFIG;\n }\n\n const bindingContext = mergeRecordConfig(\n inheritedConfig?.bindingContext,\n localConfig?.bindingContext,\n );\n const resultSlots = mergeRecordConfig(inheritedConfig?.resultSlots, localConfig?.resultSlots);\n\n return {\n disableActions:\n localConfig?.disableActions === true || inheritedConfig?.disableActions === true,\n registry: localConfig?.registry ?? inheritedConfig?.registry,\n wrapNode: composeRuntimeRendererWrapNode(localConfig?.wrapNode, inheritedConfig?.wrapNode),\n resolveNodeProps: composeRuntimeNodePropsResolver(\n localConfig?.resolveNodeProps,\n inheritedConfig?.resolveNodeProps,\n ),\n resolveMediaAsset: localConfig?.resolveMediaAsset ?? inheritedConfig?.resolveMediaAsset,\n mediaAssets: localConfig?.mediaAssets ?? inheritedConfig?.mediaAssets,\n dbAdapter: localConfig?.dbAdapter ?? inheritedConfig?.dbAdapter,\n dbRealtimeAdapter: localConfig?.dbRealtimeAdapter ?? inheritedConfig?.dbRealtimeAdapter,\n stateAdapter: localConfig?.stateAdapter ?? inheritedConfig?.stateAdapter,\n bindingContext,\n dataBindings: localConfig?.dataBindings ?? inheritedConfig?.dataBindings,\n resultSlots,\n writeResultSlot: localConfig?.writeResultSlot ?? inheritedConfig?.writeResultSlot,\n executeCapability: localConfig?.executeCapability ?? inheritedConfig?.executeCapability,\n resolveEventCapability:\n localConfig?.resolveEventCapability ?? inheritedConfig?.resolveEventCapability,\n onDiagnostics: localConfig?.onDiagnostics ?? inheritedConfig?.onDiagnostics,\n eventOperationLifecycle:\n localConfig?.eventOperationLifecycle ?? inheritedConfig?.eventOperationLifecycle,\n eventOperationState: localConfig?.eventOperationState ?? inheritedConfig?.eventOperationState,\n };\n}\n\nexport function RuntimeRendererConfigProvider(props: {\n value: RuntimeRendererConfig;\n children: React.ReactNode;\n}) {\n const { value, children } = props;\n const inheritedConfig = use(RuntimeRendererConfigContext);\n const mergedConfig = mergeRuntimeRendererConfig(value, inheritedConfig);\n\n return (\n <RuntimeRendererConfigContext value={mergedConfig}>{children}</RuntimeRendererConfigContext>\n );\n}\n\nexport function useRuntimeRendererConfig(): RuntimeRendererConfig {\n return use(RuntimeRendererConfigContext);\n}\n\nfunction mergeRecordConfig<TValue>(\n inherited: Readonly<Record<string, TValue>> | undefined,\n local: Readonly<Record<string, TValue>> | undefined,\n): Record<string, TValue> | undefined {\n if (!inherited && !local) return undefined;\n\n return {\n ...(inherited ?? {}),\n ...(local ?? {}),\n };\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import React from 'react';
2
3
  import { useOptionalManifestContext } from './ManifestContext';
3
4
  import { createRuntimeApiCapabilityExecutor } from './runtimeApiCapabilities';
@@ -25,6 +26,6 @@ export function RuntimeScreen(props) {
25
26
  onDiagnostics: runtimeConfig.onDiagnostics,
26
27
  screen,
27
28
  });
28
- return (<RuntimeRenderer key={`${screen.id}:${screenOperationLoaders.renderVersion}`} node={screen.root} isRoot registry={registry} stateAdapter={stateAdapter} dataBindings={manifest.dataBindings} mediaAssets={manifest.media?.assets} resultSlots={screenOperationLoaders.resultSlots} executeCapability={executeCapability}/>);
29
+ return (_jsx(RuntimeRenderer, { node: screen.root, isRoot: true, registry: registry, stateAdapter: stateAdapter, dataBindings: manifest.dataBindings, mediaAssets: manifest.media?.assets, resultSlots: screenOperationLoaders.resultSlots, executeCapability: executeCapability }, `${screen.id}:${screenOperationLoaders.renderVersion}`));
29
30
  }
30
31
  //# sourceMappingURL=RuntimeScreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeScreen.js","sourceRoot":"","sources":["../src/RuntimeScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AASxE,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC;IACjF,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAC;IACjD,MAAM,eAAe,GAAG,0BAA0B,EAAE,CAAC;IACrD,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CACxC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAC7F,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC3B,CAAC;IACF,MAAM,YAAY,GAChB,oBAAoB,IAAI,eAAe,EAAE,YAAY,IAAI,oBAAoB,CAAC;IAChF,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CACzC,GAAG,EAAE,CAAC,kCAAkC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,EAC7E,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACtB,CAAC;IACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CACrC,GAAG,EAAE,CACH,gCAAgC,CAAC;QAC/B,qBAAqB;QACrB,kBAAkB,EAAE,aAAa,CAAC,iBAAiB;QACnD,YAAY;KACb,CAAC,EACJ,CAAC,qBAAqB,EAAE,aAAa,CAAC,iBAAiB,EAAE,YAAY,CAAC,CACvE,CAAC;IACF,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;QAC9D,cAAc,EAAE,aAAa,CAAC,cAAc;QAC5C,iBAAiB;QACjB,WAAW,EAAE,aAAa,CAAC,WAAW;QACtC,aAAa,EAAE,aAAa,CAAC,aAAa;QAC1C,MAAM;KACP,CAAC,CAAC;IAEH,OAAO,CACL,CAAC,eAAe,CACd,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,sBAAsB,CAAC,aAAa,EAAE,CAAC,CAC5D,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAClB,MAAM,CACN,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,YAAY,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CACpC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CACpC,WAAW,CAAC,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAChD,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,EACrC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import type { AppManifest, ScreenSpec, StateAdapter } from '@ankhorage/contracts';\nimport React from 'react';\n\nimport { useOptionalManifestContext } from './ManifestContext';\nimport type { ComponentRegistry } from './registry';\nimport { createRuntimeApiCapabilityExecutor } from './runtimeApiCapabilities';\nimport { composeRuntimeCapabilityExecutor } from './runtimeCapabilityExecutor';\nimport { RuntimeRenderer } from './RuntimeRenderer';\nimport { useRuntimeRendererConfig } from './RuntimeRendererConfig';\nimport { useRuntimeScreenOperationLoaders } from './runtimeScreenLoaders';\nimport { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';\n\nexport interface RuntimeScreenProps {\n readonly manifest: AppManifest;\n readonly screen: ScreenSpec;\n readonly registry?: ComponentRegistry;\n readonly stateAdapter?: StateAdapter;\n}\n\nexport function RuntimeScreen(props: RuntimeScreenProps) {\n const { manifest, screen, registry, stateAdapter: injectedStateAdapter } = props;\n const runtimeConfig = useRuntimeRendererConfig();\n const manifestContext = useOptionalManifestContext();\n const fallbackStateAdapter = React.useMemo(\n () => (manifest.state?.provider === 'legend' ? createRuntimeMemoryStateAdapter() : undefined),\n [manifest.state?.provider],\n );\n const stateAdapter =\n injectedStateAdapter ?? manifestContext?.stateAdapter ?? fallbackStateAdapter;\n const apiCapabilityExecutor = React.useMemo(\n () => createRuntimeApiCapabilityExecutor({ apis: manifest.infra.apis ?? {} }),\n [manifest.infra.apis],\n );\n const executeCapability = React.useMemo(\n () =>\n composeRuntimeCapabilityExecutor({\n apiCapabilityExecutor,\n capabilityExecutor: runtimeConfig.executeCapability,\n stateAdapter,\n }),\n [apiCapabilityExecutor, runtimeConfig.executeCapability, stateAdapter],\n );\n const screenOperationLoaders = useRuntimeScreenOperationLoaders({\n bindingContext: runtimeConfig.bindingContext,\n executeCapability,\n resultSlots: runtimeConfig.resultSlots,\n onDiagnostics: runtimeConfig.onDiagnostics,\n screen,\n });\n\n return (\n <RuntimeRenderer\n key={`${screen.id}:${screenOperationLoaders.renderVersion}`}\n node={screen.root}\n isRoot\n registry={registry}\n stateAdapter={stateAdapter}\n dataBindings={manifest.dataBindings}\n mediaAssets={manifest.media?.assets}\n resultSlots={screenOperationLoaders.resultSlots}\n executeCapability={executeCapability}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"RuntimeScreen.js","sourceRoot":"","sources":["../src/RuntimeScreen.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AASxE,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC;IACjF,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAC;IACjD,MAAM,eAAe,GAAG,0BAA0B,EAAE,CAAC;IACrD,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CACxC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAC7F,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC3B,CAAC;IACF,MAAM,YAAY,GAChB,oBAAoB,IAAI,eAAe,EAAE,YAAY,IAAI,oBAAoB,CAAC;IAChF,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CACzC,GAAG,EAAE,CAAC,kCAAkC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,EAC7E,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACtB,CAAC;IACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CACrC,GAAG,EAAE,CACH,gCAAgC,CAAC;QAC/B,qBAAqB;QACrB,kBAAkB,EAAE,aAAa,CAAC,iBAAiB;QACnD,YAAY;KACb,CAAC,EACJ,CAAC,qBAAqB,EAAE,aAAa,CAAC,iBAAiB,EAAE,YAAY,CAAC,CACvE,CAAC;IACF,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;QAC9D,cAAc,EAAE,aAAa,CAAC,cAAc;QAC5C,iBAAiB;QACjB,WAAW,EAAE,aAAa,CAAC,WAAW;QACtC,aAAa,EAAE,aAAa,CAAC,aAAa;QAC1C,MAAM;KACP,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,eAAe,IAEd,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,MAAM,QACN,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,QAAQ,CAAC,YAAY,EACnC,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EACnC,WAAW,EAAE,sBAAsB,CAAC,WAAW,EAC/C,iBAAiB,EAAE,iBAAiB,IAR/B,GAAG,MAAM,CAAC,EAAE,IAAI,sBAAsB,CAAC,aAAa,EAAE,CAS3D,CACH,CAAC;AACJ,CAAC","sourcesContent":["import type { AppManifest, ScreenSpec, StateAdapter } from '@ankhorage/contracts';\nimport React from 'react';\n\nimport { useOptionalManifestContext } from './ManifestContext';\nimport type { ComponentRegistry } from './registry';\nimport { createRuntimeApiCapabilityExecutor } from './runtimeApiCapabilities';\nimport { composeRuntimeCapabilityExecutor } from './runtimeCapabilityExecutor';\nimport { RuntimeRenderer } from './RuntimeRenderer';\nimport { useRuntimeRendererConfig } from './RuntimeRendererConfig';\nimport { useRuntimeScreenOperationLoaders } from './runtimeScreenLoaders';\nimport { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';\n\nexport interface RuntimeScreenProps {\n readonly manifest: AppManifest;\n readonly screen: ScreenSpec;\n readonly registry?: ComponentRegistry;\n readonly stateAdapter?: StateAdapter;\n}\n\nexport function RuntimeScreen(props: RuntimeScreenProps) {\n const { manifest, screen, registry, stateAdapter: injectedStateAdapter } = props;\n const runtimeConfig = useRuntimeRendererConfig();\n const manifestContext = useOptionalManifestContext();\n const fallbackStateAdapter = React.useMemo(\n () => (manifest.state?.provider === 'legend' ? createRuntimeMemoryStateAdapter() : undefined),\n [manifest.state?.provider],\n );\n const stateAdapter =\n injectedStateAdapter ?? manifestContext?.stateAdapter ?? fallbackStateAdapter;\n const apiCapabilityExecutor = React.useMemo(\n () => createRuntimeApiCapabilityExecutor({ apis: manifest.infra.apis ?? {} }),\n [manifest.infra.apis],\n );\n const executeCapability = React.useMemo(\n () =>\n composeRuntimeCapabilityExecutor({\n apiCapabilityExecutor,\n capabilityExecutor: runtimeConfig.executeCapability,\n stateAdapter,\n }),\n [apiCapabilityExecutor, runtimeConfig.executeCapability, stateAdapter],\n );\n const screenOperationLoaders = useRuntimeScreenOperationLoaders({\n bindingContext: runtimeConfig.bindingContext,\n executeCapability,\n resultSlots: runtimeConfig.resultSlots,\n onDiagnostics: runtimeConfig.onDiagnostics,\n screen,\n });\n\n return (\n <RuntimeRenderer\n key={`${screen.id}:${screenOperationLoaders.renderVersion}`}\n node={screen.root}\n isRoot\n registry={registry}\n stateAdapter={stateAdapter}\n dataBindings={manifest.dataBindings}\n mediaAssets={manifest.media?.assets}\n resultSlots={screenOperationLoaders.resultSlots}\n executeCapability={executeCapability}\n />\n );\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,8 @@ export type { RuntimeActionRegistry, RuntimeActionResolutionArgs, RuntimeActionR
7
7
  export { createComponentEventFromHandlerArgs, createRuntimeActionRegistry, dispatchRuntimeComponentEvent, resolveRuntimeActionValue, wrapRuntimeEventProps, } from './runtimeActionRegistry';
8
8
  export type { RuntimeApiCapabilityExecutorOptions } from './runtimeApiCapabilities';
9
9
  export { createRuntimeApiCapabilityExecutor } from './runtimeApiCapabilities';
10
+ export type { RuntimeAuthoringBounds, RuntimeAuthoringComponentIdentity, RuntimeAuthoringGestureDisposition, RuntimeAuthoringMode, RuntimeAuthoringOverlayAdapter, RuntimeAuthoringOverlayNodeArgs, } from './runtimeAuthoringOverlay';
11
+ export { createRuntimeAuthoringOverlayConfig } from './runtimeAuthoringOverlay';
10
12
  export type { RuntimeBindingResolutionArgs, RuntimeBindingResolutionContext, RuntimeBindingResolutionResult, RuntimeBindingResultCache, RuntimeBindingResultWriter, RuntimeCapabilityExecutionArgs, RuntimeCapabilityExecutionResult, RuntimeCapabilityExecutor, } from './runtimeBindings';
11
13
  export { applyRuntimeBindingDataPath, executeRuntimeBindingInvocation, resolveBindingInputMap, resolveBindingInputMapSync, resolveRuntimeBindingExpression, resolveRuntimeBindingExpressionSync, resolveRuntimeBindings, resolveRuntimeBindingsAsync, resolveRuntimeBindingValue, resolveRuntimeBindingValueSync, } from './runtimeBindings';
12
14
  export type { RuntimeCapabilityExecutorComposition } from './runtimeCapabilityExecutor';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export { ManifestContext, ManifestProvider, useManifest, useManifestContext, use
3
3
  export { createComponentRegistry } from './registry';
4
4
  export { createComponentEventFromHandlerArgs, createRuntimeActionRegistry, dispatchRuntimeComponentEvent, resolveRuntimeActionValue, wrapRuntimeEventProps, } from './runtimeActionRegistry';
5
5
  export { createRuntimeApiCapabilityExecutor } from './runtimeApiCapabilities';
6
+ export { createRuntimeAuthoringOverlayConfig } from './runtimeAuthoringOverlay';
6
7
  export { applyRuntimeBindingDataPath, executeRuntimeBindingInvocation, resolveBindingInputMap, resolveBindingInputMapSync, resolveRuntimeBindingExpression, resolveRuntimeBindingExpressionSync, resolveRuntimeBindings, resolveRuntimeBindingsAsync, resolveRuntimeBindingValue, resolveRuntimeBindingValueSync, } from './runtimeBindings';
7
8
  export { composeRuntimeCapabilityExecutor } from './runtimeCapabilityExecutor';
8
9
  export { dispatchRuntimeComponentEventWithReporting, } from './runtimeEventExecution';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,oCAAoC,EACpC,+BAA+B,GAChC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AASrD,OAAO,EACL,mCAAmC,EACnC,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AAW9E,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,sBAAsB,EACtB,0BAA0B,EAC1B,+BAA+B,EAC/B,mCAAmC,EACnC,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EACL,0CAA0C,GAE3C,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,yCAAyC,EACzC,oCAAoC,EACpC,kCAAkC,EAClC,wCAAwC,GACzC,MAAM,kCAAkC,CAAC;AAgB1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,0BAA0B,EAG1B,6BAA6B,EAG7B,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,OAAO,EACL,8CAA8C,EAC9C,mCAAmC,EACnC,kDAAkD,EAClD,oCAAoC,EACpC,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export type {\n RuntimeContextCapabilityId,\n RuntimeContextCapabilityResolution,\n} from './capabilities/resolveRuntimeContextCapability';\nexport {\n isRuntimeContextCapabilityOutputPath,\n resolveRuntimeContextCapability,\n} from './capabilities/resolveRuntimeContextCapability';\nexport {\n ManifestContext,\n ManifestProvider,\n useManifest,\n useManifestContext,\n useOptionalManifestContext,\n} from './ManifestContext';\nexport type { ComponentRegistry } from './registry';\nexport { createComponentRegistry } from './registry';\nexport type {\n RuntimeActionRegistry,\n RuntimeActionResolutionArgs,\n RuntimeActionResolutionScope,\n RuntimeComponentEventDispatchArgs,\n RuntimeEventCapabilityResolver,\n RuntimeEventPropWrapArgs,\n} from './runtimeActionRegistry';\nexport {\n createComponentEventFromHandlerArgs,\n createRuntimeActionRegistry,\n dispatchRuntimeComponentEvent,\n resolveRuntimeActionValue,\n wrapRuntimeEventProps,\n} from './runtimeActionRegistry';\nexport type { RuntimeApiCapabilityExecutorOptions } from './runtimeApiCapabilities';\nexport { createRuntimeApiCapabilityExecutor } from './runtimeApiCapabilities';\nexport type {\n RuntimeBindingResolutionArgs,\n RuntimeBindingResolutionContext,\n RuntimeBindingResolutionResult,\n RuntimeBindingResultCache,\n RuntimeBindingResultWriter,\n RuntimeCapabilityExecutionArgs,\n RuntimeCapabilityExecutionResult,\n RuntimeCapabilityExecutor,\n} from './runtimeBindings';\nexport {\n applyRuntimeBindingDataPath,\n executeRuntimeBindingInvocation,\n resolveBindingInputMap,\n resolveBindingInputMapSync,\n resolveRuntimeBindingExpression,\n resolveRuntimeBindingExpressionSync,\n resolveRuntimeBindings,\n resolveRuntimeBindingsAsync,\n resolveRuntimeBindingValue,\n resolveRuntimeBindingValueSync,\n} from './runtimeBindings';\nexport type { RuntimeCapabilityExecutorComposition } from './runtimeCapabilityExecutor';\nexport { composeRuntimeCapabilityExecutor } from './runtimeCapabilityExecutor';\nexport {\n dispatchRuntimeComponentEventWithReporting,\n type RuntimeEventDiagnosticsReporter,\n} from './runtimeEventExecution';\nexport type {\n RuntimeEventOperationInvocation,\n RuntimeEventOperationLifecycle,\n RuntimeEventOperationState,\n RuntimeEventOperationStatus,\n} from './runtimeEventOperationLifecycle';\nexport {\n createRuntimeEventOperationBindingContext,\n createRuntimeEventOperationLifecycle,\n IDLE_RUNTIME_EVENT_OPERATION_STATE,\n resolveRuntimeEventOperationErrorMessage,\n} from './runtimeEventOperationLifecycle';\nexport type {\n RuntimeActionDescriptor,\n RuntimeAdapterDescriptor,\n RuntimeBindingDescriptor,\n RuntimeDiagnostic,\n RuntimeManifest,\n RuntimeManifestConfig,\n RuntimeManifestInput,\n} from './runtimeManifest';\nexport type {\n RuntimeMediaAssetResolver,\n RuntimeMediaAssetResolverArgs,\n RuntimeResolvedMediaValue,\n} from './runtimeMedia';\nexport type { RuntimeRendererProps } from './RuntimeRenderer';\nexport { RuntimeRenderer } from './RuntimeRenderer';\nexport {\n composeRuntimeNodePropsResolver,\n composeRuntimeRendererWrapNode,\n mergeRuntimeRendererConfig,\n type RuntimeNodePropsResolver,\n type RuntimeRendererConfig,\n RuntimeRendererConfigProvider,\n type RuntimeRendererWrapArgs,\n type RuntimeResolveNodePropsArgs,\n useRuntimeRendererConfig,\n} from './RuntimeRendererConfig';\nexport { shouldRenderRuntimeRepeatEmptyState } from './runtimeRepeatEmptyState';\nexport type { RuntimeScreenProps } from './RuntimeScreen';\nexport { RuntimeScreen } from './RuntimeScreen';\nexport type {\n RuntimeScreenOperationLoaderExecutionResult,\n RuntimeScreenOperationLoaderState,\n} from './runtimeScreenLoaders';\nexport {\n createPendingRuntimeScreenOperationLoaderState,\n createRuntimeScreenLoaderRequestKey,\n createRuntimeScreenOperationLoaderRequestLifecycle,\n executeRuntimeScreenOperationLoaders,\n resolveScreenOperationLoaders,\n useRuntimeScreenOperationLoaders,\n} from './runtimeScreenLoaders';\nexport type { RuntimeMemoryStateAdapterOptions } from './runtimeStateAdapter';\nexport { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,oCAAoC,EACpC,+BAA+B,GAChC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AASrD,OAAO,EACL,mCAAmC,EACnC,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AAS9E,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAWhF,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,sBAAsB,EACtB,0BAA0B,EAC1B,+BAA+B,EAC/B,mCAAmC,EACnC,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EACL,0CAA0C,GAE3C,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,yCAAyC,EACzC,oCAAoC,EACpC,kCAAkC,EAClC,wCAAwC,GACzC,MAAM,kCAAkC,CAAC;AAgB1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,0BAA0B,EAG1B,6BAA6B,EAG7B,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,OAAO,EACL,8CAA8C,EAC9C,mCAAmC,EACnC,kDAAkD,EAClD,oCAAoC,EACpC,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export type {\n RuntimeContextCapabilityId,\n RuntimeContextCapabilityResolution,\n} from './capabilities/resolveRuntimeContextCapability';\nexport {\n isRuntimeContextCapabilityOutputPath,\n resolveRuntimeContextCapability,\n} from './capabilities/resolveRuntimeContextCapability';\nexport {\n ManifestContext,\n ManifestProvider,\n useManifest,\n useManifestContext,\n useOptionalManifestContext,\n} from './ManifestContext';\nexport type { ComponentRegistry } from './registry';\nexport { createComponentRegistry } from './registry';\nexport type {\n RuntimeActionRegistry,\n RuntimeActionResolutionArgs,\n RuntimeActionResolutionScope,\n RuntimeComponentEventDispatchArgs,\n RuntimeEventCapabilityResolver,\n RuntimeEventPropWrapArgs,\n} from './runtimeActionRegistry';\nexport {\n createComponentEventFromHandlerArgs,\n createRuntimeActionRegistry,\n dispatchRuntimeComponentEvent,\n resolveRuntimeActionValue,\n wrapRuntimeEventProps,\n} from './runtimeActionRegistry';\nexport type { RuntimeApiCapabilityExecutorOptions } from './runtimeApiCapabilities';\nexport { createRuntimeApiCapabilityExecutor } from './runtimeApiCapabilities';\nexport type {\n RuntimeAuthoringBounds,\n RuntimeAuthoringComponentIdentity,\n RuntimeAuthoringGestureDisposition,\n RuntimeAuthoringMode,\n RuntimeAuthoringOverlayAdapter,\n RuntimeAuthoringOverlayNodeArgs,\n} from './runtimeAuthoringOverlay';\nexport { createRuntimeAuthoringOverlayConfig } from './runtimeAuthoringOverlay';\nexport type {\n RuntimeBindingResolutionArgs,\n RuntimeBindingResolutionContext,\n RuntimeBindingResolutionResult,\n RuntimeBindingResultCache,\n RuntimeBindingResultWriter,\n RuntimeCapabilityExecutionArgs,\n RuntimeCapabilityExecutionResult,\n RuntimeCapabilityExecutor,\n} from './runtimeBindings';\nexport {\n applyRuntimeBindingDataPath,\n executeRuntimeBindingInvocation,\n resolveBindingInputMap,\n resolveBindingInputMapSync,\n resolveRuntimeBindingExpression,\n resolveRuntimeBindingExpressionSync,\n resolveRuntimeBindings,\n resolveRuntimeBindingsAsync,\n resolveRuntimeBindingValue,\n resolveRuntimeBindingValueSync,\n} from './runtimeBindings';\nexport type { RuntimeCapabilityExecutorComposition } from './runtimeCapabilityExecutor';\nexport { composeRuntimeCapabilityExecutor } from './runtimeCapabilityExecutor';\nexport {\n dispatchRuntimeComponentEventWithReporting,\n type RuntimeEventDiagnosticsReporter,\n} from './runtimeEventExecution';\nexport type {\n RuntimeEventOperationInvocation,\n RuntimeEventOperationLifecycle,\n RuntimeEventOperationState,\n RuntimeEventOperationStatus,\n} from './runtimeEventOperationLifecycle';\nexport {\n createRuntimeEventOperationBindingContext,\n createRuntimeEventOperationLifecycle,\n IDLE_RUNTIME_EVENT_OPERATION_STATE,\n resolveRuntimeEventOperationErrorMessage,\n} from './runtimeEventOperationLifecycle';\nexport type {\n RuntimeActionDescriptor,\n RuntimeAdapterDescriptor,\n RuntimeBindingDescriptor,\n RuntimeDiagnostic,\n RuntimeManifest,\n RuntimeManifestConfig,\n RuntimeManifestInput,\n} from './runtimeManifest';\nexport type {\n RuntimeMediaAssetResolver,\n RuntimeMediaAssetResolverArgs,\n RuntimeResolvedMediaValue,\n} from './runtimeMedia';\nexport type { RuntimeRendererProps } from './RuntimeRenderer';\nexport { RuntimeRenderer } from './RuntimeRenderer';\nexport {\n composeRuntimeNodePropsResolver,\n composeRuntimeRendererWrapNode,\n mergeRuntimeRendererConfig,\n type RuntimeNodePropsResolver,\n type RuntimeRendererConfig,\n RuntimeRendererConfigProvider,\n type RuntimeRendererWrapArgs,\n type RuntimeResolveNodePropsArgs,\n useRuntimeRendererConfig,\n} from './RuntimeRendererConfig';\nexport { shouldRenderRuntimeRepeatEmptyState } from './runtimeRepeatEmptyState';\nexport type { RuntimeScreenProps } from './RuntimeScreen';\nexport { RuntimeScreen } from './RuntimeScreen';\nexport type {\n RuntimeScreenOperationLoaderExecutionResult,\n RuntimeScreenOperationLoaderState,\n} from './runtimeScreenLoaders';\nexport {\n createPendingRuntimeScreenOperationLoaderState,\n createRuntimeScreenLoaderRequestKey,\n createRuntimeScreenOperationLoaderRequestLifecycle,\n executeRuntimeScreenOperationLoaders,\n resolveScreenOperationLoaders,\n useRuntimeScreenOperationLoaders,\n} from './runtimeScreenLoaders';\nexport type { RuntimeMemoryStateAdapterOptions } from './runtimeStateAdapter';\nexport { createRuntimeMemoryStateAdapter } from './runtimeStateAdapter';\n"]}
@@ -0,0 +1,38 @@
1
+ import type { UiNode } from '@ankhorage/contracts';
2
+ import type React from 'react';
3
+ import type { RuntimeRendererConfig, RuntimeRendererWrapArgs } from './RuntimeRendererConfig';
4
+ export type RuntimeAuthoringMode = 'edit' | 'preview';
5
+ export interface RuntimeAuthoringBounds {
6
+ readonly x: number;
7
+ readonly y: number;
8
+ readonly width: number;
9
+ readonly height: number;
10
+ }
11
+ export type RuntimeAuthoringGestureDisposition = 'pass-through' | 'select' | 'drag';
12
+ export interface RuntimeAuthoringComponentIdentity {
13
+ readonly componentId: string;
14
+ readonly node: UiNode;
15
+ }
16
+ export interface RuntimeAuthoringOverlayNodeArgs extends RuntimeRendererWrapArgs {
17
+ readonly component: RuntimeAuthoringComponentIdentity;
18
+ readonly reportBounds: (bounds: RuntimeAuthoringBounds) => void;
19
+ readonly select: (input: unknown) => boolean;
20
+ readonly arbitrateGesture: (input: unknown) => RuntimeAuthoringGestureDisposition;
21
+ }
22
+ export interface RuntimeAuthoringOverlayAdapter {
23
+ readonly mode: RuntimeAuthoringMode;
24
+ readonly getComponentId: (node: UiNode) => string | undefined;
25
+ readonly wrapNode: (args: RuntimeAuthoringOverlayNodeArgs) => React.ReactNode;
26
+ readonly hitTest?: (args: RuntimeAuthoringComponentIdentity & {
27
+ readonly input: unknown;
28
+ }) => boolean;
29
+ readonly onBounds?: (args: RuntimeAuthoringComponentIdentity & {
30
+ readonly bounds: RuntimeAuthoringBounds;
31
+ }) => void;
32
+ readonly arbitrateGesture?: (args: RuntimeAuthoringComponentIdentity & {
33
+ readonly input: unknown;
34
+ }) => RuntimeAuthoringGestureDisposition;
35
+ }
36
+ /*** Creates the renderer configuration that connects a host authoring overlay without importing its UI toolkit. */
37
+ export declare function createRuntimeAuthoringOverlayConfig(adapter: RuntimeAuthoringOverlayAdapter): Pick<RuntimeRendererConfig, 'disableActions' | 'wrapNode'>;
38
+ //# sourceMappingURL=runtimeAuthoringOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeAuthoringOverlay.d.ts","sourceRoot":"","sources":["../src/runtimeAuthoringOverlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE9F,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,kCAAkC,GAAG,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpF,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAC9E,QAAQ,CAAC,SAAS,EAAE,iCAAiC,CAAC;IACtD,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,kCAAkC,CAAC;CACnF;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,+BAA+B,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAE,CACjB,IAAI,EAAE,iCAAiC,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAClE,OAAO,CAAC;IACb,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAClB,IAAI,EAAE,iCAAiC,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;KAAE,KAClF,IAAI,CAAC;IACV,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAC1B,IAAI,EAAE,iCAAiC,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAClE,kCAAkC,CAAC;CACzC;AAED,mHAAmH;AACnH,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,8BAA8B,GACtC,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,GAAG,UAAU,CAAC,CAK5D"}
@@ -0,0 +1,23 @@
1
+ /*** Creates the renderer configuration that connects a host authoring overlay without importing its UI toolkit. */
2
+ export function createRuntimeAuthoringOverlayConfig(adapter) {
3
+ return {
4
+ ...(adapter.mode === 'edit' ? { disableActions: true } : {}),
5
+ wrapNode: (args) => wrapRuntimeAuthoringOverlayNode(adapter, args),
6
+ };
7
+ }
8
+ /*** Delivers stable component identity and host callbacks to a concrete overlay wrapper when the node has an identity. */
9
+ function wrapRuntimeAuthoringOverlayNode(adapter, args) {
10
+ const componentId = adapter.getComponentId(args.node);
11
+ if (!componentId) {
12
+ return args.rendered;
13
+ }
14
+ const component = { componentId, node: args.node };
15
+ return adapter.wrapNode({
16
+ ...args,
17
+ component,
18
+ reportBounds: (bounds) => adapter.onBounds?.({ ...component, bounds }),
19
+ select: (input) => adapter.hitTest?.({ ...component, input }) ?? false,
20
+ arbitrateGesture: (input) => adapter.arbitrateGesture?.({ ...component, input }) ?? 'pass-through',
21
+ });
22
+ }
23
+ //# sourceMappingURL=runtimeAuthoringOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeAuthoringOverlay.js","sourceRoot":"","sources":["../src/runtimeAuthoringOverlay.ts"],"names":[],"mappings":"AA2CA,mHAAmH;AACnH,MAAM,UAAU,mCAAmC,CACjD,OAAuC;IAEvC,OAAO;QACL,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,+BAA+B,CAAC,OAAO,EAAE,IAAI,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,0HAA0H;AAC1H,SAAS,+BAA+B,CACtC,OAAuC,EACvC,IAA6B;IAE7B,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACnD,OAAO,OAAO,CAAC,QAAQ,CAAC;QACtB,GAAG,IAAI;QACP,SAAS;QACT,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC;QACtE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK;QACtE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,cAAc;KACxE,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { UiNode } from '@ankhorage/contracts';\nimport type React from 'react';\n\nimport type { RuntimeRendererConfig, RuntimeRendererWrapArgs } from './RuntimeRendererConfig';\n\nexport type RuntimeAuthoringMode = 'edit' | 'preview';\n\nexport interface RuntimeAuthoringBounds {\n readonly x: number;\n readonly y: number;\n readonly width: number;\n readonly height: number;\n}\n\nexport type RuntimeAuthoringGestureDisposition = 'pass-through' | 'select' | 'drag';\n\nexport interface RuntimeAuthoringComponentIdentity {\n readonly componentId: string;\n readonly node: UiNode;\n}\n\nexport interface RuntimeAuthoringOverlayNodeArgs extends RuntimeRendererWrapArgs {\n readonly component: RuntimeAuthoringComponentIdentity;\n readonly reportBounds: (bounds: RuntimeAuthoringBounds) => void;\n readonly select: (input: unknown) => boolean;\n readonly arbitrateGesture: (input: unknown) => RuntimeAuthoringGestureDisposition;\n}\n\nexport interface RuntimeAuthoringOverlayAdapter {\n readonly mode: RuntimeAuthoringMode;\n readonly getComponentId: (node: UiNode) => string | undefined;\n readonly wrapNode: (args: RuntimeAuthoringOverlayNodeArgs) => React.ReactNode;\n readonly hitTest?: (\n args: RuntimeAuthoringComponentIdentity & { readonly input: unknown },\n ) => boolean;\n readonly onBounds?: (\n args: RuntimeAuthoringComponentIdentity & { readonly bounds: RuntimeAuthoringBounds },\n ) => void;\n readonly arbitrateGesture?: (\n args: RuntimeAuthoringComponentIdentity & { readonly input: unknown },\n ) => RuntimeAuthoringGestureDisposition;\n}\n\n/*** Creates the renderer configuration that connects a host authoring overlay without importing its UI toolkit. */\nexport function createRuntimeAuthoringOverlayConfig(\n adapter: RuntimeAuthoringOverlayAdapter,\n): Pick<RuntimeRendererConfig, 'disableActions' | 'wrapNode'> {\n return {\n ...(adapter.mode === 'edit' ? { disableActions: true } : {}),\n wrapNode: (args) => wrapRuntimeAuthoringOverlayNode(adapter, args),\n };\n}\n\n/*** Delivers stable component identity and host callbacks to a concrete overlay wrapper when the node has an identity. */\nfunction wrapRuntimeAuthoringOverlayNode(\n adapter: RuntimeAuthoringOverlayAdapter,\n args: RuntimeRendererWrapArgs,\n): React.ReactNode {\n const componentId = adapter.getComponentId(args.node);\n if (!componentId) {\n return args.rendered;\n }\n\n const component = { componentId, node: args.node };\n return adapter.wrapNode({\n ...args,\n component,\n reportBounds: (bounds) => adapter.onBounds?.({ ...component, bounds }),\n select: (input) => adapter.hitTest?.({ ...component, input }) ?? false,\n arbitrateGesture: (input) =>\n adapter.arbitrateGesture?.({ ...component, input }) ?? 'pass-through',\n });\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import React, { createContext, use, useMemo } from 'react';
2
3
  import { createRuntimeMediaResolutionCache, } from './runtimeMedia';
3
4
  const RuntimeMediaCacheContext = createContext(null);
@@ -7,6 +8,6 @@ export function useRuntimeMediaResolutionCache() {
7
8
  return inherited ?? local;
8
9
  }
9
10
  export function RuntimeMediaResolutionCacheProvider(props) {
10
- return <RuntimeMediaCacheContext value={props.value}>{props.children}</RuntimeMediaCacheContext>;
11
+ return _jsx(RuntimeMediaCacheContext, { value: props.value, children: props.children });
11
12
  }
12
13
  //# sourceMappingURL=runtimeMediaCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeMediaCache.js","sourceRoot":"","sources":["../src/runtimeMediaCache.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EACL,iCAAiC,GAElC,MAAM,gBAAgB,CAAC;AAExB,MAAM,wBAAwB,GAAG,aAAa,CAAqC,IAAI,CAAC,CAAC;AAEzF,MAAM,UAAU,8BAA8B;IAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,iCAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,OAAO,SAAS,IAAI,KAAK,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAGnD;IACC,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,wBAAwB,CAAC,CAAC;AACnG,CAAC","sourcesContent":["import React, { createContext, use, useMemo } from 'react';\n\nimport {\n createRuntimeMediaResolutionCache,\n type RuntimeMediaResolutionCache,\n} from './runtimeMedia';\n\nconst RuntimeMediaCacheContext = createContext<RuntimeMediaResolutionCache | null>(null);\n\nexport function useRuntimeMediaResolutionCache(): RuntimeMediaResolutionCache {\n const inherited = use(RuntimeMediaCacheContext);\n const local = useMemo(() => createRuntimeMediaResolutionCache(), []);\n return inherited ?? local;\n}\n\nexport function RuntimeMediaResolutionCacheProvider(props: {\n readonly value: RuntimeMediaResolutionCache;\n readonly children: React.ReactNode;\n}) {\n return <RuntimeMediaCacheContext value={props.value}>{props.children}</RuntimeMediaCacheContext>;\n}\n"]}
1
+ {"version":3,"file":"runtimeMediaCache.js","sourceRoot":"","sources":["../src/runtimeMediaCache.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EACL,iCAAiC,GAElC,MAAM,gBAAgB,CAAC;AAExB,MAAM,wBAAwB,GAAG,aAAa,CAAqC,IAAI,CAAC,CAAC;AAEzF,MAAM,UAAU,8BAA8B;IAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,iCAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,OAAO,SAAS,IAAI,KAAK,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAGnD;IACC,OAAO,KAAC,wBAAwB,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,YAAG,KAAK,CAAC,QAAQ,GAA4B,CAAC;AACnG,CAAC","sourcesContent":["import React, { createContext, use, useMemo } from 'react';\n\nimport {\n createRuntimeMediaResolutionCache,\n type RuntimeMediaResolutionCache,\n} from './runtimeMedia';\n\nconst RuntimeMediaCacheContext = createContext<RuntimeMediaResolutionCache | null>(null);\n\nexport function useRuntimeMediaResolutionCache(): RuntimeMediaResolutionCache {\n const inherited = use(RuntimeMediaCacheContext);\n const local = useMemo(() => createRuntimeMediaResolutionCache(), []);\n return inherited ?? local;\n}\n\nexport function RuntimeMediaResolutionCacheProvider(props: {\n readonly value: RuntimeMediaResolutionCache;\n readonly children: React.ReactNode;\n}) {\n return <RuntimeMediaCacheContext value={props.value}>{props.children}</RuntimeMediaCacheContext>;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/runtime",
3
- "version": "5.3.10",
3
+ "version": "5.4.1",
4
4
  "description": "Platform-neutral runtime renderer, contracts, and helpers for Ankhorage generated apps.",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -1,7 +1,7 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="97" height="20" role="img" aria-label="npm: v5.3.10">
2
- <title>npm: v5.3.10</title>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="90" height="20" role="img" aria-label="npm: v5.4.1">
2
+ <title>npm: v5.4.1</title>
3
3
  <rect width="38" height="20" fill="#374151"/>
4
- <rect x="38" width="59" height="20" fill="#cb3837"/>
4
+ <rect x="38" width="52" height="20" fill="#cb3837"/>
5
5
  <text x="19" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">npm</text>
6
- <text x="67.5" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v5.3.10</text>
6
+ <text x="64" y="14" fill="#ffffff" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" font-size="11" text-anchor="middle">v5.4.1</text>
7
7
  </svg>
@@ -46,6 +46,13 @@ graph TD
46
46
  module_src_runtimeApiCapabilities_ts["src/runtimeApiCapabilities.ts"]
47
47
  package__ankhorage_runtime -.-> module_src_runtimeApiCapabilities_ts
48
48
  module_src_runtimeApiCapabilities_ts --> module_src_runtimeBindings_ts
49
+ module_src_runtimeAuthoringOverlay_test_ts["src/runtimeAuthoringOverlay.test.ts"]
50
+ package__ankhorage_runtime -.-> module_src_runtimeAuthoringOverlay_test_ts
51
+ module_src_runtimeAuthoringOverlay_test_ts --> module_src_runtimeAuthoringOverlay_ts
52
+ module_src_runtimeAuthoringOverlay_test_ts --> module_src_RuntimeRendererConfig_tsx
53
+ module_src_runtimeAuthoringOverlay_ts["src/runtimeAuthoringOverlay.ts"]
54
+ package__ankhorage_runtime -.-> module_src_runtimeAuthoringOverlay_ts
55
+ module_src_runtimeAuthoringOverlay_ts --> module_src_RuntimeRendererConfig_tsx
49
56
  module_src_runtimeBindings_contracts26_test_ts["src/runtimeBindings.contracts26.test.ts"]
50
57
  package__ankhorage_runtime -.-> module_src_runtimeBindings_contracts26_test_ts
51
58
  module_src_runtimeBindings_contracts26_test_ts --> module_src_runtimeActionRegistry_ts
@@ -177,3 +184,5 @@ graph TD
177
184
  package__ankhorage_runtime -.-> module_tests_runtime_test_ts
178
185
  module_tests_runtime_test_ts --> module_src_capabilities_index_ts
179
186
  module_tests_runtime_test_ts --> module_src_runtimeManifest_ts
187
+ module_tests_runtimeBrowserArtifact_test_ts["tests/runtimeBrowserArtifact.test.ts"]
188
+ package__ankhorage_runtime -.-> module_tests_runtimeBrowserArtifact_test_ts