@cohesivesystems/presentation-react 0.1.0-alpha.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.
Files changed (252) hide show
  1. package/LICENSE +55 -0
  2. package/dist/collection-chrome-slot-renderer-registry.d.ts +12 -0
  3. package/dist/collection-chrome-slot-renderer-registry.d.ts.map +1 -0
  4. package/dist/collection-chrome-slot-renderer-registry.js +12 -0
  5. package/dist/collection-chrome-slot-renderer-registry.js.map +1 -0
  6. package/dist/collection-selection-state-context.d.ts +6 -0
  7. package/dist/collection-selection-state-context.d.ts.map +1 -0
  8. package/dist/collection-selection-state-context.js +25 -0
  9. package/dist/collection-selection-state-context.js.map +1 -0
  10. package/dist/collection-selection-state.d.ts +3 -0
  11. package/dist/collection-selection-state.d.ts.map +1 -0
  12. package/dist/collection-selection-state.js +52 -0
  13. package/dist/collection-selection-state.js.map +1 -0
  14. package/dist/document-workspace-runtime.d.ts +262 -0
  15. package/dist/document-workspace-runtime.d.ts.map +1 -0
  16. package/dist/document-workspace-runtime.js +699 -0
  17. package/dist/document-workspace-runtime.js.map +1 -0
  18. package/dist/index.d.ts +51 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +51 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/input-form-endpoint-runtime.d.ts +140 -0
  23. package/dist/input-form-endpoint-runtime.d.ts.map +1 -0
  24. package/dist/input-form-endpoint-runtime.js +280 -0
  25. package/dist/input-form-endpoint-runtime.js.map +1 -0
  26. package/dist/local-flow-state-data-source-projection.d.ts +21 -0
  27. package/dist/local-flow-state-data-source-projection.d.ts.map +1 -0
  28. package/dist/local-flow-state-data-source-projection.js +65 -0
  29. package/dist/local-flow-state-data-source-projection.js.map +1 -0
  30. package/dist/navigation-runtime-context.d.ts +22 -0
  31. package/dist/navigation-runtime-context.d.ts.map +1 -0
  32. package/dist/navigation-runtime-context.js +23 -0
  33. package/dist/navigation-runtime-context.js.map +1 -0
  34. package/dist/navigation-shell-frame-renderer-registry.d.ts +20 -0
  35. package/dist/navigation-shell-frame-renderer-registry.d.ts.map +1 -0
  36. package/dist/navigation-shell-frame-renderer-registry.js +9 -0
  37. package/dist/navigation-shell-frame-renderer-registry.js.map +1 -0
  38. package/dist/navigation-shell-region-component-registry.d.ts +50 -0
  39. package/dist/navigation-shell-region-component-registry.d.ts.map +1 -0
  40. package/dist/navigation-shell-region-component-registry.js +44 -0
  41. package/dist/navigation-shell-region-component-registry.js.map +1 -0
  42. package/dist/navigation-shell-slot-renderer-registry.d.ts +22 -0
  43. package/dist/navigation-shell-slot-renderer-registry.d.ts.map +1 -0
  44. package/dist/navigation-shell-slot-renderer-registry.js +9 -0
  45. package/dist/navigation-shell-slot-renderer-registry.js.map +1 -0
  46. package/dist/page-host-projection.d.ts +127 -0
  47. package/dist/page-host-projection.d.ts.map +1 -0
  48. package/dist/page-host-projection.js +59 -0
  49. package/dist/page-host-projection.js.map +1 -0
  50. package/dist/page-host-renderer-registry.d.ts +72 -0
  51. package/dist/page-host-renderer-registry.d.ts.map +1 -0
  52. package/dist/page-host-renderer-registry.js +63 -0
  53. package/dist/page-host-renderer-registry.js.map +1 -0
  54. package/dist/presentation-action-group-runtime-options.d.ts +36 -0
  55. package/dist/presentation-action-group-runtime-options.d.ts.map +1 -0
  56. package/dist/presentation-action-group-runtime-options.js +50 -0
  57. package/dist/presentation-action-group-runtime-options.js.map +1 -0
  58. package/dist/presentation-action-runtime.d.ts +52 -0
  59. package/dist/presentation-action-runtime.d.ts.map +1 -0
  60. package/dist/presentation-action-runtime.js +78 -0
  61. package/dist/presentation-action-runtime.js.map +1 -0
  62. package/dist/presentation-data-source-binding-runtime.d.ts +3 -0
  63. package/dist/presentation-data-source-binding-runtime.d.ts.map +1 -0
  64. package/dist/presentation-data-source-binding-runtime.js +65 -0
  65. package/dist/presentation-data-source-binding-runtime.js.map +1 -0
  66. package/dist/presentation-data-source-binding.d.ts +12 -0
  67. package/dist/presentation-data-source-binding.d.ts.map +1 -0
  68. package/dist/presentation-data-source-binding.js +13 -0
  69. package/dist/presentation-data-source-binding.js.map +1 -0
  70. package/dist/presentation-flow-runtime.d.ts +139 -0
  71. package/dist/presentation-flow-runtime.d.ts.map +1 -0
  72. package/dist/presentation-flow-runtime.js +514 -0
  73. package/dist/presentation-flow-runtime.js.map +1 -0
  74. package/dist/presentation-module-context.d.ts +4 -0
  75. package/dist/presentation-module-context.d.ts.map +1 -0
  76. package/dist/presentation-module-context.js +6 -0
  77. package/dist/presentation-module-context.js.map +1 -0
  78. package/dist/presentation-module-provider.d.ts +7 -0
  79. package/dist/presentation-module-provider.d.ts.map +1 -0
  80. package/dist/presentation-module-provider.js +7 -0
  81. package/dist/presentation-module-provider.js.map +1 -0
  82. package/dist/presentation-projection-diagnostics-context.d.ts +8 -0
  83. package/dist/presentation-projection-diagnostics-context.d.ts.map +1 -0
  84. package/dist/presentation-projection-diagnostics-context.js +3 -0
  85. package/dist/presentation-projection-diagnostics-context.js.map +1 -0
  86. package/dist/presentation-projection-diagnostics-hooks.d.ts +4 -0
  87. package/dist/presentation-projection-diagnostics-hooks.d.ts.map +1 -0
  88. package/dist/presentation-projection-diagnostics-hooks.js +17 -0
  89. package/dist/presentation-projection-diagnostics-hooks.js.map +1 -0
  90. package/dist/presentation-projection-diagnostics-runtime.d.ts +12 -0
  91. package/dist/presentation-projection-diagnostics-runtime.d.ts.map +1 -0
  92. package/dist/presentation-projection-diagnostics-runtime.js +54 -0
  93. package/dist/presentation-projection-diagnostics-runtime.js.map +1 -0
  94. package/dist/presentation-projection-trace.d.ts +27 -0
  95. package/dist/presentation-projection-trace.d.ts.map +1 -0
  96. package/dist/presentation-projection-trace.js +54 -0
  97. package/dist/presentation-projection-trace.js.map +1 -0
  98. package/dist/presentation-query-form-runtime.d.ts +30 -0
  99. package/dist/presentation-query-form-runtime.d.ts.map +1 -0
  100. package/dist/presentation-query-form-runtime.js +75 -0
  101. package/dist/presentation-query-form-runtime.js.map +1 -0
  102. package/dist/presentation-query-form-state-adapter-registry.d.ts +4 -0
  103. package/dist/presentation-query-form-state-adapter-registry.d.ts.map +1 -0
  104. package/dist/presentation-query-form-state-adapter-registry.js +13 -0
  105. package/dist/presentation-query-form-state-adapter-registry.js.map +1 -0
  106. package/dist/presentation-query-form-state-context.d.ts +20 -0
  107. package/dist/presentation-query-form-state-context.d.ts.map +1 -0
  108. package/dist/presentation-query-form-state-context.js +20 -0
  109. package/dist/presentation-query-form-state-context.js.map +1 -0
  110. package/dist/presentation-query-form-state.d.ts +29 -0
  111. package/dist/presentation-query-form-state.d.ts.map +1 -0
  112. package/dist/presentation-query-form-state.js +99 -0
  113. package/dist/presentation-query-form-state.js.map +1 -0
  114. package/dist/presentation-renderer-registry.d.ts +109 -0
  115. package/dist/presentation-renderer-registry.d.ts.map +1 -0
  116. package/dist/presentation-renderer-registry.js +25 -0
  117. package/dist/presentation-renderer-registry.js.map +1 -0
  118. package/dist/presentation-standards-context.d.ts +4 -0
  119. package/dist/presentation-standards-context.d.ts.map +1 -0
  120. package/dist/presentation-standards-context.js +12 -0
  121. package/dist/presentation-standards-context.js.map +1 -0
  122. package/dist/presentation-standards-provider.d.ts +14 -0
  123. package/dist/presentation-standards-provider.d.ts.map +1 -0
  124. package/dist/presentation-standards-provider.js +16 -0
  125. package/dist/presentation-standards-provider.js.map +1 -0
  126. package/dist/projected-document-action-runtime-bindings.d.ts +20 -0
  127. package/dist/projected-document-action-runtime-bindings.d.ts.map +1 -0
  128. package/dist/projected-document-action-runtime-bindings.js +88 -0
  129. package/dist/projected-document-action-runtime-bindings.js.map +1 -0
  130. package/dist/projected-document-action-runtime.d.ts +76 -0
  131. package/dist/projected-document-action-runtime.d.ts.map +1 -0
  132. package/dist/projected-document-action-runtime.js +224 -0
  133. package/dist/projected-document-action-runtime.js.map +1 -0
  134. package/dist/projected-document-process-preview-action-runtime-bindings.d.ts +26 -0
  135. package/dist/projected-document-process-preview-action-runtime-bindings.d.ts.map +1 -0
  136. package/dist/projected-document-process-preview-action-runtime-bindings.js +106 -0
  137. package/dist/projected-document-process-preview-action-runtime-bindings.js.map +1 -0
  138. package/dist/projected-document-process-preview-action-runtime.d.ts +321 -0
  139. package/dist/projected-document-process-preview-action-runtime.d.ts.map +1 -0
  140. package/dist/projected-document-process-preview-action-runtime.js +729 -0
  141. package/dist/projected-document-process-preview-action-runtime.js.map +1 -0
  142. package/dist/projected-document-process-preview-capability-runtime.d.ts +47 -0
  143. package/dist/projected-document-process-preview-capability-runtime.d.ts.map +1 -0
  144. package/dist/projected-document-process-preview-capability-runtime.js +49 -0
  145. package/dist/projected-document-process-preview-capability-runtime.js.map +1 -0
  146. package/dist/projected-document-workspace-action-runtime.d.ts +87 -0
  147. package/dist/projected-document-workspace-action-runtime.d.ts.map +1 -0
  148. package/dist/projected-document-workspace-action-runtime.js +150 -0
  149. package/dist/projected-document-workspace-action-runtime.js.map +1 -0
  150. package/dist/projected-document-workspace-projection-renderer-diagnostics.d.ts +18 -0
  151. package/dist/projected-document-workspace-projection-renderer-diagnostics.d.ts.map +1 -0
  152. package/dist/projected-document-workspace-projection-renderer-diagnostics.js +207 -0
  153. package/dist/projected-document-workspace-projection-renderer-diagnostics.js.map +1 -0
  154. package/dist/projected-document-workspace-runtime-binding-diagnostics.d.ts +19 -0
  155. package/dist/projected-document-workspace-runtime-binding-diagnostics.d.ts.map +1 -0
  156. package/dist/projected-document-workspace-runtime-binding-diagnostics.js +124 -0
  157. package/dist/projected-document-workspace-runtime-binding-diagnostics.js.map +1 -0
  158. package/dist/projected-navigation-provider.d.ts +16 -0
  159. package/dist/projected-navigation-provider.d.ts.map +1 -0
  160. package/dist/projected-navigation-provider.js +51 -0
  161. package/dist/projected-navigation-provider.js.map +1 -0
  162. package/dist/projected-presentation-flow-host.d.ts +16 -0
  163. package/dist/projected-presentation-flow-host.d.ts.map +1 -0
  164. package/dist/projected-presentation-flow-host.js +14 -0
  165. package/dist/projected-presentation-flow-host.js.map +1 -0
  166. package/dist/projected-query-form-state-adapter.d.ts +12 -0
  167. package/dist/projected-query-form-state-adapter.d.ts.map +1 -0
  168. package/dist/projected-query-form-state-adapter.js +361 -0
  169. package/dist/projected-query-form-state-adapter.js.map +1 -0
  170. package/dist/react-router-binding.d.ts +133 -0
  171. package/dist/react-router-binding.d.ts.map +1 -0
  172. package/dist/react-router-binding.js +76 -0
  173. package/dist/react-router-binding.js.map +1 -0
  174. package/dist/react-router-path.d.ts +4 -0
  175. package/dist/react-router-path.d.ts.map +1 -0
  176. package/dist/react-router-path.js +11 -0
  177. package/dist/react-router-path.js.map +1 -0
  178. package/dist/scope-selection-context.d.ts +28 -0
  179. package/dist/scope-selection-context.d.ts.map +1 -0
  180. package/dist/scope-selection-context.js +13 -0
  181. package/dist/scope-selection-context.js.map +1 -0
  182. package/dist/scope-selection-provider.d.ts +33 -0
  183. package/dist/scope-selection-provider.d.ts.map +1 -0
  184. package/dist/scope-selection-provider.js +162 -0
  185. package/dist/scope-selection-provider.js.map +1 -0
  186. package/dist/scope-selection-request.d.ts +6 -0
  187. package/dist/scope-selection-request.d.ts.map +1 -0
  188. package/dist/scope-selection-request.js +12 -0
  189. package/dist/scope-selection-request.js.map +1 -0
  190. package/dist/standard-navigation-shell-frame-renderers.d.ts +15 -0
  191. package/dist/standard-navigation-shell-frame-renderers.d.ts.map +1 -0
  192. package/dist/standard-navigation-shell-frame-renderers.js +22 -0
  193. package/dist/standard-navigation-shell-frame-renderers.js.map +1 -0
  194. package/dist/standard-navigation-shell-slot-renderers.d.ts +59 -0
  195. package/dist/standard-navigation-shell-slot-renderers.d.ts.map +1 -0
  196. package/dist/standard-navigation-shell-slot-renderers.js +67 -0
  197. package/dist/standard-navigation-shell-slot-renderers.js.map +1 -0
  198. package/dist/view-chrome-slot-renderer-registry.d.ts +12 -0
  199. package/dist/view-chrome-slot-renderer-registry.d.ts.map +1 -0
  200. package/dist/view-chrome-slot-renderer-registry.js +12 -0
  201. package/dist/view-chrome-slot-renderer-registry.js.map +1 -0
  202. package/package.json +60 -0
  203. package/src/collection-chrome-slot-renderer-registry.ts +66 -0
  204. package/src/collection-selection-state-context.ts +51 -0
  205. package/src/collection-selection-state.tsx +101 -0
  206. package/src/document-workspace-runtime.tsx +1505 -0
  207. package/src/index.ts +50 -0
  208. package/src/input-form-endpoint-runtime.ts +632 -0
  209. package/src/local-flow-state-data-source-projection.ts +133 -0
  210. package/src/navigation-runtime-context.ts +40 -0
  211. package/src/navigation-shell-frame-renderer-registry.ts +54 -0
  212. package/src/navigation-shell-region-component-registry.tsx +127 -0
  213. package/src/navigation-shell-slot-renderer-registry.ts +88 -0
  214. package/src/page-host-projection.ts +356 -0
  215. package/src/page-host-renderer-registry.tsx +353 -0
  216. package/src/presentation-action-group-runtime-options.ts +121 -0
  217. package/src/presentation-action-runtime.ts +190 -0
  218. package/src/presentation-data-source-binding-runtime.ts +109 -0
  219. package/src/presentation-data-source-binding.tsx +24 -0
  220. package/src/presentation-flow-runtime.tsx +835 -0
  221. package/src/presentation-module-context.ts +10 -0
  222. package/src/presentation-module-provider.tsx +19 -0
  223. package/src/presentation-projection-diagnostics-context.ts +17 -0
  224. package/src/presentation-projection-diagnostics-hooks.ts +29 -0
  225. package/src/presentation-projection-diagnostics-runtime.tsx +95 -0
  226. package/src/presentation-projection-trace.ts +117 -0
  227. package/src/presentation-query-form-runtime.ts +148 -0
  228. package/src/presentation-query-form-state-adapter-registry.ts +25 -0
  229. package/src/presentation-query-form-state-context.ts +56 -0
  230. package/src/presentation-query-form-state.tsx +250 -0
  231. package/src/presentation-renderer-registry.ts +214 -0
  232. package/src/presentation-standards-context.ts +21 -0
  233. package/src/presentation-standards-provider.tsx +44 -0
  234. package/src/projected-document-action-runtime-bindings.ts +132 -0
  235. package/src/projected-document-action-runtime.ts +414 -0
  236. package/src/projected-document-process-preview-action-runtime-bindings.ts +231 -0
  237. package/src/projected-document-process-preview-action-runtime.ts +1725 -0
  238. package/src/projected-document-process-preview-capability-runtime.ts +216 -0
  239. package/src/projected-document-workspace-action-runtime.ts +402 -0
  240. package/src/projected-document-workspace-projection-renderer-diagnostics.ts +342 -0
  241. package/src/projected-document-workspace-runtime-binding-diagnostics.ts +208 -0
  242. package/src/projected-navigation-provider.tsx +104 -0
  243. package/src/projected-presentation-flow-host.tsx +46 -0
  244. package/src/projected-query-form-state-adapter.ts +578 -0
  245. package/src/react-router-binding.tsx +417 -0
  246. package/src/react-router-path.ts +16 -0
  247. package/src/scope-selection-context.ts +58 -0
  248. package/src/scope-selection-provider.tsx +324 -0
  249. package/src/scope-selection-request.ts +21 -0
  250. package/src/standard-navigation-shell-frame-renderers.tsx +106 -0
  251. package/src/standard-navigation-shell-slot-renderers.tsx +289 -0
  252. package/src/view-chrome-slot-renderer-registry.ts +66 -0
