@pwfabric/runtime 0.0.0-stage → 1.0.0-rc.0

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 (603) hide show
  1. package/LICENSE +90 -0
  2. package/README.md +13 -2
  3. package/dist/__tests__/dom-test-setup.d.ts +21 -0
  4. package/dist/__tests__/dom-test-setup.d.ts.map +1 -0
  5. package/dist/__tests__/dom-test-setup.js +36 -0
  6. package/dist/__tests__/dom-test-setup.js.map +1 -0
  7. package/dist/a11y/announcer.d.ts +66 -0
  8. package/dist/a11y/announcer.d.ts.map +1 -0
  9. package/dist/a11y/announcer.js +140 -0
  10. package/dist/a11y/announcer.js.map +1 -0
  11. package/dist/a11y/contrast.d.ts +55 -0
  12. package/dist/a11y/contrast.d.ts.map +1 -0
  13. package/dist/a11y/contrast.js +93 -0
  14. package/dist/a11y/contrast.js.map +1 -0
  15. package/dist/a11y/focus.d.ts +124 -0
  16. package/dist/a11y/focus.d.ts.map +1 -0
  17. package/dist/a11y/focus.js +282 -0
  18. package/dist/a11y/focus.js.map +1 -0
  19. package/dist/a11y/index.d.ts +22 -0
  20. package/dist/a11y/index.d.ts.map +1 -0
  21. package/dist/a11y/index.js +18 -0
  22. package/dist/a11y/index.js.map +1 -0
  23. package/dist/a11y/keyboard.d.ts +145 -0
  24. package/dist/a11y/keyboard.d.ts.map +1 -0
  25. package/dist/a11y/keyboard.js +317 -0
  26. package/dist/a11y/keyboard.js.map +1 -0
  27. package/dist/adapters/default-image.d.ts +26 -0
  28. package/dist/adapters/default-image.d.ts.map +1 -0
  29. package/dist/adapters/default-image.js +37 -0
  30. package/dist/adapters/default-image.js.map +1 -0
  31. package/dist/adapters/index.d.ts +28 -0
  32. package/dist/adapters/index.d.ts.map +1 -0
  33. package/dist/adapters/index.js +28 -0
  34. package/dist/adapters/index.js.map +1 -0
  35. package/dist/adapters/next-image.d.ts +39 -0
  36. package/dist/adapters/next-image.d.ts.map +1 -0
  37. package/dist/adapters/next-image.js +124 -0
  38. package/dist/adapters/next-image.js.map +1 -0
  39. package/dist/adapters/types.d.ts +62 -0
  40. package/dist/adapters/types.d.ts.map +1 -0
  41. package/dist/adapters/types.js +11 -0
  42. package/dist/adapters/types.js.map +1 -0
  43. package/dist/analytics/index.d.ts +15 -0
  44. package/dist/analytics/index.d.ts.map +1 -0
  45. package/dist/analytics/index.js +15 -0
  46. package/dist/analytics/index.js.map +1 -0
  47. package/dist/analytics/tracker.d.ts +66 -0
  48. package/dist/analytics/tracker.d.ts.map +1 -0
  49. package/dist/analytics/tracker.js +251 -0
  50. package/dist/analytics/tracker.js.map +1 -0
  51. package/dist/analytics/types.d.ts +131 -0
  52. package/dist/analytics/types.d.ts.map +1 -0
  53. package/dist/analytics/types.js +11 -0
  54. package/dist/analytics/types.js.map +1 -0
  55. package/dist/auth/index.d.ts +16 -0
  56. package/dist/auth/index.d.ts.map +1 -0
  57. package/dist/auth/index.js +14 -0
  58. package/dist/auth/index.js.map +1 -0
  59. package/dist/auth/provider.d.ts +133 -0
  60. package/dist/auth/provider.d.ts.map +1 -0
  61. package/dist/auth/provider.js +473 -0
  62. package/dist/auth/provider.js.map +1 -0
  63. package/dist/auth/types.d.ts +118 -0
  64. package/dist/auth/types.d.ts.map +1 -0
  65. package/dist/auth/types.js +9 -0
  66. package/dist/auth/types.js.map +1 -0
  67. package/dist/binding/collection.d.ts +191 -0
  68. package/dist/binding/collection.d.ts.map +1 -0
  69. package/dist/binding/collection.js +358 -0
  70. package/dist/binding/collection.js.map +1 -0
  71. package/dist/binding/datasource.d.ts +320 -0
  72. package/dist/binding/datasource.d.ts.map +1 -0
  73. package/dist/binding/datasource.js +556 -0
  74. package/dist/binding/datasource.js.map +1 -0
  75. package/dist/binding/engine.d.ts +66 -0
  76. package/dist/binding/engine.d.ts.map +1 -0
  77. package/dist/binding/engine.js +268 -0
  78. package/dist/binding/engine.js.map +1 -0
  79. package/dist/binding/expression.d.ts +151 -0
  80. package/dist/binding/expression.d.ts.map +1 -0
  81. package/dist/binding/expression.js +787 -0
  82. package/dist/binding/expression.js.map +1 -0
  83. package/dist/binding/index.d.ts +20 -0
  84. package/dist/binding/index.d.ts.map +1 -0
  85. package/dist/binding/index.js +14 -0
  86. package/dist/binding/index.js.map +1 -0
  87. package/dist/binding/two-way.d.ts +150 -0
  88. package/dist/binding/two-way.d.ts.map +1 -0
  89. package/dist/binding/two-way.js +462 -0
  90. package/dist/binding/two-way.js.map +1 -0
  91. package/dist/binding/types.d.ts +120 -0
  92. package/dist/binding/types.d.ts.map +1 -0
  93. package/dist/binding/types.js +9 -0
  94. package/dist/binding/types.js.map +1 -0
  95. package/dist/blocks/__test-fixtures__/block-fixtures.d.ts +40 -0
  96. package/dist/blocks/__test-fixtures__/block-fixtures.d.ts.map +1 -0
  97. package/dist/blocks/__test-fixtures__/block-fixtures.js +506 -0
  98. package/dist/blocks/__test-fixtures__/block-fixtures.js.map +1 -0
  99. package/dist/blocks/component-types.d.ts +82 -0
  100. package/dist/blocks/component-types.d.ts.map +1 -0
  101. package/dist/blocks/component-types.js +11 -0
  102. package/dist/blocks/component-types.js.map +1 -0
  103. package/dist/blocks/composition-rules.d.ts +169 -0
  104. package/dist/blocks/composition-rules.d.ts.map +1 -0
  105. package/dist/blocks/composition-rules.js +391 -0
  106. package/dist/blocks/composition-rules.js.map +1 -0
  107. package/dist/blocks/hooks.d.ts +32 -0
  108. package/dist/blocks/hooks.d.ts.map +1 -0
  109. package/dist/blocks/hooks.js +42 -0
  110. package/dist/blocks/hooks.js.map +1 -0
  111. package/dist/blocks/index.d.ts +16 -0
  112. package/dist/blocks/index.d.ts.map +1 -0
  113. package/dist/blocks/index.js +24 -0
  114. package/dist/blocks/index.js.map +1 -0
  115. package/dist/blocks/registry.d.ts +85 -0
  116. package/dist/blocks/registry.d.ts.map +1 -0
  117. package/dist/blocks/registry.js +136 -0
  118. package/dist/blocks/registry.js.map +1 -0
  119. package/dist/blocks/rule-engine.d.ts +132 -0
  120. package/dist/blocks/rule-engine.d.ts.map +1 -0
  121. package/dist/blocks/rule-engine.js +321 -0
  122. package/dist/blocks/rule-engine.js.map +1 -0
  123. package/dist/blocks/surface-event-context.d.ts +14 -0
  124. package/dist/blocks/surface-event-context.d.ts.map +1 -0
  125. package/dist/blocks/surface-event-context.js +14 -0
  126. package/dist/blocks/surface-event-context.js.map +1 -0
  127. package/dist/blocks/surface-id-context.d.ts +14 -0
  128. package/dist/blocks/surface-id-context.d.ts.map +1 -0
  129. package/dist/blocks/surface-id-context.js +15 -0
  130. package/dist/blocks/surface-id-context.js.map +1 -0
  131. package/dist/bus.d.ts +42 -0
  132. package/dist/bus.d.ts.map +1 -0
  133. package/dist/bus.js +158 -0
  134. package/dist/bus.js.map +1 -0
  135. package/dist/cache/index.d.ts +10 -0
  136. package/dist/cache/index.d.ts.map +1 -0
  137. package/dist/cache/index.js +10 -0
  138. package/dist/cache/index.js.map +1 -0
  139. package/dist/cache/memory.d.ts +33 -0
  140. package/dist/cache/memory.d.ts.map +1 -0
  141. package/dist/cache/memory.js +138 -0
  142. package/dist/cache/memory.js.map +1 -0
  143. package/dist/cache/types.d.ts +63 -0
  144. package/dist/cache/types.d.ts.map +1 -0
  145. package/dist/cache/types.js +9 -0
  146. package/dist/cache/types.js.map +1 -0
  147. package/dist/capability/index.d.ts +73 -0
  148. package/dist/capability/index.d.ts.map +1 -0
  149. package/dist/capability/index.js +87 -0
  150. package/dist/capability/index.js.map +1 -0
  151. package/dist/capability/kernel-capabilities.d.ts +32 -0
  152. package/dist/capability/kernel-capabilities.d.ts.map +1 -0
  153. package/dist/capability/kernel-capabilities.js +36 -0
  154. package/dist/capability/kernel-capabilities.js.map +1 -0
  155. package/dist/capability/platform-capabilities.d.ts +72 -0
  156. package/dist/capability/platform-capabilities.d.ts.map +1 -0
  157. package/dist/capability/platform-capabilities.js +267 -0
  158. package/dist/capability/platform-capabilities.js.map +1 -0
  159. package/dist/capability/type-mapping.d.ts +71 -0
  160. package/dist/capability/type-mapping.d.ts.map +1 -0
  161. package/dist/capability/type-mapping.js +107 -0
  162. package/dist/capability/type-mapping.js.map +1 -0
  163. package/dist/capability/validation.d.ts +47 -0
  164. package/dist/capability/validation.d.ts.map +1 -0
  165. package/dist/capability/validation.js +54 -0
  166. package/dist/capability/validation.js.map +1 -0
  167. package/dist/connectors/declared-connector.d.ts +49 -0
  168. package/dist/connectors/declared-connector.d.ts.map +1 -0
  169. package/dist/connectors/declared-connector.js +333 -0
  170. package/dist/connectors/declared-connector.js.map +1 -0
  171. package/dist/connectors/engine-registry.d.ts +51 -0
  172. package/dist/connectors/engine-registry.d.ts.map +1 -0
  173. package/dist/connectors/engine-registry.js +135 -0
  174. package/dist/connectors/engine-registry.js.map +1 -0
  175. package/dist/connectors/index.d.ts +15 -0
  176. package/dist/connectors/index.d.ts.map +1 -0
  177. package/dist/connectors/index.js +14 -0
  178. package/dist/connectors/index.js.map +1 -0
  179. package/dist/connectors/module-loader.d.ts +71 -0
  180. package/dist/connectors/module-loader.d.ts.map +1 -0
  181. package/dist/connectors/module-loader.js +143 -0
  182. package/dist/connectors/module-loader.js.map +1 -0
  183. package/dist/connectors/types.d.ts +175 -0
  184. package/dist/connectors/types.d.ts.map +1 -0
  185. package/dist/connectors/types.js +23 -0
  186. package/dist/connectors/types.js.map +1 -0
  187. package/dist/context.d.ts +28 -0
  188. package/dist/context.d.ts.map +1 -0
  189. package/dist/context.js +38 -0
  190. package/dist/context.js.map +1 -0
  191. package/dist/data/DataCapabilityProvider.d.ts +40 -0
  192. package/dist/data/DataCapabilityProvider.d.ts.map +1 -0
  193. package/dist/data/DataCapabilityProvider.js +58 -0
  194. package/dist/data/DataCapabilityProvider.js.map +1 -0
  195. package/dist/data/index.d.ts +18 -0
  196. package/dist/data/index.d.ts.map +1 -0
  197. package/dist/data/index.js +18 -0
  198. package/dist/data/index.js.map +1 -0
  199. package/dist/data/manager.d.ts +41 -0
  200. package/dist/data/manager.d.ts.map +1 -0
  201. package/dist/data/manager.js +442 -0
  202. package/dist/data/manager.js.map +1 -0
  203. package/dist/data/types.d.ts +219 -0
  204. package/dist/data/types.d.ts.map +1 -0
  205. package/dist/data/types.js +2 -0
  206. package/dist/data/types.js.map +1 -0
  207. package/dist/entity/aggregate.d.ts +9 -0
  208. package/dist/entity/aggregate.d.ts.map +1 -0
  209. package/dist/entity/aggregate.js +24 -0
  210. package/dist/entity/aggregate.js.map +1 -0
  211. package/dist/entity/apply-query.d.ts +59 -0
  212. package/dist/entity/apply-query.d.ts.map +1 -0
  213. package/dist/entity/apply-query.js +264 -0
  214. package/dist/entity/apply-query.js.map +1 -0
  215. package/dist/entity/behavior.d.ts +95 -0
  216. package/dist/entity/behavior.d.ts.map +1 -0
  217. package/dist/entity/behavior.js +78 -0
  218. package/dist/entity/behavior.js.map +1 -0
  219. package/dist/entity/connector.d.ts +142 -0
  220. package/dist/entity/connector.d.ts.map +1 -0
  221. package/dist/entity/connector.js +89 -0
  222. package/dist/entity/connector.js.map +1 -0
  223. package/dist/entity/connectors/index.d.ts +13 -0
  224. package/dist/entity/connectors/index.d.ts.map +1 -0
  225. package/dist/entity/connectors/index.js +11 -0
  226. package/dist/entity/connectors/index.js.map +1 -0
  227. package/dist/entity/connectors/static.d.ts +52 -0
  228. package/dist/entity/connectors/static.d.ts.map +1 -0
  229. package/dist/entity/connectors/static.js +245 -0
  230. package/dist/entity/connectors/static.js.map +1 -0
  231. package/dist/entity/entity-datasource.d.ts +51 -0
  232. package/dist/entity/entity-datasource.d.ts.map +1 -0
  233. package/dist/entity/entity-datasource.js +33 -0
  234. package/dist/entity/entity-datasource.js.map +1 -0
  235. package/dist/entity/facade.d.ts +71 -0
  236. package/dist/entity/facade.d.ts.map +1 -0
  237. package/dist/entity/facade.js +70 -0
  238. package/dist/entity/facade.js.map +1 -0
  239. package/dist/entity/http-connector.d.ts +124 -0
  240. package/dist/entity/http-connector.d.ts.map +1 -0
  241. package/dist/entity/http-connector.js +295 -0
  242. package/dist/entity/http-connector.js.map +1 -0
  243. package/dist/entity/index.d.ts +39 -0
  244. package/dist/entity/index.d.ts.map +1 -0
  245. package/dist/entity/index.js +31 -0
  246. package/dist/entity/index.js.map +1 -0
  247. package/dist/entity/postgres-connector.d.ts +65 -0
  248. package/dist/entity/postgres-connector.d.ts.map +1 -0
  249. package/dist/entity/postgres-connector.js +239 -0
  250. package/dist/entity/postgres-connector.js.map +1 -0
  251. package/dist/entity/registry.d.ts +60 -0
  252. package/dist/entity/registry.d.ts.map +1 -0
  253. package/dist/entity/registry.js +90 -0
  254. package/dist/entity/registry.js.map +1 -0
  255. package/dist/entity/store.d.ts +67 -0
  256. package/dist/entity/store.d.ts.map +1 -0
  257. package/dist/entity/store.js +349 -0
  258. package/dist/entity/store.js.map +1 -0
  259. package/dist/entity/types.d.ts +181 -0
  260. package/dist/entity/types.d.ts.map +1 -0
  261. package/dist/entity/types.js +10 -0
  262. package/dist/entity/types.js.map +1 -0
  263. package/dist/execution-context.d.ts +89 -0
  264. package/dist/execution-context.d.ts.map +1 -0
  265. package/dist/execution-context.js +146 -0
  266. package/dist/execution-context.js.map +1 -0
  267. package/dist/executor.d.ts +28 -0
  268. package/dist/executor.d.ts.map +1 -0
  269. package/dist/executor.js +33 -0
  270. package/dist/executor.js.map +1 -0
  271. package/dist/forms/form-entity-bridge.d.ts +95 -0
  272. package/dist/forms/form-entity-bridge.d.ts.map +1 -0
  273. package/dist/forms/form-entity-bridge.js +96 -0
  274. package/dist/forms/form-entity-bridge.js.map +1 -0
  275. package/dist/forms/form-write-target.d.ts +35 -0
  276. package/dist/forms/form-write-target.d.ts.map +1 -0
  277. package/dist/forms/form-write-target.js +81 -0
  278. package/dist/forms/form-write-target.js.map +1 -0
  279. package/dist/forms/index.d.ts +23 -0
  280. package/dist/forms/index.d.ts.map +1 -0
  281. package/dist/forms/index.js +25 -0
  282. package/dist/forms/index.js.map +1 -0
  283. package/dist/forms/named-control-values.d.ts +28 -0
  284. package/dist/forms/named-control-values.d.ts.map +1 -0
  285. package/dist/forms/named-control-values.js +42 -0
  286. package/dist/forms/named-control-values.js.map +1 -0
  287. package/dist/forms/processor.d.ts +56 -0
  288. package/dist/forms/processor.d.ts.map +1 -0
  289. package/dist/forms/processor.js +154 -0
  290. package/dist/forms/processor.js.map +1 -0
  291. package/dist/forms/types.d.ts +175 -0
  292. package/dist/forms/types.d.ts.map +1 -0
  293. package/dist/forms/types.js +33 -0
  294. package/dist/forms/types.js.map +1 -0
  295. package/dist/forms/validator.d.ts +62 -0
  296. package/dist/forms/validator.d.ts.map +1 -0
  297. package/dist/forms/validator.js +218 -0
  298. package/dist/forms/validator.js.map +1 -0
  299. package/dist/graph/index.d.ts +11 -0
  300. package/dist/graph/index.d.ts.map +1 -0
  301. package/dist/graph/index.js +9 -0
  302. package/dist/graph/index.js.map +1 -0
  303. package/dist/graph/resolver.d.ts +67 -0
  304. package/dist/graph/resolver.d.ts.map +1 -0
  305. package/dist/graph/resolver.js +243 -0
  306. package/dist/graph/resolver.js.map +1 -0
  307. package/dist/graph/types.d.ts +126 -0
  308. package/dist/graph/types.d.ts.map +1 -0
  309. package/dist/graph/types.js +9 -0
  310. package/dist/graph/types.js.map +1 -0
  311. package/dist/hooks/useInstalledAtoms.d.ts +97 -0
  312. package/dist/hooks/useInstalledAtoms.d.ts.map +1 -0
  313. package/dist/hooks/useInstalledAtoms.js +92 -0
  314. package/dist/hooks/useInstalledAtoms.js.map +1 -0
  315. package/dist/i18n/index.d.ts +16 -0
  316. package/dist/i18n/index.d.ts.map +1 -0
  317. package/dist/i18n/index.js +14 -0
  318. package/dist/i18n/index.js.map +1 -0
  319. package/dist/i18n/translator.d.ts +77 -0
  320. package/dist/i18n/translator.d.ts.map +1 -0
  321. package/dist/i18n/translator.js +357 -0
  322. package/dist/i18n/translator.js.map +1 -0
  323. package/dist/i18n/types.d.ts +94 -0
  324. package/dist/i18n/types.d.ts.map +1 -0
  325. package/dist/i18n/types.js +9 -0
  326. package/dist/i18n/types.js.map +1 -0
  327. package/dist/index.d.ts +65 -0
  328. package/dist/index.d.ts.map +1 -0
  329. package/dist/index.js +95 -0
  330. package/dist/index.js.map +1 -0
  331. package/dist/kernel.d.ts +48 -0
  332. package/dist/kernel.d.ts.map +1 -0
  333. package/dist/kernel.js +258 -0
  334. package/dist/kernel.js.map +1 -0
  335. package/dist/perf/budget.d.ts +93 -0
  336. package/dist/perf/budget.d.ts.map +1 -0
  337. package/dist/perf/budget.js +122 -0
  338. package/dist/perf/budget.js.map +1 -0
  339. package/dist/perf/index.d.ts +17 -0
  340. package/dist/perf/index.d.ts.map +1 -0
  341. package/dist/perf/index.js +13 -0
  342. package/dist/perf/index.js.map +1 -0
  343. package/dist/perf/render-timer.d.ts +91 -0
  344. package/dist/perf/render-timer.d.ts.map +1 -0
  345. package/dist/perf/render-timer.js +136 -0
  346. package/dist/perf/render-timer.js.map +1 -0
  347. package/dist/perf/reporter.d.ts +127 -0
  348. package/dist/perf/reporter.d.ts.map +1 -0
  349. package/dist/perf/reporter.js +241 -0
  350. package/dist/perf/reporter.js.map +1 -0
  351. package/dist/perf/web-vitals.d.ts +112 -0
  352. package/dist/perf/web-vitals.d.ts.map +1 -0
  353. package/dist/perf/web-vitals.js +268 -0
  354. package/dist/perf/web-vitals.js.map +1 -0
  355. package/dist/registry.d.ts +64 -0
  356. package/dist/registry.d.ts.map +1 -0
  357. package/dist/registry.js +126 -0
  358. package/dist/registry.js.map +1 -0
  359. package/dist/render/BehaviorSurfaceProvider.d.ts +66 -0
  360. package/dist/render/BehaviorSurfaceProvider.d.ts.map +1 -0
  361. package/dist/render/BehaviorSurfaceProvider.js +185 -0
  362. package/dist/render/BehaviorSurfaceProvider.js.map +1 -0
  363. package/dist/render/BlockErrorBoundary.d.ts +27 -0
  364. package/dist/render/BlockErrorBoundary.d.ts.map +1 -0
  365. package/dist/render/BlockErrorBoundary.js +41 -0
  366. package/dist/render/BlockErrorBoundary.js.map +1 -0
  367. package/dist/render/DataBoundSurfaceRenderer.d.ts +79 -0
  368. package/dist/render/DataBoundSurfaceRenderer.d.ts.map +1 -0
  369. package/dist/render/DataBoundSurfaceRenderer.js +998 -0
  370. package/dist/render/DataBoundSurfaceRenderer.js.map +1 -0
  371. package/dist/render/DynamicBlockWrapper.d.ts +24 -0
  372. package/dist/render/DynamicBlockWrapper.d.ts.map +1 -0
  373. package/dist/render/DynamicBlockWrapper.js +117 -0
  374. package/dist/render/DynamicBlockWrapper.js.map +1 -0
  375. package/dist/render/appearance-resolver.d.ts +51 -0
  376. package/dist/render/appearance-resolver.d.ts.map +1 -0
  377. package/dist/render/appearance-resolver.js +78 -0
  378. package/dist/render/appearance-resolver.js.map +1 -0
  379. package/dist/render/capability-gate.d.ts +70 -0
  380. package/dist/render/capability-gate.d.ts.map +1 -0
  381. package/dist/render/capability-gate.js +94 -0
  382. package/dist/render/capability-gate.js.map +1 -0
  383. package/dist/render/conditional-states-css.d.ts +42 -0
  384. package/dist/render/conditional-states-css.d.ts.map +1 -0
  385. package/dist/render/conditional-states-css.js +82 -0
  386. package/dist/render/conditional-states-css.js.map +1 -0
  387. package/dist/render/connections-context.d.ts +32 -0
  388. package/dist/render/connections-context.d.ts.map +1 -0
  389. package/dist/render/connections-context.js +34 -0
  390. package/dist/render/connections-context.js.map +1 -0
  391. package/dist/render/dark-theme-css.d.ts +37 -0
  392. package/dist/render/dark-theme-css.d.ts.map +1 -0
  393. package/dist/render/dark-theme-css.js +67 -0
  394. package/dist/render/dark-theme-css.js.map +1 -0
  395. package/dist/render/data-binding-types.d.ts +192 -0
  396. package/dist/render/data-binding-types.d.ts.map +1 -0
  397. package/dist/render/data-binding-types.js +11 -0
  398. package/dist/render/data-binding-types.js.map +1 -0
  399. package/dist/render/data-cache.d.ts +31 -0
  400. package/dist/render/data-cache.d.ts.map +1 -0
  401. package/dist/render/data-cache.js +37 -0
  402. package/dist/render/data-cache.js.map +1 -0
  403. package/dist/render/derive-dark-theme.d.ts +18 -0
  404. package/dist/render/derive-dark-theme.d.ts.map +1 -0
  405. package/dist/render/derive-dark-theme.js +18 -0
  406. package/dist/render/derive-dark-theme.js.map +1 -0
  407. package/dist/render/dynamic-artifact-context.d.ts +78 -0
  408. package/dist/render/dynamic-artifact-context.d.ts.map +1 -0
  409. package/dist/render/dynamic-artifact-context.js +89 -0
  410. package/dist/render/dynamic-artifact-context.js.map +1 -0
  411. package/dist/render/dynamic-block-loader.d.ts +81 -0
  412. package/dist/render/dynamic-block-loader.d.ts.map +1 -0
  413. package/dist/render/dynamic-block-loader.js +197 -0
  414. package/dist/render/dynamic-block-loader.js.map +1 -0
  415. package/dist/render/endpoint.d.ts +19 -0
  416. package/dist/render/endpoint.d.ts.map +1 -0
  417. package/dist/render/endpoint.js +109 -0
  418. package/dist/render/endpoint.js.map +1 -0
  419. package/dist/render/entity-facade-context.d.ts +35 -0
  420. package/dist/render/entity-facade-context.d.ts.map +1 -0
  421. package/dist/render/entity-facade-context.js +37 -0
  422. package/dist/render/entity-facade-context.js.map +1 -0
  423. package/dist/render/group-states-css.d.ts +42 -0
  424. package/dist/render/group-states-css.d.ts.map +1 -0
  425. package/dist/render/group-states-css.js +73 -0
  426. package/dist/render/group-states-css.js.map +1 -0
  427. package/dist/render/hooks/useSurfaceEvents.d.ts +9 -0
  428. package/dist/render/hooks/useSurfaceEvents.d.ts.map +1 -0
  429. package/dist/render/hooks/useSurfaceEvents.js +9 -0
  430. package/dist/render/hooks/useSurfaceEvents.js.map +1 -0
  431. package/dist/render/hooks/useSurfaceId.d.ts +9 -0
  432. package/dist/render/hooks/useSurfaceId.d.ts.map +1 -0
  433. package/dist/render/hooks/useSurfaceId.js +9 -0
  434. package/dist/render/hooks/useSurfaceId.js.map +1 -0
  435. package/dist/render/index.d.ts +49 -0
  436. package/dist/render/index.d.ts.map +1 -0
  437. package/dist/render/index.js +61 -0
  438. package/dist/render/index.js.map +1 -0
  439. package/dist/render/interaction-rule-engine.d.ts +13 -0
  440. package/dist/render/interaction-rule-engine.d.ts.map +1 -0
  441. package/dist/render/interaction-rule-engine.js +47 -0
  442. package/dist/render/interaction-rule-engine.js.map +1 -0
  443. package/dist/render/keyframes-css.d.ts +32 -0
  444. package/dist/render/keyframes-css.d.ts.map +1 -0
  445. package/dist/render/keyframes-css.js +44 -0
  446. package/dist/render/keyframes-css.js.map +1 -0
  447. package/dist/render/query-state.d.ts +4 -0
  448. package/dist/render/query-state.d.ts.map +1 -0
  449. package/dist/render/query-state.js +70 -0
  450. package/dist/render/query-state.js.map +1 -0
  451. package/dist/render/renderer.d.ts +45 -0
  452. package/dist/render/renderer.d.ts.map +1 -0
  453. package/dist/render/renderer.js +937 -0
  454. package/dist/render/renderer.js.map +1 -0
  455. package/dist/render/resolve-expressions.d.ts +38 -0
  456. package/dist/render/resolve-expressions.d.ts.map +1 -0
  457. package/dist/render/resolve-expressions.js +309 -0
  458. package/dist/render/resolve-expressions.js.map +1 -0
  459. package/dist/render/responsive-style-css.d.ts +43 -0
  460. package/dist/render/responsive-style-css.d.ts.map +1 -0
  461. package/dist/render/responsive-style-css.js +123 -0
  462. package/dist/render/responsive-style-css.js.map +1 -0
  463. package/dist/render/responsive.d.ts +50 -0
  464. package/dist/render/responsive.d.ts.map +1 -0
  465. package/dist/render/responsive.js +99 -0
  466. package/dist/render/responsive.js.map +1 -0
  467. package/dist/render/scoped-css.d.ts +72 -0
  468. package/dist/render/scoped-css.d.ts.map +1 -0
  469. package/dist/render/scoped-css.js +102 -0
  470. package/dist/render/scoped-css.js.map +1 -0
  471. package/dist/render/shell-selection.d.ts +70 -0
  472. package/dist/render/shell-selection.d.ts.map +1 -0
  473. package/dist/render/shell-selection.js +117 -0
  474. package/dist/render/shell-selection.js.map +1 -0
  475. package/dist/render/states-css.d.ts +33 -0
  476. package/dist/render/states-css.d.ts.map +1 -0
  477. package/dist/render/states-css.js +63 -0
  478. package/dist/render/states-css.js.map +1 -0
  479. package/dist/render/surface-data-context.d.ts +19 -0
  480. package/dist/render/surface-data-context.d.ts.map +1 -0
  481. package/dist/render/surface-data-context.js +21 -0
  482. package/dist/render/surface-data-context.js.map +1 -0
  483. package/dist/render/surface-event-bus.d.ts +20 -0
  484. package/dist/render/surface-event-bus.d.ts.map +1 -0
  485. package/dist/render/surface-event-bus.js +68 -0
  486. package/dist/render/surface-event-bus.js.map +1 -0
  487. package/dist/render/surface-event-context.d.ts +12 -0
  488. package/dist/render/surface-event-context.d.ts.map +1 -0
  489. package/dist/render/surface-event-context.js +12 -0
  490. package/dist/render/surface-event-context.js.map +1 -0
  491. package/dist/render/surface-id-context.d.ts +9 -0
  492. package/dist/render/surface-id-context.d.ts.map +1 -0
  493. package/dist/render/surface-id-context.js +9 -0
  494. package/dist/render/surface-id-context.js.map +1 -0
  495. package/dist/render/theme-utils.d.ts +15 -0
  496. package/dist/render/theme-utils.d.ts.map +1 -0
  497. package/dist/render/theme-utils.js +15 -0
  498. package/dist/render/theme-utils.js.map +1 -0
  499. package/dist/render/types.d.ts +283 -0
  500. package/dist/render/types.d.ts.map +1 -0
  501. package/dist/render/types.js +9 -0
  502. package/dist/render/types.js.map +1 -0
  503. package/dist/render/visibility-css.d.ts +43 -0
  504. package/dist/render/visibility-css.d.ts.map +1 -0
  505. package/dist/render/visibility-css.js +119 -0
  506. package/dist/render/visibility-css.js.map +1 -0
  507. package/dist/render/width-scope.d.ts +35 -0
  508. package/dist/render/width-scope.d.ts.map +1 -0
  509. package/dist/render/width-scope.js +44 -0
  510. package/dist/render/width-scope.js.map +1 -0
  511. package/dist/render/write-only-sources.d.ts +34 -0
  512. package/dist/render/write-only-sources.d.ts.map +1 -0
  513. package/dist/render/write-only-sources.js +99 -0
  514. package/dist/render/write-only-sources.js.map +1 -0
  515. package/dist/routing/index.d.ts +15 -0
  516. package/dist/routing/index.d.ts.map +1 -0
  517. package/dist/routing/index.js +15 -0
  518. package/dist/routing/index.js.map +1 -0
  519. package/dist/routing/router.d.ts +43 -0
  520. package/dist/routing/router.d.ts.map +1 -0
  521. package/dist/routing/router.js +218 -0
  522. package/dist/routing/router.js.map +1 -0
  523. package/dist/routing/types.d.ts +125 -0
  524. package/dist/routing/types.d.ts.map +1 -0
  525. package/dist/routing/types.js +9 -0
  526. package/dist/routing/types.js.map +1 -0
  527. package/dist/seo/generator.d.ts +40 -0
  528. package/dist/seo/generator.d.ts.map +1 -0
  529. package/dist/seo/generator.js +236 -0
  530. package/dist/seo/generator.js.map +1 -0
  531. package/dist/seo/index.d.ts +15 -0
  532. package/dist/seo/index.d.ts.map +1 -0
  533. package/dist/seo/index.js +15 -0
  534. package/dist/seo/index.js.map +1 -0
  535. package/dist/seo/types.d.ts +182 -0
  536. package/dist/seo/types.d.ts.map +1 -0
  537. package/dist/seo/types.js +9 -0
  538. package/dist/seo/types.js.map +1 -0
  539. package/dist/state/index.d.ts +16 -0
  540. package/dist/state/index.d.ts.map +1 -0
  541. package/dist/state/index.js +16 -0
  542. package/dist/state/index.js.map +1 -0
  543. package/dist/state/manager.d.ts +34 -0
  544. package/dist/state/manager.d.ts.map +1 -0
  545. package/dist/state/manager.js +81 -0
  546. package/dist/state/manager.js.map +1 -0
  547. package/dist/state/store.d.ts +41 -0
  548. package/dist/state/store.d.ts.map +1 -0
  549. package/dist/state/store.js +145 -0
  550. package/dist/state/store.js.map +1 -0
  551. package/dist/state/types.d.ts +108 -0
  552. package/dist/state/types.d.ts.map +1 -0
  553. package/dist/state/types.js +9 -0
  554. package/dist/state/types.js.map +1 -0
  555. package/dist/surface/expression.d.ts +66 -0
  556. package/dist/surface/expression.d.ts.map +1 -0
  557. package/dist/surface/expression.js +179 -0
  558. package/dist/surface/expression.js.map +1 -0
  559. package/dist/surface/index.d.ts +33 -0
  560. package/dist/surface/index.d.ts.map +1 -0
  561. package/dist/surface/index.js +25 -0
  562. package/dist/surface/index.js.map +1 -0
  563. package/dist/surface/interpreter.d.ts +97 -0
  564. package/dist/surface/interpreter.d.ts.map +1 -0
  565. package/dist/surface/interpreter.js +231 -0
  566. package/dist/surface/interpreter.js.map +1 -0
  567. package/dist/surface/layout.d.ts +55 -0
  568. package/dist/surface/layout.d.ts.map +1 -0
  569. package/dist/surface/layout.js +288 -0
  570. package/dist/surface/layout.js.map +1 -0
  571. package/dist/surface/output.d.ts +91 -0
  572. package/dist/surface/output.d.ts.map +1 -0
  573. package/dist/surface/output.js +104 -0
  574. package/dist/surface/output.js.map +1 -0
  575. package/dist/surface/primitives.d.ts +181 -0
  576. package/dist/surface/primitives.d.ts.map +1 -0
  577. package/dist/surface/primitives.js +339 -0
  578. package/dist/surface/primitives.js.map +1 -0
  579. package/dist/surface/renderer.d.ts +97 -0
  580. package/dist/surface/renderer.d.ts.map +1 -0
  581. package/dist/surface/renderer.js +190 -0
  582. package/dist/surface/renderer.js.map +1 -0
  583. package/dist/surface/schemas.d.ts +182 -0
  584. package/dist/surface/schemas.d.ts.map +1 -0
  585. package/dist/surface/schemas.js +142 -0
  586. package/dist/surface/schemas.js.map +1 -0
  587. package/dist/surface/transforms.d.ts +145 -0
  588. package/dist/surface/transforms.d.ts.map +1 -0
  589. package/dist/surface/transforms.js +120 -0
  590. package/dist/surface/transforms.js.map +1 -0
  591. package/dist/surface/types.d.ts +161 -0
  592. package/dist/surface/types.d.ts.map +1 -0
  593. package/dist/surface/types.js +51 -0
  594. package/dist/surface/types.js.map +1 -0
  595. package/dist/surface/validation.d.ts +124 -0
  596. package/dist/surface/validation.d.ts.map +1 -0
  597. package/dist/surface/validation.js +147 -0
  598. package/dist/surface/validation.js.map +1 -0
  599. package/dist/validator.d.ts +56 -0
  600. package/dist/validator.d.ts.map +1 -0
  601. package/dist/validator.js +100 -0
  602. package/dist/validator.js.map +1 -0
  603. package/package.json +105 -3
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Entity Facade React Context
3
+ *
4
+ * Provides EntityFacade to the surface render tree via React
5
+ * context. Pattern mirrors SurfaceRoutingContext / useSurfaceRouting().
6
+ *
7
+ * Injection point: EntityFacadeContext.Provider wraps BehaviorSurfaceProvider
8
+ * inside SurfaceRenderer when entityFacade prop is supplied.
9
+ *
10
+ * @module @pwfabric/runtime/render/entity-facade-context
11
+ */
12
+ import { createContext, useContext } from 'react';
13
+ /**
14
+ * React context that carries an EntityFacade instance through the render tree.
15
+ * Defaults to null — blocks that require entity access check for null and
16
+ * gracefully handle the absent-facade case.
17
+ */
18
+ export const EntityFacadeContext = createContext(null);
19
+ /**
20
+ * Returns the EntityFacade from the nearest EntityFacadeContext.Provider.
21
+ * Returns null when no provider is present (entity support not configured).
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * import { useEntityFacade } from '@pwfabric/runtime/render'
26
+ *
27
+ * function MyBlock() {
28
+ * const facade = useEntityFacade()
29
+ * if (!facade) return null // No entity support configured
30
+ * const result = await facade.store.query('Employee', {})
31
+ * }
32
+ * ```
33
+ */
34
+ export function useEntityFacade() {
35
+ return useContext(EntityFacadeContext);
36
+ }
37
+ //# sourceMappingURL=entity-facade-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-facade-context.js","sourceRoot":"","sources":["../../src/render/entity-facade-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAsB,IAAI,CAAC,CAAA;AAE3E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Group-hover scoped CSS generation (Tailwind `group` + `group-hover:`).
3
+ *
4
+ * A parent container marked `groupRoot: true` is a hover SOURCE: hovering it
5
+ * restyles descendants that declare `groupStates.hover`. `block.style` is inline
6
+ * and can express neither the ancestor `:hover` nor the descendant relationship,
7
+ * so the runtime emits a scoped descendant rule keyed by BOTH block ids:
8
+ *
9
+ * `[data-pw-surface] [data-block-id="<rootId>"]:hover [data-block-id="<thisId>"]{ … }`
10
+ *
11
+ * The host element already rendered for every block (`data-block-id`) is
12
+ * sufficient on both ends — no extra attribute is needed. Keys are CSS camelCase
13
+ * property names (converted to kebab-case); declarations are emitted with
14
+ * `!important` because a block COMPONENT often applies the same property inline
15
+ * with its own default and inline beats any plain stylesheet rule. Scoped to the
16
+ * one descendant under the one root.
17
+ *
18
+ * Only the NEAREST ancestor with `groupRoot:true` drives a block's
19
+ * `groupStates`; a block with `groupStates.hover` but no `groupRoot` ancestor
20
+ * emits zero bytes. Surfaces using no `groupStates` emit zero bytes so existing
21
+ * surfaces are byte-identical.
22
+ *
23
+ * @module @pwfabric/runtime/render/group-states-css
24
+ */
25
+ import type { Block } from '@pwfabric/core';
26
+ /**
27
+ * Emit the scoped group-hover rule for a single descendant block, given the id
28
+ * of the nearest `groupRoot` ancestor. Targets
29
+ * `[data-block-id="<rootId>"]:hover [data-block-id="<thisId>"]` scoped under the
30
+ * surface root. Returns '' when the descendant declares no non-empty
31
+ * `groupStates.hover` record.
32
+ */
33
+ export declare function blockGroupStatesCss(rootId: string, thisId: string, groupStates: NonNullable<Block['groupStates']>, surfaceId?: string): string;
34
+ /**
35
+ * Walk a surface block tree tracking the nearest ancestor marked
36
+ * `groupRoot: true`; for each block declaring `groupStates.hover` UNDER such an
37
+ * ancestor, concatenate its scoped group-hover CSS. Blocks with `groupStates`
38
+ * but no `groupRoot` ancestor — and surfaces with no `groupStates` at all —
39
+ * emit zero bytes (existing surfaces byte-identical).
40
+ */
41
+ export declare function collectGroupStatesCss(blocks: readonly Block[], surfaceId?: string): string;
42
+ //# sourceMappingURL=group-states-css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-states-css.d.ts","sourceRoot":"","sources":["../../src/render/group-states-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAU3C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAC9C,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAOR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAe1F"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Group-hover scoped CSS generation (Tailwind `group` + `group-hover:`).
3
+ *
4
+ * A parent container marked `groupRoot: true` is a hover SOURCE: hovering it
5
+ * restyles descendants that declare `groupStates.hover`. `block.style` is inline
6
+ * and can express neither the ancestor `:hover` nor the descendant relationship,
7
+ * so the runtime emits a scoped descendant rule keyed by BOTH block ids:
8
+ *
9
+ * `[data-pw-surface] [data-block-id="<rootId>"]:hover [data-block-id="<thisId>"]{ … }`
10
+ *
11
+ * The host element already rendered for every block (`data-block-id`) is
12
+ * sufficient on both ends — no extra attribute is needed. Keys are CSS camelCase
13
+ * property names (converted to kebab-case); declarations are emitted with
14
+ * `!important` because a block COMPONENT often applies the same property inline
15
+ * with its own default and inline beats any plain stylesheet rule. Scoped to the
16
+ * one descendant under the one root.
17
+ *
18
+ * Only the NEAREST ancestor with `groupRoot:true` drives a block's
19
+ * `groupStates`; a block with `groupStates.hover` but no `groupRoot` ancestor
20
+ * emits zero bytes. Surfaces using no `groupStates` emit zero bytes so existing
21
+ * surfaces are byte-identical.
22
+ *
23
+ * @module @pwfabric/runtime/render/group-states-css
24
+ */
25
+ import { blockIdAttr, blockSelector, camelToKebab } from './scoped-css.js';
26
+ /** Serialize a camelCase decl record to `prop:value !important;…` (values pass through). */
27
+ function declsToCss(decls) {
28
+ return Object.entries(decls)
29
+ .map(([prop, value]) => `${camelToKebab(prop)}:${value} !important`)
30
+ .join(';');
31
+ }
32
+ /**
33
+ * Emit the scoped group-hover rule for a single descendant block, given the id
34
+ * of the nearest `groupRoot` ancestor. Targets
35
+ * `[data-block-id="<rootId>"]:hover [data-block-id="<thisId>"]` scoped under the
36
+ * surface root. Returns '' when the descendant declares no non-empty
37
+ * `groupStates.hover` record.
38
+ */
39
+ export function blockGroupStatesCss(rootId, thisId, groupStates, surfaceId) {
40
+ const decls = groupStates.hover;
41
+ if (!decls || Object.keys(decls).length === 0)
42
+ return '';
43
+ // `blockSelector(rootId)` already includes the `[data-pw-surface]` prefix; the
44
+ // descendant half is just the bare `[data-block-id]` attribute selector (the
45
+ // shared surface scope is carried by the root half).
46
+ return `${blockSelector(rootId, surfaceId)}:hover ${blockIdAttr(thisId)}{${declsToCss(decls)}}`;
47
+ }
48
+ /**
49
+ * Walk a surface block tree tracking the nearest ancestor marked
50
+ * `groupRoot: true`; for each block declaring `groupStates.hover` UNDER such an
51
+ * ancestor, concatenate its scoped group-hover CSS. Blocks with `groupStates`
52
+ * but no `groupRoot` ancestor — and surfaces with no `groupStates` at all —
53
+ * emit zero bytes (existing surfaces byte-identical).
54
+ */
55
+ export function collectGroupStatesCss(blocks, surfaceId) {
56
+ let css = '';
57
+ const walk = (block, nearestRootId) => {
58
+ if (block.groupStates && nearestRootId !== undefined) {
59
+ css += blockGroupStatesCss(nearestRootId, block.id, block.groupStates, surfaceId);
60
+ }
61
+ // This block becomes the nearest root for its own descendants when it is a
62
+ // group root (innermost groupRoot wins).
63
+ const rootForChildren = block.groupRoot ? block.id : nearestRootId;
64
+ if (block.children) {
65
+ for (const child of block.children)
66
+ walk(child, rootForChildren);
67
+ }
68
+ };
69
+ for (const block of blocks)
70
+ walk(block, undefined);
71
+ return css;
72
+ }
73
+ //# sourceMappingURL=group-states-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-states-css.js","sourceRoot":"","sources":["../../src/render/group-states-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE1E,4FAA4F;AAC5F,SAAS,UAAU,CAAC,KAAuC;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;SACnE,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,MAAc,EACd,WAA8C,EAC9C,SAAkB;IAElB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAA;IAC/B,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACxD,+EAA+E;IAC/E,6EAA6E;IAC7E,qDAAqD;IACrD,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,WAAW,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAA;AACjG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwB,EAAE,SAAkB;IAChF,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,MAAM,IAAI,GAAG,CAAC,KAAY,EAAE,aAAiC,EAAQ,EAAE;QACrE,IAAI,KAAK,CAAC,WAAW,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YACrD,GAAG,IAAI,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QACnF,CAAC;QACD,2EAA2E;QAC3E,yCAAyC;QACzC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAA;QAClE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ;gBAAE,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;QAClE,CAAC;IACH,CAAC,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAClD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * useSurfaceEvents hook
3
+ *
4
+ * Re-exports from `@pwfabric/runtime/blocks` (its canonical home).
5
+ *
6
+ * @module @pwfabric/runtime/render/hooks/useSurfaceEvents
7
+ */
8
+ export { useSurfaceEvents } from '../../blocks/index.js';
9
+ //# sourceMappingURL=useSurfaceEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSurfaceEvents.d.ts","sourceRoot":"","sources":["../../../src/render/hooks/useSurfaceEvents.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * useSurfaceEvents hook
3
+ *
4
+ * Re-exports from `@pwfabric/runtime/blocks` (its canonical home).
5
+ *
6
+ * @module @pwfabric/runtime/render/hooks/useSurfaceEvents
7
+ */
8
+ export { useSurfaceEvents } from '../../blocks/index.js';
9
+ //# sourceMappingURL=useSurfaceEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSurfaceEvents.js","sourceRoot":"","sources":["../../../src/render/hooks/useSurfaceEvents.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * useSurfaceId hook
3
+ *
4
+ * Re-exports from `@pwfabric/runtime/blocks` (its canonical home).
5
+ *
6
+ * @module @pwfabric/runtime/render/hooks/useSurfaceId
7
+ */
8
+ export { useSurfaceId } from '../../blocks/index.js';
9
+ //# sourceMappingURL=useSurfaceId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSurfaceId.d.ts","sourceRoot":"","sources":["../../../src/render/hooks/useSurfaceId.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * useSurfaceId hook
3
+ *
4
+ * Re-exports from `@pwfabric/runtime/blocks` (its canonical home).
5
+ *
6
+ * @module @pwfabric/runtime/render/hooks/useSurfaceId
7
+ */
8
+ export { useSurfaceId } from '../../blocks/index.js';
9
+ //# sourceMappingURL=useSurfaceId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSurfaceId.js","sourceRoot":"","sources":["../../../src/render/hooks/useSurfaceId.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Surface Renderer Module
3
+ *
4
+ * Phase 2A.1: Surface-to-React rendering infrastructure
5
+ *
6
+ * @module @pwfabric/runtime/render
7
+ */
8
+ export type { BlockComponentProps, BlockComponent, BlockComponentRegistry, CapabilityProvider, BlockContext, SurfaceEventType, SurfaceEvent, SurfaceRendererProps, BlockRendererProps, RenderResult, RenderableSurface, CapabilityType, ImageAdapter, ImageAdapterProps, BlockWrapperProps, BlockWrapperRenderArgs, BlockInteractionMode, } from './types.js';
9
+ export { SurfaceRenderer, BlockRenderer, getBlockIds, findBlockById, updateBlockById, } from './renderer.js';
10
+ export { surfaceThemeToCSS } from './theme-utils.js';
11
+ export { deriveDarkTheme } from './derive-dark-theme.js';
12
+ export { resolveResponsiveValue, resolveSpanAtBreakpoint, getColumnsAtBreakpoint, getBreakpointForWidth, resolveBlockLayout, resolveMeasureStyle, resolveSurfaceRootStyle, useViewport, } from './responsive.js';
13
+ export { collectVisibilityCss, blockVisibilityCss, resolveHiddenBreakpoints, } from './visibility-css.js';
14
+ export { collectStatesCss, blockStatesCss } from './states-css.js';
15
+ export { collectConditionalStatesCss, blockConditionalStatesCss, } from './conditional-states-css.js';
16
+ export { buildKeyframesCss } from './keyframes-css.js';
17
+ export { collectResponsiveStyleCss, blockResponsiveStyleCss, } from './responsive-style-css.js';
18
+ export { collectGroupStatesCss, blockGroupStatesCss } from './group-states-css.js';
19
+ export { cssEscapeId, camelToKebab, blockIdAttr, blockSelector, collectScopedCss, } from './scoped-css.js';
20
+ export { buildDarkThemeCss } from './dark-theme-css.js';
21
+ export { resolveAppearanceDarkVars, resolveAppearanceKeyframes } from './appearance-resolver.js';
22
+ export type { SurfaceDataSourceKind, SurfaceDataSourceDefinition, SurfaceActionType, SurfaceAction, BlockActionProp, DataBoundSurface, DataBoundSurfaceRendererProps, } from './data-binding-types.js';
23
+ export { DataBoundSurfaceRenderer, surfaceNeedsDataBinding, blockActionsOf } from './DataBoundSurfaceRenderer.js';
24
+ export { resolveEndpoint, encodeEndpointValue } from './endpoint.js';
25
+ export { dataSourceCacheKey } from './data-cache.js';
26
+ export type { SurfaceDataCache } from './data-cache.js';
27
+ export { resolveBlockExpressions, resolveString } from './resolve-expressions.js';
28
+ export { BlockErrorBoundary } from './BlockErrorBoundary.js';
29
+ export type { EntitlementContextValue, EntitlementProviderProps, GatedBlockPlaceholderProps, } from './capability-gate.js';
30
+ export { EntitlementProvider, useEntitlements, GatedBlockPlaceholder } from './capability-gate.js';
31
+ export { BlockModuleLoader } from './dynamic-block-loader.js';
32
+ export type { DynamicBlockWrapperProps } from './DynamicBlockWrapper.js';
33
+ export { DynamicBlockWrapper } from './DynamicBlockWrapper.js';
34
+ export type { DynamicArtifactContextValue, DynamicArtifactProviderProps, } from './dynamic-artifact-context.js';
35
+ export { DynamicArtifactProvider, preloadDynamicBlocks, useDynamicBlocks, useDynamicStarters, } from './dynamic-artifact-context.js';
36
+ export { createSurfaceEventBus } from './surface-event-bus.js';
37
+ export { SurfaceEventContext } from './surface-event-context.js';
38
+ export { useSurfaceEvents } from './hooks/useSurfaceEvents.js';
39
+ export type { BehaviorSurfaceProviderProps } from './BehaviorSurfaceProvider.js';
40
+ export { BehaviorSurfaceProvider } from './BehaviorSurfaceProvider.js';
41
+ export { SurfaceIdContext } from './surface-id-context.js';
42
+ export { useSurfaceId } from './hooks/useSurfaceId.js';
43
+ export { EntityFacadeContext, useEntityFacade } from './entity-facade-context.js';
44
+ export { SurfaceDataContext, useSurfaceData } from './surface-data-context.js';
45
+ export type { SurfaceData } from './surface-data-context.js';
46
+ export { SurfaceConnectionsContext, useSurfaceConnections } from './connections-context.js';
47
+ export type { ShellSelectionStore, ShellSelectionOptions, ShellSelectionProviderProps } from './shell-selection.js';
48
+ export { ShellSelectionContext, ShellSelectionProvider, createShellSelectionStore, useShellSelection, } from './shell-selection.js';
49
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Surface Renderer Module
3
+ *
4
+ * Phase 2A.1: Surface-to-React rendering infrastructure
5
+ *
6
+ * @module @pwfabric/runtime/render
7
+ */
8
+ // Components
9
+ export { SurfaceRenderer, BlockRenderer, getBlockIds, findBlockById, updateBlockById, } from './renderer.js';
10
+ // legacy first-party `*Block` component re-exports +
11
+ // `defaultBlockComponents` retired. Components flow through the install
12
+ // pipeline (pwpack publish → CDN bundle → BlockModuleLoader); the static
13
+ // re-exports that lived here are gone.
14
+ // Theme utilities
15
+ export { surfaceThemeToCSS } from './theme-utils.js';
16
+ export { deriveDarkTheme } from './derive-dark-theme.js';
17
+ // Responsive utilities
18
+ export { resolveResponsiveValue, resolveSpanAtBreakpoint, getColumnsAtBreakpoint, getBreakpointForWidth, resolveBlockLayout, resolveMeasureStyle, resolveSurfaceRootStyle, useViewport, } from './responsive.js';
19
+ // Per-breakpoint visibility (hideOn/showOn) CSS generation
20
+ export { collectVisibilityCss, blockVisibilityCss, resolveHiddenBreakpoints, } from './visibility-css.js';
21
+ // Interaction-state (hover/active/focus) CSS generation
22
+ export { collectStatesCss, blockStatesCss } from './states-css.js';
23
+ // Conditional-state (aria/data/disabled/checked/:has) CSS generation
24
+ export { collectConditionalStatesCss, blockConditionalStatesCss, } from './conditional-states-css.js';
25
+ // Surface keyframe registry (appearance.config.keyframes) CSS generation
26
+ export { buildKeyframesCss } from './keyframes-css.js';
27
+ // Per-prop responsive style (block.style breakpoint maps) CSS generation
28
+ export { collectResponsiveStyleCss, blockResponsiveStyleCss, } from './responsive-style-css.js';
29
+ // Group-hover (block.groupRoot + descendant block.groupStates) CSS generation
30
+ export { collectGroupStatesCss, blockGroupStatesCss } from './group-states-css.js';
31
+ // Shared scoped-CSS helpers (used by the per-block collectors above)
32
+ export { cssEscapeId, camelToKebab, blockIdAttr, blockSelector, collectScopedCss, } from './scoped-css.js';
33
+ // Dark theme variant CSS generation + resolver
34
+ export { buildDarkThemeCss } from './dark-theme-css.js';
35
+ export { resolveAppearanceDarkVars, resolveAppearanceKeyframes } from './appearance-resolver.js';
36
+ export { DataBoundSurfaceRenderer, surfaceNeedsDataBinding, blockActionsOf } from './DataBoundSurfaceRenderer.js';
37
+ export { resolveEndpoint, encodeEndpointValue } from './endpoint.js';
38
+ export { dataSourceCacheKey } from './data-cache.js';
39
+ export { resolveBlockExpressions, resolveString } from './resolve-expressions.js';
40
+ // Block Error Boundary (crash isolation)
41
+ export { BlockErrorBoundary } from './BlockErrorBoundary.js';
42
+ export { EntitlementProvider, useEntitlements, GatedBlockPlaceholder } from './capability-gate.js';
43
+ // Dynamic Artifact Loading
44
+ export { BlockModuleLoader } from './dynamic-block-loader.js';
45
+ export { DynamicBlockWrapper } from './DynamicBlockWrapper.js';
46
+ export { DynamicArtifactProvider, preloadDynamicBlocks, useDynamicBlocks, useDynamicStarters, } from './dynamic-artifact-context.js';
47
+ // Surface event protocol
48
+ export { createSurfaceEventBus } from './surface-event-bus.js';
49
+ export { SurfaceEventContext } from './surface-event-context.js';
50
+ export { useSurfaceEvents } from './hooks/useSurfaceEvents.js';
51
+ export { BehaviorSurfaceProvider } from './BehaviorSurfaceProvider.js';
52
+ export { SurfaceIdContext } from './surface-id-context.js';
53
+ export { useSurfaceId } from './hooks/useSurfaceId.js';
54
+ // EntityFacade → Surface Renderer integration
55
+ export { EntityFacadeContext, useEntityFacade } from './entity-facade-context.js';
56
+ // What the data-bound path has currently bound, by source id (form writer reads it)
57
+ export { SurfaceDataContext, useSurfaceData } from './surface-data-context.js';
58
+ // Connections context (world connections + engine registry)
59
+ export { SurfaceConnectionsContext, useSurfaceConnections } from './connections-context.js';
60
+ export { ShellSelectionContext, ShellSelectionProvider, createShellSelectionStore, useShellSelection, } from './shell-selection.js';
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { InteractionRule, InteractionRuleEngine, SurfaceEventTrigger, SurfaceEventDescriptor } from '@pwfabric/contracts';
2
+ export type { InteractionRule, InteractionRuleEngine, SurfaceEventTrigger };
3
+ export declare class DefaultInteractionRuleEngine implements InteractionRuleEngine {
4
+ private readonly rules;
5
+ register(rule: InteractionRule): void;
6
+ unregister(ruleId: string): boolean;
7
+ attach(bus: {
8
+ on(pattern: string, handler: (e: SurfaceEventDescriptor) => void): () => void;
9
+ }): () => void;
10
+ clear(): void;
11
+ }
12
+ export declare function createInteractionRuleEngine(): InteractionRuleEngine;
13
+ //# sourceMappingURL=interaction-rule-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-rule-engine.d.ts","sourceRoot":"","sources":["../../src/render/interaction-rule-engine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,qBAAqB,CAAA;AAE5B,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAA;AAE3E,qBAAa,4BAA6B,YAAW,qBAAqB;IACxE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAE3D,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAIrC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAInC,MAAM,CAAC,GAAG,EAAE;QACV,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,sBAAsB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;KAC9E,GAAG,MAAM,IAAI;IA+Bd,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE"}
@@ -0,0 +1,47 @@
1
+ // packages/runtime/src/render/interaction-rule-engine.ts
2
+ // DefaultInteractionRuleEngine (formerly DefaultSurfaceBehaviorEngine)
3
+ export class DefaultInteractionRuleEngine {
4
+ rules = new Map();
5
+ register(rule) {
6
+ this.rules.set(rule.id, rule);
7
+ }
8
+ unregister(ruleId) {
9
+ return this.rules.delete(ruleId);
10
+ }
11
+ attach(bus) {
12
+ const unsubscribers = [];
13
+ // Group rules by trigger, subscribe once per trigger
14
+ const byTrigger = new Map();
15
+ for (const rule of this.rules.values()) {
16
+ const existing = byTrigger.get(rule.trigger) ?? [];
17
+ existing.push(rule);
18
+ byTrigger.set(rule.trigger, existing);
19
+ }
20
+ for (const [trigger, triggerRules] of byTrigger) {
21
+ const unsub = bus.on(trigger, async (event) => {
22
+ // Sort by priority (higher = first)
23
+ const sorted = [...triggerRules].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
24
+ for (const rule of sorted) {
25
+ try {
26
+ if (rule.guard && !rule.guard(event))
27
+ continue;
28
+ await rule.action(event);
29
+ }
30
+ catch (err) {
31
+ // Fail-safe: log but don't break other rules
32
+ console.warn(`[InteractionRuleEngine] Rule '${rule.id}' failed:`, err);
33
+ }
34
+ }
35
+ });
36
+ unsubscribers.push(unsub);
37
+ }
38
+ return () => unsubscribers.forEach((u) => u());
39
+ }
40
+ clear() {
41
+ this.rules.clear();
42
+ }
43
+ }
44
+ export function createInteractionRuleEngine() {
45
+ return new DefaultInteractionRuleEngine();
46
+ }
47
+ //# sourceMappingURL=interaction-rule-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-rule-engine.js","sourceRoot":"","sources":["../../src/render/interaction-rule-engine.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,uEAAuE;AAWvE,MAAM,OAAO,4BAA4B;IACtB,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAA;IAE3D,QAAQ,CAAC,IAAqB;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,GAEN;QACC,MAAM,aAAa,GAAmB,EAAE,CAAA;QAExC,qDAAqD;QACrD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAA;QACtD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;YAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QACvC,CAAC;QAED,KAAK,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,SAAS,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAA6B,EAAE,EAAE;gBACpE,oCAAoC;gBACpC,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;gBACtF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;4BAAE,SAAQ;wBAC9C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC1B,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,6CAA6C;wBAC7C,OAAO,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAA;oBACxE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;YACF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACF;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,4BAA4B,EAAE,CAAA;AAC3C,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Surface keyframe registry CSS generation (arbitrary `@keyframes`).
3
+ *
4
+ * The runtime ships a fixed set of `pw-*` keyframes in `SURFACE_BASE_CSS`
5
+ * (pulse / fade-in / marquee / slide-up / slide-down / scale-in / spin /
6
+ * bounce / spring-in), so `block.style.animation` could only reference those. A surface can
7
+ * now declare arbitrary named keyframes via `appearance.config.keyframes`
8
+ * (name → keyframe body); this module emits one `@keyframes <name>{<body>}` per
9
+ * entry so a block can drive custom motion offline.
10
+ *
11
+ * Each name is PREFIXED with `pw-kf-` to avoid colliding with host-page or
12
+ * runtime-shipped keyframes — so a surface declaring `{ wiggle: '…' }` makes the
13
+ * animation available as `pw-kf-wiggle`, and a block references it via
14
+ * `block.style.animation: 'pw-kf-wiggle 0.4s ease'`.
15
+ *
16
+ * The keyframe BODY passes through untouched (authors supply standard
17
+ * `@keyframes` selector blocks, e.g. `0%{…}50%{…}100%{…}`). An empty/absent
18
+ * registry emits zero bytes. The existing `prefers-reduced-motion` gate in
19
+ * `SURFACE_BASE_CSS` neutralises these animations for users who opt out (it
20
+ * matches by animation, not by keyframe name), so no extra gating is needed
21
+ * here.
22
+ *
23
+ * @module @pwfabric/runtime/render/keyframes-css
24
+ */
25
+ /**
26
+ * Build the surface keyframe CSS from the appearance `keyframes` registry
27
+ * (name → keyframe body). Emits `@keyframes pw-kf-<name>{<body>}` for each
28
+ * entry. Entries with an empty name or empty body are skipped. Returns '' when
29
+ * the registry is empty/undefined (zero bytes emitted).
30
+ */
31
+ export declare function buildKeyframesCss(keyframes: Readonly<Record<string, string>> | undefined): string;
32
+ //# sourceMappingURL=keyframes-css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyframes-css.d.ts","sourceRoot":"","sources":["../../src/render/keyframes-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GACtD,MAAM,CAQR"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Surface keyframe registry CSS generation (arbitrary `@keyframes`).
3
+ *
4
+ * The runtime ships a fixed set of `pw-*` keyframes in `SURFACE_BASE_CSS`
5
+ * (pulse / fade-in / marquee / slide-up / slide-down / scale-in / spin /
6
+ * bounce / spring-in), so `block.style.animation` could only reference those. A surface can
7
+ * now declare arbitrary named keyframes via `appearance.config.keyframes`
8
+ * (name → keyframe body); this module emits one `@keyframes <name>{<body>}` per
9
+ * entry so a block can drive custom motion offline.
10
+ *
11
+ * Each name is PREFIXED with `pw-kf-` to avoid colliding with host-page or
12
+ * runtime-shipped keyframes — so a surface declaring `{ wiggle: '…' }` makes the
13
+ * animation available as `pw-kf-wiggle`, and a block references it via
14
+ * `block.style.animation: 'pw-kf-wiggle 0.4s ease'`.
15
+ *
16
+ * The keyframe BODY passes through untouched (authors supply standard
17
+ * `@keyframes` selector blocks, e.g. `0%{…}50%{…}100%{…}`). An empty/absent
18
+ * registry emits zero bytes. The existing `prefers-reduced-motion` gate in
19
+ * `SURFACE_BASE_CSS` neutralises these animations for users who opt out (it
20
+ * matches by animation, not by keyframe name), so no extra gating is needed
21
+ * here.
22
+ *
23
+ * @module @pwfabric/runtime/render/keyframes-css
24
+ */
25
+ /** Prefix applied to every surface-declared keyframe name (collision guard). */
26
+ const KEYFRAME_PREFIX = 'pw-kf-';
27
+ /**
28
+ * Build the surface keyframe CSS from the appearance `keyframes` registry
29
+ * (name → keyframe body). Emits `@keyframes pw-kf-<name>{<body>}` for each
30
+ * entry. Entries with an empty name or empty body are skipped. Returns '' when
31
+ * the registry is empty/undefined (zero bytes emitted).
32
+ */
33
+ export function buildKeyframesCss(keyframes) {
34
+ if (!keyframes)
35
+ return '';
36
+ let css = '';
37
+ for (const [name, body] of Object.entries(keyframes)) {
38
+ if (!name || typeof body !== 'string' || body.trim().length === 0)
39
+ continue;
40
+ css += `@keyframes ${KEYFRAME_PREFIX}${name}{${body}}`;
41
+ }
42
+ return css;
43
+ }
44
+ //# sourceMappingURL=keyframes-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyframes-css.js","sourceRoot":"","sources":["../../src/render/keyframes-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,gFAAgF;AAChF,MAAM,eAAe,GAAG,QAAQ,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAuD;IAEvD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAC3E,GAAG,IAAI,cAAc,eAAe,GAAG,IAAI,IAAI,IAAI,GAAG,CAAA;IACxD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function resolveQueryState<T>(query: T, state: Readonly<Record<string, unknown>>): T;
2
+ /** True when any string inside the query carries an expression. */
3
+ export declare function queryHasState(query: unknown): boolean;
4
+ //# sourceMappingURL=query-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-state.d.ts","sourceRoot":"","sources":["../../src/render/query-state.ts"],"names":[],"mappings":"AAoBA,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAmC1F;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKrD"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * resolveQueryState — substitute `{{state.x}}` (and any expression) inside a
3
+ * data-source `query` object before it reaches the connector.
4
+ *
5
+ * Without it state would be interpolated ONLY in REST `endpoint` strings and
6
+ * connector/entity sources would pass `source.query` to the engine raw, so a
7
+ * pagination block writing `state.page` and a segmented-control writing
8
+ * `state.severity` could never reach `query.pagination.offset` or
9
+ * `query.filter.value`. This walks the query deeply and resolves every string
10
+ * that contains `{{ }}`.
11
+ *
12
+ * A string that is EXACTLY one expression (`"{{state.page}}"`) resolves to
13
+ * the raw value (number stays number, array stays array) so
14
+ * `pagination.limit: "{{state.pageSize}}"` yields a number, not "20".
15
+ * Mixed strings (`"prefix-{{state.x}}"`) resolve to a string.
16
+ */
17
+ import { createExpressionContext, evaluate, interpolate } from '../surface/expression.js';
18
+ const WHOLE = /^\s*\{\{\s*([^{}]+?)\s*\}\}\s*$/;
19
+ export function resolveQueryState(query, state) {
20
+ const ctx = createExpressionContext({ state });
21
+ const walk = (v) => {
22
+ if (typeof v === 'string') {
23
+ if (!v.includes('{{'))
24
+ return v;
25
+ const whole = WHOLE.exec(v);
26
+ if (whole && whole[1] !== undefined) {
27
+ const r = evaluate(whole[1], ctx);
28
+ if (!r.success)
29
+ return undefined;
30
+ // An "All" segment and an empty search box both write '' (or null) into
31
+ // state. Read literally that is `field eq ''`, which matches no row —
32
+ // the control that was meant to WIDEN the list emptied it. A whole
33
+ // expression resolving to nothing is no constraint, so the key drops.
34
+ // A literal '' written into the query by an author is untouched: only
35
+ // an expression can resolve away.
36
+ if (r.value === '' || r.value === null)
37
+ return undefined;
38
+ return r.value;
39
+ }
40
+ const r = interpolate(v, ctx);
41
+ return r.success ? r.value : v;
42
+ }
43
+ if (Array.isArray(v))
44
+ return v.map(walk);
45
+ if (v && typeof v === 'object') {
46
+ const out = {};
47
+ for (const [k, val] of Object.entries(v)) {
48
+ const w = walk(val);
49
+ // an unresolved whole-expression drops the key so the connector sees
50
+ // "no constraint", not `undefined` as a literal filter value
51
+ if (w !== undefined)
52
+ out[k] = w;
53
+ }
54
+ return out;
55
+ }
56
+ return v;
57
+ };
58
+ return walk(query);
59
+ }
60
+ /** True when any string inside the query carries an expression. */
61
+ export function queryHasState(query) {
62
+ if (typeof query === 'string')
63
+ return query.includes('{{');
64
+ if (Array.isArray(query))
65
+ return query.some(queryHasState);
66
+ if (query && typeof query === 'object')
67
+ return Object.values(query).some(queryHasState);
68
+ return false;
69
+ }
70
+ //# sourceMappingURL=query-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-state.js","sourceRoot":"","sources":["../../src/render/query-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEzF,MAAM,KAAK,GAAG,iCAAiC,CAAA;AAE/C,MAAM,UAAU,iBAAiB,CAAI,KAAQ,EAAE,KAAwC;IACrF,MAAM,GAAG,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,CAAC,CAAU,EAAW,EAAE;QACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAA;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBACjC,IAAI,CAAC,CAAC,CAAC,OAAO;oBAAE,OAAO,SAAS,CAAA;gBAChC,wEAAwE;gBACxE,sEAAsE;gBACtE,mEAAmE;gBACnE,sEAAsE;gBACtE,sEAAsE;gBACtE,kCAAkC;gBAClC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI;oBAAE,OAAO,SAAS,CAAA;gBACxD,OAAO,CAAC,CAAC,KAAK,CAAA;YAChB,CAAC;YACD,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAA4B,EAAE,CAAA;YACvC,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,EAAE,CAAC;gBACpE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;gBACnB,qEAAqE;gBACrE,6DAA6D;gBAC7D,IAAI,CAAC,KAAK,SAAS;oBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACjC,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IACD,OAAO,IAAI,CAAC,KAAK,CAAM,CAAA;AACzB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC1D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClH,OAAO,KAAK,CAAA;AACd,CAAC"}