@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,63 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { presentationTargetKinds, } from '@cohesivesystems/presentation-contracts';
3
+ import { createPresentationEnumDiscriminator, presentationPageHostComponentRoles, resolveDefaultPresentationPageHostComponentRole, resolvePageHostRenderer as resolveCorePageHostRenderer, } from '@cohesivesystems/presentation-core';
4
+ export { presentationPageHostComponentRoles, resolveDefaultPresentationPageHostComponentRole, };
5
+ /**
6
+ * Adapts a React component that consumes the resolved page-host context into a
7
+ * registry renderer. This keeps the registry declarative while allowing route
8
+ * hosts to remain ordinary components at the projection boundary.
9
+ */
10
+ export function createPageHostComponentRenderer(Component) {
11
+ return function renderPageHostWithComponent(context) {
12
+ return _jsx(Component, { ...context });
13
+ };
14
+ }
15
+ /**
16
+ * Creates a navigation-target renderer from a page-host registry. Resolution
17
+ * starts from the semantic page-host shape, resolves an adapter component role,
18
+ * then invokes the frontend interpreter registered for that role.
19
+ */
20
+ export function createPageHostTargetRenderer({ componentSet, registry, resolveComponentKey, resolveComponentRole, }) {
21
+ return function renderPageHostTarget(context) {
22
+ const componentKey = resolveComponentKey?.(context) ?? null;
23
+ const componentRole = resolveComponentRole?.(context) ?? null;
24
+ const resolution = resolvePageHostRenderer({
25
+ componentKey,
26
+ componentRole,
27
+ componentSet,
28
+ module: context.module,
29
+ pageHost: context.pageHost,
30
+ registry,
31
+ route: context.route,
32
+ });
33
+ if (context.pageHost && resolution.renderer) {
34
+ return resolution.renderer({
35
+ context: context.context,
36
+ module: context.module,
37
+ navigation: context.navigation,
38
+ navigationTarget: context.navigationTarget,
39
+ pageHost: context.pageHost,
40
+ parameters: context.parameters,
41
+ route: context.route,
42
+ });
43
+ }
44
+ return context.renderBoundPageHost(componentKey);
45
+ };
46
+ }
47
+ /**
48
+ * Resolves a page-host renderer without rendering it.
49
+ */
50
+ export function resolvePageHostRenderer({ componentKey, componentRole, componentSet, module, pageHost, registry, route, }) {
51
+ return resolveCorePageHostRenderer({
52
+ componentKey,
53
+ componentRole,
54
+ componentSet,
55
+ module,
56
+ pageHost,
57
+ registry,
58
+ route,
59
+ targetKind: reactPresentationTargetKind,
60
+ });
61
+ }
62
+ const reactPresentationTargetKind = createPresentationEnumDiscriminator(presentationTargetKinds, 'react', 'React');
63
+ //# sourceMappingURL=page-host-renderer-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-host-renderer-registry.js","sourceRoot":"","sources":["../src/page-host-renderer-registry.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,uBAAuB,GAGxB,MAAM,yCAAyC,CAAA;AAChD,OAAO,EACL,mCAAmC,EACnC,kCAAkC,EAClC,+CAA+C,EAC/C,uBAAuB,IAAI,2BAA2B,GAOvD,MAAM,oCAAoC,CAAA;AAU3C,OAAO,EACL,kCAAkC,EAClC,+CAA+C,GAChD,CAAA;AAgDD;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAO7C,SAMC;IAQD,OAAO,SAAS,2BAA2B,CAAC,OAAO;QACjD,OAAO,KAAC,SAAS,OAAK,OAAO,GAAI,CAAA;IACnC,CAAC,CAAA;AACH,CAAC;AA8HD;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAO1C,EACA,YAAY,EACZ,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,GAQrB;IAQC,OAAO,SAAS,oBAAoB,CAAC,OAAO;QAC1C,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;QAC3D,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;QAC7D,MAAM,UAAU,GAAG,uBAAuB,CAAC;YACzC,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ;YACR,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC5C,OAAO,UAAU,CAAC,QAAQ,CAAC;gBACzB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAA;IAClD,CAAC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAMrC,EACA,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,KAAK,GAON;IAOC,OAAO,2BAA2B,CAWhC;QACA,YAAY;QACZ,aAAa;QACb,YAAY;QACZ,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,KAAK;QACL,UAAU,EAAE,2BAA2B;KACxC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,2BAA2B,GAAG,mCAAmC,CACrE,uBAAuB,EACvB,OAAO,EACP,OAAO,CACR,CAAA"}
@@ -0,0 +1,36 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ActionDefinition, ActionPlacementDefinition, PresentationDataSourceResolver, PresentationModuleDefinition, ViewDefinition } from '@cohesivesystems/presentation-core';
3
+ import type { PresentationActionRuntimeRegistry } from '@cohesivesystems/presentation-core';
4
+ export interface PresentationActionRenderState {
5
+ readonly disabledReason?: ReactNode;
6
+ readonly isDisabled?: boolean;
7
+ readonly isHidden?: boolean;
8
+ readonly isPending?: boolean;
9
+ readonly label?: ReactNode;
10
+ }
11
+ export interface PresentationActionGroupRenderContext<TContext> {
12
+ readonly context: TContext;
13
+ readonly dataSourceResolver: PresentationDataSourceResolver;
14
+ readonly module: Pick<PresentationModuleDefinition, 'Actions' | 'Targets'>;
15
+ readonly view: ViewDefinition;
16
+ }
17
+ export interface PresentationActionRenderContext<TContext> extends PresentationActionGroupRenderContext<TContext> {
18
+ readonly action: ActionDefinition | null;
19
+ readonly invalidatedDataSourceIds: readonly string[];
20
+ readonly isFetching: boolean;
21
+ readonly placement: ActionPlacementDefinition;
22
+ }
23
+ export interface PresentationActionGroupOptions<TContext> {
24
+ readonly canExecuteAction?: (context: PresentationActionRenderContext<TContext>) => boolean;
25
+ readonly executeAction?: (context: PresentationActionRenderContext<TContext>) => Promise<void> | void;
26
+ readonly renderActionLabel?: (context: PresentationActionRenderContext<TContext>) => ReactNode;
27
+ readonly resolveActionState?: (context: PresentationActionRenderContext<TContext>) => PresentationActionRenderState | null | undefined;
28
+ }
29
+ export interface PresentationActionGroupRuntimeOptions<TContext> extends PresentationActionGroupOptions<TContext> {
30
+ readonly runtimes?: PresentationActionRuntimeRegistry<PresentationActionRenderContext<TContext>, ReactNode>;
31
+ }
32
+ /**
33
+ * Creates standard action-group options from a semantic action runtime registry.
34
+ */
35
+ export declare function createPresentationActionGroupRuntimeOptions<TContext>({ canExecuteAction, executeAction, renderActionLabel, resolveActionState, runtimes, ...options }?: PresentationActionGroupRuntimeOptions<TContext>): PresentationActionGroupOptions<TContext>;
36
+ //# sourceMappingURL=presentation-action-group-runtime-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-action-group-runtime-options.d.ts","sourceRoot":"","sources":["../src/presentation-action-group-runtime-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EACzB,8BAA8B,EAC9B,4BAA4B,EAC5B,cAAc,EACf,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EACV,iCAAiC,EAClC,MAAM,oCAAoC,CAAA;AAE3C,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAA;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAC3B;AAED,MAAM,WAAW,oCAAoC,CAAC,QAAQ;IAC5D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,8BAA8B,CAAA;IAC3D,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,4BAA4B,EAAE,SAAS,GAAG,SAAS,CAAC,CAAA;IAC1E,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;CAC9B;AAED,MAAM,WAAW,+BAA+B,CAAC,QAAQ,CACvD,SAAQ,oCAAoC,CAAC,QAAQ,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAA;IACpD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAA;CAC9C;AAED,MAAM,WAAW,8BAA8B,CAAC,QAAQ;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,+BAA+B,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAA;IAC3F,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,+BAA+B,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACrG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,+BAA+B,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAA;IAC9F,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAC5B,OAAO,EAAE,+BAA+B,CAAC,QAAQ,CAAC,KAC/C,6BAA6B,GAAG,IAAI,GAAG,SAAS,CAAA;CACtD;AAED,MAAM,WAAW,qCAAqC,CAAC,QAAQ,CAC7D,SAAQ,8BAA8B,CAAC,QAAQ,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,iCAAiC,CACnD,+BAA+B,CAAC,QAAQ,CAAC,EACzC,SAAS,CACV,CAAA;CACF;AAED;;GAEG;AACH,wBAAgB,2CAA2C,CAAC,QAAQ,EAAE,EACpE,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,GAAG,OAAO,EACX,GAAE,qCAAqC,CAAC,QAAQ,CAAM,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAkDjG"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Creates standard action-group options from a semantic action runtime registry.
3
+ */
4
+ export function createPresentationActionGroupRuntimeOptions({ canExecuteAction, executeAction, renderActionLabel, resolveActionState, runtimes, ...options } = {}) {
5
+ const resolvedExecuteAction = runtimes || executeAction
6
+ ? (context) => {
7
+ const runtime = resolveRuntime(runtimes, context);
8
+ if (runtime?.execute &&
9
+ !runtime.isDisabled &&
10
+ !runtime.isHidden &&
11
+ (runtime.canExecute?.(context) ?? true)) {
12
+ return runtime.execute(context);
13
+ }
14
+ return executeAction?.(context);
15
+ }
16
+ : undefined;
17
+ return {
18
+ ...options,
19
+ canExecuteAction: (context) => {
20
+ const runtime = resolveRuntime(runtimes, context);
21
+ if (runtime?.isDisabled || runtime?.isHidden) {
22
+ return false;
23
+ }
24
+ if (runtime?.canExecute && !runtime.canExecute(context)) {
25
+ return false;
26
+ }
27
+ return canExecuteAction?.(context) ?? true;
28
+ },
29
+ executeAction: resolvedExecuteAction,
30
+ renderActionLabel,
31
+ resolveActionState: (context) => {
32
+ const runtime = resolveRuntime(runtimes, context);
33
+ const baseState = resolveActionState?.(context);
34
+ return {
35
+ ...baseState,
36
+ disabledReason: runtime?.disabledReason ?? baseState?.disabledReason,
37
+ isDisabled: Boolean(baseState?.isDisabled || runtime?.isDisabled),
38
+ isHidden: Boolean(baseState?.isHidden || runtime?.isHidden),
39
+ isPending: Boolean(baseState?.isPending || runtime?.isPending),
40
+ label: runtime?.isPending && runtime.pendingLabel
41
+ ? runtime.pendingLabel
42
+ : (runtime?.label ?? baseState?.label),
43
+ };
44
+ },
45
+ };
46
+ }
47
+ function resolveRuntime(runtimes, context) {
48
+ return runtimes?.[context.placement.ActionId] ?? null;
49
+ }
50
+ //# sourceMappingURL=presentation-action-group-runtime-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-action-group-runtime-options.js","sourceRoot":"","sources":["../src/presentation-action-group-runtime-options.ts"],"names":[],"mappings":"AAqDA;;GAEG;AACH,MAAM,UAAU,2CAA2C,CAAW,EACpE,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,GAAG,OAAO,KACyC,EAAE;IACrD,MAAM,qBAAqB,GACzB,QAAQ,IAAI,aAAa;QACvB,CAAC,CAAC,CAAC,OAAkD,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACjD,IACE,OAAO,EAAE,OAAO;gBAChB,CAAC,OAAO,CAAC,UAAU;gBACnB,CAAC,OAAO,CAAC,QAAQ;gBACjB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EACvC,CAAC;gBACD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACjC,CAAC;YAED,OAAO,aAAa,EAAE,CAAC,OAAO,CAAC,CAAA;QACjC,CAAC;QACH,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO;QACL,GAAG,OAAO;QACV,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACjD,IAAI,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAC7C,OAAO,KAAK,CAAA;YACd,CAAC;YAED,IAAI,OAAO,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxD,OAAO,KAAK,CAAA;YACd,CAAC;YAED,OAAO,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;QAC5C,CAAC;QACD,aAAa,EAAE,qBAAqB;QACpC,iBAAiB;QACjB,kBAAkB,EAAE,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACjD,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAA;YAC/C,OAAO;gBACL,GAAG,SAAS;gBACZ,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,SAAS,EAAE,cAAc;gBACpE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,IAAI,OAAO,EAAE,UAAU,CAAC;gBACjE,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,IAAI,OAAO,EAAE,QAAQ,CAAC;gBAC3D,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,CAAC;gBAC9D,KAAK,EACH,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,YAAY;oBACxC,CAAC,CAAC,OAAO,CAAC,YAAY;oBACtB,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,CAAC;aAC3C,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CACrB,QAAiF,EACjF,OAAkD;IAElD,OAAO,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAA;AACvD,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { type QueryClient } from '@tanstack/react-query';
2
+ import type { PresentationActionEndpointExecutionRequest } from '@cohesivesystems/presentation-core';
3
+ import { type ActionDefinition, type PresentationBindingDefinition, type PresentationModuleDefinition } from '@cohesivesystems/presentation-core';
4
+ export type { PresentationActionEndpointExecutionRequest } from '@cohesivesystems/presentation-core';
5
+ export type PresentationActionEndpointExecutor = <TResult = unknown>(endpointId: string, request: PresentationActionEndpointExecutionRequest) => Promise<TResult>;
6
+ export interface PresentationActionRequestPreparationContext<TInput> {
7
+ readonly action: ActionDefinition | null;
8
+ readonly actionId: string;
9
+ readonly binding: PresentationBindingDefinition | null;
10
+ readonly endpointId: string;
11
+ readonly input: TInput;
12
+ readonly module: PresentationModuleDefinition | null;
13
+ }
14
+ export interface PresentationActionSuccessContext<TInput, TResult> {
15
+ readonly action: ActionDefinition | null;
16
+ readonly actionId: string;
17
+ readonly endpointId: string;
18
+ readonly input: TInput;
19
+ readonly queryClient: QueryClient;
20
+ readonly result: TResult;
21
+ }
22
+ export interface UsePresentationActionExecutorOptions<TInput, TResult> {
23
+ readonly actionId: string;
24
+ readonly componentSet?: string | null;
25
+ readonly dataSourceId?: string | null;
26
+ readonly dataSourceQueryKey?: (dataSourceId: string) => readonly unknown[];
27
+ readonly executeEndpoint: PresentationActionEndpointExecutor;
28
+ readonly invalidateDataSourceIds?: readonly string[] | ((context: PresentationActionSuccessContext<TInput, TResult>) => readonly string[]);
29
+ readonly module: PresentationModuleDefinition | null;
30
+ readonly prepareRequest: (context: PresentationActionRequestPreparationContext<TInput>) => PresentationActionEndpointExecutionRequest;
31
+ readonly processResult?: (context: PresentationActionSuccessContext<TInput, TResult>) => void;
32
+ readonly setResultQueryData?: (context: PresentationActionSuccessContext<TInput, TResult>) => void;
33
+ readonly onSuccess?: (context: PresentationActionSuccessContext<TInput, TResult>) => void;
34
+ }
35
+ export interface PresentationActionExecutor<TInput, TResult> {
36
+ readonly action: ActionDefinition | null;
37
+ readonly endpointId: string | null;
38
+ readonly error: unknown;
39
+ readonly execute: (input: TInput) => void;
40
+ readonly executeAsync: (input: TInput) => Promise<TResult>;
41
+ readonly isPending: boolean;
42
+ readonly isSuccess: boolean;
43
+ readonly reset: () => void;
44
+ }
45
+ /**
46
+ * Runtime projection for endpoint-backed presentation actions. It resolves the
47
+ * endpoint from the action definition/target bindings, prepares an endpoint
48
+ * request from the caller's semantic input, executes it through the app's API
49
+ * adapter, and applies result/query invalidation policy.
50
+ */
51
+ export declare function usePresentationActionExecutor<TInput = void, TResult = unknown>({ actionId, componentSet, dataSourceId, dataSourceQueryKey, executeEndpoint, invalidateDataSourceIds, module, onSuccess, prepareRequest, processResult, setResultQueryData, }: UsePresentationActionExecutorOptions<TInput, TResult>): PresentationActionExecutor<TInput, TResult>;
52
+ //# sourceMappingURL=presentation-action-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-action-runtime.d.ts","sourceRoot":"","sources":["../src/presentation-action-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGrF,OAAO,KAAK,EACV,0CAA0C,EAC3C,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EAElC,MAAM,oCAAoC,CAAA;AAE3C,YAAY,EAAE,0CAA0C,EAAE,MAAM,oCAAoC,CAAA;AAEpG,MAAM,MAAM,kCAAkC,GAAG,CAAC,OAAO,GAAG,OAAO,EACjE,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,0CAA0C,KAChD,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB,MAAM,WAAW,2CAA2C,CAAC,MAAM;IACjE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI,CAAA;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI,CAAA;CACrD;AAED,MAAM,WAAW,gCAAgC,CAAC,MAAM,EAAE,OAAO;IAC/D,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,oCAAoC,CAAC,MAAM,EAAE,OAAO;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAA;IAC1E,QAAQ,CAAC,eAAe,EAAE,kCAAkC,CAAA;IAC5D,QAAQ,CAAC,uBAAuB,CAAC,EAC7B,SAAS,MAAM,EAAE,GACjB,CAAC,CAAC,OAAO,EAAE,gCAAgC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,MAAM,EAAE,CAAC,CAAA;IACvF,QAAQ,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI,CAAA;IACpD,QAAQ,CAAC,cAAc,EAAE,CACvB,OAAO,EAAE,2CAA2C,CAAC,MAAM,CAAC,KACzD,0CAA0C,CAAA;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,gCAAgC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAC7F,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,gCAAgC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAClG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,gCAAgC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CAC1F;AAED,MAAM,WAAW,0BAA0B,CAAC,MAAM,EAAE,OAAO;IACzD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,EAC9E,QAAQ,EACR,YAA4C,EAC5C,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,EAAE,oCAAoC,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,CAwErG"}
@@ -0,0 +1,78 @@
1
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
2
+ import { useMemo } from 'react';
3
+ import { findPresentationAction, resolvePresentationActionEndpointBinding, } from '@cohesivesystems/presentation-core';
4
+ /**
5
+ * Runtime projection for endpoint-backed presentation actions. It resolves the
6
+ * endpoint from the action definition/target bindings, prepares an endpoint
7
+ * request from the caller's semantic input, executes it through the app's API
8
+ * adapter, and applies result/query invalidation policy.
9
+ */
10
+ export function usePresentationActionExecutor({ actionId, componentSet = 'cohesive.presentation.react', dataSourceId, dataSourceQueryKey, executeEndpoint, invalidateDataSourceIds, module, onSuccess, prepareRequest, processResult, setResultQueryData, }) {
11
+ const queryClient = useQueryClient();
12
+ const action = useMemo(() => findPresentationAction(module, actionId), [actionId, module]);
13
+ const binding = useMemo(() => resolvePresentationActionEndpointBinding({
14
+ actionId,
15
+ componentSet,
16
+ dataSourceId,
17
+ module,
18
+ }), [actionId, componentSet, dataSourceId, module]);
19
+ const endpointId = binding?.EndpointId ?? null;
20
+ const mutation = useMutation({
21
+ mutationFn: async (input) => {
22
+ if (!endpointId) {
23
+ throw new Error(`No endpoint binding is registered for action '${actionId}'.`);
24
+ }
25
+ return await executeEndpoint(endpointId, prepareRequest({
26
+ action,
27
+ actionId,
28
+ binding,
29
+ endpointId,
30
+ input,
31
+ module,
32
+ }));
33
+ },
34
+ onSuccess: async (result, input) => {
35
+ if (!endpointId) {
36
+ return;
37
+ }
38
+ const context = {
39
+ action,
40
+ actionId,
41
+ endpointId,
42
+ input,
43
+ queryClient,
44
+ result,
45
+ };
46
+ setResultQueryData?.(context);
47
+ processResult?.(context);
48
+ await invalidatePresentationActionDataSources({
49
+ action,
50
+ context,
51
+ dataSourceQueryKey,
52
+ invalidateDataSourceIds,
53
+ queryClient,
54
+ });
55
+ onSuccess?.(context);
56
+ },
57
+ });
58
+ return {
59
+ action,
60
+ endpointId,
61
+ error: mutation.error,
62
+ execute: mutation.mutate,
63
+ executeAsync: mutation.mutateAsync,
64
+ isPending: mutation.isPending,
65
+ isSuccess: mutation.isSuccess,
66
+ reset: mutation.reset,
67
+ };
68
+ }
69
+ async function invalidatePresentationActionDataSources({ action, context, dataSourceQueryKey, invalidateDataSourceIds, queryClient, }) {
70
+ if (!dataSourceQueryKey) {
71
+ return;
72
+ }
73
+ const dataSourceIds = typeof invalidateDataSourceIds === 'function'
74
+ ? invalidateDataSourceIds(context)
75
+ : (invalidateDataSourceIds ?? action?.Result?.InvalidateDataSourceIds ?? []);
76
+ await Promise.all(Array.from(new Set(dataSourceIds)).map((dataSourceId) => queryClient.invalidateQueries({ queryKey: dataSourceQueryKey(dataSourceId) })));
77
+ }
78
+ //# sourceMappingURL=presentation-action-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-action-runtime.js","sourceRoot":"","sources":["../src/presentation-action-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type PresentationDataSourceBinding, type PresentationDataSourceState } from '@cohesivesystems/presentation-core';
2
+ export declare function usePresentationDataSources(bindings: readonly PresentationDataSourceBinding[]): Readonly<Record<string, PresentationDataSourceState<unknown>>>;
3
+ //# sourceMappingURL=presentation-data-source-binding-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-data-source-binding-runtime.d.ts","sourceRoot":"","sources":["../src/presentation-data-source-binding-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAIjC,MAAM,oCAAoC,CAAA;AAW3C,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,6BAA6B,EAAE,kEA4CnD"}
@@ -0,0 +1,65 @@
1
+ import { useQueries } from '@tanstack/react-query';
2
+ import { useMemo } from 'react';
3
+ import { findPresentationDataSource, isTanStackQueryBinding, resolveDataSourceAuthorization, } from '@cohesivesystems/presentation-core';
4
+ import { usePresentationModule } from './presentation-module-context.js';
5
+ export function usePresentationDataSources(bindings) {
6
+ const module = usePresentationModule();
7
+ const queryBindings = useMemo(() => bindings.filter(isTanStackQueryBinding), [bindings]);
8
+ const queryResults = useQueries({
9
+ queries: queryBindings.map((binding) => {
10
+ const authorization = resolveDataSourceAuthorization(binding);
11
+ return {
12
+ enabled: (binding.enabled ?? true) && !authorization.isBlocked,
13
+ queryFn: binding.queryFn,
14
+ queryKey: binding.queryKey,
15
+ refetchInterval: binding.refetchInterval,
16
+ retry: binding.retry,
17
+ staleTime: binding.staleTime,
18
+ };
19
+ }),
20
+ });
21
+ const dataSources = useMemo(() => {
22
+ const definitionsById = new Map(module?.DataSources.map((definition) => [definition.Id, definition]) ?? []);
23
+ const asyncResultsByDataSourceId = new Map(queryBindings.map((binding, index) => [binding.dataSourceId, queryResults[index]]));
24
+ return Object.fromEntries(bindings.map((binding) => {
25
+ const definition = definitionsById.get(binding.dataSourceId) ??
26
+ findPresentationDataSource(module, binding.dataSourceId);
27
+ const state = isTanStackQueryBinding(binding)
28
+ ? createAsyncDataSourceState(binding, asyncResultsByDataSourceId.get(binding.dataSourceId), definition)
29
+ : createLocalValueDataSourceState(binding, definition);
30
+ return [binding.dataSourceId, state];
31
+ }));
32
+ }, [bindings, module, queryBindings, queryResults]);
33
+ return dataSources;
34
+ }
35
+ function createAsyncDataSourceState(binding, result, definition) {
36
+ const authorization = resolveDataSourceAuthorization(binding);
37
+ return {
38
+ blockedLabel: authorization.blockedLabel,
39
+ data: result.data === undefined ? binding.fallbackData : result.data,
40
+ definition,
41
+ emptyMessage: binding.emptyMessage,
42
+ error: result.error,
43
+ isBlocked: authorization.isBlocked,
44
+ isFetching: result.isFetching,
45
+ isPending: result.isPending,
46
+ pendingLabel: binding.pendingLabel,
47
+ refetch: result.refetch,
48
+ };
49
+ }
50
+ function createLocalValueDataSourceState(binding, definition) {
51
+ const authorization = resolveDataSourceAuthorization(binding);
52
+ return {
53
+ blockedLabel: authorization.blockedLabel,
54
+ data: binding.data,
55
+ definition,
56
+ emptyMessage: binding.emptyMessage,
57
+ error: binding.error,
58
+ isBlocked: authorization.isBlocked,
59
+ isFetching: binding.isFetching,
60
+ isPending: binding.isPending,
61
+ pendingLabel: binding.pendingLabel,
62
+ refetch: binding.refetch,
63
+ };
64
+ }
65
+ //# sourceMappingURL=presentation-data-source-binding-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-data-source-binding-runtime.js","sourceRoot":"","sources":["../src/presentation-data-source-binding-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type PresentationDataSourceBinding, type PresentationDataSourceStateMap } from '@cohesivesystems/presentation-core';
3
+ export interface PresentationDataSourceBinderProps {
4
+ readonly bindings: readonly PresentationDataSourceBinding[];
5
+ readonly children: (dataSources: PresentationDataSourceStateMap) => ReactNode;
6
+ }
7
+ /**
8
+ * Binds declared presentation data sources to runtime state for projected React
9
+ * components.
10
+ */
11
+ export declare function PresentationDataSourceBinder({ bindings, children, }: PresentationDataSourceBinderProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=presentation-data-source-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-data-source-binding.d.ts","sourceRoot":"","sources":["../src/presentation-data-source-binding.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACpC,MAAM,oCAAoC,CAAA;AAG3C,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,6BAA6B,EAAE,CAAA;IAC3D,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,8BAA8B,KAAK,SAAS,CAAA;CAC9E;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,QAAQ,EACR,QAAQ,GACT,EAAE,iCAAiC,2CAGnC"}
@@ -0,0 +1,13 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import {} from 'react';
3
+ import {} from '@cohesivesystems/presentation-core';
4
+ import { usePresentationDataSources } from './presentation-data-source-binding-runtime.js';
5
+ /**
6
+ * Binds declared presentation data sources to runtime state for projected React
7
+ * components.
8
+ */
9
+ export function PresentationDataSourceBinder({ bindings, children, }) {
10
+ const dataSources = usePresentationDataSources(bindings);
11
+ return _jsx(_Fragment, { children: children(dataSources) });
12
+ }
13
+ //# sourceMappingURL=presentation-data-source-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-data-source-binding.js","sourceRoot":"","sources":["../src/presentation-data-source-binding.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,EAGN,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAA;AAOvF;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,EAC3C,QAAQ,EACR,QAAQ,GAC0B;IAClC,MAAM,WAAW,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAA;IACxD,OAAO,4BAAG,QAAQ,CAAC,WAAW,CAAC,GAAI,CAAA;AACrC,CAAC"}
@@ -0,0 +1,139 @@
1
+ import { type ActionDefinition, type FlowDefinition, type FlowStateDefinition, type FlowTransitionDefinition, type PresentationModuleDefinition, type ViewDefinition } from '@cohesivesystems/presentation-core';
2
+ export interface PresentationFlowInstance {
3
+ readonly data: Readonly<Record<string, unknown>>;
4
+ readonly flowId: string;
5
+ readonly stateId: string;
6
+ }
7
+ export interface PresentationFlowStartOptions {
8
+ readonly actionId?: string | null;
9
+ readonly data?: Readonly<Record<string, unknown>>;
10
+ readonly event?: string | null;
11
+ readonly flowId: string;
12
+ readonly stateId?: string | null;
13
+ }
14
+ export interface PresentationFlowDispatchOptions {
15
+ readonly actionId?: string | null;
16
+ readonly data?: Readonly<Record<string, unknown>>;
17
+ }
18
+ export interface PresentationFlowTransitionToOptions {
19
+ readonly data?: Readonly<Record<string, unknown>>;
20
+ readonly flowId?: string | null;
21
+ }
22
+ export interface PresentationFlowTransitionContext {
23
+ readonly flow: FlowDefinition;
24
+ readonly fromState: FlowStateDefinition | null;
25
+ readonly instance: PresentationFlowInstance;
26
+ readonly toState: FlowStateDefinition;
27
+ readonly transition: FlowTransitionDefinition | null;
28
+ }
29
+ export interface PresentationFlowUnhandledEventContext {
30
+ readonly actionId: string | null;
31
+ readonly event: string;
32
+ readonly flow: FlowDefinition;
33
+ readonly instance: PresentationFlowInstance;
34
+ }
35
+ export interface UsePresentationFlowRuntimeOptions {
36
+ readonly initialData?: Readonly<Record<string, unknown>>;
37
+ readonly initialFlowId?: string | null;
38
+ readonly initialStateId?: string | null;
39
+ readonly module: PresentationModuleDefinition | null;
40
+ readonly onTransition?: (context: PresentationFlowTransitionContext) => void;
41
+ readonly onUnhandledEvent?: (context: PresentationFlowUnhandledEventContext) => void;
42
+ }
43
+ export interface PresentationActionPreparedFlow {
44
+ readonly canCancel: boolean;
45
+ readonly flowId: string;
46
+ readonly promptViewId: string | null;
47
+ readonly requiresExplicitCommit: boolean;
48
+ }
49
+ export interface PresentationFlowRuntimeSnapshot {
50
+ readonly activeFlow: FlowDefinition | null;
51
+ readonly activeInstance: PresentationFlowInstance | null;
52
+ readonly activeState: FlowStateDefinition | null;
53
+ readonly activeView: ViewDefinition | null;
54
+ readonly clearFlow: () => void;
55
+ readonly dispatchAction: (actionId: string, options?: PresentationFlowDispatchOptions) => boolean;
56
+ readonly dispatchEvent: (event: string, options?: PresentationFlowDispatchOptions) => boolean;
57
+ readonly dispatchTransition: (transitionId: string, options?: PresentationFlowDispatchOptions) => boolean;
58
+ readonly isFlowActive: (flowId: string) => boolean;
59
+ readonly isStateActive: (stateId: string) => boolean;
60
+ readonly startFlow: (options: PresentationFlowStartOptions) => boolean;
61
+ readonly transitionTo: (stateId: string, options?: PresentationFlowTransitionToOptions) => boolean;
62
+ }
63
+ export interface PresentationFlowRuntimeEntry {
64
+ readonly flow: FlowDefinition;
65
+ readonly instance: PresentationFlowInstance;
66
+ readonly state: FlowStateDefinition;
67
+ readonly view: ViewDefinition | null;
68
+ }
69
+ export interface PresentationFlowRuntimeRegistrySnapshot {
70
+ readonly activeEntries: readonly PresentationFlowRuntimeEntry[];
71
+ readonly clearFlow: (flowId: string) => void;
72
+ readonly getRuntime: (flowId: string) => PresentationFlowRuntimeSnapshot;
73
+ }
74
+ /**
75
+ * Tests flow-state kind values across generated numeric constants and backend
76
+ * string enum serialization.
77
+ */
78
+ export declare function isPresentationFlowStateKind(value: unknown, ...kinds: readonly (number | string)[]): boolean;
79
+ /**
80
+ * Returns true when a flow instance is active for a specific data key/value and
81
+ * the active state is a visible prompt-like state.
82
+ */
83
+ export declare function isPresentationFlowSurfaceOpenForData({ dataKey, dataValue, flowId, runtime, }: {
84
+ readonly dataKey: string;
85
+ readonly dataValue: string | null;
86
+ readonly flowId: string;
87
+ readonly runtime: PresentationFlowRuntimeSnapshot;
88
+ }): boolean;
89
+ /** Finds the first visible prompt/pending/error state in a flow definition. */
90
+ export declare function findPresentationFlowSurfaceState(flow: FlowDefinition | null | undefined): FlowStateDefinition | null;
91
+ /** Finds the first visible error state in a flow definition. */
92
+ export declare function findPresentationFlowErrorSurfaceState(flow: FlowDefinition | null | undefined): FlowStateDefinition | null;
93
+ /** Finds the first state matching one of the requested semantic flow kinds. */
94
+ export declare function findPresentationFlowStateByKind(flow: FlowDefinition | null | undefined, ...kinds: readonly (number | string)[]): FlowStateDefinition | null;
95
+ /**
96
+ * Advances an active runtime instance to a state with the requested semantic
97
+ * kind, preferring a valid declared transition from the current state.
98
+ */
99
+ export declare function advancePresentationFlowToStateKind({ allowStateFallback, data, flow, runtime, stateKinds, }: {
100
+ readonly allowStateFallback?: boolean;
101
+ readonly data?: Readonly<Record<string, unknown>>;
102
+ readonly flow: FlowDefinition | null | undefined;
103
+ readonly runtime: PresentationFlowRuntimeSnapshot;
104
+ readonly stateKinds: readonly (number | string)[];
105
+ }): boolean;
106
+ /** Finds a valid transition from a state to any state with the requested kind. */
107
+ export declare function findPresentationFlowTransitionToStateKind({ data, flow, fromStateId, stateKinds, }: {
108
+ readonly data: Readonly<Record<string, unknown>>;
109
+ readonly flow: FlowDefinition;
110
+ readonly fromStateId: string;
111
+ readonly stateKinds: readonly (number | string)[];
112
+ }): FlowTransitionDefinition | null;
113
+ /** Finds a valid action/event transition from the given flow state. */
114
+ export declare function findPresentationFlowTransition({ actionId, data, event, flow, fromStateId, }: {
115
+ readonly actionId?: string | null;
116
+ readonly data: Readonly<Record<string, unknown>>;
117
+ readonly event?: string | null;
118
+ readonly flow: FlowDefinition;
119
+ readonly fromStateId: string;
120
+ }): FlowTransitionDefinition | null;
121
+ /**
122
+ * Interprets client-resident Presentation IR flows into local React state.
123
+ *
124
+ * The runtime deliberately stays semantic: it tracks the active flow, resolves
125
+ * transitions by event or action id, exposes the active prompt view, and leaves
126
+ * endpoint execution, persistence, and custom rendering to host-specific escape
127
+ * hatches. That lets app code migrate from imperative conditionals toward IR
128
+ * projection without requiring every flow side effect to be generalized first.
129
+ */
130
+ export declare function usePresentationFlowRuntime({ initialData, initialFlowId, initialStateId, module, onTransition, onUnhandledEvent, }: UsePresentationFlowRuntimeOptions): PresentationFlowRuntimeSnapshot;
131
+ /**
132
+ * Maintains the active instances for all client-resident Presentation IR flows
133
+ * in a host. Callers can still ask for a flow-scoped runtime, but prompt
134
+ * projection can iterate active entries instead of wiring each flow manually.
135
+ */
136
+ export declare function usePresentationFlowRuntimeRegistry({ module, onTransition, onUnhandledEvent, }: Pick<UsePresentationFlowRuntimeOptions, 'module' | 'onTransition' | 'onUnhandledEvent'>): PresentationFlowRuntimeRegistrySnapshot;
137
+ export declare function resolvePresentationActionPreparedFlow(action: ActionDefinition | null): PresentationActionPreparedFlow | null;
138
+ export declare function matchesPresentationFlowTransitionGuard(transition: FlowTransitionDefinition, data: Readonly<Record<string, unknown>>): boolean;
139
+ //# sourceMappingURL=presentation-flow-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-flow-runtime.d.ts","sourceRoot":"","sources":["../src/presentation-flow-runtime.tsx"],"names":[],"mappings":"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"}