@makeswift/runtime 0.28.10-canary.0 → 0.28.10-canary.10

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 (290) hide show
  1. package/dist/cjs/api/graphql/documents/queries.js +0 -42
  2. package/dist/cjs/api/graphql/documents/queries.js.map +1 -1
  3. package/dist/cjs/api/graphql/generated/types.js.map +1 -1
  4. package/dist/cjs/api/graphql-api-client.js +1 -18
  5. package/dist/cjs/api/graphql-api-client.js.map +1 -1
  6. package/dist/cjs/api/makeswift-api-resources-client.js +2 -8
  7. package/dist/cjs/api/makeswift-api-resources-client.js.map +1 -1
  8. package/dist/cjs/api/rest-api-client.js +27 -1
  9. package/dist/cjs/api/rest-api-client.js.map +1 -1
  10. package/dist/cjs/api/table-record-client.js +47 -0
  11. package/dist/cjs/api/table-record-client.js.map +1 -0
  12. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  13. package/dist/cjs/api-handler/handlers/table-record.js +63 -0
  14. package/dist/cjs/api-handler/handlers/table-record.js.map +1 -0
  15. package/dist/cjs/api-handler/index.js +3 -0
  16. package/dist/cjs/api-handler/index.js.map +1 -1
  17. package/dist/cjs/client/index.js +17 -5
  18. package/dist/cjs/client/index.js.map +1 -1
  19. package/dist/cjs/components/builtin/Form/Form.js +2 -2
  20. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  21. package/dist/cjs/controls/index.js +10 -0
  22. package/dist/cjs/controls/index.js.map +1 -1
  23. package/dist/cjs/controls/rich-text/control.js.map +1 -1
  24. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +3 -18
  25. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  26. package/dist/cjs/react/server/index.js +47 -0
  27. package/dist/cjs/react/server/index.js.map +1 -0
  28. package/dist/cjs/runtimes/react/components/ElementData.js +41 -8
  29. package/dist/cjs/runtimes/react/components/ElementData.js.map +1 -1
  30. package/dist/cjs/runtimes/react/components/framework-context.js.map +1 -1
  31. package/dist/cjs/runtimes/react/hooks/use-editable-element-stylesheet-factory.js +58 -0
  32. package/dist/cjs/runtimes/react/hooks/use-editable-element-stylesheet-factory.js.map +1 -0
  33. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  34. package/dist/cjs/runtimes/react/hooks/use-server-element-refresh.js +90 -0
  35. package/dist/cjs/runtimes/react/hooks/use-server-element-refresh.js.map +1 -0
  36. package/dist/cjs/runtimes/react/hooks/{use-graphql-api-client.js → use-table-record-client.js} +9 -9
  37. package/dist/cjs/runtimes/react/hooks/use-table-record-client.js.map +1 -0
  38. package/dist/cjs/runtimes/react/react-runtime-core.js +33 -4
  39. package/dist/cjs/runtimes/react/react-runtime-core.js.map +1 -1
  40. package/dist/cjs/runtimes/react/resource-resolver.js.map +1 -1
  41. package/dist/cjs/runtimes/react/runtime-core.js +0 -1
  42. package/dist/cjs/runtimes/react/runtime-core.js.map +1 -1
  43. package/dist/cjs/runtimes/react/server/collect-server-elements.js +74 -0
  44. package/dist/cjs/runtimes/react/server/collect-server-elements.js.map +1 -0
  45. package/dist/cjs/runtimes/react/server/components/editable-server-element.js +173 -0
  46. package/dist/cjs/runtimes/react/server/components/editable-server-element.js.map +1 -0
  47. package/dist/cjs/runtimes/react/server/components/element-data.js +80 -0
  48. package/dist/cjs/runtimes/react/server/components/element-data.js.map +1 -0
  49. package/dist/cjs/runtimes/react/server/components/element.js +77 -0
  50. package/dist/cjs/runtimes/react/server/components/element.js.map +1 -0
  51. package/dist/cjs/runtimes/react/server/components/makeswift-component.js +32 -0
  52. package/dist/cjs/runtimes/react/server/components/makeswift-component.js.map +1 -0
  53. package/dist/cjs/runtimes/react/server/components/renderer.js +53 -0
  54. package/dist/cjs/runtimes/react/server/components/renderer.js.map +1 -0
  55. package/dist/cjs/runtimes/react/server/components/server-elements-cache.js +77 -0
  56. package/dist/cjs/runtimes/react/server/components/server-elements-cache.js.map +1 -0
  57. package/dist/cjs/runtimes/react/server/components/slot.js +33 -0
  58. package/dist/cjs/runtimes/react/server/components/slot.js.map +1 -0
  59. package/dist/cjs/runtimes/react/server/components/snapshot-renderer.js +50 -0
  60. package/dist/cjs/runtimes/react/server/components/snapshot-renderer.js.map +1 -0
  61. package/dist/cjs/runtimes/react/server/css/client-css.js +112 -0
  62. package/dist/cjs/runtimes/react/server/css/client-css.js.map +1 -0
  63. package/dist/cjs/runtimes/react/server/css/css-runtime.js +102 -0
  64. package/dist/cjs/runtimes/react/server/css/css-runtime.js.map +1 -0
  65. package/dist/cjs/runtimes/react/server/css/server-css.js +71 -0
  66. package/dist/cjs/runtimes/react/server/css/server-css.js.map +1 -0
  67. package/dist/cjs/runtimes/react/server/index.js +54 -0
  68. package/dist/cjs/runtimes/react/server/index.js.map +1 -0
  69. package/dist/cjs/runtimes/react/server/injectable-props.js +17 -0
  70. package/dist/cjs/runtimes/react/server/injectable-props.js.map +1 -0
  71. package/dist/cjs/runtimes/react/server/render-context.js +53 -0
  72. package/dist/cjs/runtimes/react/server/render-context.js.map +1 -0
  73. package/dist/cjs/runtimes/react/server/render-element-payload.js +45 -0
  74. package/dist/cjs/runtimes/react/server/render-element-payload.js.map +1 -0
  75. package/dist/cjs/runtimes/react/server/resolve-props.js +58 -0
  76. package/dist/cjs/runtimes/react/server/resolve-props.js.map +1 -0
  77. package/dist/cjs/runtimes/react/server/resource-resolver.js +40 -0
  78. package/dist/cjs/runtimes/react/server/resource-resolver.js.map +1 -0
  79. package/dist/cjs/runtimes/react/server/update-api-resource-cache.js +32 -0
  80. package/dist/cjs/runtimes/react/server/update-api-resource-cache.js.map +1 -0
  81. package/dist/cjs/runtimes/react/testing/react-runtime.js +18 -2
  82. package/dist/cjs/runtimes/react/testing/react-runtime.js.map +1 -1
  83. package/dist/cjs/runtimes/react/testing/render-to-string.js +44 -0
  84. package/dist/cjs/runtimes/react/testing/render-to-string.js.map +1 -0
  85. package/dist/cjs/state/modules/components-meta.js.map +1 -1
  86. package/dist/cjs/unstable-framework-support/index.js +6 -0
  87. package/dist/cjs/unstable-framework-support/index.js.map +1 -1
  88. package/dist/cjs/utils/prop-by-path.js +35 -0
  89. package/dist/cjs/utils/prop-by-path.js.map +1 -0
  90. package/dist/cjs/utils/set.js +32 -0
  91. package/dist/cjs/utils/set.js.map +1 -0
  92. package/dist/esm/api/graphql/documents/queries.js +0 -39
  93. package/dist/esm/api/graphql/documents/queries.js.map +1 -1
  94. package/dist/esm/api/graphql/generated/types.js.map +1 -1
  95. package/dist/esm/api/graphql-api-client.js +2 -24
  96. package/dist/esm/api/graphql-api-client.js.map +1 -1
  97. package/dist/esm/api/makeswift-api-resources-client.js +2 -8
  98. package/dist/esm/api/makeswift-api-resources-client.js.map +1 -1
  99. package/dist/esm/api/rest-api-client.js +27 -1
  100. package/dist/esm/api/rest-api-client.js.map +1 -1
  101. package/dist/esm/api/table-record-client.js +23 -0
  102. package/dist/esm/api/table-record-client.js.map +1 -0
  103. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  104. package/dist/esm/api-handler/handlers/table-record.js +29 -0
  105. package/dist/esm/api-handler/handlers/table-record.js.map +1 -0
  106. package/dist/esm/api-handler/index.js +3 -0
  107. package/dist/esm/api-handler/index.js.map +1 -1
  108. package/dist/esm/client/index.js +17 -5
  109. package/dist/esm/client/index.js.map +1 -1
  110. package/dist/esm/components/builtin/Form/Form.js +2 -2
  111. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  112. package/dist/esm/controls/index.js +10 -0
  113. package/dist/esm/controls/index.js.map +1 -1
  114. package/dist/esm/controls/rich-text/control.js.map +1 -1
  115. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +1 -16
  116. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  117. package/dist/esm/react/server/index.js +25 -0
  118. package/dist/esm/react/server/index.js.map +1 -0
  119. package/dist/esm/runtimes/react/components/ElementData.js +42 -9
  120. package/dist/esm/runtimes/react/components/ElementData.js.map +1 -1
  121. package/dist/esm/runtimes/react/components/framework-context.js.map +1 -1
  122. package/dist/esm/runtimes/react/hooks/use-editable-element-stylesheet-factory.js +34 -0
  123. package/dist/esm/runtimes/react/hooks/use-editable-element-stylesheet-factory.js.map +1 -0
  124. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  125. package/dist/esm/runtimes/react/hooks/use-server-element-refresh.js +66 -0
  126. package/dist/esm/runtimes/react/hooks/use-server-element-refresh.js.map +1 -0
  127. package/dist/esm/runtimes/react/hooks/use-table-record-client.js +11 -0
  128. package/dist/esm/runtimes/react/hooks/use-table-record-client.js.map +1 -0
  129. package/dist/esm/runtimes/react/react-runtime-core.js +33 -4
  130. package/dist/esm/runtimes/react/react-runtime-core.js.map +1 -1
  131. package/dist/esm/runtimes/react/resource-resolver.js.map +1 -1
  132. package/dist/esm/runtimes/react/runtime-core.js +0 -1
  133. package/dist/esm/runtimes/react/runtime-core.js.map +1 -1
  134. package/dist/esm/runtimes/react/server/collect-server-elements.js +50 -0
  135. package/dist/esm/runtimes/react/server/collect-server-elements.js.map +1 -0
  136. package/dist/esm/runtimes/react/server/components/editable-server-element.js +152 -0
  137. package/dist/esm/runtimes/react/server/components/editable-server-element.js.map +1 -0
  138. package/dist/esm/runtimes/react/server/components/element-data.js +64 -0
  139. package/dist/esm/runtimes/react/server/components/element-data.js.map +1 -0
  140. package/dist/esm/runtimes/react/server/components/element.js +56 -0
  141. package/dist/esm/runtimes/react/server/components/element.js.map +1 -0
  142. package/dist/esm/runtimes/react/server/components/makeswift-component.js +8 -0
  143. package/dist/esm/runtimes/react/server/components/makeswift-component.js.map +1 -0
  144. package/dist/esm/runtimes/react/server/components/renderer.js +28 -0
  145. package/dist/esm/runtimes/react/server/components/renderer.js.map +1 -0
  146. package/dist/esm/runtimes/react/server/components/server-elements-cache.js +51 -0
  147. package/dist/esm/runtimes/react/server/components/server-elements-cache.js.map +1 -0
  148. package/dist/esm/runtimes/react/server/components/slot.js +9 -0
  149. package/dist/esm/runtimes/react/server/components/slot.js.map +1 -0
  150. package/dist/esm/runtimes/react/server/components/snapshot-renderer.js +26 -0
  151. package/dist/esm/runtimes/react/server/components/snapshot-renderer.js.map +1 -0
  152. package/dist/esm/runtimes/react/server/css/client-css.js +87 -0
  153. package/dist/esm/runtimes/react/server/css/client-css.js.map +1 -0
  154. package/dist/esm/runtimes/react/server/css/css-runtime.js +77 -0
  155. package/dist/esm/runtimes/react/server/css/css-runtime.js.map +1 -0
  156. package/dist/esm/runtimes/react/server/css/server-css.js +45 -0
  157. package/dist/esm/runtimes/react/server/css/server-css.js.map +1 -0
  158. package/dist/esm/runtimes/react/server/index.js +25 -0
  159. package/dist/esm/runtimes/react/server/index.js.map +1 -0
  160. package/dist/esm/runtimes/react/server/injectable-props.js +1 -0
  161. package/dist/esm/runtimes/react/server/injectable-props.js.map +1 -0
  162. package/dist/esm/runtimes/react/server/render-context.js +26 -0
  163. package/dist/esm/runtimes/react/server/render-context.js.map +1 -0
  164. package/dist/esm/runtimes/react/server/render-element-payload.js +21 -0
  165. package/dist/esm/runtimes/react/server/render-element-payload.js.map +1 -0
  166. package/dist/esm/runtimes/react/server/resolve-props.js +34 -0
  167. package/dist/esm/runtimes/react/server/resolve-props.js.map +1 -0
  168. package/dist/esm/runtimes/react/server/resource-resolver.js +16 -0
  169. package/dist/esm/runtimes/react/server/resource-resolver.js.map +1 -0
  170. package/dist/esm/runtimes/react/server/update-api-resource-cache.js +8 -0
  171. package/dist/esm/runtimes/react/server/update-api-resource-cache.js.map +1 -0
  172. package/dist/esm/runtimes/react/testing/react-runtime.js +18 -2
  173. package/dist/esm/runtimes/react/testing/react-runtime.js.map +1 -1
  174. package/dist/esm/runtimes/react/testing/render-to-string.js +20 -0
  175. package/dist/esm/runtimes/react/testing/render-to-string.js.map +1 -0
  176. package/dist/esm/state/modules/components-meta.js.map +1 -1
  177. package/dist/esm/unstable-framework-support/index.js +4 -0
  178. package/dist/esm/unstable-framework-support/index.js.map +1 -1
  179. package/dist/esm/utils/prop-by-path.js +10 -0
  180. package/dist/esm/utils/prop-by-path.js.map +1 -0
  181. package/dist/esm/utils/set.js +7 -0
  182. package/dist/esm/utils/set.js.map +1 -0
  183. package/dist/types/api/graphql/documents/queries.d.ts +0 -3
  184. package/dist/types/api/graphql/documents/queries.d.ts.map +1 -1
  185. package/dist/types/api/graphql/generated/types.d.ts +0 -71
  186. package/dist/types/api/graphql/generated/types.d.ts.map +1 -1
  187. package/dist/types/api/graphql-api-client.d.ts +0 -4
  188. package/dist/types/api/graphql-api-client.d.ts.map +1 -1
  189. package/dist/types/api/makeswift-api-resources-client.d.ts +1 -3
  190. package/dist/types/api/makeswift-api-resources-client.d.ts.map +1 -1
  191. package/dist/types/api/rest-api-client.d.ts +3 -1
  192. package/dist/types/api/rest-api-client.d.ts.map +1 -1
  193. package/dist/types/api/table-record-client.d.ts +13 -0
  194. package/dist/types/api/table-record-client.d.ts.map +1 -0
  195. package/dist/types/api-handler/handlers/table-record.d.ts +6 -0
  196. package/dist/types/api-handler/handlers/table-record.d.ts.map +1 -0
  197. package/dist/types/api-handler/index.d.ts +2 -1
  198. package/dist/types/api-handler/index.d.ts.map +1 -1
  199. package/dist/types/client/index.d.ts +4 -3
  200. package/dist/types/client/index.d.ts.map +1 -1
  201. package/dist/types/controls/index.d.ts +1 -1
  202. package/dist/types/controls/index.d.ts.map +1 -1
  203. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
  204. package/dist/types/next/tests/server.api-handler-table-record.test.d.ts +2 -0
  205. package/dist/types/next/tests/server.api-handler-table-record.test.d.ts.map +1 -0
  206. package/dist/types/react/server/index.d.ts +2 -0
  207. package/dist/types/react/server/index.d.ts.map +1 -0
  208. package/dist/types/runtimes/react/components/ElementData.d.ts +2 -2
  209. package/dist/types/runtimes/react/components/ElementData.d.ts.map +1 -1
  210. package/dist/types/runtimes/react/components/framework-context.d.ts +6 -1
  211. package/dist/types/runtimes/react/components/framework-context.d.ts.map +1 -1
  212. package/dist/types/runtimes/react/hooks/__tests__/use-server-element-refresh.test.d.ts +3 -0
  213. package/dist/types/runtimes/react/hooks/__tests__/use-server-element-refresh.test.d.ts.map +1 -0
  214. package/dist/types/runtimes/react/hooks/use-editable-element-stylesheet-factory.d.ts +5 -0
  215. package/dist/types/runtimes/react/hooks/use-editable-element-stylesheet-factory.d.ts.map +1 -0
  216. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts +3 -0
  217. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts.map +1 -1
  218. package/dist/types/runtimes/react/hooks/use-server-element-refresh.d.ts +14 -0
  219. package/dist/types/runtimes/react/hooks/use-server-element-refresh.d.ts.map +1 -0
  220. package/dist/types/runtimes/react/hooks/use-table-record-client.d.ts +3 -0
  221. package/dist/types/runtimes/react/hooks/use-table-record-client.d.ts.map +1 -0
  222. package/dist/types/runtimes/react/react-runtime-core.d.ts +21 -6
  223. package/dist/types/runtimes/react/react-runtime-core.d.ts.map +1 -1
  224. package/dist/types/runtimes/react/resource-resolver.d.ts +1 -0
  225. package/dist/types/runtimes/react/resource-resolver.d.ts.map +1 -1
  226. package/dist/types/runtimes/react/runtime-core.d.ts.map +1 -1
  227. package/dist/types/runtimes/react/server/collect-server-elements.d.ts +19 -0
  228. package/dist/types/runtimes/react/server/collect-server-elements.d.ts.map +1 -0
  229. package/dist/types/runtimes/react/server/components/__tests__/editable-server-element.test.d.ts +3 -0
  230. package/dist/types/runtimes/react/server/components/__tests__/editable-server-element.test.d.ts.map +1 -0
  231. package/dist/types/runtimes/react/server/components/__tests__/element.test.d.ts +2 -0
  232. package/dist/types/runtimes/react/server/components/__tests__/element.test.d.ts.map +1 -0
  233. package/dist/types/runtimes/react/server/components/editable-server-element.d.ts +6 -0
  234. package/dist/types/runtimes/react/server/components/editable-server-element.d.ts.map +1 -0
  235. package/dist/types/runtimes/react/server/components/element-data.d.ts +10 -0
  236. package/dist/types/runtimes/react/server/components/element-data.d.ts.map +1 -0
  237. package/dist/types/runtimes/react/server/components/element.d.ts +9 -0
  238. package/dist/types/runtimes/react/server/components/element.d.ts.map +1 -0
  239. package/dist/types/runtimes/react/server/components/makeswift-component.d.ts +8 -0
  240. package/dist/types/runtimes/react/server/components/makeswift-component.d.ts.map +1 -0
  241. package/dist/types/runtimes/react/server/components/renderer.d.ts +23 -0
  242. package/dist/types/runtimes/react/server/components/renderer.d.ts.map +1 -0
  243. package/dist/types/runtimes/react/server/components/server-elements-cache.d.ts +26 -0
  244. package/dist/types/runtimes/react/server/components/server-elements-cache.d.ts.map +1 -0
  245. package/dist/types/runtimes/react/server/components/slot.d.ts +8 -0
  246. package/dist/types/runtimes/react/server/components/slot.d.ts.map +1 -0
  247. package/dist/types/runtimes/react/server/components/snapshot-renderer.d.ts +10 -0
  248. package/dist/types/runtimes/react/server/components/snapshot-renderer.d.ts.map +1 -0
  249. package/dist/types/runtimes/react/server/css/client-css.d.ts +10 -0
  250. package/dist/types/runtimes/react/server/css/client-css.d.ts.map +1 -0
  251. package/dist/types/runtimes/react/server/css/css-runtime.d.ts +16 -0
  252. package/dist/types/runtimes/react/server/css/css-runtime.d.ts.map +1 -0
  253. package/dist/types/runtimes/react/server/css/server-css.d.ts +14 -0
  254. package/dist/types/runtimes/react/server/css/server-css.d.ts.map +1 -0
  255. package/dist/types/runtimes/react/server/index.d.ts +9 -0
  256. package/dist/types/runtimes/react/server/index.d.ts.map +1 -0
  257. package/dist/types/runtimes/react/server/injectable-props.d.ts +5 -0
  258. package/dist/types/runtimes/react/server/injectable-props.d.ts.map +1 -0
  259. package/dist/types/runtimes/react/server/render-context.d.ts +29 -0
  260. package/dist/types/runtimes/react/server/render-context.d.ts.map +1 -0
  261. package/dist/types/runtimes/react/server/render-element-payload.d.ts +215 -0
  262. package/dist/types/runtimes/react/server/render-element-payload.d.ts.map +1 -0
  263. package/dist/types/runtimes/react/server/resolve-props.d.ts +7 -0
  264. package/dist/types/runtimes/react/server/resolve-props.d.ts.map +1 -0
  265. package/dist/types/runtimes/react/server/resource-resolver.d.ts +6 -0
  266. package/dist/types/runtimes/react/server/resource-resolver.d.ts.map +1 -0
  267. package/dist/types/runtimes/react/server/update-api-resource-cache.d.ts +4 -0
  268. package/dist/types/runtimes/react/server/update-api-resource-cache.d.ts.map +1 -0
  269. package/dist/types/runtimes/react/testing/react-runtime.d.ts +15 -4
  270. package/dist/types/runtimes/react/testing/react-runtime.d.ts.map +1 -1
  271. package/dist/types/runtimes/react/testing/render-to-string.d.ts +3 -0
  272. package/dist/types/runtimes/react/testing/render-to-string.d.ts.map +1 -0
  273. package/dist/types/slate/InlineModePlugin/index.d.ts +1 -1
  274. package/dist/types/state/modules/components-meta.d.ts +3 -0
  275. package/dist/types/state/modules/components-meta.d.ts.map +1 -1
  276. package/dist/types/unstable-framework-support/index.d.ts +2 -0
  277. package/dist/types/unstable-framework-support/index.d.ts.map +1 -1
  278. package/dist/types/utils/__tests__/prop-by-path.test.d.ts +2 -0
  279. package/dist/types/utils/__tests__/prop-by-path.test.d.ts.map +1 -0
  280. package/dist/types/utils/prop-by-path.d.ts +3 -0
  281. package/dist/types/utils/prop-by-path.d.ts.map +1 -0
  282. package/dist/types/utils/set.d.ts +3 -0
  283. package/dist/types/utils/set.d.ts.map +1 -0
  284. package/package.json +8 -3
  285. package/react/server/package.json +5 -0
  286. package/dist/cjs/runtimes/react/hooks/use-graphql-api-client.js.map +0 -1
  287. package/dist/esm/runtimes/react/hooks/use-graphql-api-client.js +0 -11
  288. package/dist/esm/runtimes/react/hooks/use-graphql-api-client.js.map +0 -1
  289. package/dist/types/runtimes/react/hooks/use-graphql-api-client.d.ts +0 -3
  290. package/dist/types/runtimes/react/hooks/use-graphql-api-client.d.ts.map +0 -1
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var server_exports = {};
20
+ __export(server_exports, {
21
+ MakeswiftComponent: () => import_server.MakeswiftComponent,
22
+ MakeswiftRenderContext: () => import_server.RenderContext,
23
+ RSCElementRenderer: () => import_server.RSCElementRenderer,
24
+ RenderElementPayload: () => import_server.RenderElementPayload,
25
+ ServerCSSCollector: () => import_server.ServerCSSCollector,
26
+ ServerElement: () => import_server.ServerElement,
27
+ Slot: () => import_server.Slot,
28
+ collectServerElements: () => import_server.collectServerElements,
29
+ getRenderContext: () => import_server.getRenderContext,
30
+ setRenderContext: () => import_server.setRenderContext
31
+ });
32
+ module.exports = __toCommonJS(server_exports);
33
+ var import_server = require("../../runtimes/react/server");
34
+ // Annotate the CommonJS export names for ESM import in node:
35
+ 0 && (module.exports = {
36
+ MakeswiftComponent,
37
+ MakeswiftRenderContext,
38
+ RSCElementRenderer,
39
+ RenderElementPayload,
40
+ ServerCSSCollector,
41
+ ServerElement,
42
+ Slot,
43
+ collectServerElements,
44
+ getRenderContext,
45
+ setRenderContext
46
+ });
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/react/server/index.ts"],"sourcesContent":["export {\n type ServerRenderContext,\n collectServerElements,\n RenderElementPayload,\n RenderContext as MakeswiftRenderContext,\n setRenderContext,\n getRenderContext,\n ServerCSSCollector,\n ServerElement,\n RSCElementRenderer,\n MakeswiftComponent,\n Slot,\n} from '../../runtimes/react/server'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAYO;","names":[]}
@@ -24,24 +24,57 @@ module.exports = __toCommonJS(ElementData_exports);
24
24
  var import_jsx_runtime = require("react/jsx-runtime");