@@ -0,0 +1,514 @@
1
+ import { useEffect, useMemo, useRef, useState } from 'react';
2
+ import { findPresentationAction, findPresentationFlow, findPresentationView, readObjectPath, } from '@cohesivesystems/presentation-core';
3
+ import { flowStateKindLabels, flowStateKinds, preparationKinds, } from '@cohesivesystems/presentation-contracts';
4
+ /**
5
+ * Tests flow-state kind values across generated numeric constants and backend
6
+ * string enum serialization.
7
+ */
8
+ export function isPresentationFlowStateKind(value, ...kinds) {
9
+ return kinds.some((kind) => matchesFlowStateKind(value, kind));
10
+ }
11
+ /**
12
+ * Returns true when a flow instance is active for a specific data key/value and
13
+ * the active state is a visible prompt-like state.
14
+ */
15
+ export function isPresentationFlowSurfaceOpenForData({ dataKey, dataValue, flowId, runtime, }) {
16
+ if (!dataValue || !runtime.isFlowActive(flowId) || !runtime.activeState?.ViewId) {
17
+ return false;
18
+ }
19
+ return runtime.activeInstance?.data[dataKey] === dataValue &&
20
+ isPresentationFlowStateKind(runtime.activeState.Kind, flowStateKinds.pending, flowStateKinds.prompt, flowStateKinds.error);
21
+ }
22
+ /** Finds the first visible prompt/pending/error state in a flow definition. */
23
+ export function findPresentationFlowSurfaceState(flow) {
24
+ return flow?.States.find((state) => Boolean(state.ViewId) &&
25
+ isPresentationFlowStateKind(state.Kind, flowStateKinds.pending, flowStateKinds.prompt, flowStateKinds.error)) ?? null;
26
+ }
27
+ /** Finds the first visible error state in a flow definition. */
28
+ export function findPresentationFlowErrorSurfaceState(flow) {
29
+ return flow?.States.find((state) => Boolean(state.ViewId) &&
30
+ isPresentationFlowStateKind(state.Kind, flowStateKinds.error)) ?? null;
31
+ }
32
+ /** Finds the first state matching one of the requested semantic flow kinds. */
33
+ export function findPresentationFlowStateByKind(flow, ...kinds) {
34
+ return flow?.States.find((state) => isPresentationFlowStateKind(state.Kind, ...kinds)) ?? null;
35
+ }
36
+ /**
37
+ * Advances an active runtime instance to a state with the requested semantic
38
+ * kind, preferring a valid declared transition from the current state.
39
+ */
40
+ export function advancePresentationFlowToStateKind({ allowStateFallback = true, data, flow, runtime, stateKinds, }) {
41
+ if (!flow || !runtime.activeInstance) {
42
+ return false;
43
+ }
44
+ const transition = findPresentationFlowTransitionToStateKind({
45
+ data: {
46
+ ...runtime.activeInstance.data,
47
+ ...(data ?? {}),
48
+ },
49
+ flow,
50
+ fromStateId: runtime.activeInstance.stateId,
51
+ stateKinds,
52
+ });
53
+ if (transition && runtime.dispatchTransition(transition.Id, { data })) {
54
+ return true;
55
+ }
56
+ if (!allowStateFallback) {
57
+ return false;
58
+ }
59
+ const state = findPresentationFlowStateByKind(flow, ...stateKinds);
60
+ return state
61
+ ? runtime.transitionTo(state.Id, { data, flowId: flow.Id })
62
+ : false;
63
+ }
64
+ /** Finds a valid transition from a state to any state with the requested kind. */
65
+ export function findPresentationFlowTransitionToStateKind({ data, flow, fromStateId, stateKinds, }) {
66
+ const targetStateIds = new Set(flow.States
67
+ .filter((state) => isPresentationFlowStateKind(state.Kind, ...stateKinds))
68
+ .map((state) => state.Id));
69
+ return flow.Transitions.find((transition) => transition.FromStateId === fromStateId &&
70
+ targetStateIds.has(transition.ToStateId) &&
71
+ matchesPresentationFlowTransitionGuard(transition, data)) ?? null;
72
+ }
73
+ /** Finds a valid action/event transition from the given flow state. */
74
+ export function findPresentationFlowTransition({ actionId, data, event, flow, fromStateId, }) {
75
+ const candidates = flow.Transitions.filter((transition) => transition.FromStateId === fromStateId &&
76
+ ((event ? transition.Event === event : false) ||
77
+ (actionId ? transition.ActionId === actionId : false)));
78
+ return candidates.find((transition) => matchesPresentationFlowTransitionGuard(transition, data)) ?? null;
79
+ }
80
+ /**
81
+ * Interprets client-resident Presentation IR flows into local React state.
82
+ *
83
+ * The runtime deliberately stays semantic: it tracks the active flow, resolves
84
+ * transitions by event or action id, exposes the active prompt view, and leaves
85
+ * endpoint execution, persistence, and custom rendering to host-specific escape
86
+ * hatches. That lets app code migrate from imperative conditionals toward IR
87
+ * projection without requiring every flow side effect to be generalized first.
88
+ */
89
+ export function usePresentationFlowRuntime({ initialData, initialFlowId, initialStateId, module, onTransition, onUnhandledEvent, }) {
90
+ const [instance, setInstance] = useState(() => {
91
+ if (!initialFlowId) {
92
+ return null;
93
+ }
94
+ const flow = findPresentationFlow(module, initialFlowId);
95
+ if (!flow) {
96
+ return null;
97
+ }
98
+ return {
99
+ data: initialData ?? {},
100
+ flowId: initialFlowId,
101
+ stateId: initialStateId ?? flow.InitialStateId,
102
+ };
103
+ });
104
+ const activeFlow = useMemo(() => instance
105
+ ? findPresentationFlow(module, instance.flowId)
106
+ : null, [instance, module]);
107
+ const activeState = useMemo(() => activeFlow?.States.find((state) => state.Id === instance?.stateId) ?? null, [activeFlow, instance]);
108
+ const activeView = useMemo(() => activeState?.ViewId
109
+ ? findPresentationView(module, activeState.ViewId)
110
+ : null, [activeState, module]);
111
+ function startFlow(options) {
112
+ const flow = findPresentationFlow(module, options.flowId);
113
+ if (!flow) {
114
+ return false;
115
+ }
116
+ const data = options.data ?? {};
117
+ const fromStateId = options.stateId ?? flow.InitialStateId;
118
+ const transition = options.stateId
119
+ ? null
120
+ : resolveFlowTransition({
121
+ actionId: options.actionId,
122
+ data,
123
+ event: options.event,
124
+ flow,
125
+ fromStateId,
126
+ });
127
+ if (!options.stateId && (options.event || options.actionId) && !transition) {
128
+ return false;
129
+ }
130
+ const toStateId = transition?.ToStateId ?? fromStateId;
131
+ const toState = flow.States.find((state) => state.Id === toStateId);
132
+ if (!toState) {
133
+ return false;
134
+ }
135
+ const nextInstance = {
136
+ data,
137
+ flowId: flow.Id,
138
+ stateId: toState.Id,
139
+ };
140
+ setInstance(nextInstance);
141
+ onTransition?.({
142
+ flow,
143
+ fromState: flow.States.find((state) => state.Id === fromStateId) ?? null,
144
+ instance: nextInstance,
145
+ toState,
146
+ transition,
147
+ });
148
+ return true;
149
+ }
150
+ function dispatchEvent(event, options) {
151
+ if (!instance || !activeFlow) {
152
+ return false;
153
+ }
154
+ const data = { ...instance.data, ...(options?.data ?? {}) };
155
+ const transition = resolveFlowTransition({
156
+ actionId: options?.actionId,
157
+ data,
158
+ event,
159
+ flow: activeFlow,
160
+ fromStateId: instance.stateId,
161
+ });
162
+ if (!transition) {
163
+ onUnhandledEvent?.({
164
+ actionId: options?.actionId ?? null,
165
+ event,
166
+ flow: activeFlow,
167
+ instance,
168
+ });
169
+ return false;
170
+ }
171
+ return applyFlowState(activeFlow, transition.ToStateId, {
172
+ data,
173
+ transition,
174
+ });
175
+ }
176
+ function dispatchAction(actionId, options) {
177
+ const action = findPresentationAction(module, actionId);
178
+ return dispatchEvent(action?.Binding.Id ?? actionId, {
179
+ ...options,
180
+ actionId,
181
+ });
182
+ }
183
+ function dispatchTransition(transitionId, options) {
184
+ if (!instance || !activeFlow) {
185
+ return false;
186
+ }
187
+ const data = { ...instance.data, ...(options?.data ?? {}) };
188
+ const transition = activeFlow.Transitions.find((candidate) => candidate.Id === transitionId &&
189
+ candidate.FromStateId === instance.stateId &&
190
+ matchesPresentationFlowTransitionGuard(candidate, data));
191
+ if (!transition) {
192
+ return false;
193
+ }
194
+ return applyFlowState(activeFlow, transition.ToStateId, {
195
+ data,
196
+ transition,
197
+ });
198
+ }
199
+ function transitionTo(stateId, options) {
200
+ const flowId = options?.flowId ?? instance?.flowId;
201
+ const flow = flowId ? findPresentationFlow(module, flowId) : null;
202
+ if (!flow) {
203
+ return false;
204
+ }
205
+ return applyFlowState(flow, stateId, {
206
+ data: {
207
+ ...(instance?.flowId === flow.Id ? instance.data : {}),
208
+ ...(options?.data ?? {}),
209
+ },
210
+ transition: null,
211
+ });
212
+ }
213
+ function applyFlowState(flow, stateId, options) {
214
+ const toState = flow.States.find((state) => state.Id === stateId);
215
+ if (!toState) {
216
+ return false;
217
+ }
218
+ const nextInstance = {
219
+ data: options.data,
220
+ flowId: flow.Id,
221
+ stateId: toState.Id,
222
+ };
223
+ const fromState = instance?.flowId === flow.Id
224
+ ? flow.States.find((state) => state.Id === instance.stateId) ?? null
225
+ : null;
226
+ setInstance(nextInstance);
227
+ onTransition?.({
228
+ flow,
229
+ fromState,
230
+ instance: nextInstance,
231
+ toState,
232
+ transition: options.transition,
233
+ });
234
+ return true;
235
+ }
236
+ return {
237
+ activeFlow,
238
+ activeInstance: instance,
239
+ activeState,
240
+ activeView,
241
+ clearFlow: () => setInstance(null),
242
+ dispatchAction,
243
+ dispatchEvent,
244
+ dispatchTransition,
245
+ isFlowActive: (flowId) => instance?.flowId === flowId,
246
+ isStateActive: (stateId) => instance?.stateId === stateId,
247
+ startFlow,
248
+ transitionTo,
249
+ };
250
+ }
251
+ /**
252
+ * Maintains the active instances for all client-resident Presentation IR flows
253
+ * in a host. Callers can still ask for a flow-scoped runtime, but prompt
254
+ * projection can iterate active entries instead of wiring each flow manually.
255
+ */
256
+ export function usePresentationFlowRuntimeRegistry({ module, onTransition, onUnhandledEvent, }) {
257
+ const [instances, setInstances] = useState({});
258
+ const instancesRef = useRef(instances);
259
+ useEffect(() => {
260
+ instancesRef.current = instances;
261
+ }, [instances]);
262
+ const activeEntries = useMemo(() => Object.values(instances)
263
+ .map((instance) => resolvePresentationFlowRuntimeEntry(module, instance))
264
+ .filter((entry) => entry !== null), [instances, module]);
265
+ function setFlowInstance(instance, flowId) {
266
+ const current = instancesRef.current;
267
+ const next = { ...current };
268
+ if (instance) {
269
+ next[flowId] = instance;
270
+ }
271
+ else {
272
+ delete next[flowId];
273
+ }
274
+ instancesRef.current = next;
275
+ setInstances(next);
276
+ }
277
+ function clearFlow(flowId) {
278
+ setFlowInstance(null, flowId);
279
+ }
280
+ function getRuntime(flowId) {
281
+ const instance = instances[flowId] ?? null;
282
+ const activeFlow = instance
283
+ ? findPresentationFlow(module, instance.flowId)
284
+ : null;
285
+ const activeState = activeFlow?.States.find((state) => state.Id === instance?.stateId) ?? null;
286
+ const activeView = activeState?.ViewId
287
+ ? findPresentationView(module, activeState.ViewId)
288
+ : null;
289
+ function startFlow(options) {
290
+ const flow = findPresentationFlow(module, options.flowId);
291
+ if (!flow) {
292
+ return false;
293
+ }
294
+ const data = options.data ?? {};
295
+ const fromStateId = options.stateId ?? flow.InitialStateId;
296
+ const transition = options.stateId
297
+ ? null
298
+ : resolveFlowTransition({
299
+ actionId: options.actionId,
300
+ data,
301
+ event: options.event,
302
+ flow,
303
+ fromStateId,
304
+ });
305
+ if (!options.stateId && (options.event || options.actionId) && !transition) {
306
+ return false;
307
+ }
308
+ const toStateId = transition?.ToStateId ?? fromStateId;
309
+ return applyRegistryFlowState(flow, toStateId, {
310
+ data,
311
+ previousInstance: instancesRef.current[flow.Id] ?? null,
312
+ transition,
313
+ });
314
+ }
315
+ function dispatchEvent(event, options) {
316
+ const currentInstance = instancesRef.current[flowId] ?? null;
317
+ const flow = currentInstance
318
+ ? findPresentationFlow(module, currentInstance.flowId)
319
+ : null;
320
+ if (!currentInstance || !flow) {
321
+ return false;
322
+ }
323
+ const data = { ...currentInstance.data, ...(options?.data ?? {}) };
324
+ const transition = resolveFlowTransition({
325
+ actionId: options?.actionId,
326
+ data,
327
+ event,
328
+ flow,
329
+ fromStateId: currentInstance.stateId,
330
+ });
331
+ if (!transition) {
332
+ onUnhandledEvent?.({
333
+ actionId: options?.actionId ?? null,
334
+ event,
335
+ flow,
336
+ instance: currentInstance,
337
+ });
338
+ return false;
339
+ }
340
+ return applyRegistryFlowState(flow, transition.ToStateId, {
341
+ data,
342
+ previousInstance: currentInstance,
343
+ transition,
344
+ });
345
+ }
346
+ function dispatchAction(actionId, options) {
347
+ const action = findPresentationAction(module, actionId);
348
+ return dispatchEvent(action?.Binding.Id ?? actionId, {
349
+ ...options,
350
+ actionId,
351
+ });
352
+ }
353
+ function dispatchTransition(transitionId, options) {
354
+ const currentInstance = instancesRef.current[flowId] ?? null;
355
+ const flow = currentInstance
356
+ ? findPresentationFlow(module, currentInstance.flowId)
357
+ : null;
358
+ if (!currentInstance || !flow) {
359
+ return false;
360
+ }
361
+ const data = { ...currentInstance.data, ...(options?.data ?? {}) };
362
+ const transition = flow.Transitions.find((candidate) => candidate.Id === transitionId &&
363
+ candidate.FromStateId === currentInstance.stateId &&
364
+ matchesPresentationFlowTransitionGuard(candidate, data));
365
+ if (!transition) {
366
+ return false;
367
+ }
368
+ return applyRegistryFlowState(flow, transition.ToStateId, {
369
+ data,
370
+ previousInstance: currentInstance,
371
+ transition,
372
+ });
373
+ }
374
+ function transitionTo(stateId, options) {
375
+ const currentInstance = instancesRef.current[flowId] ?? null;
376
+ const targetFlowId = options?.flowId ?? currentInstance?.flowId ?? flowId;
377
+ const flow = findPresentationFlow(module, targetFlowId);
378
+ if (!flow) {
379
+ return false;
380
+ }
381
+ return applyRegistryFlowState(flow, stateId, {
382
+ data: {
383
+ ...(currentInstance?.flowId === flow.Id ? currentInstance.data : {}),
384
+ ...(options?.data ?? {}),
385
+ },
386
+ previousInstance: currentInstance?.flowId === flow.Id ? currentInstance : null,
387
+ transition: null,
388
+ });
389
+ }
390
+ function applyRegistryFlowState(flow, stateId, options) {
391
+ const toState = flow.States.find((state) => state.Id === stateId);
392
+ if (!toState) {
393
+ return false;
394
+ }
395
+ const nextInstance = {
396
+ data: options.data,
397
+ flowId: flow.Id,
398
+ stateId: toState.Id,
399
+ };
400
+ setFlowInstance(nextInstance, flow.Id);
401
+ onTransition?.({
402
+ flow,
403
+ fromState: options.previousInstance
404
+ ? flow.States.find((state) => state.Id === options.previousInstance?.stateId) ?? null
405
+ : null,
406
+ instance: nextInstance,
407
+ toState,
408
+ transition: options.transition,
409
+ });
410
+ return true;
411
+ }
412
+ return {
413
+ activeFlow,
414
+ activeInstance: instance,
415
+ activeState,
416
+ activeView,
417
+ clearFlow: () => clearFlow(flowId),
418
+ dispatchAction,
419
+ dispatchEvent,
420
+ dispatchTransition,
421
+ isFlowActive: (candidateFlowId) => instancesRef.current[flowId]?.flowId === candidateFlowId,
422
+ isStateActive: (stateId) => instancesRef.current[flowId]?.stateId === stateId,
423
+ startFlow,
424
+ transitionTo,
425
+ };
426
+ }
427
+ return {
428
+ activeEntries,
429
+ clearFlow,
430
+ getRuntime,
431
+ };
432
+ }
433
+ export function resolvePresentationActionPreparedFlow(action) {
434
+ const preparation = action?.Preparation;
435
+ if (!preparation?.FlowId || !isFlowPreparationKind(preparation.Kind)) {
436
+ return null;
437
+ }
438
+ return {
439
+ canCancel: preparation.CanCancel,
440
+ flowId: preparation.FlowId,
441
+ promptViewId: preparation.PromptViewId ?? null,
442
+ requiresExplicitCommit: preparation.RequiresExplicitCommit,
443
+ };
444
+ }
445
+ function resolvePresentationFlowRuntimeEntry(module, instance) {
446
+ const flow = findPresentationFlow(module, instance.flowId);
447
+ if (!flow) {
448
+ return null;
449
+ }
450
+ const state = flow.States.find((candidate) => candidate.Id === instance.stateId);
451
+ if (!state) {
452
+ return null;
453
+ }
454
+ return {
455
+ flow,
456
+ instance,
457
+ state,
458
+ view: state.ViewId
459
+ ? findPresentationView(module, state.ViewId)
460
+ : null,
461
+ };
462
+ }
463
+ function resolveFlowTransition({ actionId, data, event, flow, fromStateId, }) {
464
+ return findPresentationFlowTransition({
465
+ actionId,
466
+ data,
467
+ event,
468
+ flow,
469
+ fromStateId,
470
+ });
471
+ }
472
+ export function matchesPresentationFlowTransitionGuard(transition, data) {
473
+ if (!transition.Guard) {
474
+ return true;
475
+ }
476
+ const match = transition.Guard.match(/^\s*([A-Za-z0-9_.]+)\s*==\s*(true|false|null|'[^']*'|"[^"]*"|-?\d+(?:\.\d+)?)\s*$/);
477
+ if (!match) {
478
+ return false;
479
+ }
480
+ return readObjectPath(data, match[1]) === parseGuardLiteral(match[2]);
481
+ }
482
+ function parseGuardLiteral(value) {
483
+ if (value === 'true') {
484
+ return true;
485
+ }
486
+ if (value === 'false') {
487
+ return false;
488
+ }
489
+ if (value === 'null') {
490
+ return null;
491
+ }
492
+ if ((value.startsWith("'") && value.endsWith("'")) ||
493
+ (value.startsWith('"') && value.endsWith('"'))) {
494
+ return value.slice(1, -1);
495
+ }
496
+ const numberValue = Number(value);
497
+ return Number.isFinite(numberValue) ? numberValue : value;
498
+ }
499
+ function isFlowPreparationKind(value) {
500
+ return value === preparationKinds.prompt ||
501
+ value === preparationKinds.previewFlow ||
502
+ String(value).toLowerCase() === 'prompt' ||
503
+ String(value).toLowerCase() === 'previewflow';
504
+ }
505
+ function matchesFlowStateKind(value, kind) {
506
+ const label = typeof kind === 'number'
507
+ ? flowStateKindLabels[kind]
508
+ : kind;
509
+ const normalizedValue = String(value).toLocaleLowerCase();
510
+ return (value === kind ||
511
+ normalizedValue === String(kind).toLocaleLowerCase() ||
512
+ normalizedValue === label?.toLocaleLowerCase());
513
+ }
514
+ //# sourceMappingURL=presentation-flow-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-flow-runtime.js","sourceRoot":"","sources":["../src/presentation-flow-runtime.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PresentationModuleDefinition } from '@cohesivesystems/presentation-core';
2
+ export declare const PresentationModuleContext: import("react").Context<PresentationModuleDefinition | null>;
3
+ export declare function usePresentationModule(): PresentationModuleDefinition | null;
4
+ //# sourceMappingURL=presentation-module-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-module-context.d.ts","sourceRoot":"","sources":["../src/presentation-module-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AAEtF,eAAO,MAAM,yBAAyB,8DACoB,CAAA;AAE1D,wBAAgB,qBAAqB,wCAEpC"}
@@ -0,0 +1,6 @@
1
+ import { createContext, useContext } from 'react';
2
+ export const PresentationModuleContext = createContext(null);
3
+ export function usePresentationModule() {
4
+ return useContext(PresentationModuleContext);
5
+ }
6
+ //# sourceMappingURL=presentation-module-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-module-context.js","sourceRoot":"","sources":["../src/presentation-module-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAIjD,MAAM,CAAC,MAAM,yBAAyB,GACpC,aAAa,CAAsC,IAAI,CAAC,CAAA;AAE1D,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,yBAAyB,CAAC,CAAA;AAC9C,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type PropsWithChildren } from 'react';
2
+ import type { PresentationModuleDefinition } from '@cohesivesystems/presentation-core';
3
+ export interface PresentationModuleProviderProps extends PropsWithChildren {
4
+ readonly module: PresentationModuleDefinition | null;
5
+ }
6
+ export declare function PresentationModuleProvider({ children, module, }: PresentationModuleProviderProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=presentation-module-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-module-provider.d.ts","sourceRoot":"","sources":["../src/presentation-module-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAE9C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AAGtF,MAAM,WAAW,+BAAgC,SAAQ,iBAAiB;IACxE,QAAQ,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI,CAAA;CACrD;AAED,wBAAgB,0BAA0B,CAAC,EACzC,QAAQ,EACR,MAAM,GACP,EAAE,+BAA+B,2CAMjC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import {} from 'react';
3
+ import { PresentationModuleContext } from './presentation-module-context.js';
4
+ export function PresentationModuleProvider({ children, module, }) {
5
+ return (_jsx(PresentationModuleContext.Provider, { value: module, children: children }));
6
+ }
7
+ //# sourceMappingURL=presentation-module-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-module-provider.js","sourceRoot":"","sources":["../src/presentation-module-provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,MAAM,OAAO,CAAA;AAG9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAMzE,MAAM,UAAU,0BAA0B,CAAC,EACzC,QAAQ,EACR,MAAM,GAC0B;IAChC,OAAO,CACL,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAC9C,QAAQ,GAC0B,CACtC,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { PresentationProjectionDiagnostic } from '@cohesivesystems/presentation-core';
2
+ export interface PresentationProjectionDiagnosticsRegistry {
3
+ readonly clearDiagnostics: (sourceId: string) => void;
4
+ readonly diagnostics: readonly PresentationProjectionDiagnostic[];
5
+ readonly setDiagnostics: (sourceId: string, diagnostics: readonly PresentationProjectionDiagnostic[]) => void;
6
+ }
7
+ export declare const PresentationProjectionDiagnosticsContext: import("react").Context<PresentationProjectionDiagnosticsRegistry | null>;
8
+ //# sourceMappingURL=presentation-projection-diagnostics-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-projection-diagnostics-context.d.ts","sourceRoot":"","sources":["../src/presentation-projection-diagnostics-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gCAAgC,EACjC,MAAM,oCAAoC,CAAA;AAE3C,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACrD,QAAQ,CAAC,WAAW,EAAE,SAAS,gCAAgC,EAAE,CAAA;IACjE,QAAQ,CAAC,cAAc,EAAE,CACvB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,SAAS,gCAAgC,EAAE,KACrD,IAAI,CAAA;CACV;AAED,eAAO,MAAM,wCAAwC,2EACkB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { createContext } from 'react';
2
+ export const PresentationProjectionDiagnosticsContext = createContext(null);
3
+ //# sourceMappingURL=presentation-projection-diagnostics-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-projection-diagnostics-context.js","sourceRoot":"","sources":["../src/presentation-projection-diagnostics-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAerC,MAAM,CAAC,MAAM,wCAAwC,GACnD,aAAa,CAAmD,IAAI,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { PresentationProjectionDiagnostic } from '@cohesivesystems/presentation-core';
2
+ export declare function usePresentationProjectionDiagnostics(): readonly PresentationProjectionDiagnostic[];
3
+ export declare function useRegisterPresentationProjectionDiagnostics(sourceId: string, diagnostics: readonly PresentationProjectionDiagnostic[]): void;
4
+ //# sourceMappingURL=presentation-projection-diagnostics-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-projection-diagnostics-hooks.d.ts","sourceRoot":"","sources":["../src/presentation-projection-diagnostics-hooks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,gCAAgC,EACjC,MAAM,oCAAoC,CAAA;AAE3C,wBAAgB,oCAAoC,gDAEnD;AAED,wBAAgB,4CAA4C,CAC1D,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,SAAS,gCAAgC,EAAE,QAazD"}
@@ -0,0 +1,17 @@
1
+ import { useContext, useEffect } from 'react';
2
+ import { PresentationProjectionDiagnosticsContext, } from './presentation-projection-diagnostics-context.js';
3
+ export function usePresentationProjectionDiagnostics() {
4
+ return useContext(PresentationProjectionDiagnosticsContext)?.diagnostics ?? [];
5
+ }
6
+ export function useRegisterPresentationProjectionDiagnostics(sourceId, diagnostics) {
7
+ const registry = useContext(PresentationProjectionDiagnosticsContext);
8
+ const clearDiagnostics = registry?.clearDiagnostics;
9
+ const setDiagnostics = registry?.setDiagnostics;
10
+ useEffect(() => {
11
+ setDiagnostics?.(sourceId, diagnostics);
12
+ }, [diagnostics, setDiagnostics, sourceId]);
13
+ useEffect(() => {
14
+ return () => clearDiagnostics?.(sourceId);
15
+ }, [clearDiagnostics, sourceId]);
16
+ }
17
+ //# sourceMappingURL=presentation-projection-diagnostics-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-projection-diagnostics-hooks.js","sourceRoot":"","sources":["../src/presentation-projection-diagnostics-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EACL,wCAAwC,GACzC,MAAM,+CAA+C,CAAA;AAKtD,MAAM,UAAU,oCAAoC;IAClD,OAAO,UAAU,CAAC,wCAAwC,CAAC,EAAE,WAAW,IAAI,EAAE,CAAA;AAChF,CAAC;AAED,MAAM,UAAU,4CAA4C,CAC1D,QAAgB,EAChB,WAAwD;IAExD,MAAM,QAAQ,GAAG,UAAU,CAAC,wCAAwC,CAAC,CAAA;IACrE,MAAM,gBAAgB,GAAG,QAAQ,EAAE,gBAAgB,CAAA;IACnD,MAAM,cAAc,GAAG,QAAQ,EAAE,cAAc,CAAA;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,cAAc,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACzC,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAA;AAClC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type ReactNode } from 'react';
2
+ interface PresentationProjectionDiagnosticsProviderProps {
3
+ readonly children: ReactNode;
4
+ }
5
+ /**
6
+ * Collects projection diagnostics from local interpreters so developer tooling
7
+ * can render one consolidated view instead of scattering warnings through app
8
+ * chrome.
9
+ */
10
+ export declare function PresentationProjectionDiagnosticsProvider({ children, }: PresentationProjectionDiagnosticsProviderProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=presentation-projection-diagnostics-runtime.d.ts.map