25
25
  var import_react = require("react");
26
26
  var import_react2 = require("react");
27
+ var import_FallbackComponent = require("../../../components/shared/FallbackComponent");
28
+ var import_editable_server_element = require("../server/components/editable-server-element");
29
+ var import_server_elements_cache = require("../server/components/server-elements-cache");
27
30
  var import_use_builtin_suspense = require("../hooks/use-builtin-suspense");
28
31
  var import_use_component = require("../hooks/use-component");
32
+ var import_use_is_read_only = require("../hooks/use-is-read-only");
29
33
  var import_can_accept_ref = require("../utils/can-accept-ref");
30
- var import_FallbackComponent = require("../../../components/shared/FallbackComponent");
31
34
  var import_resolve_props = require("./resolve-props");
32
35
  var import_activity_with_fallback = require("./activity-with-fallback");
33
36
  const ElementData = (0, import_react2.memo)(
34
37
  (0, import_react2.forwardRef)(function ElementData2({ elementData }, ref) {
35
- const Component = (0, import_use_component.useComponent)(elementData.type);
36
- const builtinSuspense = (0, import_use_builtin_suspense.useBuiltinSuspense)(elementData.type);
37
- if (Component == null) {
38
- console.warn(`Unknown component '${elementData.type}'`, { elementData });
39
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_FallbackComponent.FallbackComponent, { ref, text: "Component not found" });
38
+ const componentMeta = (0, import_use_component.useComponentMeta)(elementData.type);
39
+ if (componentMeta == null) {
40
+ const msg = `Component metadata not found for '${elementData.type}'`;
41
+ console.warn(msg);
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
43
+ import_FallbackComponent.FallbackComponent,
44
+ {
45
+ ref,
46
+ text: "Component not found",
47
+ details: msg
48
+ }
49
+ );
40
50
  }
41
- const forwardRef2 = (0, import_can_accept_ref.canAcceptRef)(Component);
42
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_activity_with_fallback.ActivityOrFallback, { suspenseFallback: builtinSuspense, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_resolve_props.ResolveProps, { element: elementData, children: (props) => forwardRef2 ? /* @__PURE__ */ (0, import_react.createElement)(Component, { ...props, key: elementData.key, ref }) : /* @__PURE__ */ (0, import_react.createElement)(Component, { ...props, key: elementData.key }) }) });
51
+ return componentMeta.server ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ElementDataServer, { elementData, ref }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ElementDataClient, { elementData, ref });
43
52
  })
44
53
  );
54
+ const ElementDataServer = (0, import_react2.forwardRef)(function ElementDataServer2({ elementData }, ref) {
55
+ const rscNode = (0, import_server_elements_cache.useServerElementsCache)().getElement(elementData.key);
56
+ const isReadOnly = (0, import_use_is_read_only.useIsReadOnly)();
57
+ if (isReadOnly) {
58
+ if (rscNode == null) {
59
+ console.error(
60
+ `React node not found for server component ${elementData.type}, element key ${elementData.key}`
61
+ );
62
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_FallbackComponent.FallbackComponent, { ref, text: "Server component not found" });
63
+ }
64
+ return rscNode;
65
+ }
66
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_editable_server_element.EditableServerElement, { initialElementData: elementData, children: rscNode });
67
+ });
68
+ const ElementDataClient = (0, import_react2.forwardRef)(function ElementDataClient2({ elementData }, ref) {
69
+ const Component = (0, import_use_component.useComponent)(elementData.type);
70
+ const builtinSuspense = (0, import_use_builtin_suspense.useBuiltinSuspense)(elementData.type);
71
+ if (Component == null) {
72
+ console.warn(`Unknown component '${elementData.type}'`, { elementData });
73
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_FallbackComponent.FallbackComponent, { ref, text: "Component not found" });
74
+ }
75
+ const forwardRef2 = (0, import_can_accept_ref.canAcceptRef)(Component);
76
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_activity_with_fallback.ActivityOrFallback, { suspenseFallback: builtinSuspense, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_resolve_props.ResolveProps, { element: elementData, children: (props) => forwardRef2 ? /* @__PURE__ */ (0, import_react.createElement)(Component, { ...props, key: elementData.key, ref }) : /* @__PURE__ */ (0, import_react.createElement)(Component, { ...props, key: elementData.key }) }) });
77
+ });
45
78
  // Annotate the CommonJS export names for ESM import in node:
46
79
  0 && (module.exports = {
47
80
  ElementData
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/ElementData.tsx"],"sourcesContent":["import { Ref, forwardRef, memo, ReactNode } from 'react'\n\nimport { ElementData as ReactPageElementData } from '../../../state/read-only-state'\nimport { useBuiltinSuspense } from '../hooks/use-builtin-suspense'\nimport { useComponent } from '../hooks/use-component'\nimport { canAcceptRef } from '../utils/can-accept-ref'\nimport { FallbackComponent } from '../../../components/shared/FallbackComponent'\nimport { ResolveProps } from './resolve-props'\nimport { ActivityOrFallback } from './activity-with-fallback'\n\ntype ElementDataProps = {\n elementData: ReactPageElementData\n}\n\nexport const ElementData = memo(\n forwardRef(function ElementData({ elementData }: ElementDataProps, ref: Ref<unknown>): ReactNode {\n const Component = useComponent(elementData.type)\n const builtinSuspense = useBuiltinSuspense(elementData.type)\n\n if (Component == null) {\n console.warn(`Unknown component '${elementData.type}'`, { elementData })\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n const forwardRef = canAcceptRef(Component)\n\n return (\n <ActivityOrFallback suspenseFallback={builtinSuspense}>\n <ResolveProps element={elementData}>\n {props =>\n forwardRef ? (\n <Component {...props} key={elementData.key} ref={ref} />\n ) : (\n <Component {...props} key={elementData.key} />\n )\n }\n </ResolveProps>\n </ActivityOrFallback>\n )\n }),\n)\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBa;AAUC;AA/Bd,IAAAA,gBAAiD;AAGjD,kCAAmC;AACnC,2BAA6B;AAC7B,4BAA6B;AAC7B,+BAAkC;AAClC,2BAA6B;AAC7B,oCAAmC;AAM5B,MAAM,kBAAc;AAAA,MACzB,0BAAW,SAASC,aAAY,EAAE,YAAY,GAAqB,KAA8B;AAC/F,UAAM,gBAAY,mCAAa,YAAY,IAAI;AAC/C,UAAM,sBAAkB,gDAAmB,YAAY,IAAI;AAE3D,QAAI,aAAa,MAAM;AACrB,cAAQ,KAAK,sBAAsB,YAAY,IAAI,KAAK,EAAE,YAAY,CAAC;AACvE,aAAO,4CAAC,8CAAkB,KAAiC,MAAK,uBAAsB;AAAA,IACxF;AAEA,UAAMC,kBAAa,oCAAa,SAAS;AAEzC,WACE,4CAAC,oDAAmB,kBAAkB,iBACpC,sDAAC,qCAAa,SAAS,aACpB,qBACCA,cACE,gDAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,KAAU,IAEtD,gDAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,GAGlD,GACF;AAAA,EAEJ,CAAC;AACH;","names":["import_react","ElementData","forwardRef"]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/ElementData.tsx"],"sourcesContent":["import { type ReactNode, type Ref, forwardRef, memo } from 'react'\n\nimport { type ElementData as MakeswiftElementData } from '../../../state/read-only-state'\nimport { FallbackComponent } from '../../../components/shared/FallbackComponent'\n\nimport { EditableServerElement } from '../server/components/editable-server-element'\nimport { useServerElementsCache } from '../server/components/server-elements-cache'\n\nimport { useBuiltinSuspense } from '../hooks/use-builtin-suspense'\nimport { useComponent, useComponentMeta } from '../hooks/use-component'\nimport { useIsReadOnly } from '../hooks/use-is-read-only'\n\nimport { canAcceptRef } from '../utils/can-accept-ref'\n\nimport { ResolveProps } from './resolve-props'\nimport { ActivityOrFallback } from './activity-with-fallback'\n\ntype ElementDataProps = {\n elementData: MakeswiftElementData\n}\n\nexport const ElementData = memo(\n forwardRef(function ElementData({ elementData }: ElementDataProps, ref: Ref<unknown>): ReactNode {\n const componentMeta = useComponentMeta(elementData.type)\n\n if (componentMeta == null) {\n const msg = `Component metadata not found for '${elementData.type}'`\n console.warn(msg)\n return (\n <FallbackComponent\n ref={ref as Ref<HTMLDivElement>}\n text=\"Component not found\"\n details={msg}\n />\n )\n }\n\n return componentMeta.server ? (\n <ElementDataServer elementData={elementData} ref={ref} />\n ) : (\n <ElementDataClient elementData={elementData} ref={ref} />\n )\n }),\n)\n\nconst ElementDataServer = forwardRef(function ElementDataServer(\n { elementData }: ElementDataProps,\n ref: Ref<unknown>,\n): ReactNode {\n // lookup and render RSC node for the element; see the `ServerElementsCache` comment\n const rscNode = useServerElementsCache().getElement(elementData.key)\n const isReadOnly = useIsReadOnly()\n\n if (isReadOnly) {\n if (rscNode == null) {\n console.error(\n `React node not found for server component ${elementData.type}, element key ${elementData.key}`,\n )\n\n return (\n <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Server component not found\" />\n )\n }\n\n return rscNode\n }\n\n return <EditableServerElement initialElementData={elementData}>{rscNode}</EditableServerElement>\n})\n\nconst ElementDataClient = forwardRef(function ElementDataClient(\n { elementData }: ElementDataProps,\n ref: Ref<unknown>,\n): ReactNode {\n const Component = useComponent(elementData.type)\n const builtinSuspense = useBuiltinSuspense(elementData.type)\n\n if (Component == null) {\n console.warn(`Unknown component '${elementData.type}'`, { elementData })\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n const forwardRef = canAcceptRef(Component)\n\n return (\n <ActivityOrFallback suspenseFallback={builtinSuspense}>\n <ResolveProps element={elementData}>\n {props =>\n forwardRef ? (\n <Component {...props} key={elementData.key} ref={ref} />\n ) : (\n <Component {...props} key={elementData.key} />\n )\n }\n </ResolveProps>\n </ActivityOrFallback>\n )\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BQ;AA4DI;AAzFZ,IAAAA,gBAA2D;AAG3D,+BAAkC;AAElC,qCAAsC;AACtC,mCAAuC;AAEvC,kCAAmC;AACnC,2BAA+C;AAC/C,8BAA8B;AAE9B,4BAA6B;AAE7B,2BAA6B;AAC7B,oCAAmC;AAM5B,MAAM,kBAAc;AAAA,MACzB,0BAAW,SAASC,aAAY,EAAE,YAAY,GAAqB,KAA8B;AAC/F,UAAM,oBAAgB,uCAAiB,YAAY,IAAI;AAEvD,QAAI,iBAAiB,MAAM;AACzB,YAAM,MAAM,qCAAqC,YAAY,IAAI;AACjE,cAAQ,KAAK,GAAG;AAChB,aACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,MAAK;AAAA,UACL,SAAS;AAAA;AAAA,MACX;AAAA,IAEJ;AAEA,WAAO,cAAc,SACnB,4CAAC,qBAAkB,aAA0B,KAAU,IAEvD,4CAAC,qBAAkB,aAA0B,KAAU;AAAA,EAE3D,CAAC;AACH;AAEA,MAAM,wBAAoB,0BAAW,SAASC,mBAC5C,EAAE,YAAY,GACd,KACW;AAEX,QAAM,cAAU,qDAAuB,EAAE,WAAW,YAAY,GAAG;AACnE,QAAM,iBAAa,uCAAc;AAEjC,MAAI,YAAY;AACd,QAAI,WAAW,MAAM;AACnB,cAAQ;AAAA,QACN,6CAA6C,YAAY,IAAI,iBAAiB,YAAY,GAAG;AAAA,MAC/F;AAEA,aACE,4CAAC,8CAAkB,KAAiC,MAAK,8BAA6B;AAAA,IAE1F;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,4CAAC,wDAAsB,oBAAoB,aAAc,mBAAQ;AAC1E,CAAC;AAED,MAAM,wBAAoB,0BAAW,SAASC,mBAC5C,EAAE,YAAY,GACd,KACW;AACX,QAAM,gBAAY,mCAAa,YAAY,IAAI;AAC/C,QAAM,sBAAkB,gDAAmB,YAAY,IAAI;AAE3D,MAAI,aAAa,MAAM;AACrB,YAAQ,KAAK,sBAAsB,YAAY,IAAI,KAAK,EAAE,YAAY,CAAC;AACvE,WAAO,4CAAC,8CAAkB,KAAiC,MAAK,uBAAsB;AAAA,EACxF;AAEA,QAAMC,kBAAa,oCAAa,SAAS;AAEzC,SACE,4CAAC,oDAAmB,kBAAkB,iBACpC,sDAAC,qCAAa,SAAS,aACpB,qBACCA,cACE,gDAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,KAAU,IAEtD,gDAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,GAGlD,GACF;AAEJ,CAAC;","names":["import_react","ElementData","ElementDataServer","ElementDataClient","forwardRef"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/framework-context.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ReactNode,\n type PropsWithChildren,\n type CSSProperties,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ForwardRefExoticComponent,\n type RefAttributes,\n forwardRef,\n createContext,\n useContext,\n useMemo,\n} from 'react'\n\nimport { type LinkData } from '@makeswift/prop-controllers'\n\nimport { type Snippet } from '../../../client'\n\nimport { BaseHeadSnippet } from './page/HeadSnippet'\n\ntype HeadComponent = (props: { children: ReactNode }) => ReactNode\ntype HeadSnippet = (props: { snippet: Snippet }) => ReactNode\ntype ImageComponent = (props: {\n src: string\n alt: string\n sizes?: string\n width?: number\n height?: number\n priority?: boolean\n fill?: boolean\n style?: CSSProperties\n}) => ReactNode\n\ntype LinkProps = Omit<ComponentPropsWithoutRef<'a'>, 'onClick'> & {\n linkType?: LinkData['type']\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype LinkComponent = ForwardRefExoticComponent<RefAttributes<HTMLAnchorElement> & LinkProps>\n\nexport type FrameworkContext = {\n Head: HeadComponent\n HeadSnippet: HeadSnippet\n Image: ImageComponent\n Link: LinkComponent\n}\n\n// React 19 automatically hoists metadata tags to the <head>\nconst DefaultHead = ({ children }: PropsWithChildren) => <>{children}</>\n\nconst DefaultHeadSnippet = BaseHeadSnippet\n\nconst DefaultImage: ImageComponent = ({ priority, fill, style, ...props }) => (\n <img\n {...props}\n style={{\n ...(fill\n ? {\n height: '100%',\n width: '100%',\n objectFit: 'cover',\n }\n : {}),\n ...style,\n }}\n loading={priority ? 'eager' : 'lazy'}\n />\n)\n\nconst DefaultLink: LinkComponent = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ linkType, ...props }, ref) => <a {...props} ref={ref} />,\n)\n\nconst FrameworkContext = createContext<Partial<FrameworkContext>>({})\n\nexport const FrameworkContextProvider = ({\n value,\n children,\n}: PropsWithChildren<{ value: Partial<FrameworkContext> }>) => {\n const parentContext = useContext(FrameworkContext)\n const mergedContext = useMemo(() => ({ ...parentContext, ...value }), [parentContext, value])\n\n return <FrameworkContext.Provider value={mergedContext}>{children}</FrameworkContext.Provider>\n}\n\nconst defaultContext: FrameworkContext = {\n Head: DefaultHead,\n HeadSnippet: DefaultHeadSnippet,\n Image: DefaultImage,\n Link: DefaultLink,\n}\n\nexport function useFrameworkContext(): FrameworkContext {\n return { ...defaultContext, ...useContext(FrameworkContext) }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkDyD;AAhDzD,mBAYO;AAMP,yBAAgC;AA8BhC,MAAM,cAAc,CAAC,EAAE,SAAS,MAAyB,2EAAG,UAAS;AAErE,MAAM,qBAAqB;AAE3B,MAAM,eAA+B,CAAC,EAAE,UAAU,MAAM,OAAO,GAAG,MAAM,MACtE;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,IACJ,OAAO;AAAA,MACL,GAAI,OACA;AAAA,QACE,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,WAAW;AAAA,MACb,IACA,CAAC;AAAA,MACL,GAAG;AAAA,IACL;AAAA,IACA,SAAS,WAAW,UAAU;AAAA;AAChC;AAGF,MAAM,kBAA6B;AAAA,EACjC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,4CAAC,OAAG,GAAG,OAAO,KAAU;AAC3D;AAEA,MAAM,uBAAmB,4BAAyC,CAAC,CAAC;AAE7D,MAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,EACA;AACF,MAA+D;AAC7D,QAAM,oBAAgB,yBAAW,gBAAgB;AACjD,QAAM,oBAAgB,sBAAQ,OAAO,EAAE,GAAG,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,KAAK,CAAC;AAE5F,SAAO,4CAAC,iBAAiB,UAAjB,EAA0B,OAAO,eAAgB,UAAS;AACpE;AAEA,MAAM,iBAAmC;AAAA,EACvC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AACR;AAEO,SAAS,sBAAwC;AACtD,SAAO,EAAE,GAAG,gBAAgB,OAAG,yBAAW,gBAAgB,EAAE;AAC9D;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/framework-context.tsx"],"sourcesContent":["'use client'\n\nimport {\n type ReactNode,\n type PropsWithChildren,\n type CSSProperties,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ForwardRefExoticComponent,\n type RefAttributes,\n forwardRef,\n createContext,\n useContext,\n useMemo,\n} from 'react'\n\nimport { type LinkData } from '@makeswift/prop-controllers'\n\nimport { type Snippet } from '../../../client/page-snapshot'\n\nimport { type RenderElementPayload } from '../server/render-element-payload'\n\nimport { BaseHeadSnippet } from './page/HeadSnippet'\n\ntype HeadComponent = (props: { children: ReactNode }) => ReactNode\ntype HeadSnippet = (props: { snippet: Snippet }) => ReactNode\ntype ImageComponent = (props: {\n src: string\n alt: string\n sizes?: string\n width?: number\n height?: number\n priority?: boolean\n fill?: boolean\n style?: CSSProperties\n}) => ReactNode\n\ntype LinkProps = Omit<ComponentPropsWithoutRef<'a'>, 'onClick'> & {\n linkType?: LinkData['type']\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype LinkComponent = ForwardRefExoticComponent<RefAttributes<HTMLAnchorElement> & LinkProps>\n\nexport type FrameworkContext = {\n Head: HeadComponent\n HeadSnippet: HeadSnippet\n Image: ImageComponent\n Link: LinkComponent\n /**\n * Callback to render a single RSC element on the server and return the result.\n */\n renderRSCElement?: (args: RenderElementPayload) => Promise<ReactNode>\n}\n\n// React 19 automatically hoists metadata tags to the <head>\nconst DefaultHead = ({ children }: PropsWithChildren) => <>{children}</>\n\nconst DefaultHeadSnippet = BaseHeadSnippet\n\nconst DefaultImage: ImageComponent = ({ priority, fill, style, ...props }) => (\n <img\n {...props}\n style={{\n ...(fill\n ? {\n height: '100%',\n width: '100%',\n objectFit: 'cover',\n }\n : {}),\n ...style,\n }}\n loading={priority ? 'eager' : 'lazy'}\n />\n)\n\nconst DefaultLink: LinkComponent = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ linkType, ...props }, ref) => <a {...props} ref={ref} />,\n)\n\nconst FrameworkContext = createContext<Partial<FrameworkContext>>({})\n\nexport const FrameworkContextProvider = ({\n value,\n children,\n}: PropsWithChildren<{ value: Partial<FrameworkContext> }>) => {\n const parentContext = useContext(FrameworkContext)\n const mergedContext = useMemo(() => ({ ...parentContext, ...value }), [parentContext, value])\n\n return <FrameworkContext.Provider value={mergedContext}>{children}</FrameworkContext.Provider>\n}\n\nconst defaultContext: FrameworkContext = {\n Head: DefaultHead,\n HeadSnippet: DefaultHeadSnippet,\n Image: DefaultImage,\n Link: DefaultLink,\n}\n\nexport function useFrameworkContext(): FrameworkContext {\n return { ...defaultContext, ...useContext(FrameworkContext) }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwDyD;AAtDzD,mBAYO;AAQP,yBAAgC;AAkChC,MAAM,cAAc,CAAC,EAAE,SAAS,MAAyB,2EAAG,UAAS;AAErE,MAAM,qBAAqB;AAE3B,MAAM,eAA+B,CAAC,EAAE,UAAU,MAAM,OAAO,GAAG,MAAM,MACtE;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,IACJ,OAAO;AAAA,MACL,GAAI,OACA;AAAA,QACE,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,WAAW;AAAA,MACb,IACA,CAAC;AAAA,MACL,GAAG;AAAA,IACL;AAAA,IACA,SAAS,WAAW,UAAU;AAAA;AAChC;AAGF,MAAM,kBAA6B;AAAA,EACjC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,4CAAC,OAAG,GAAG,OAAO,KAAU;AAC3D;AAEA,MAAM,uBAAmB,4BAAyC,CAAC,CAAC;AAE7D,MAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,EACA;AACF,MAA+D;AAC7D,QAAM,oBAAgB,yBAAW,gBAAgB;AACjD,QAAM,oBAAgB,sBAAQ,OAAO,EAAE,GAAG,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,KAAK,CAAC;AAE5F,SAAO,4CAAC,iBAAiB,UAAjB,EAA0B,OAAO,eAAgB,UAAS;AACpE;AAEA,MAAM,iBAAmC;AAAA,EACvC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AACR;AAEO,SAAS,sBAAwC;AACtD,SAAO,EAAE,GAAG,gBAAgB,OAAG,yBAAW,gBAAgB,EAAE;AAC9D;","names":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var use_editable_element_stylesheet_factory_exports = {};
20
+ __export(use_editable_element_stylesheet_factory_exports, {
21
+ useEditableElementStylesheetFactory: () => useEditableElementStylesheetFactory
22
+ });
23
+ module.exports = __toCommonJS(use_editable_element_stylesheet_factory_exports);
24
+ var import_react = require("react");
25
+ var import_css_runtime = require("../server/css/css-runtime");
26
+ var import_client_css = require("../server/css/client-css");
27
+ var import_use_breakpoints = require("./use-breakpoints");
28
+ const useEditableElementStylesheetFactory = ({
29
+ elementKey: baseElementKey
30
+ }) => {
31
+ const { updateStyle } = (0, import_client_css.useClientCSS)();
32
+ const breakpoints = (0, import_use_breakpoints.useBreakpoints)();
33
+ const stylesheetEngine = (0, import_react.useMemo)(
34
+ () => new import_css_runtime.StylesheetEngine(
35
+ breakpoints,
36
+ baseElementKey,
37
+ void 0,
38
+ (_className, css, elementKey, propName) => {
39
+ if (elementKey && propName)
40
+ updateStyle(elementKey, propName, css);
41
+ }
42
+ ),
43
+ [breakpoints, baseElementKey, updateStyle]
44
+ );
45
+ return (0, import_react.useMemo)(
46
+ () => ({
47
+ get: (propName) => stylesheetEngine.child(propName),
48
+ useDefinedStyles: () => {
49
+ }
50
+ }),
51
+ [stylesheetEngine]
52
+ );
53
+ };
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ useEditableElementStylesheetFactory
57
+ });
58
+ //# sourceMappingURL=use-editable-element-stylesheet-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-editable-element-stylesheet-factory.tsx"],"sourcesContent":["import { useMemo } from 'react'\n\nimport { StylesheetEngine } from '../server/css/css-runtime'\nimport { useClientCSS } from '../server/css/client-css'\n\nimport { type StylesheetFactory } from '../stylesheet-factory'\n\nimport { useBreakpoints } from './use-breakpoints'\n\nexport const useEditableElementStylesheetFactory = ({\n elementKey: baseElementKey,\n}: {\n elementKey: string\n}): StylesheetFactory => {\n const { updateStyle } = useClientCSS()\n const breakpoints = useBreakpoints()\n\n const stylesheetEngine = useMemo(\n () =>\n new StylesheetEngine(\n breakpoints,\n baseElementKey,\n undefined,\n (_className, css, elementKey, propName) => {\n if (elementKey && propName) updateStyle(elementKey, propName, css)\n },\n ),\n [breakpoints, baseElementKey, updateStyle],\n )\n\n return useMemo(\n () => ({\n get: (propName: string) => stylesheetEngine.child(propName),\n useDefinedStyles: () => {\n // No-op, the styles are updated as they are defined\n },\n }),\n [stylesheetEngine],\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAwB;AAExB,yBAAiC;AACjC,wBAA6B;AAI7B,6BAA+B;AAExB,MAAM,sCAAsC,CAAC;AAAA,EAClD,YAAY;AACd,MAEyB;AACvB,QAAM,EAAE,YAAY,QAAI,gCAAa;AACrC,QAAM,kBAAc,uCAAe;AAEnC,QAAM,uBAAmB;AAAA,IACvB,MACE,IAAI;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC,YAAY,KAAK,YAAY,aAAa;AACzC,YAAI,cAAc;AAAU,sBAAY,YAAY,UAAU,GAAG;AAAA,MACnE;AAAA,IACF;AAAA,IACF,CAAC,aAAa,gBAAgB,WAAW;AAAA,EAC3C;AAEA,aAAO;AAAA,IACL,OAAO;AAAA,MACL,KAAK,CAAC,aAAqB,iBAAiB,MAAM,QAAQ;AAAA,MAC1D,kBAAkB,MAAM;AAAA,MAExB;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB;AAAA,EACnB;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-resolved-props.ts"],"sourcesContent":["import { useMemo, useEffect, useRef, useSyncExternalStore, useCallback } from 'react'\nimport {\n ControlDefinition,\n ControlInstance,\n mapValues,\n type Data,\n type Resolvable,\n} from '@makeswift/controls'\n\nimport { useResourceResolver } from './use-resource-resolver'\n\nimport { type StylesheetFactory } from '../stylesheet-factory'\nimport { propErrorHandlingProxy } from '../utils/prop-error-handling-proxy'\n\nimport { useResolvableRecord } from './use-resolvable-record'\n\ntype CacheItem = {\n data: Data\n control: ControlInstance | undefined\n resolvedValue: Resolvable<unknown>\n}\n\nexport function useResolvedProps({\n elementKey,\n propDefs,\n propData,\n controlInstances,\n stylesheetFactory,\n}: {\n elementKey: string\n propDefs: Record<string, ControlDefinition>\n propData: Record<string, Data>\n controlInstances: Record<string, ControlInstance> | null\n stylesheetFactory: StylesheetFactory\n}): Record<string, unknown> {\n const resourceResolver = useResourceResolver()\n\n const cache = useRef<Record<string, CacheItem>>({}).current\n const resolveProp = useCallback(\n (def: ControlDefinition, propName: string) => {\n const data = propData[propName]\n const control = controlInstances?.[propName]\n\n if (\n cache[propName] != null &&\n data === cache[propName].data &&\n control === cache[propName].control\n ) {\n return cache[propName].resolvedValue\n }\n\n const resolvedValue = def.resolveValue(\n data,\n resourceResolver,\n stylesheetFactory.get(propName),\n control,\n )\n\n cache[propName] = { data, control, resolvedValue }\n return resolvedValue\n },\n [propData, cache, resourceResolver, controlInstances, stylesheetFactory],\n )\n\n const resolvables = useMemo<Record<string, Resolvable<unknown>>>(\n () =>\n mapValues(propDefs, (def, propName) => {\n const defaultValue = (def.config as any)?.defaultValue\n return propErrorHandlingProxy(resolveProp(def, propName), defaultValue, error => {\n console.warn(\n `Error reading value for prop \"${propName}\" of element ${elementKey}, falling back to \\`${defaultValue}\\`.`,\n { control: def, error },\n )\n })\n }),\n [propDefs, resolveProp, elementKey],\n )\n\n const props = useResolvableRecord(resolvables)\n\n // no need to call `triggerResolve` on the server, all the resources should already be in\n // the host API client's cache (populated from the snapshot's cache)\n useEffect(() => {\n props.triggerResolve().catch(err => {\n console.log(`Error while resolving props for element ${elementKey}`, err)\n })\n }, [props, elementKey])\n\n // the order is important here, the styles are defined in the process of the props resolution,\n // calling `useDefinedStyles` before the props are resolved would effectively be a noop\n const resolvedProps = useSyncExternalStore(props.subscribe, props.readStable, props.readStable)\n\n stylesheetFactory.useDefinedStyles()\n\n return resolvedProps\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8E;AAC9E,sBAMO;AAEP,mCAAoC;AAGpC,uCAAuC;AAEvC,mCAAoC;AAQ7B,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAM4B;AAC1B,QAAM,uBAAmB,kDAAoB;AAE7C,QAAM,YAAQ,qBAAkC,CAAC,CAAC,EAAE;AACpD,QAAM,kBAAc;AAAA,IAClB,CAAC,KAAwB,aAAqB;AAC5C,YAAM,OAAO,SAAS,QAAQ;AAC9B,YAAM,UAAU,mBAAmB,QAAQ;AAE3C,UACE,MAAM,QAAQ,KAAK,QACnB,SAAS,MAAM,QAAQ,EAAE,QACzB,YAAY,MAAM,QAAQ,EAAE,SAC5B;AACA,eAAO,MAAM,QAAQ,EAAE;AAAA,MACzB;AAEA,YAAM,gBAAgB,IAAI;AAAA,QACxB;AAAA,QACA;AAAA,QACA,kBAAkB,IAAI,QAAQ;AAAA,QAC9B;AAAA,MACF;AAEA,YAAM,QAAQ,IAAI,EAAE,MAAM,SAAS,cAAc;AACjD,aAAO;AAAA,IACT;AAAA,IACA,CAAC,UAAU,OAAO,kBAAkB,kBAAkB,iBAAiB;AAAA,EACzE;AAEA,QAAM,kBAAc;AAAA,IAClB,UACE,2BAAU,UAAU,CAAC,KAAK,aAAa;AACrC,YAAM,eAAgB,IAAI,QAAgB;AAC1C,iBAAO,yDAAuB,YAAY,KAAK,QAAQ,GAAG,cAAc,WAAS;AAC/E,gBAAQ;AAAA,UACN,iCAAiC,QAAQ,gBAAgB,UAAU,uBAAuB,YAAY;AAAA,UACtG,EAAE,SAAS,KAAK,MAAM;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,IACH,CAAC,UAAU,aAAa,UAAU;AAAA,EACpC;AAEA,QAAM,YAAQ,kDAAoB,WAAW;AAI7C,8BAAU,MAAM;AACd,UAAM,eAAe,EAAE,MAAM,SAAO;AAClC,cAAQ,IAAI,2CAA2C,UAAU,IAAI,GAAG;AAAA,IAC1E,CAAC;AAAA,EACH,GAAG,CAAC,OAAO,UAAU,CAAC;AAItB,QAAM,oBAAgB,mCAAqB,MAAM,WAAW,MAAM,YAAY,MAAM,UAAU;AAE9F,oBAAkB,iBAAiB;AAEnC,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-resolved-props.ts"],"sourcesContent":["import { useMemo, useEffect, useRef, useSyncExternalStore, useCallback } from 'react'\nimport {\n ControlDefinition,\n ControlInstance,\n mapValues,\n type Data,\n type Resolvable,\n} from '@makeswift/controls'\n\nimport { useResourceResolver } from './use-resource-resolver'\n\nimport { type StylesheetFactory } from '../stylesheet-factory'\nimport { propErrorHandlingProxy } from '../utils/prop-error-handling-proxy'\n\nimport { useResolvableRecord } from './use-resolvable-record'\n\ntype CacheItem = {\n data: Data\n control: ControlInstance | undefined\n resolvedValue: Resolvable<unknown>\n}\n\n/**\n * Client-side prop resolution. See `resolveProps` for server-side counterpart.\n */\nexport function useResolvedProps({\n elementKey,\n propDefs,\n propData,\n controlInstances,\n stylesheetFactory,\n}: {\n elementKey: string\n propDefs: Record<string, ControlDefinition>\n propData: Record<string, Data>\n controlInstances: Record<string, ControlInstance> | null\n stylesheetFactory: StylesheetFactory\n}): Record<string, unknown> {\n const resourceResolver = useResourceResolver()\n\n const cache = useRef<Record<string, CacheItem>>({}).current\n const resolveProp = useCallback(\n (def: ControlDefinition, propName: string) => {\n const data = propData[propName]\n const control = controlInstances?.[propName]\n\n if (\n cache[propName] != null &&\n data === cache[propName].data &&\n control === cache[propName].control\n ) {\n return cache[propName].resolvedValue\n }\n\n const resolvedValue = def.resolveValue(\n data,\n resourceResolver,\n stylesheetFactory.get(propName),\n control,\n )\n\n cache[propName] = { data, control, resolvedValue }\n return resolvedValue\n },\n [propData, cache, resourceResolver, controlInstances, stylesheetFactory],\n )\n\n const resolvables = useMemo<Record<string, Resolvable<unknown>>>(\n () =>\n mapValues(propDefs, (def, propName) => {\n const defaultValue = (def.config as any)?.defaultValue\n return propErrorHandlingProxy(resolveProp(def, propName), defaultValue, error => {\n console.warn(\n `Error reading value for prop \"${propName}\" of element ${elementKey}, falling back to \\`${defaultValue}\\`.`,\n { control: def, error },\n )\n })\n }),\n [propDefs, resolveProp, elementKey],\n )\n\n const props = useResolvableRecord(resolvables)\n\n // no need to call `triggerResolve` on the server, all the resources should already be in\n // the host API client's cache (populated from the snapshot's cache)\n useEffect(() => {\n props.triggerResolve().catch(err => {\n console.log(`Error while resolving props for element ${elementKey}`, err)\n })\n }, [props, elementKey])\n\n // the order is important here, the styles are defined in the process of the props resolution,\n // calling `useDefinedStyles` before the props are resolved would effectively be a noop\n const resolvedProps = useSyncExternalStore(props.subscribe, props.readStable, props.readStable)\n\n stylesheetFactory.useDefinedStyles()\n\n return resolvedProps\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8E;AAC9E,sBAMO;AAEP,mCAAoC;AAGpC,uCAAuC;AAEvC,mCAAoC;AAW7B,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAM4B;AAC1B,QAAM,uBAAmB,kDAAoB;AAE7C,QAAM,YAAQ,qBAAkC,CAAC,CAAC,EAAE;AACpD,QAAM,kBAAc;AAAA,IAClB,CAAC,KAAwB,aAAqB;AAC5C,YAAM,OAAO,SAAS,QAAQ;AAC9B,YAAM,UAAU,mBAAmB,QAAQ;AAE3C,UACE,MAAM,QAAQ,KAAK,QACnB,SAAS,MAAM,QAAQ,EAAE,QACzB,YAAY,MAAM,QAAQ,EAAE,SAC5B;AACA,eAAO,MAAM,QAAQ,EAAE;AAAA,MACzB;AAEA,YAAM,gBAAgB,IAAI;AAAA,QACxB;AAAA,QACA;AAAA,QACA,kBAAkB,IAAI,QAAQ;AAAA,QAC9B;AAAA,MACF;AAEA,YAAM,QAAQ,IAAI,EAAE,MAAM,SAAS,cAAc;AACjD,aAAO;AAAA,IACT;AAAA,IACA,CAAC,UAAU,OAAO,kBAAkB,kBAAkB,iBAAiB;AAAA,EACzE;AAEA,QAAM,kBAAc;AAAA,IAClB,UACE,2BAAU,UAAU,CAAC,KAAK,aAAa;AACrC,YAAM,eAAgB,IAAI,QAAgB;AAC1C,iBAAO,yDAAuB,YAAY,KAAK,QAAQ,GAAG,cAAc,WAAS;AAC/E,gBAAQ;AAAA,UACN,iCAAiC,QAAQ,gBAAgB,UAAU,uBAAuB,YAAY;AAAA,UACtG,EAAE,SAAS,KAAK,MAAM;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,IACH,CAAC,UAAU,aAAa,UAAU;AAAA,EACpC;AAEA,QAAM,YAAQ,kDAAoB,WAAW;AAI7C,8BAAU,MAAM;AACd,UAAM,eAAe,EAAE,MAAM,SAAO;AAClC,cAAQ,IAAI,2CAA2C,UAAU,IAAI,GAAG;AAAA,IAC1E,CAAC;AAAA,EACH,GAAG,CAAC,OAAO,UAAU,CAAC;AAItB,QAAM,oBAAgB,mCAAqB,MAAM,WAAW,MAAM,YAAY,MAAM,UAAU;AAE9F,oBAAkB,iBAAiB;AAEnC,SAAO;AACT;","names":[]}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var use_server_element_refresh_exports = {};
20
+ __export(use_server_element_refresh_exports, {
21
+ useServerElementRefresh: () => useServerElementRefresh
22
+ });
23
+ module.exports = __toCommonJS(use_server_element_refresh_exports);
24
+ var import_react = require("react");
25
+ var import_use_framework_context = require("../components/hooks/use-framework-context");
26
+ var import_server_elements_cache = require("../server/components/server-elements-cache");
27
+ var import_use_document_context = require("./use-document-context");
28
+ var import_use_api_resources_client = require("./use-api-resources-client");
29
+ const useServerElementRefresh = ({
30
+ elementKey
31
+ }) => {
32
+ const requestIdRef = (0, import_react.useRef)(0);
33
+ const lastAppliedRequestId = (0, import_react.useRef)(0);
34
+ const { renderRSCElement } = (0, import_use_framework_context.useFrameworkContext)();
35
+ const { updateElement } = (0, import_server_elements_cache.useServerElementsCache)();
36
+ const documentKey = (0, import_use_document_context.useDocumentKey)();
37
+ const documentLocale = (0, import_use_document_context.useDocumentLocale)();
38
+ const apiResourcesClient = (0, import_use_api_resources_client.useApiResourcesClient)();
39
+ (0, import_react.useEffect)(() => {
40
+ return () => {
41
+ lastAppliedRequestId.current = ++requestIdRef.current;
42
+ };
43
+ }, []);
44
+ return (0, import_react.useCallback)(
45
+ async (elementData) => {
46
+ if (!documentKey)
47
+ return false;
48
+ if (elementData.key !== elementKey) {
49
+ console.error(
50
+ `Cannot refresh server element: mismatching element key '${elementData.key}' != '${elementKey}'`
51
+ );
52
+ return false;
53
+ }
54
+ if (!renderRSCElement) {
55
+ console.error(
56
+ `Cannot refresh server element '${elementKey}' of type '${elementData.type}': \`renderRSCElement\` callback is null`
57
+ );
58
+ return false;
59
+ }
60
+ try {
61
+ const requestId = ++requestIdRef.current;
62
+ const reactNode = await renderRSCElement({
63
+ elementData,
64
+ cacheData: apiResourcesClient.cacheData,
65
+ documentContext: {
66
+ key: documentKey,
67
+ locale: documentLocale ?? void 0
68
+ }
69
+ });
70
+ if (requestId > lastAppliedRequestId.current) {
71
+ updateElement(elementKey, reactNode);
72
+ lastAppliedRequestId.current = requestId;
73
+ return true;
74
+ }
75
+ } catch (error) {
76
+ console.error(
77
+ `Failed to refresh server element '${elementKey}' of type '${elementData.type}'`,
78
+ error
79
+ );
80
+ }
81
+ return false;
82
+ },
83
+ [renderRSCElement, documentKey, documentLocale, elementKey, apiResourcesClient, updateElement]
84
+ );
85
+ };
86
+ // Annotate the CommonJS export names for ESM import in node:
87
+ 0 && (module.exports = {
88
+ useServerElementRefresh
89
+ });
90
+ //# sourceMappingURL=use-server-element-refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-server-element-refresh.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react'\n\nimport { type ElementData } from '../../../state/read-only-state'\n\nimport { useFrameworkContext } from '../components/hooks/use-framework-context'\nimport { useServerElementsCache } from '../server/components/server-elements-cache'\n\nimport { useDocumentKey, useDocumentLocale } from './use-document-context'\nimport { useApiResourcesClient } from './use-api-resources-client'\n\n/**\n * Returns a element-scoped callback that renders the provided element data on\n * the server and stores the result in the server element cache under the\n * provided element key.\n *\n * The callback returns true only if the element render succeeds and is committed\n * to the cache. Returns false when rendering is unavailable, fails, or produces a\n * stale/out-of-order result.\n */\nexport const useServerElementRefresh = ({\n elementKey,\n}: {\n elementKey: string\n}): ((elementData: ElementData) => Promise<boolean>) => {\n const requestIdRef = useRef(0)\n const lastAppliedRequestId = useRef(0)\n\n const { renderRSCElement } = useFrameworkContext()\n const { updateElement } = useServerElementsCache()\n\n const documentKey = useDocumentKey()\n const documentLocale = useDocumentLocale()\n const apiResourcesClient = useApiResourcesClient()\n\n useEffect(() => {\n // Invalidate all in-flight requests on unmount so they cannot update the cache\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n lastAppliedRequestId.current = ++requestIdRef.current\n }\n }, [])\n\n return useCallback(\n async (elementData: ElementData): Promise<boolean> => {\n if (!documentKey) return false\n if (elementData.key !== elementKey) {\n console.error(\n `Cannot refresh server element: mismatching element key '${elementData.key}' != '${elementKey}'`,\n )\n return false\n }\n\n if (!renderRSCElement) {\n console.error(\n `Cannot refresh server element '${elementKey}' of type '${elementData.type}': \\`renderRSCElement\\` callback is null`,\n )\n return false\n }\n\n try {\n // Assign each server refresh a sequential ID so we can track response\n // arrival and ignore out-of-order results\n const requestId = ++requestIdRef.current\n const reactNode = await renderRSCElement({\n elementData,\n cacheData: apiResourcesClient.cacheData,\n documentContext: {\n key: documentKey,\n locale: documentLocale ?? undefined,\n },\n })\n\n if (requestId > lastAppliedRequestId.current) {\n updateElement(elementKey, reactNode)\n lastAppliedRequestId.current = requestId\n return true\n }\n } catch (error) {\n console.error(\n `Failed to refresh server element '${elementKey}' of type '${elementData.type}'`,\n error,\n )\n }\n\n return false\n },\n [renderRSCElement, documentKey, documentLocale, elementKey, apiResourcesClient, updateElement],\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+C;AAI/C,mCAAoC;AACpC,mCAAuC;AAEvC,kCAAkD;AAClD,sCAAsC;AAW/B,MAAM,0BAA0B,CAAC;AAAA,EACtC;AACF,MAEwD;AACtD,QAAM,mBAAe,qBAAO,CAAC;AAC7B,QAAM,2BAAuB,qBAAO,CAAC;AAErC,QAAM,EAAE,iBAAiB,QAAI,kDAAoB;AACjD,QAAM,EAAE,cAAc,QAAI,qDAAuB;AAEjD,QAAM,kBAAc,4CAAe;AACnC,QAAM,qBAAiB,+CAAkB;AACzC,QAAM,yBAAqB,uDAAsB;AAEjD,8BAAU,MAAM;AAEd,WAAO,MAAM;AAEX,2BAAqB,UAAU,EAAE,aAAa;AAAA,IAChD;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,aAAO;AAAA,IACL,OAAO,gBAA+C;AACpD,UAAI,CAAC;AAAa,eAAO;AACzB,UAAI,YAAY,QAAQ,YAAY;AAClC,gBAAQ;AAAA,UACN,2DAA2D,YAAY,GAAG,SAAS,UAAU;AAAA,QAC/F;AACA,eAAO;AAAA,MACT;AAEA,UAAI,CAAC,kBAAkB;AACrB,gBAAQ;AAAA,UACN,kCAAkC,UAAU,cAAc,YAAY,IAAI;AAAA,QAC5E;AACA,eAAO;AAAA,MACT;AAEA,UAAI;AAGF,cAAM,YAAY,EAAE,aAAa;AACjC,cAAM,YAAY,MAAM,iBAAiB;AAAA,UACvC;AAAA,UACA,WAAW,mBAAmB;AAAA,UAC9B,iBAAiB;AAAA,YACf,KAAK;AAAA,YACL,QAAQ,kBAAkB;AAAA,UAC5B;AAAA,QACF,CAAC;AAED,YAAI,YAAY,qBAAqB,SAAS;AAC5C,wBAAc,YAAY,SAAS;AACnC,+BAAqB,UAAU;AAC/B,iBAAO;AAAA,QACT;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ;AAAA,UACN,qCAAqC,UAAU,cAAc,YAAY,IAAI;AAAA,UAC7E;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,kBAAkB,aAAa,gBAAgB,YAAY,oBAAoB,aAAa;AAAA,EAC/F;AACF;","names":[]}
@@ -17,19 +17,19 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var use_graphql_api_client_exports = {};
21
- __export(use_graphql_api_client_exports, {
22
- useMakeswiftGraphQLApiClient: () => useMakeswiftGraphQLApiClient
20
+ var use_table_record_client_exports = {};
21
+ __export(use_table_record_client_exports, {
22
+ useTableRecordClient: () => useTableRecordClient
23
23
  });
24
- module.exports = __toCommonJS(use_graphql_api_client_exports);
25
- var import_graphql_api_client = require("../../../api/graphql-api-client");
24
+ module.exports = __toCommonJS(use_table_record_client_exports);
25
+ var import_table_record_client = require("../../../api/table-record-client");
26
26
  var import_use_react_runtime = require("./use-react-runtime");
27
- function useMakeswiftGraphQLApiClient() {
27
+ function useTableRecordClient() {
28
28
  const runtime = (0, import_use_react_runtime.useReactRuntime)();
29
- return new import_graphql_api_client.MakeswiftGraphQLApiClient({ endpoint: runtime.graphqlApiEndpoint });
29
+ return new import_table_record_client.MakeswiftTableRecordClient({ fetch: runtime.fetch });
30
30
  }
31
31
  // Annotate the CommonJS export names for ESM import in node:
32
32
  0 && (module.exports = {
33
- useMakeswiftGraphQLApiClient
33
+ useTableRecordClient
34
34
  });
35
- //# sourceMappingURL=use-graphql-api-client.js.map
35
+ //# sourceMappingURL=use-table-record-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-table-record-client.tsx"],"sourcesContent":["'use client'\n\nimport { MakeswiftTableRecordClient } from '../../../api/table-record-client'\n\nimport { useReactRuntime } from './use-react-runtime'\n\nexport function useTableRecordClient(): MakeswiftTableRecordClient {\n const runtime = useReactRuntime()\n return new MakeswiftTableRecordClient({ fetch: runtime.fetch })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,iCAA2C;AAE3C,+BAAgC;AAEzB,SAAS,uBAAmD;AACjE,QAAM,cAAU,0CAAgB;AAChC,SAAO,IAAI,sDAA2B,EAAE,OAAO,QAAQ,MAAM,CAAC;AAChE;","names":[]}
@@ -25,8 +25,10 @@ var import_activity_with_fallback = require("./components/activity-with-fallback
25
25
  var import_read_only_actions = require("../../state/actions/internal/read-only-actions");
26
26
  var import_components_meta = require("../../state/modules/components-meta");
27
27
  var import_runtime_core = require("./runtime-core");
28
- function validateComponentType(type, component) {
29
- const componentName = component?.name ?? "Component";
28
+ function validateComponentType({
29
+ type,
30
+ componentName
31
+ }) {
30
32
  if (typeof type !== "string" || type === "") {
31
33
  throw new Error(
32
34
  `${componentName}: A non-empty string \`type\` is required for component registration, got ${type}`
@@ -42,13 +44,32 @@ class ReactRuntimeCore extends import_runtime_core.RuntimeCore {
42
44
  description,
43
45
  builtinSuspense,
44
46
  unstable_migration,
47
+ server = false,
45
48
  props
46
49
  }) {
47
- validateComponentType(type, component);
50
+ const isServerComponent = server !== false;
51
+ const injectedProps = typeof server === "object" ? server.unstable_injectedProps : {};
52
+ validateComponentType(
53
+ // make sure we don't access `component?.name` and trigger loading of the server
54
+ // component unless we're running in the RSC environment
55
+ isServerComponent && !this.isRSCEnv() ? { type, componentName: label || "Unknown server component" } : {
56
+ type,
57
+ componentName: component?.name || label || "Unknown component"
58
+ }
59
+ );
48
60
  const unregisterComponent = this.protoStore.dispatch(
49
61
  (0, import_read_only_actions.registerComponentEffect)(
50
62
  type,
51
- { label, icon, hidden, description, builtinSuspense, unstable_migration },
63
+ {
64
+ label,
65
+ icon,
66
+ hidden,
67
+ description,
68
+ builtinSuspense,
69
+ unstable_migration,
70
+ server: isServerComponent,
71
+ injectedProps
72
+ },
52
73
  props ?? {}
53
74
  )
54
75
  );
@@ -57,6 +78,11 @@ class ReactRuntimeCore extends import_runtime_core.RuntimeCore {
57
78
  "builtinSuspense is ignored in React >= 19.2; components are always wrapped in <Activity>."
58
79
  );
59
80
  }
81
+ if (isServerComponent && !this.isRSCEnv()) {
82
+ return () => {
83
+ unregisterComponent();
84
+ };
85
+ }
60
86
  const unregisterReactComponent = this.protoStore.dispatch(
61
87
  (0, import_read_only_actions.registerReactComponentEffect)(type, component)
62
88
  );
@@ -65,6 +91,9 @@ class ReactRuntimeCore extends import_runtime_core.RuntimeCore {
65
91
  unregisterReactComponent();
66
92
  };
67
93
  }
94
+ isRSCEnv() {
95
+ return false;
96
+ }
68
97
  }
69
98
  // Annotate the CommonJS export names for ESM import in node:
70
99
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtimes/react/react-runtime-core.ts"],"sourcesContent":["import { ControlDefinition as UnifiedControlDefinition } from '@makeswift/controls'\n\nimport { type LegacyDescriptor, type DescriptorValueType } from '../../prop-controllers/descriptors'\n\nimport { supportsActivity } from './components/activity-with-fallback'\n\nimport {\n registerComponentEffect,\n registerReactComponentEffect,\n} from '../../state/actions/internal/read-only-actions'\n\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport type { ComponentType } from '../../state/read-only-state'\n\nimport { RuntimeCore } from './runtime-core'\n\nfunction validateComponentType(type: string, component?: ComponentType): void {\n const componentName = component?.name ?? 'Component'\n if (typeof type !== 'string' || type === '') {\n throw new Error(\n `${componentName}: A non-empty string \\`type\\` is required for component registration, got ${type}`,\n )\n }\n}\n\nexport class ReactRuntimeCore extends RuntimeCore {\n registerComponent<\n ControlDef extends UnifiedControlDefinition,\n P extends Record<string, LegacyDescriptor | ControlDef>,\n C extends ComponentType<{ [K in keyof P]: DescriptorValueType<P[K]> }>,\n >(\n component: C,\n {\n type,\n label,\n icon = ComponentIcon.Cube,\n hidden = false,\n description,\n builtinSuspense,\n unstable_migration,\n props,\n }: {\n type: string\n label: string\n icon?: ComponentIcon\n hidden?: boolean\n description?: string\n /**\n * In React <= 19.1, controls the default `<Suspense>` boundary.\n * Ignored in React >= 19.2; components are always wrapped in `<Activity>`.\n * Defaults to `true`.\n */\n builtinSuspense?: boolean\n /**\n * Marks this registration as superseded by `replacementType`. When\n * `replacementType` differs from `type`, the builder offers a way to\n * update existing instances.\n */\n unstable_migration?: { replacementType: string }\n props?: P\n },\n ): () => void {\n validateComponentType(type, component as unknown as ComponentType)\n\n const unregisterComponent = this.protoStore.dispatch(\n registerComponentEffect(\n type,\n { label, icon, hidden, description, builtinSuspense, unstable_migration },\n props ?? {},\n ),\n )\n\n if (supportsActivity() && builtinSuspense !== undefined) {\n console.warn(\n 'builtinSuspense is ignored in React >= 19.2; components are always wrapped in <Activity>.',\n )\n }\n\n const unregisterReactComponent = this.protoStore.dispatch(\n registerReactComponentEffect(type, component as unknown as ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,oCAAiC;AAEjC,+BAGO;AAEP,6BAA8B;AAG9B,0BAA4B;AAE5B,SAAS,sBAAsB,MAAc,WAAiC;AAC5E,QAAM,gBAAgB,WAAW,QAAQ;AACzC,MAAI,OAAO,SAAS,YAAY,SAAS,IAAI;AAC3C,UAAM,IAAI;AAAA,MACR,GAAG,aAAa,6EAA6E,IAAI;AAAA,IACnG;AAAA,EACF;AACF;AAEO,MAAM,yBAAyB,gCAAY;AAAA,EAChD,kBAKE,WACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,qCAAc;AAAA,IACrB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAoBY;AACZ,0BAAsB,MAAM,SAAqC;AAEjE,UAAM,sBAAsB,KAAK,WAAW;AAAA,UAC1C;AAAA,QACE;AAAA,QACA,EAAE,OAAO,MAAM,QAAQ,aAAa,iBAAiB,mBAAmB;AAAA,QACxE,SAAS,CAAC;AAAA,MACZ;AAAA,IACF;AAEA,YAAI,gDAAiB,KAAK,oBAAoB,QAAW;AACvD,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,UAAM,2BAA2B,KAAK,WAAW;AAAA,UAC/C,uDAA6B,MAAM,SAAqC;AAAA,IAC1E;AAEA,WAAO,MAAM;AACX,0BAAoB;AACpB,+BAAyB;AAAA,IAC3B;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtimes/react/react-runtime-core.ts"],"sourcesContent":["import { type Component, type PropsWithoutRef, type ReactNode, type RefAttributes } from 'react'\n\nimport {\n ControlDefinition as UnifiedControlDefinition,\n type PropsWithValidContextUsage,\n} from '@makeswift/controls'\n\nimport { type LegacyDescriptor, type DescriptorValueType } from '../../prop-controllers/descriptors'\n\nimport { supportsActivity } from './components/activity-with-fallback'\n\nimport {\n registerComponentEffect,\n registerReactComponentEffect,\n} from '../../state/actions/internal/read-only-actions'\n\nimport { ComponentIcon } from '../../state/modules/components-meta'\nimport type { ComponentType } from '../../state/read-only-state'\n\nimport { type InjectableProps } from './server/injectable-props'\n\nimport { RuntimeCore } from './runtime-core'\n\nfunction validateComponentType({\n type,\n componentName,\n}: {\n type: string\n componentName: string\n}): void {\n if (typeof type !== 'string' || type === '') {\n throw new Error(\n `${componentName}: A non-empty string \\`type\\` is required for component registration, got ${type}`,\n )\n }\n}\n\ntype InjectedPropsConfig = Record<string, keyof InjectableProps>\n\ntype ServerComponentConfig<I extends InjectedPropsConfig> =\n | boolean\n | {\n unstable_injectedProps: I\n }\n\ntype InjectedProps<I extends InjectedPropsConfig> = {\n [K in keyof I]: InjectableProps[I[K]]\n}\n\ntype ResolvedProps<P extends Record<string, LegacyDescriptor | UnifiedControlDefinition>> = {\n [K in keyof P]: DescriptorValueType<P[K]>\n}\n\ntype RegisteredComponentType<\n P extends Record<string, LegacyDescriptor | UnifiedControlDefinition>,\n I extends InjectedPropsConfig,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T = any,\n> =\n | {\n new (\n props: PropsWithoutRef<ResolvedProps<P>> & InjectedProps<I> & RefAttributes<T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context?: any,\n ): Component<ResolvedProps<P> & InjectedProps<I>>\n }\n | ((\n props: PropsWithoutRef<ResolvedProps<P>> & InjectedProps<I> & RefAttributes<T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context?: any,\n ) => ReactNode)\n\nexport class ReactRuntimeCore extends RuntimeCore {\n registerComponent<\n ControlDef extends UnifiedControlDefinition,\n P extends Record<string, LegacyDescriptor | ControlDef>,\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n const I extends InjectedPropsConfig = {},\n C extends RegisteredComponentType<P, I> = RegisteredComponentType<P, I>,\n >(\n component: C,\n {\n type,\n label,\n icon = ComponentIcon.Cube,\n hidden = false,\n description,\n builtinSuspense,\n unstable_migration,\n server = false,\n props,\n }: {\n type: string\n label: string\n icon?: ComponentIcon\n hidden?: boolean\n description?: string\n /**\n * In React <= 19.1, controls the default `<Suspense>` boundary.\n * Ignored in React >= 19.2; components are always wrapped in `<Activity>`.\n * Defaults to `true`.\n */\n builtinSuspense?: boolean\n /**\n * Marks this registration as superseded by `replacementType`. When\n * `replacementType` differs from `type`, the builder offers a way to\n * update existing instances.\n */\n unstable_migration?: { replacementType: string }\n server?: ServerComponentConfig<I>\n props?: P & PropsWithValidContextUsage<P>\n },\n ): () => void {\n const isServerComponent = server !== false\n const injectedProps = typeof server === 'object' ? server.unstable_injectedProps : {}\n\n validateComponentType(\n // make sure we don't access `component?.name` and trigger loading of the server\n // component unless we're running in the RSC environment\n isServerComponent && !this.isRSCEnv()\n ? { type, componentName: label || 'Unknown server component' }\n : {\n type,\n componentName: component?.name || label || 'Unknown component',\n },\n )\n\n const unregisterComponent = this.protoStore.dispatch(\n registerComponentEffect(\n type,\n {\n label,\n icon,\n hidden,\n description,\n builtinSuspense,\n unstable_migration,\n server: isServerComponent,\n injectedProps,\n },\n props ?? {},\n ),\n )\n\n if (supportsActivity() && builtinSuspense !== undefined) {\n console.warn(\n 'builtinSuspense is ignored in React >= 19.2; components are always wrapped in <Activity>.',\n )\n }\n\n if (isServerComponent && !this.isRSCEnv()) {\n // we can't load server components code outside of the RSC environment, but we also\n // don't need to: if everything is set up correctly, React has already rendered and\n // streamed the corresponding React elements to the client for us -- see\n // `ServerElementsCache` and `ElementDataServer`\n return () => {\n unregisterComponent()\n }\n }\n\n const unregisterReactComponent = this.protoStore.dispatch(\n registerReactComponentEffect(type, component as unknown as ComponentType),\n )\n\n return () => {\n unregisterComponent()\n unregisterReactComponent()\n }\n }\n\n protected isRSCEnv() {\n return false\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,oCAAiC;AAEjC,+BAGO;AAEP,6BAA8B;AAK9B,0BAA4B;AAE5B,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AACF,GAGS;AACP,MAAI,OAAO,SAAS,YAAY,SAAS,IAAI;AAC3C,UAAM,IAAI;AAAA,MACR,GAAG,aAAa,6EAA6E,IAAI;AAAA,IACnG;AAAA,EACF;AACF;AAqCO,MAAM,yBAAyB,gCAAY;AAAA,EAChD,kBAOE,WACA;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,qCAAc;AAAA,IACrB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,EACF,GAqBY;AACZ,UAAM,oBAAoB,WAAW;AACrC,UAAM,gBAAgB,OAAO,WAAW,WAAW,OAAO,yBAAyB,CAAC;AAEpF;AAAA;AAAA;AAAA,MAGE,qBAAqB,CAAC,KAAK,SAAS,IAChC,EAAE,MAAM,eAAe,SAAS,2BAA2B,IAC3D;AAAA,QACE;AAAA,QACA,eAAe,WAAW,QAAQ,SAAS;AAAA,MAC7C;AAAA,IACN;AAEA,UAAM,sBAAsB,KAAK,WAAW;AAAA,UAC1C;AAAA,QACE;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR;AAAA,QACF;AAAA,QACA,SAAS,CAAC;AAAA,MACZ;AAAA,IACF;AAEA,YAAI,gDAAiB,KAAK,oBAAoB,QAAW;AACvD,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,QAAI,qBAAqB,CAAC,KAAK,SAAS,GAAG;AAKzC,aAAO,MAAM;AACX,4BAAoB;AAAA,MACtB;AAAA,IACF;AAEA,UAAM,2BAA2B,KAAK,WAAW;AAAA,UAC/C,uDAA6B,MAAM,SAAqC;AAAA,IAC1E;AAEA,WAAO,MAAM;AACX,0BAAoB;AACpB,+BAAyB;AAAA,IAC3B;AAAA,EACF;AAAA,EAEU,WAAW;AACnB,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtimes/react/resource-resolver.ts"],"sourcesContent":["import { type ResourceResolver } from '@makeswift/controls'\n\nimport { getElementId } from '../../state/read-only-state'\nimport { ApiResourcesClient } from '../../api/api-resources-client'\nimport { Store } from '../../state/store'\n\nexport const createResourceResolver = ({\n store,\n apiClient,\n documentKey,\n locale,\n}: {\n store: Store\n apiClient: ApiResourcesClient\n documentKey: string | null\n locale: string | null\n}): ResourceResolver => ({\n resolveSwatch: swatchId => apiClient.resolveSwatch(swatchId),\n resolveFile: fileId => apiClient.resolveFile(fileId),\n resolveTypography: typographyId => apiClient.resolveTypography(typographyId),\n resolvePagePathnameSlice: pageId => apiClient.resolvePagePathnameSlice({ pageId, locale }),\n resolveElementId: elementKey => {\n const read = () =>\n documentKey == null ? null : getElementId(store.getState(), documentKey, elementKey)\n\n let lastValue: string | null = null\n return {\n name: `element-id:${documentKey}:${elementKey}`,\n readStable: () => (lastValue = read()),\n subscribe: (onUpdate: () => void) =>\n store.subscribe(() => {\n if (read() !== lastValue) onUpdate()\n }),\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,6BAA6B;AAItB,MAAM,yBAAyB,CAAC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,OAKyB;AAAA,EACvB,eAAe,cAAY,UAAU,cAAc,QAAQ;AAAA,EAC3D,aAAa,YAAU,UAAU,YAAY,MAAM;AAAA,EACnD,mBAAmB,kBAAgB,UAAU,kBAAkB,YAAY;AAAA,EAC3E,0BAA0B,YAAU,UAAU,yBAAyB,EAAE,QAAQ,OAAO,CAAC;AAAA,EACzF,kBAAkB,gBAAc;AAC9B,UAAM,OAAO,MACX,eAAe,OAAO,WAAO,qCAAa,MAAM,SAAS,GAAG,aAAa,UAAU;AAErF,QAAI,YAA2B;AAC/B,WAAO;AAAA,MACL,MAAM,cAAc,WAAW,IAAI,UAAU;AAAA,MAC7C,YAAY,MAAO,YAAY,KAAK;AAAA,MACpC,WAAW,CAAC,aACV,MAAM,UAAU,MAAM;AACpB,YAAI,KAAK,MAAM;AAAW,mBAAS;AAAA,MACrC,CAAC;AAAA,IACL;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtimes/react/resource-resolver.ts"],"sourcesContent":["import { type ResourceResolver } from '@makeswift/controls'\n\nimport { getElementId } from '../../state/read-only-state'\nimport { ApiResourcesClient } from '../../api/api-resources-client'\nimport { Store } from '../../state/store'\n\nexport { type ResourceResolver } from '@makeswift/controls'\n\nexport const createResourceResolver = ({\n store,\n apiClient,\n documentKey,\n locale,\n}: {\n store: Store\n apiClient: ApiResourcesClient\n documentKey: string | null\n locale: string | null\n}): ResourceResolver => ({\n resolveSwatch: swatchId => apiClient.resolveSwatch(swatchId),\n resolveFile: fileId => apiClient.resolveFile(fileId),\n resolveTypography: typographyId => apiClient.resolveTypography(typographyId),\n resolvePagePathnameSlice: pageId => apiClient.resolvePagePathnameSlice({ pageId, locale }),\n resolveElementId: elementKey => {\n const read = () =>\n documentKey == null ? null : getElementId(store.getState(), documentKey, elementKey)\n\n let lastValue: string | null = null\n return {\n name: `element-id:${documentKey}:${elementKey}`,\n readStable: () => (lastValue = read()),\n subscribe: (onUpdate: () => void) =>\n store.subscribe(() => {\n if (read() !== lastValue) onUpdate()\n }),\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,6BAA6B;AAMtB,MAAM,yBAAyB,CAAC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,OAKyB;AAAA,EACvB,eAAe,cAAY,UAAU,cAAc,QAAQ;AAAA,EAC3D,aAAa,YAAU,UAAU,YAAY,MAAM;AAAA,EACnD,mBAAmB,kBAAgB,UAAU,kBAAkB,YAAY;AAAA,EAC3E,0BAA0B,YAAU,UAAU,yBAAyB,EAAE,QAAQ,OAAO,CAAC;AAAA,EACzF,kBAAkB,gBAAc;AAC9B,UAAM,OAAO,MACX,eAAe,OAAO,WAAO,qCAAa,MAAM,SAAS,GAAG,aAAa,UAAU;AAErF,QAAI,YAA2B;AAC/B,WAAO;AAAA,MACL,MAAM,cAAc,WAAW,IAAI,UAAU;AAAA,MAC7C,YAAY,MAAO,YAAY,KAAK;AAAA,MACpC,WAAW,CAAC,aACV,MAAM,UAAU,MAAM;AACpB,YAAI,KAAK,MAAM;AAAW,mBAAS;AAAA,MACrC,CAAC;AAAA,IACL;AAAA,EACF;AACF;","names":[]}
@@ -116,7 +116,6 @@ class RuntimeCore {
116
116
  fetch: this.fetch,
117
117
  apiKey: this.apiKey,
118
118
  apiOrigin: this.apiOrigin,
119
- graphqlApiEndpoint: this.graphqlApiEndpoint,
120
119
  preloadedState
121
120
  });
122
121
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtimes/react/runtime-core.ts"],"sourcesContent":["import { type SerializableReplacementContext } from '@makeswift/controls'\n\nimport { ApiResourcesClient } from '../../api/api-resources-client'\nimport { HostApiResourcesClient } from '../../api/host-api-resources-client'\nimport { MakeswiftApiResourcesClient } from '../../api/makeswift-api-resources-client'\nimport { type HttpFetch } from '../../api/types'\nimport { type SiteVersion } from '../../api/site-version'\n\nimport {\n type Breakpoints,\n type BreakpointsInput,\n parseBreakpointsInput,\n} from '../../state/modules/breakpoints'\n\nimport { copyElementTree } from '../../state/ops/copy-element-tree'\n\nimport { getBreakpoints, type Element, type ElementData } from '../../state/read-only-state'\nimport {\n configureProtoStore,\n configureReadWriteStore,\n type ProtoStore,\n type Store,\n} from '../../state/store'\n\nimport { RefCountedMap } from '../../utils/ref-counted-map'\nimport { isServer } from '../../utils/is-server'\n\nexport type StoreKey = {\n siteVersion: SiteVersion | null\n locale: string | undefined\n}\n\nconst VERSION_TAG_LIVE = 'ref:live'\n\nexport class RuntimeCore {\n // The unowned entry TTL affects performance, not correctness. The TTL controls how long an unretained store stays\n // in the map. If an entry expires and is removed from the map before React commits, the store remains retained\n // via `<StoreContext.Provider>`. The only impact is that future lookups will create a new store instance instead of\n // reusing the existing one, reducing cache efficiency.\n private readonly activeStores = new RefCountedMap<string | null, Store>({\n unownedEntryTtlMs: 1000,\n // Checking on retain/release is sufficient on the client, and we don't need to check on get on the server\n // as the only scenario in which we add the store to the map is when the runtime is already bound to the\n // requested site version, which should be the only site version for which the store is requested\n ttlCheck: RefCountedMap.TTLCheck.ON_RETAIN | RefCountedMap.TTLCheck.ON_RELEASE,\n })\n\n private readonly apiKey: string | undefined\n\n readonly protoStore: ProtoStore\n readonly appOrigin: string\n readonly apiOrigin: string\n readonly requestKey: StoreKey | undefined\n readonly fetch: HttpFetch\n\n constructor({\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n apiKey,\n breakpoints,\n requestKey,\n fetch,\n }: {\n appOrigin?: string\n apiOrigin?: string\n apiKey?: string\n breakpoints?: BreakpointsInput\n requestKey?: StoreKey\n fetch: HttpFetch\n }) {\n this.appOrigin = validateOrigin(appOrigin, 'appOrigin')\n this.apiOrigin = validateOrigin(apiOrigin, 'apiOrigin')\n this.apiKey = apiKey\n this.requestKey = requestKey\n this.fetch = fetch\n\n this.protoStore = configureProtoStore({\n name: 'Runtime proto-store',\n breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : undefined,\n })\n }\n\n getOrCreateStore({ siteVersion, locale }: StoreKey): Store {\n const key = storeCacheKey({ siteVersion, locale })\n\n const createStore = () => {\n // API resources client includes an in-memory cache of the site's resources and thus also has to be versioned\n const apiResourcesClient = this.createApiResourcesClient({ siteVersion, locale })\n\n // TODO: we need to decouple editability from the site version; specifically, previewing\n // a draft version of the site should not lead to switching to the read-write state\n const isReadOnly = siteVersion == null\n\n return configureReadWriteStore({\n name: `Runtime read-write store (site version: ${key})`,\n appOrigin: this.appOrigin,\n apiResourcesClient,\n preloadedState: { ...this.protoStore.getState(), siteVersion, isReadOnly, locale },\n })\n }\n\n // On the server, stores are ephemeral by default so SSR does not retain them in a long-lived runtime.\n // The exception is a runtime that is already bound to the requested site version & locale, where we\n // can safely reuse the store across multiple root regions and benefit from the host API client's\n // in-memory cache.\n //\n // On the client, stores are reference-counted by site version so multiple root regions can share a store\n // instance, which preserves the pre-v0.17 per-site-version store behavior without requiring a separate\n // runtime per root.\n const usePersistentStore = this.shouldUsePersistentStore(key)\n return usePersistentStore ? this.activeStores.getOrCreate(key, createStore) : createStore()\n }\n\n retainStore({ siteVersion, locale }: StoreKey, store: Store): void {\n const key = storeCacheKey({ siteVersion, locale })\n\n if (!this.shouldUsePersistentStore(key)) {\n console.error('RuntimeCore: attempt to retain an ephemeral store', { key })\n return\n }\n\n if (this.activeStores.retain(key, store)) {\n store.startBreakpointWatch()\n }\n }\n\n releaseStore({ siteVersion, locale }: StoreKey, store: Store): void {\n const key = storeCacheKey({ siteVersion, locale })\n\n if (!this.shouldUsePersistentStore(key)) {\n console.error('RuntimeCore: attempt to release an ephemeral store', { key })\n return\n }\n\n if (this.activeStores.release(key, store)) {\n store.stopBreakpointWatch()\n }\n }\n\n copyElementTree(\n elementTree: ElementData,\n replacementContext: SerializableReplacementContext,\n ): Element {\n return copyElementTree(this.protoStore.getState(), elementTree, replacementContext)\n }\n\n getBreakpoints(): Breakpoints {\n return getBreakpoints(this.protoStore.getState())\n }\n\n get graphqlApiEndpoint(): string {\n return new URL('graphql', this.apiOrigin).href\n }\n\n private createApiResourcesClient(preloadedState: {\n siteVersion: SiteVersion | null\n locale: string | undefined\n }): ApiResourcesClient {\n if (isServer() && this.apiKey) {\n return new MakeswiftApiResourcesClient({\n fetch: this.fetch,\n apiKey: this.apiKey,\n apiOrigin: this.apiOrigin,\n graphqlApiEndpoint: this.graphqlApiEndpoint,\n preloadedState,\n })\n }\n\n return new HostApiResourcesClient({\n fetch: this.fetch,\n preloadedState,\n })\n }\n\n private shouldUsePersistentStore(key: string): boolean {\n // don't persist stores on the server unless the runtime instance is bound to a request\n // and the requested store matches the request's site version and locale\n return !isServer() || (this.requestKey !== undefined && storeCacheKey(this.requestKey) === key)\n }\n}\n\nconst storeCacheKey = ({ siteVersion, locale }: StoreKey): string =>\n `${siteVersionTag(siteVersion)}/${locale ?? 'default'}`\n\nconst siteVersionTag = (siteVersion: SiteVersion | null): string =>\n siteVersion?.version ?? VERSION_TAG_LIVE\n\nfunction validateOrigin(url: string, name: string): string {\n try {\n return new URL(url).origin\n } catch {\n throw new Error(`The Makeswift runtime received an invalid \\`${name}\\` parameter: \"${url}\".`)\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtimes/react/runtime-core.ts"],"sourcesContent":["import { type SerializableReplacementContext } from '@makeswift/controls'\n\nimport { ApiResourcesClient } from '../../api/api-resources-client'\nimport { HostApiResourcesClient } from '../../api/host-api-resources-client'\nimport { MakeswiftApiResourcesClient } from '../../api/makeswift-api-resources-client'\nimport { type HttpFetch } from '../../api/types'\nimport { type SiteVersion } from '../../api/site-version'\n\nimport {\n type Breakpoints,\n type BreakpointsInput,\n parseBreakpointsInput,\n} from '../../state/modules/breakpoints'\n\nimport { copyElementTree } from '../../state/ops/copy-element-tree'\n\nimport { getBreakpoints, type Element, type ElementData } from '../../state/read-only-state'\nimport {\n configureProtoStore,\n configureReadWriteStore,\n type ProtoStore,\n type Store,\n} from '../../state/store'\n\nimport { RefCountedMap } from '../../utils/ref-counted-map'\nimport { isServer } from '../../utils/is-server'\n\nexport type StoreKey = {\n siteVersion: SiteVersion | null\n locale: string | undefined\n}\n\nconst VERSION_TAG_LIVE = 'ref:live'\n\nexport class RuntimeCore {\n // The unowned entry TTL affects performance, not correctness. The TTL controls how long an unretained store stays\n // in the map. If an entry expires and is removed from the map before React commits, the store remains retained\n // via `<StoreContext.Provider>`. The only impact is that future lookups will create a new store instance instead of\n // reusing the existing one, reducing cache efficiency.\n private readonly activeStores = new RefCountedMap<string | null, Store>({\n unownedEntryTtlMs: 1000,\n // Checking on retain/release is sufficient on the client, and we don't need to check on get on the server\n // as the only scenario in which we add the store to the map is when the runtime is already bound to the\n // requested site version, which should be the only site version for which the store is requested\n ttlCheck: RefCountedMap.TTLCheck.ON_RETAIN | RefCountedMap.TTLCheck.ON_RELEASE,\n })\n\n private readonly apiKey: string | undefined\n\n readonly protoStore: ProtoStore\n readonly appOrigin: string\n readonly apiOrigin: string\n readonly requestKey: StoreKey | undefined\n readonly fetch: HttpFetch\n\n constructor({\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n apiKey,\n breakpoints,\n requestKey,\n fetch,\n }: {\n appOrigin?: string\n apiOrigin?: string\n apiKey?: string\n breakpoints?: BreakpointsInput\n requestKey?: StoreKey\n fetch: HttpFetch\n }) {\n this.appOrigin = validateOrigin(appOrigin, 'appOrigin')\n this.apiOrigin = validateOrigin(apiOrigin, 'apiOrigin')\n this.apiKey = apiKey\n this.requestKey = requestKey\n this.fetch = fetch\n\n this.protoStore = configureProtoStore({\n name: 'Runtime proto-store',\n breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : undefined,\n })\n }\n\n getOrCreateStore({ siteVersion, locale }: StoreKey): Store {\n const key = storeCacheKey({ siteVersion, locale })\n\n const createStore = () => {\n // API resources client includes an in-memory cache of the site's resources and thus also has to be versioned\n const apiResourcesClient = this.createApiResourcesClient({ siteVersion, locale })\n\n // TODO: we need to decouple editability from the site version; specifically, previewing\n // a draft version of the site should not lead to switching to the read-write state\n const isReadOnly = siteVersion == null\n\n return configureReadWriteStore({\n name: `Runtime read-write store (site version: ${key})`,\n appOrigin: this.appOrigin,\n apiResourcesClient,\n preloadedState: { ...this.protoStore.getState(), siteVersion, isReadOnly, locale },\n })\n }\n\n // On the server, stores are ephemeral by default so SSR does not retain them in a long-lived runtime.\n // The exception is a runtime that is already bound to the requested site version & locale, where we\n // can safely reuse the store across multiple root regions and benefit from the host API client's\n // in-memory cache.\n //\n // On the client, stores are reference-counted by site version so multiple root regions can share a store\n // instance, which preserves the pre-v0.17 per-site-version store behavior without requiring a separate\n // runtime per root.\n const usePersistentStore = this.shouldUsePersistentStore(key)\n return usePersistentStore ? this.activeStores.getOrCreate(key, createStore) : createStore()\n }\n\n retainStore({ siteVersion, locale }: StoreKey, store: Store): void {\n const key = storeCacheKey({ siteVersion, locale })\n\n if (!this.shouldUsePersistentStore(key)) {\n console.error('RuntimeCore: attempt to retain an ephemeral store', { key })\n return\n }\n\n if (this.activeStores.retain(key, store)) {\n store.startBreakpointWatch()\n }\n }\n\n releaseStore({ siteVersion, locale }: StoreKey, store: Store): void {\n const key = storeCacheKey({ siteVersion, locale })\n\n if (!this.shouldUsePersistentStore(key)) {\n console.error('RuntimeCore: attempt to release an ephemeral store', { key })\n return\n }\n\n if (this.activeStores.release(key, store)) {\n store.stopBreakpointWatch()\n }\n }\n\n copyElementTree(\n elementTree: ElementData,\n replacementContext: SerializableReplacementContext,\n ): Element {\n return copyElementTree(this.protoStore.getState(), elementTree, replacementContext)\n }\n\n getBreakpoints(): Breakpoints {\n return getBreakpoints(this.protoStore.getState())\n }\n\n get graphqlApiEndpoint(): string {\n return new URL('graphql', this.apiOrigin).href\n }\n\n private createApiResourcesClient(preloadedState: {\n siteVersion: SiteVersion | null\n locale: string | undefined\n }): ApiResourcesClient {\n if (isServer() && this.apiKey) {\n return new MakeswiftApiResourcesClient({\n fetch: this.fetch,\n apiKey: this.apiKey,\n apiOrigin: this.apiOrigin,\n preloadedState,\n })\n }\n\n return new HostApiResourcesClient({\n fetch: this.fetch,\n preloadedState,\n })\n }\n\n private shouldUsePersistentStore(key: string): boolean {\n // don't persist stores on the server unless the runtime instance is bound to a request\n // and the requested store matches the request's site version and locale\n return !isServer() || (this.requestKey !== undefined && storeCacheKey(this.requestKey) === key)\n }\n}\n\nconst storeCacheKey = ({ siteVersion, locale }: StoreKey): string =>\n `${siteVersionTag(siteVersion)}/${locale ?? 'default'}`\n\nconst siteVersionTag = (siteVersion: SiteVersion | null): string =>\n siteVersion?.version ?? VERSION_TAG_LIVE\n\nfunction validateOrigin(url: string, name: string): string {\n try {\n return new URL(url).origin\n } catch {\n throw new Error(`The Makeswift runtime received an invalid \\`${name}\\` parameter: \"${url}\".`)\n }\n}\n"],"mappings":"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","names":[]}