@makeswift/runtime 0.26.4-canary.1 → 0.26.5

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 (700) hide show
  1. package/dist/cjs/api/client.js +2 -13
  2. package/dist/cjs/api/client.js.map +1 -1
  3. package/dist/cjs/api/react.js +256 -0
  4. package/dist/cjs/api/react.js.map +1 -0
  5. package/dist/cjs/api-handler/handlers/element-tree.js.map +1 -1
  6. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  7. package/dist/cjs/api-handler/handlers/merge-translated-data.js.map +1 -1
  8. package/dist/cjs/api-handler/handlers/translatable-data.js.map +1 -1
  9. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js +62 -0
  10. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js.map +1 -0
  11. package/dist/cjs/builder/host-to-builder-actions.js +3 -3
  12. package/dist/cjs/builder/host-to-builder-actions.js.map +1 -1
  13. package/dist/cjs/builder/index.js +2 -2
  14. package/dist/cjs/builder/index.js.map +1 -1
  15. package/dist/cjs/builder/serialization.js +78 -0
  16. package/dist/cjs/builder/serialization.js.map +1 -0
  17. package/dist/cjs/client/index.js +8 -8
  18. package/dist/cjs/client/index.js.map +1 -1
  19. package/dist/cjs/components/builtin/Box/Box.js +1 -1
  20. package/dist/cjs/components/builtin/Box/Box.js.map +1 -1
  21. package/dist/cjs/components/builtin/Form/Form.js +1 -1
  22. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  23. package/dist/cjs/components/hooks/useTableFormFieldRefs.js +1 -1
  24. package/dist/cjs/components/hooks/useTableFormFieldRefs.js.map +1 -1
  25. package/dist/cjs/controls/serialization/base/index.js +78 -0
  26. package/dist/cjs/controls/serialization/base/index.js.map +1 -0
  27. package/dist/cjs/controls/serialization/base/visitor.js +59 -0
  28. package/dist/cjs/controls/serialization/base/visitor.js.map +1 -0
  29. package/dist/cjs/controls/serialization/index.js +55 -0
  30. package/dist/cjs/controls/serialization/index.js.map +1 -0
  31. package/dist/cjs/controls/serialization/message-port/function-serialization.js +79 -0
  32. package/dist/cjs/controls/serialization/message-port/function-serialization.js.map +1 -0
  33. package/dist/cjs/controls/serialization/message-port/index.js +25 -0
  34. package/dist/cjs/controls/serialization/message-port/index.js.map +1 -0
  35. package/dist/cjs/controls/serialization/message-port/visitor.js +48 -0
  36. package/dist/cjs/controls/serialization/message-port/visitor.js.map +1 -0
  37. package/dist/cjs/next/api-handler/config/app-router.js +10 -1
  38. package/dist/cjs/next/api-handler/config/app-router.js.map +1 -1
  39. package/dist/cjs/next/api-handler/config/pages-router.js +1 -1
  40. package/dist/cjs/next/api-handler/config/pages-router.js.map +1 -1
  41. package/dist/cjs/next/components/framework-provider/index.js +1 -1
  42. package/dist/cjs/next/components/framework-provider/index.js.map +1 -1
  43. package/dist/cjs/next/components/tests/controls/color-control/fixtures.js.map +1 -1
  44. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +2 -1
  45. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  46. package/dist/cjs/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -1
  47. package/dist/cjs/next/components/tests/makeswift-component/fixtures.js +2 -1
  48. package/dist/cjs/next/components/tests/makeswift-component/fixtures.js.map +1 -1
  49. package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js +3 -2
  50. package/dist/cjs/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
  51. package/dist/cjs/next/fetch.js +30 -0
  52. package/dist/cjs/next/fetch.js.map +1 -0
  53. package/dist/cjs/next/runtime.js +35 -0
  54. package/dist/cjs/next/runtime.js.map +1 -0
  55. package/dist/cjs/next/testing/element-data.js +3 -3
  56. package/dist/cjs/next/testing/element-data.js.map +1 -1
  57. package/dist/cjs/next/testing/index.js +0 -2
  58. package/dist/cjs/next/testing/index.js.map +1 -1
  59. package/dist/cjs/next/testing/page-rendering.js +3 -3
  60. package/dist/cjs/next/testing/page-rendering.js.map +1 -1
  61. package/dist/cjs/prop-controllers/descriptors.js.map +1 -1
  62. package/dist/cjs/prop-controllers/instances.js.map +1 -1
  63. package/dist/cjs/prop-controllers/serialization.js +355 -0
  64. package/dist/cjs/prop-controllers/serialization.js.map +1 -0
  65. package/dist/cjs/runtimes/react/components/Document.js +2 -2
  66. package/dist/cjs/runtimes/react/components/Document.js.map +1 -1
  67. package/dist/cjs/runtimes/react/components/DocumentRoot.js.map +1 -1
  68. package/dist/cjs/runtimes/react/components/Element.js +2 -2
  69. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  70. package/dist/cjs/runtimes/react/components/ElementData.js.map +1 -1
  71. package/dist/cjs/runtimes/react/components/ElementReference.js.map +1 -1
  72. package/dist/cjs/runtimes/react/components/ElementRegistration.js +2 -2
  73. package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -1
  74. package/dist/cjs/runtimes/react/components/GoogleFontLink.js +55 -0
  75. package/dist/cjs/runtimes/react/components/GoogleFontLink.js.map +1 -0
  76. package/dist/cjs/runtimes/react/components/MakeswiftComponent.js +2 -2
  77. package/dist/cjs/runtimes/react/components/MakeswiftComponent.js.map +1 -1
  78. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js +33 -0
  79. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  80. package/dist/cjs/runtimes/react/components/RuntimeProvider.js +5 -6
  81. package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
  82. package/dist/cjs/runtimes/react/components/framework-context.js +13 -3
  83. package/dist/cjs/runtimes/react/components/framework-context.js.map +1 -1
  84. package/dist/cjs/runtimes/react/components/page/Page.js.map +1 -1
  85. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js +3 -2
  86. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  87. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js +2 -2
  88. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  89. package/dist/cjs/runtimes/react/controls.js +2 -2
  90. package/dist/cjs/runtimes/react/controls.js.map +1 -1
  91. package/dist/cjs/runtimes/react/element-imperative-handle.js +1 -1
  92. package/dist/cjs/runtimes/react/element-imperative-handle.js.map +1 -1
  93. package/dist/cjs/runtimes/react/hooks/use-async-effect.js +55 -0
  94. package/dist/cjs/runtimes/react/hooks/use-async-effect.js.map +1 -0
  95. package/dist/cjs/runtimes/react/hooks/use-breakpoints.js +2 -2
  96. package/dist/cjs/runtimes/react/hooks/use-breakpoints.js.map +1 -1
  97. package/dist/cjs/runtimes/react/hooks/use-builder-edit-mode.js +2 -2
  98. package/dist/cjs/runtimes/react/hooks/use-builder-edit-mode.js.map +1 -1
  99. package/dist/cjs/runtimes/react/hooks/use-cache-data.js +2 -2
  100. package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -1
  101. package/dist/cjs/runtimes/react/hooks/use-component.js +3 -3
  102. package/dist/cjs/runtimes/react/hooks/use-component.js.map +1 -1
  103. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js +39 -0
  104. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js.map +1 -0
  105. package/dist/cjs/runtimes/react/hooks/use-dispatch.js.map +1 -1
  106. package/dist/cjs/runtimes/react/hooks/use-document.js +2 -2
  107. package/dist/cjs/runtimes/react/hooks/use-document.js.map +1 -1
  108. package/dist/cjs/runtimes/react/hooks/use-element-id.js +2 -2
  109. package/dist/cjs/runtimes/react/hooks/use-element-id.js.map +1 -1
  110. package/dist/cjs/runtimes/react/hooks/use-is-in-builder.js +2 -2
  111. package/dist/cjs/runtimes/react/hooks/use-is-in-builder.js.map +1 -1
  112. package/dist/cjs/runtimes/react/hooks/use-is-preview.js +33 -0
  113. package/dist/cjs/runtimes/react/hooks/use-is-preview.js.map +1 -0
  114. package/dist/cjs/runtimes/react/hooks/use-register-document.js.map +1 -1
  115. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +2 -2
  116. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  117. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js +1 -1
  118. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  119. package/dist/cjs/runtimes/react/hooks/use-selector.js.map +1 -1
  120. package/dist/cjs/runtimes/react/hooks/use-store.js.map +1 -1
  121. package/dist/cjs/runtimes/react/hooks/use-universal-dispatch.js.map +1 -1
  122. package/dist/cjs/runtimes/react/host-api-client.js +3 -4
  123. package/dist/cjs/runtimes/react/host-api-client.js.map +1 -1
  124. package/dist/cjs/runtimes/react/index.js +3 -3
  125. package/dist/cjs/runtimes/react/index.js.map +1 -1
  126. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js +59 -0
  127. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js.map +1 -0
  128. package/dist/cjs/runtimes/react/poll-box-model.js +1 -1
  129. package/dist/cjs/runtimes/react/poll-box-model.js.map +1 -1
  130. package/dist/cjs/runtimes/react/react-runtime-core.js +3 -3
  131. package/dist/cjs/runtimes/react/react-runtime-core.js.map +1 -1
  132. package/dist/cjs/runtimes/react/runtime-core.js +2 -4
  133. package/dist/cjs/runtimes/react/runtime-core.js.map +1 -1
  134. package/dist/cjs/runtimes/react/testing/react-runtime.js +3 -2
  135. package/dist/cjs/runtimes/react/testing/react-runtime.js.map +1 -1
  136. package/dist/cjs/runtimes/react/utils/can-accept-ref.js.map +1 -1
  137. package/dist/cjs/runtimes/react/utils/google-fonts-url.js +49 -0
  138. package/dist/cjs/runtimes/react/utils/google-fonts-url.js.map +1 -0
  139. package/dist/cjs/state/actions/internal/read-only-actions.js +25 -17
  140. package/dist/cjs/state/actions/internal/read-only-actions.js.map +1 -1
  141. package/dist/cjs/state/actions/internal/read-write-actions.js +7 -1
  142. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -1
  143. package/dist/cjs/state/actions/internal.js +205 -0
  144. package/dist/cjs/state/actions/internal.js.map +1 -0
  145. package/dist/cjs/state/builder-api/actions.js +8 -11
  146. package/dist/cjs/state/builder-api/actions.js.map +1 -1
  147. package/dist/cjs/state/builder-api/api.js +17 -0
  148. package/dist/cjs/state/builder-api/api.js.map +1 -0
  149. package/dist/cjs/state/builder-api/navigation-listener.js +110 -0
  150. package/dist/cjs/state/builder-api/navigation-listener.js.map +1 -0
  151. package/dist/cjs/state/host-api.js.map +1 -1
  152. package/dist/cjs/state/makeswift-api-client.js +20 -34
  153. package/dist/cjs/state/makeswift-api-client.js.map +1 -1
  154. package/dist/cjs/state/middleware/{read-write/makeswift-api-client-sync.js → makeswift-api-client-sync.js} +1 -1
  155. package/dist/cjs/state/middleware/makeswift-api-client-sync.js.map +1 -0
  156. package/dist/cjs/state/middleware/read-write/builder-api/index.js +11 -2
  157. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -1
  158. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js +3 -0
  159. package/dist/cjs/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -1
  160. package/dist/cjs/state/middleware/read-write/index.js +40 -0
  161. package/dist/cjs/state/middleware/read-write/index.js.map +1 -0
  162. package/dist/cjs/state/middleware/{prop-controller-handles.js → read-write/prop-controller-handles.js} +8 -8
  163. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js.map +1 -0
  164. package/dist/cjs/state/mixins/breakpoint-watch.js +72 -0
  165. package/dist/cjs/state/mixins/breakpoint-watch.js.map +1 -0
  166. package/dist/cjs/state/modules/api-resources.js +4 -7
  167. package/dist/cjs/state/modules/api-resources.js.map +1 -1
  168. package/dist/cjs/state/modules/box-models.js +127 -0
  169. package/dist/cjs/state/modules/box-models.js.map +1 -0
  170. package/dist/cjs/state/modules/breakpoints.js +1 -2
  171. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  172. package/dist/cjs/state/modules/builder-edit-mode.js +1 -2
  173. package/dist/cjs/state/modules/builder-edit-mode.js.map +1 -1
  174. package/dist/cjs/state/modules/components-meta.js +2 -3
  175. package/dist/cjs/state/modules/components-meta.js.map +1 -1
  176. package/dist/cjs/state/modules/element-imperative-handles.js +60 -0
  177. package/dist/cjs/state/modules/element-imperative-handles.js.map +1 -0
  178. package/dist/cjs/state/modules/element-trees.js +3 -5
  179. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  180. package/dist/cjs/state/modules/is-in-builder.js +1 -2
  181. package/dist/cjs/state/modules/is-in-builder.js.map +1 -1
  182. package/dist/cjs/state/modules/is-preview.js +47 -0
  183. package/dist/cjs/state/modules/is-preview.js.map +1 -0
  184. package/dist/cjs/state/modules/locale.js +1 -4
  185. package/dist/cjs/state/modules/locale.js.map +1 -1
  186. package/dist/cjs/state/modules/localized-resources-map.js +2 -4
  187. package/dist/cjs/state/modules/localized-resources-map.js.map +1 -1
  188. package/dist/cjs/state/modules/pointer.js +47 -0
  189. package/dist/cjs/state/modules/pointer.js.map +1 -0
  190. package/dist/cjs/state/modules/prop-controllers.js +2 -3
  191. package/dist/cjs/state/modules/prop-controllers.js.map +1 -1
  192. package/dist/cjs/state/modules/react-components.js +2 -3
  193. package/dist/cjs/state/modules/react-components.js.map +1 -1
  194. package/dist/cjs/state/modules/read-only-documents.js +2 -3
  195. package/dist/cjs/state/modules/read-only-documents.js.map +1 -1
  196. package/dist/cjs/state/modules/read-write/box-models.js +17 -2
  197. package/dist/cjs/state/modules/read-write/box-models.js.map +1 -1
  198. package/dist/cjs/state/modules/read-write-documents.js +98 -0
  199. package/dist/cjs/state/modules/read-write-documents.js.map +1 -0
  200. package/dist/cjs/state/modules/site-version.js +0 -3
  201. package/dist/cjs/state/modules/site-version.js.map +1 -1
  202. package/dist/cjs/state/react-builder-preview.js +508 -18
  203. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  204. package/dist/cjs/state/react-page.js +250 -6
  205. package/dist/cjs/state/react-page.js.map +1 -1
  206. package/dist/cjs/state/read-only-state.js +23 -1
  207. package/dist/cjs/state/read-only-state.js.map +1 -1
  208. package/dist/cjs/state/read-write-state.js +9 -2
  209. package/dist/cjs/state/read-write-state.js.map +1 -1
  210. package/dist/cjs/state/shared-api.js.map +1 -1
  211. package/dist/cjs/state/store.js +219 -0
  212. package/dist/cjs/state/store.js.map +1 -0
  213. package/dist/cjs/state/translations/get.js +2 -2
  214. package/dist/cjs/state/translations/get.js.map +1 -1
  215. package/dist/cjs/state/translations/merge.js +2 -2
  216. package/dist/cjs/state/translations/merge.js.map +1 -1
  217. package/dist/cjs/state/unified-state.js +17 -0
  218. package/dist/cjs/state/unified-state.js.map +1 -0
  219. package/dist/cjs/translations/index.js +32 -0
  220. package/dist/cjs/translations/index.js.map +1 -0
  221. package/dist/cjs/unstable-framework-support/index.js +4 -2
  222. package/dist/cjs/unstable-framework-support/index.js.map +1 -1
  223. package/dist/cjs/utils/deferred.js +39 -0
  224. package/dist/cjs/utils/deferred.js.map +1 -0
  225. package/dist/cjs/utils/ref-counted-map.js +120 -0
  226. package/dist/cjs/utils/ref-counted-map.js.map +1 -0
  227. package/dist/esm/api/client.js +2 -13
  228. package/dist/esm/api/client.js.map +1 -1
  229. package/dist/esm/api/react.js +223 -0
  230. package/dist/esm/api/react.js.map +1 -0
  231. package/dist/esm/api-handler/handlers/element-tree.js.map +1 -1
  232. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  233. package/dist/esm/api-handler/handlers/merge-translated-data.js.map +1 -1
  234. package/dist/esm/api-handler/handlers/translatable-data.js.map +1 -1
  235. package/dist/esm/api-handler/handlers/webhook/diff-projection.js +38 -0
  236. package/dist/esm/api-handler/handlers/webhook/diff-projection.js.map +1 -0
  237. package/dist/esm/builder/host-to-builder-actions.js +4 -4
  238. package/dist/esm/builder/host-to-builder-actions.js.map +1 -1
  239. package/dist/esm/builder/index.js +1 -1
  240. package/dist/esm/builder/index.js.map +1 -1
  241. package/dist/esm/builder/serialization.js +59 -0
  242. package/dist/esm/builder/serialization.js.map +1 -0
  243. package/dist/esm/client/index.js +5 -5
  244. package/dist/esm/client/index.js.map +1 -1
  245. package/dist/esm/components/builtin/Box/Box.js +1 -1
  246. package/dist/esm/components/builtin/Box/Box.js.map +1 -1
  247. package/dist/esm/components/builtin/Form/Form.js +1 -1
  248. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  249. package/dist/esm/components/hooks/useTableFormFieldRefs.js +1 -1
  250. package/dist/esm/components/hooks/useTableFormFieldRefs.js.map +1 -1
  251. package/dist/esm/controls/serialization/base/index.js +78 -0
  252. package/dist/esm/controls/serialization/base/index.js.map +1 -0
  253. package/dist/esm/controls/serialization/base/visitor.js +39 -0
  254. package/dist/esm/controls/serialization/base/visitor.js.map +1 -0
  255. package/dist/esm/controls/serialization/index.js +30 -0
  256. package/dist/esm/controls/serialization/index.js.map +1 -0
  257. package/dist/esm/controls/serialization/message-port/function-serialization.js +52 -0
  258. package/dist/esm/controls/serialization/message-port/function-serialization.js.map +1 -0
  259. package/dist/esm/controls/serialization/message-port/index.js +3 -0
  260. package/dist/esm/controls/serialization/message-port/index.js.map +1 -0
  261. package/dist/esm/controls/serialization/message-port/visitor.js +24 -0
  262. package/dist/esm/controls/serialization/message-port/visitor.js.map +1 -0
  263. package/dist/esm/next/api-handler/config/app-router.js +10 -1
  264. package/dist/esm/next/api-handler/config/app-router.js.map +1 -1
  265. package/dist/esm/next/api-handler/config/pages-router.js +1 -1
  266. package/dist/esm/next/api-handler/config/pages-router.js.map +1 -1
  267. package/dist/esm/next/components/framework-provider/index.js +5 -2
  268. package/dist/esm/next/components/framework-provider/index.js.map +1 -1
  269. package/dist/esm/next/components/tests/controls/color-control/fixtures.js.map +1 -1
  270. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +2 -1
  271. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  272. package/dist/esm/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -1
  273. package/dist/esm/next/components/tests/makeswift-component/fixtures.js +2 -1
  274. package/dist/esm/next/components/tests/makeswift-component/fixtures.js.map +1 -1
  275. package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js +3 -2
  276. package/dist/esm/next/components/tests/prop-controllers/page-prop-controller.js.map +1 -1
  277. package/dist/esm/next/fetch.js +6 -0
  278. package/dist/esm/next/fetch.js.map +1 -0
  279. package/dist/esm/next/runtime.js +11 -0
  280. package/dist/esm/next/runtime.js.map +1 -0
  281. package/dist/esm/next/testing/element-data.js +1 -1
  282. package/dist/esm/next/testing/element-data.js.map +1 -1
  283. package/dist/esm/next/testing/index.js +0 -1
  284. package/dist/esm/next/testing/index.js.map +1 -1
  285. package/dist/esm/next/testing/page-rendering.js +3 -3
  286. package/dist/esm/next/testing/page-rendering.js.map +1 -1
  287. package/dist/esm/prop-controllers/descriptors.js.map +1 -1
  288. package/dist/esm/prop-controllers/instances.js.map +1 -1
  289. package/dist/esm/prop-controllers/serialization.js +338 -0
  290. package/dist/esm/prop-controllers/serialization.js.map +1 -0
  291. package/dist/esm/runtimes/react/components/Document.js +1 -1
  292. package/dist/esm/runtimes/react/components/Document.js.map +1 -1
  293. package/dist/esm/runtimes/react/components/DocumentRoot.js.map +1 -1
  294. package/dist/esm/runtimes/react/components/Element.js +1 -3
  295. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  296. package/dist/esm/runtimes/react/components/ElementData.js.map +1 -1
  297. package/dist/esm/runtimes/react/components/ElementReference.js.map +1 -1
  298. package/dist/esm/runtimes/react/components/ElementRegistration.js +1 -1
  299. package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -1
  300. package/dist/esm/runtimes/react/components/GoogleFontLink.js +35 -0
  301. package/dist/esm/runtimes/react/components/GoogleFontLink.js.map +1 -0
  302. package/dist/esm/runtimes/react/components/MakeswiftComponent.js +1 -1
  303. package/dist/esm/runtimes/react/components/MakeswiftComponent.js.map +1 -1
  304. package/dist/esm/runtimes/react/components/MakeswiftFonts.js +9 -0
  305. package/dist/esm/runtimes/react/components/MakeswiftFonts.js.map +1 -0
  306. package/dist/esm/runtimes/react/components/RuntimeProvider.js +4 -5
  307. package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
  308. package/dist/esm/runtimes/react/components/framework-context.js +14 -2
  309. package/dist/esm/runtimes/react/components/framework-context.js.map +1 -1
  310. package/dist/esm/runtimes/react/components/page/Page.js.map +1 -1
  311. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js +3 -2
  312. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  313. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js +2 -2
  314. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  315. package/dist/esm/runtimes/react/controls.js +2 -2
  316. package/dist/esm/runtimes/react/controls.js.map +1 -1
  317. package/dist/esm/runtimes/react/element-imperative-handle.js +1 -1
  318. package/dist/esm/runtimes/react/element-imperative-handle.js.map +1 -1
  319. package/dist/esm/runtimes/react/hooks/use-async-effect.js +31 -0
  320. package/dist/esm/runtimes/react/hooks/use-async-effect.js.map +1 -0
  321. package/dist/esm/runtimes/react/hooks/use-breakpoints.js +1 -1
  322. package/dist/esm/runtimes/react/hooks/use-breakpoints.js.map +1 -1
  323. package/dist/esm/runtimes/react/hooks/use-builder-edit-mode.js +1 -1
  324. package/dist/esm/runtimes/react/hooks/use-builder-edit-mode.js.map +1 -1
  325. package/dist/esm/runtimes/react/hooks/use-cache-data.js +1 -1
  326. package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -1
  327. package/dist/esm/runtimes/react/hooks/use-component.js +1 -1
  328. package/dist/esm/runtimes/react/hooks/use-component.js.map +1 -1
  329. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js +15 -0
  330. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js.map +1 -0
  331. package/dist/esm/runtimes/react/hooks/use-dispatch.js.map +1 -1
  332. package/dist/esm/runtimes/react/hooks/use-document.js +1 -1
  333. package/dist/esm/runtimes/react/hooks/use-document.js.map +1 -1
  334. package/dist/esm/runtimes/react/hooks/use-element-id.js +1 -1
  335. package/dist/esm/runtimes/react/hooks/use-element-id.js.map +1 -1
  336. package/dist/esm/runtimes/react/hooks/use-is-in-builder.js +1 -1
  337. package/dist/esm/runtimes/react/hooks/use-is-in-builder.js.map +1 -1
  338. package/dist/esm/runtimes/react/hooks/use-is-preview.js +9 -0
  339. package/dist/esm/runtimes/react/hooks/use-is-preview.js.map +1 -0
  340. package/dist/esm/runtimes/react/hooks/use-register-document.js.map +1 -1
  341. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +2 -2
  342. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  343. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js +1 -1
  344. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  345. package/dist/esm/runtimes/react/hooks/use-selector.js.map +1 -1
  346. package/dist/esm/runtimes/react/hooks/use-store.js.map +1 -1
  347. package/dist/esm/runtimes/react/hooks/use-universal-dispatch.js.map +1 -1
  348. package/dist/esm/runtimes/react/host-api-client.js +2 -3
  349. package/dist/esm/runtimes/react/host-api-client.js.map +1 -1
  350. package/dist/esm/runtimes/react/index.js +2 -2
  351. package/dist/esm/runtimes/react/index.js.map +1 -1
  352. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js +38 -0
  353. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js.map +1 -0
  354. package/dist/esm/runtimes/react/poll-box-model.js +1 -1
  355. package/dist/esm/runtimes/react/poll-box-model.js.map +1 -1
  356. package/dist/esm/runtimes/react/react-runtime-core.js +1 -4
  357. package/dist/esm/runtimes/react/react-runtime-core.js.map +1 -1
  358. package/dist/esm/runtimes/react/runtime-core.js +5 -3
  359. package/dist/esm/runtimes/react/runtime-core.js.map +1 -1
  360. package/dist/esm/runtimes/react/testing/react-runtime.js +3 -2
  361. package/dist/esm/runtimes/react/testing/react-runtime.js.map +1 -1
  362. package/dist/esm/runtimes/react/utils/can-accept-ref.js.map +1 -1
  363. package/dist/esm/runtimes/react/utils/google-fonts-url.js +23 -0
  364. package/dist/esm/runtimes/react/utils/google-fonts-url.js.map +1 -0
  365. package/dist/esm/state/actions/internal/read-only-actions.js +21 -14
  366. package/dist/esm/state/actions/internal/read-only-actions.js.map +1 -1
  367. package/dist/esm/state/actions/internal/read-write-actions.js +6 -1
  368. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -1
  369. package/dist/esm/state/actions/internal.js +162 -0
  370. package/dist/esm/state/actions/internal.js.map +1 -0
  371. package/dist/esm/state/builder-api/actions.js +7 -8
  372. package/dist/esm/state/builder-api/actions.js.map +1 -1
  373. package/dist/esm/state/builder-api/api.js +1 -0
  374. package/dist/esm/state/builder-api/api.js.map +1 -0
  375. package/dist/esm/state/builder-api/navigation-listener.js +86 -0
  376. package/dist/esm/state/builder-api/navigation-listener.js.map +1 -0
  377. package/dist/esm/state/host-api.js.map +1 -1
  378. package/dist/esm/state/makeswift-api-client.js +19 -33
  379. package/dist/esm/state/makeswift-api-client.js.map +1 -1
  380. package/dist/esm/state/middleware/{read-write/makeswift-api-client-sync.js → makeswift-api-client-sync.js} +1 -1
  381. package/dist/esm/state/middleware/makeswift-api-client-sync.js.map +1 -0
  382. package/dist/esm/state/middleware/read-write/builder-api/index.js +11 -2
  383. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -1
  384. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js +3 -0
  385. package/dist/esm/state/middleware/read-write/builder-api/initialize-connection.js.map +1 -1
  386. package/dist/esm/state/middleware/read-write/index.js +16 -0
  387. package/dist/esm/state/middleware/read-write/index.js.map +1 -0
  388. package/dist/esm/state/middleware/{prop-controller-handles.js → read-write/prop-controller-handles.js} +8 -8
  389. package/dist/esm/state/middleware/read-write/prop-controller-handles.js.map +1 -0
  390. package/dist/esm/state/mixins/breakpoint-watch.js +48 -0
  391. package/dist/esm/state/mixins/breakpoint-watch.js.map +1 -0
  392. package/dist/esm/state/modules/api-resources.js +5 -8
  393. package/dist/esm/state/modules/api-resources.js.map +1 -1
  394. package/dist/esm/state/modules/box-models.js +98 -0
  395. package/dist/esm/state/modules/box-models.js.map +1 -0
  396. package/dist/esm/state/modules/breakpoints.js +2 -3
  397. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  398. package/dist/esm/state/modules/builder-edit-mode.js +2 -3
  399. package/dist/esm/state/modules/builder-edit-mode.js.map +1 -1
  400. package/dist/esm/state/modules/components-meta.js +3 -4
  401. package/dist/esm/state/modules/components-meta.js.map +1 -1
  402. package/dist/esm/state/modules/element-imperative-handles.js +35 -0
  403. package/dist/esm/state/modules/element-imperative-handles.js.map +1 -0
  404. package/dist/esm/state/modules/element-trees.js +4 -6
  405. package/dist/esm/state/modules/element-trees.js.map +1 -1
  406. package/dist/esm/state/modules/is-in-builder.js +2 -3
  407. package/dist/esm/state/modules/is-in-builder.js.map +1 -1
  408. package/dist/esm/state/modules/is-preview.js +21 -0
  409. package/dist/esm/state/modules/is-preview.js.map +1 -0
  410. package/dist/esm/state/modules/locale.js +1 -4
  411. package/dist/esm/state/modules/locale.js.map +1 -1
  412. package/dist/esm/state/modules/localized-resources-map.js +3 -5
  413. package/dist/esm/state/modules/localized-resources-map.js.map +1 -1
  414. package/dist/esm/state/modules/pointer.js +22 -0
  415. package/dist/esm/state/modules/pointer.js.map +1 -0
  416. package/dist/esm/state/modules/prop-controllers.js +3 -4
  417. package/dist/esm/state/modules/prop-controllers.js.map +1 -1
  418. package/dist/esm/state/modules/react-components.js +3 -4
  419. package/dist/esm/state/modules/react-components.js.map +1 -1
  420. package/dist/esm/state/modules/read-only-documents.js +6 -4
  421. package/dist/esm/state/modules/read-only-documents.js.map +1 -1
  422. package/dist/esm/state/modules/read-write/box-models.js +16 -2
  423. package/dist/esm/state/modules/read-write/box-models.js.map +1 -1
  424. package/dist/esm/state/modules/read-write-documents.js +60 -0
  425. package/dist/esm/state/modules/read-write-documents.js.map +1 -0
  426. package/dist/esm/state/modules/site-version.js +0 -3
  427. package/dist/esm/state/modules/site-version.js.map +1 -1
  428. package/dist/esm/state/react-builder-preview.js +500 -15
  429. package/dist/esm/state/react-builder-preview.js.map +1 -1
  430. package/dist/esm/state/react-page.js +240 -7
  431. package/dist/esm/state/react-page.js.map +1 -1
  432. package/dist/esm/state/read-only-state.js +20 -1
  433. package/dist/esm/state/read-only-state.js.map +1 -1
  434. package/dist/esm/state/read-write-state.js +7 -1
  435. package/dist/esm/state/read-write-state.js.map +1 -1
  436. package/dist/esm/state/shared-api.js.map +1 -1
  437. package/dist/esm/state/store.js +188 -0
  438. package/dist/esm/state/store.js.map +1 -0
  439. package/dist/esm/state/translations/get.js +1 -1
  440. package/dist/esm/state/translations/get.js.map +1 -1
  441. package/dist/esm/state/translations/merge.js +1 -1
  442. package/dist/esm/state/translations/merge.js.map +1 -1
  443. package/dist/esm/state/unified-state.js +1 -0
  444. package/dist/esm/state/unified-state.js.map +1 -0
  445. package/dist/esm/translations/index.js +7 -0
  446. package/dist/esm/translations/index.js.map +1 -0
  447. package/dist/esm/unstable-framework-support/index.js +4 -2
  448. package/dist/esm/unstable-framework-support/index.js.map +1 -1
  449. package/dist/esm/utils/deferred.js +15 -0
  450. package/dist/esm/utils/deferred.js.map +1 -0
  451. package/dist/esm/utils/ref-counted-map.js +96 -0
  452. package/dist/esm/utils/ref-counted-map.js.map +1 -0
  453. package/dist/types/api/client.d.ts +2 -5
  454. package/dist/types/api/client.d.ts.map +1 -1
  455. package/dist/types/api/react.d.ts +82 -0
  456. package/dist/types/api/react.d.ts.map +1 -0
  457. package/dist/types/api-handler/handlers/element-tree.d.ts +1 -1
  458. package/dist/types/api-handler/handlers/element-tree.d.ts.map +1 -1
  459. package/dist/types/api-handler/handlers/merge-translated-data.d.ts +1 -1
  460. package/dist/types/api-handler/handlers/merge-translated-data.d.ts.map +1 -1
  461. package/dist/types/api-handler/handlers/translatable-data.d.ts +1 -1
  462. package/dist/types/api-handler/handlers/translatable-data.d.ts.map +1 -1
  463. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +201 -0
  464. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts.map +1 -0
  465. package/dist/types/api-handler/handlers/webhook/types.d.ts +4 -4
  466. package/dist/types/builder/host-to-builder-actions.d.ts +2 -2
  467. package/dist/types/builder/host-to-builder-actions.d.ts.map +1 -1
  468. package/dist/types/builder/index.d.ts +2 -2
  469. package/dist/types/builder/index.d.ts.map +1 -1
  470. package/dist/types/builder/serialization.d.ts +23 -0
  471. package/dist/types/builder/serialization.d.ts.map +1 -0
  472. package/dist/types/builder/serialization.test.d.ts +2 -0
  473. package/dist/types/builder/serialization.test.d.ts.map +1 -0
  474. package/dist/types/client/index.d.ts +2 -2
  475. package/dist/types/client/index.d.ts.map +1 -1
  476. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts +2 -0
  477. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts.map +1 -0
  478. package/dist/types/client/tests/client.get-fonts.test.d.ts +2 -0
  479. package/dist/types/client/tests/client.get-fonts.test.d.ts.map +1 -0
  480. package/dist/types/client/tests/client.introspect-many.test.d.ts +2 -0
  481. package/dist/types/client/tests/client.introspect-many.test.d.ts.map +1 -0
  482. package/dist/types/components/builtin/Box/Box.d.ts +1 -1
  483. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  484. package/dist/types/components/builtin/Form/Form.d.ts +1 -1
  485. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  486. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts +3 -0
  487. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts.map +1 -0
  488. package/dist/types/controls/serialization/base/index.d.ts +10 -0
  489. package/dist/types/controls/serialization/base/index.d.ts.map +1 -0
  490. package/dist/types/controls/serialization/base/visitor.d.ts +7 -0
  491. package/dist/types/controls/serialization/base/visitor.d.ts.map +1 -0
  492. package/dist/types/controls/serialization/index.d.ts +10 -0
  493. package/dist/types/controls/serialization/index.d.ts.map +1 -0
  494. package/dist/types/controls/serialization/message-port/function-serialization.d.ts +16 -0
  495. package/dist/types/controls/serialization/message-port/function-serialization.d.ts.map +1 -0
  496. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts +2 -0
  497. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts.map +1 -0
  498. package/dist/types/controls/serialization/message-port/index.d.ts +3 -0
  499. package/dist/types/controls/serialization/message-port/index.d.ts.map +1 -0
  500. package/dist/types/controls/serialization/message-port/visitor.d.ts +7 -0
  501. package/dist/types/controls/serialization/message-port/visitor.d.ts.map +1 -0
  502. package/dist/types/locale.d.ts +1 -1
  503. package/dist/types/next/api-handler/config/app-router.d.ts.map +1 -1
  504. package/dist/types/next/api-handler/config/pages-router.test.d.ts +2 -0
  505. package/dist/types/next/api-handler/config/pages-router.test.d.ts.map +1 -0
  506. package/dist/types/next/components/framework-provider/index.d.ts.map +1 -1
  507. package/dist/types/next/components/tests/controls/code-control.test.d.ts +2 -0
  508. package/dist/types/next/components/tests/controls/code-control.test.d.ts.map +1 -0
  509. package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts +1 -1
  510. package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts.map +1 -1
  511. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts +3 -3
  512. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
  513. package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts +1 -1
  514. package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts.map +1 -1
  515. package/dist/types/next/components/tests/makeswift-component/fixtures.d.ts +1 -1
  516. package/dist/types/next/components/tests/makeswift-component/fixtures.d.ts.map +1 -1
  517. package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts +1 -1
  518. package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts.map +1 -1
  519. package/dist/types/next/fetch.d.ts +3 -0
  520. package/dist/types/next/fetch.d.ts.map +1 -0
  521. package/dist/types/next/runtime.d.ts +10 -0
  522. package/dist/types/next/runtime.d.ts.map +1 -0
  523. package/dist/types/next/testing/element-data.d.ts +1 -1
  524. package/dist/types/next/testing/element-data.d.ts.map +1 -1
  525. package/dist/types/next/testing/index.d.ts +0 -1
  526. package/dist/types/next/testing/index.d.ts.map +1 -1
  527. package/dist/types/next/testing/page-rendering.d.ts.map +1 -1
  528. package/dist/types/prop-controllers/descriptors.d.ts +1 -1
  529. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  530. package/dist/types/prop-controllers/instances.d.ts +1 -1
  531. package/dist/types/prop-controllers/instances.d.ts.map +1 -1
  532. package/dist/types/prop-controllers/serialization.d.ts +228 -0
  533. package/dist/types/prop-controllers/serialization.d.ts.map +1 -0
  534. package/dist/types/runtimes/react/components/Document.d.ts +1 -1
  535. package/dist/types/runtimes/react/components/Document.d.ts.map +1 -1
  536. package/dist/types/runtimes/react/components/DocumentRoot.d.ts +1 -1
  537. package/dist/types/runtimes/react/components/DocumentRoot.d.ts.map +1 -1
  538. package/dist/types/runtimes/react/components/Element.d.ts +1 -1
  539. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  540. package/dist/types/runtimes/react/components/ElementData.d.ts +1 -1
  541. package/dist/types/runtimes/react/components/ElementData.d.ts.map +1 -1
  542. package/dist/types/runtimes/react/components/ElementReference.d.ts +1 -1
  543. package/dist/types/runtimes/react/components/ElementReference.d.ts.map +1 -1
  544. package/dist/types/runtimes/react/components/GoogleFontLink.d.ts +14 -0
  545. package/dist/types/runtimes/react/components/GoogleFontLink.d.ts.map +1 -0
  546. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts +7 -0
  547. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts.map +1 -0
  548. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +1 -1
  549. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
  550. package/dist/types/runtimes/react/components/framework-context.d.ts +4 -2
  551. package/dist/types/runtimes/react/components/framework-context.d.ts.map +1 -1
  552. package/dist/types/runtimes/react/components/page/Page.d.ts +1 -1
  553. package/dist/types/runtimes/react/components/page/Page.d.ts.map +1 -1
  554. package/dist/types/runtimes/react/controls.d.ts +2 -2
  555. package/dist/types/runtimes/react/controls.d.ts.map +1 -1
  556. package/dist/types/runtimes/react/element-imperative-handle.d.ts +1 -1
  557. package/dist/types/runtimes/react/element-imperative-handle.d.ts.map +1 -1
  558. package/dist/types/runtimes/react/hooks/__tests__/use-async-effect.test.d.ts +2 -0
  559. package/dist/types/runtimes/react/hooks/__tests__/use-async-effect.test.d.ts.map +1 -0
  560. package/dist/types/runtimes/react/hooks/use-async-effect.d.ts +3 -0
  561. package/dist/types/runtimes/react/hooks/use-async-effect.d.ts.map +1 -0
  562. package/dist/types/runtimes/react/hooks/use-cache-data.d.ts +1 -1
  563. package/dist/types/runtimes/react/hooks/use-cache-data.d.ts.map +1 -1
  564. package/dist/types/runtimes/react/hooks/use-component.d.ts +1 -1
  565. package/dist/types/runtimes/react/hooks/use-component.d.ts.map +1 -1
  566. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts +3 -0
  567. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts.map +1 -0
  568. package/dist/types/runtimes/react/hooks/use-dispatch.d.ts +3 -3
  569. package/dist/types/runtimes/react/hooks/use-dispatch.d.ts.map +1 -1
  570. package/dist/types/runtimes/react/hooks/use-document.d.ts +1 -1
  571. package/dist/types/runtimes/react/hooks/use-document.d.ts.map +1 -1
  572. package/dist/types/runtimes/react/hooks/use-is-preview.d.ts +2 -0
  573. package/dist/types/runtimes/react/hooks/use-is-preview.d.ts.map +1 -0
  574. package/dist/types/runtimes/react/hooks/use-register-document.d.ts +1 -1
  575. package/dist/types/runtimes/react/hooks/use-register-document.d.ts.map +1 -1
  576. package/dist/types/runtimes/react/hooks/use-selector.d.ts +3 -3
  577. package/dist/types/runtimes/react/hooks/use-selector.d.ts.map +1 -1
  578. package/dist/types/runtimes/react/hooks/use-store.d.ts +4 -4
  579. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  580. package/dist/types/runtimes/react/hooks/use-universal-dispatch.d.ts +1 -1
  581. package/dist/types/runtimes/react/hooks/use-universal-dispatch.d.ts.map +1 -1
  582. package/dist/types/runtimes/react/host-api-client.d.ts +1 -1
  583. package/dist/types/runtimes/react/host-api-client.d.ts.map +1 -1
  584. package/dist/types/runtimes/react/index.d.ts +1 -1
  585. package/dist/types/runtimes/react/index.d.ts.map +1 -1
  586. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts +4 -0
  587. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts.map +1 -0
  588. package/dist/types/runtimes/react/poll-box-model.d.ts +1 -1
  589. package/dist/types/runtimes/react/poll-box-model.d.ts.map +1 -1
  590. package/dist/types/runtimes/react/react-runtime-core.d.ts +1 -1
  591. package/dist/types/runtimes/react/react-runtime-core.d.ts.map +1 -1
  592. package/dist/types/runtimes/react/runtime-core.d.ts +1 -2
  593. package/dist/types/runtimes/react/runtime-core.d.ts.map +1 -1
  594. package/dist/types/runtimes/react/testing/react-runtime.d.ts +4 -1
  595. package/dist/types/runtimes/react/testing/react-runtime.d.ts.map +1 -1
  596. package/dist/types/runtimes/react/utils/can-accept-ref.d.ts +1 -1
  597. package/dist/types/runtimes/react/utils/can-accept-ref.d.ts.map +1 -1
  598. package/dist/types/runtimes/react/utils/google-fonts-url.d.ts +6 -0
  599. package/dist/types/runtimes/react/utils/google-fonts-url.d.ts.map +1 -0
  600. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts +5 -0
  601. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts.map +1 -0
  602. package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts +3 -0
  603. package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts.map +1 -0
  604. package/dist/types/state/__tests__/get-translatable-content.test.d.ts +2 -0
  605. package/dist/types/state/__tests__/get-translatable-content.test.d.ts.map +1 -0
  606. package/dist/types/state/__tests__/react-page.test.d.ts +2 -0
  607. package/dist/types/state/__tests__/react-page.test.d.ts.map +1 -0
  608. package/dist/types/state/__tests__/store.read-write-state.test.d.ts +2 -0
  609. package/dist/types/state/__tests__/store.read-write-state.test.d.ts.map +1 -0
  610. package/dist/types/state/__tests__/test-store.d.ts +31 -0
  611. package/dist/types/state/__tests__/test-store.d.ts.map +1 -0
  612. package/dist/types/state/actions/index.d.ts +5 -8
  613. package/dist/types/state/actions/index.d.ts.map +1 -1
  614. package/dist/types/state/actions/internal/index.d.ts +4 -2
  615. package/dist/types/state/actions/internal/index.d.ts.map +1 -1
  616. package/dist/types/state/actions/internal/read-only-actions.d.ts +25 -13
  617. package/dist/types/state/actions/internal/read-only-actions.d.ts.map +1 -1
  618. package/dist/types/state/actions/internal/read-write-actions.d.ts +6 -1
  619. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -1
  620. package/dist/types/state/actions/internal.d.ts +181 -0
  621. package/dist/types/state/actions/internal.d.ts.map +1 -0
  622. package/dist/types/state/builder-api/actions.d.ts +14 -14
  623. package/dist/types/state/builder-api/actions.d.ts.map +1 -1
  624. package/dist/types/state/builder-api/api.d.ts +9 -0
  625. package/dist/types/state/builder-api/api.d.ts.map +1 -0
  626. package/dist/types/state/builder-api/navigation-listener.d.ts +3 -0
  627. package/dist/types/state/builder-api/navigation-listener.d.ts.map +1 -0
  628. package/dist/types/state/host-api.d.ts +1 -1
  629. package/dist/types/state/host-api.d.ts.map +1 -1
  630. package/dist/types/state/makeswift-api-client.d.ts +2 -11
  631. package/dist/types/state/makeswift-api-client.d.ts.map +1 -1
  632. package/dist/types/state/middleware/makeswift-api-client-sync.d.ts +5 -0
  633. package/dist/types/state/middleware/makeswift-api-client-sync.d.ts.map +1 -0
  634. package/dist/types/state/middleware/read-write/builder-api/index.d.ts.map +1 -1
  635. package/dist/types/state/middleware/read-write/builder-api/initialize-connection.d.ts.map +1 -1
  636. package/dist/types/state/middleware/read-write/index.d.ts +5 -0
  637. package/dist/types/state/middleware/read-write/index.d.ts.map +1 -0
  638. package/dist/types/state/middleware/{prop-controller-handles.d.ts → read-write/prop-controller-handles.d.ts} +1 -1
  639. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts.map +1 -0
  640. package/dist/types/state/mixins/breakpoint-watch.d.ts +11 -0
  641. package/dist/types/state/mixins/breakpoint-watch.d.ts.map +1 -0
  642. package/dist/types/state/modules/api-resources.d.ts.map +1 -1
  643. package/dist/types/state/modules/box-models.d.ts +23 -0
  644. package/dist/types/state/modules/box-models.d.ts.map +1 -0
  645. package/dist/types/state/modules/breakpoints.d.ts.map +1 -1
  646. package/dist/types/state/modules/builder-edit-mode.d.ts.map +1 -1
  647. package/dist/types/state/modules/components-meta.d.ts.map +1 -1
  648. package/dist/types/state/modules/element-imperative-handles.d.ts +7 -0
  649. package/dist/types/state/modules/element-imperative-handles.d.ts.map +1 -0
  650. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  651. package/dist/types/state/modules/is-in-builder.d.ts.map +1 -1
  652. package/dist/types/state/modules/is-preview.d.ts +6 -0
  653. package/dist/types/state/modules/is-preview.d.ts.map +1 -0
  654. package/dist/types/state/modules/locale.d.ts.map +1 -1
  655. package/dist/types/state/modules/localized-resources-map.d.ts.map +1 -1
  656. package/dist/types/state/modules/pointer.d.ts +12 -0
  657. package/dist/types/state/modules/pointer.d.ts.map +1 -0
  658. package/dist/types/state/modules/prop-controllers.d.ts.map +1 -1
  659. package/dist/types/state/modules/react-components.d.ts.map +1 -1
  660. package/dist/types/state/modules/read-only-documents.d.ts.map +1 -1
  661. package/dist/types/state/modules/read-write/box-models.d.ts +12 -9
  662. package/dist/types/state/modules/read-write/box-models.d.ts.map +1 -1
  663. package/dist/types/state/modules/read-write-documents.d.ts +14 -0
  664. package/dist/types/state/modules/read-write-documents.d.ts.map +1 -0
  665. package/dist/types/state/modules/site-version.d.ts.map +1 -1
  666. package/dist/types/state/react-builder-preview.d.ts +93 -26
  667. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  668. package/dist/types/state/react-page.d.ts +136 -20
  669. package/dist/types/state/react-page.d.ts.map +1 -1
  670. package/dist/types/state/read-only-state.d.ts +10 -1
  671. package/dist/types/state/read-only-state.d.ts.map +1 -1
  672. package/dist/types/state/read-write-state.d.ts +12 -6
  673. package/dist/types/state/read-write-state.d.ts.map +1 -1
  674. package/dist/types/state/shared-api.d.ts.map +1 -1
  675. package/dist/types/state/store.d.ts +86 -0
  676. package/dist/types/state/store.d.ts.map +1 -0
  677. package/dist/types/state/translations/get.d.ts +1 -1
  678. package/dist/types/state/translations/get.d.ts.map +1 -1
  679. package/dist/types/state/translations/merge.d.ts +1 -1
  680. package/dist/types/state/translations/merge.d.ts.map +1 -1
  681. package/dist/types/state/unified-state.d.ts +9 -0
  682. package/dist/types/state/unified-state.d.ts.map +1 -0
  683. package/dist/types/translations/index.d.ts +6 -0
  684. package/dist/types/translations/index.d.ts.map +1 -0
  685. package/dist/types/unstable-framework-support/index.d.ts +1 -1
  686. package/dist/types/unstable-framework-support/index.d.ts.map +1 -1
  687. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts +2 -0
  688. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts.map +1 -0
  689. package/dist/types/utils/deferred.d.ts +7 -0
  690. package/dist/types/utils/deferred.d.ts.map +1 -0
  691. package/dist/types/utils/ref-counted-map.d.ts +32 -0
  692. package/dist/types/utils/ref-counted-map.d.ts.map +1 -0
  693. package/package.json +3 -3
  694. package/dist/cjs/state/middleware/prop-controller-handles.js.map +0 -1
  695. package/dist/cjs/state/middleware/read-write/makeswift-api-client-sync.js.map +0 -1
  696. package/dist/esm/state/middleware/prop-controller-handles.js.map +0 -1
  697. package/dist/esm/state/middleware/read-write/makeswift-api-client-sync.js.map +0 -1
  698. package/dist/types/state/middleware/prop-controller-handles.d.ts.map +0 -1
  699. package/dist/types/state/middleware/read-write/makeswift-api-client-sync.d.ts +0 -5
  700. package/dist/types/state/middleware/read-write/makeswift-api-client-sync.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/controls/serialization/index.ts"],"sourcesContent":["import { type SerializedRecord, type DeserializeControlOptions } from './base'\n\nexport function isSerializedRecord(r: unknown): r is SerializedRecord {\n return r != null && typeof r === 'object' && 'type' in r && typeof r.type === 'string'\n}\n\nexport type DeserializeControlRecordsOptions = {\n onError?: (err: Error, context: { key: string; serializedControl: unknown }) => void\n} & Partial<Pick<DeserializeControlOptions, 'plugins'>>\n\nexport function deserializeControlRecords<T>(\n serializedControls: Record<string, unknown>,\n deserialize: (\n serializedControl: SerializedRecord,\n options?: Partial<DeserializeControlOptions>,\n ) => T,\n { onError, plugins }: DeserializeControlRecordsOptions = {},\n): Record<string, T> {\n return Object.entries(serializedControls).reduce<Record<string, T>>(\n (deserializedControls, [key, serializedControl]) => {\n try {\n if (!isSerializedRecord(serializedControl)) {\n throw new Error(\n `Expected serialized control data, got ${JSON.stringify(serializedControl)}`,\n )\n }\n const deserializedControl = deserialize(serializedControl, { plugins })\n return { ...deserializedControls, [key]: deserializedControl }\n } catch (err: unknown) {\n const error =\n err instanceof Error\n ? new Error(`Could not deserialize control for \"${key}\": ${err.message}`, {\n cause: err,\n })\n : new Error(`Could not deserialize control for \"${key}\", unknown error: ${err}`)\n\n onError?.(error, { key, serializedControl })\n\n return deserializedControls\n }\n },\n {},\n )\n}\n"],"mappings":"AAEO,SAAS,mBAAmB,GAAmC;AACpE,SAAO,KAAK,QAAQ,OAAO,MAAM,YAAY,UAAU,KAAK,OAAO,EAAE,SAAS;AAChF;AAMO,SAAS,0BACd,oBACA,aAIA,EAAE,SAAS,QAAQ,IAAsC,CAAC,GACvC;AACnB,SAAO,OAAO,QAAQ,kBAAkB,EAAE;AAAA,IACxC,CAAC,sBAAsB,CAAC,KAAK,iBAAiB,MAAM;AAClD,UAAI;AACF,YAAI,CAAC,mBAAmB,iBAAiB,GAAG;AAC1C,gBAAM,IAAI;AAAA,YACR,yCAAyC,KAAK,UAAU,iBAAiB,CAAC;AAAA,UAC5E;AAAA,QACF;AACA,cAAM,sBAAsB,YAAY,mBAAmB,EAAE,QAAQ,CAAC;AACtE,eAAO,EAAE,GAAG,sBAAsB,CAAC,GAAG,GAAG,oBAAoB;AAAA,MAC/D,SAAS,KAAc;AACrB,cAAM,QACJ,eAAe,QACX,IAAI,MAAM,sCAAsC,GAAG,MAAM,IAAI,OAAO,IAAI;AAAA,UACtE,OAAO;AAAA,QACT,CAAC,IACD,IAAI,MAAM,sCAAsC,GAAG,qBAAqB,GAAG,EAAE;AAEnF,kBAAU,OAAO,EAAE,KAAK,kBAAkB,CAAC;AAE3C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,52 @@
1
+ function isSerializedFunction(value) {
2
+ return value instanceof MessagePort;
3
+ }
4
+ function serializeFunction(func) {
5
+ const messageChannel = new MessageChannel();
6
+ messageChannel.port1.onmessage = ({ data: [callId, args] }) => {
7
+ Promise.resolve().then(() => func.apply(null, args)).then((result) => messageChannel.port1.postMessage([callId, result]));
8
+ };
9
+ return messageChannel.port2;
10
+ }
11
+ function onmessageHandler() {
12
+ let nextCallId = 0;
13
+ const calls = /* @__PURE__ */ new Map();
14
+ const result = ({ data: [callId, result2] }) => {
15
+ calls.get(callId)?.(result2);
16
+ calls.delete(callId);
17
+ };
18
+ result.newCall = (resolve) => {
19
+ const callId = nextCallId++;
20
+ calls.set(callId, resolve);
21
+ return callId;
22
+ };
23
+ return result;
24
+ }
25
+ function deserializeFunction(serializedFunction) {
26
+ if (serializedFunction.onmessage == null) {
27
+ serializedFunction.onmessage = onmessageHandler();
28
+ }
29
+ return function deserializedFunction(...args) {
30
+ return new Promise((resolve) => {
31
+ const { newCall } = serializedFunction.onmessage;
32
+ if (newCall == null) {
33
+ throw new Error(
34
+ `Deserialized function call failed: 'onmessage' handler is missing 'newCall' method`
35
+ );
36
+ }
37
+ const callId = newCall(resolve);
38
+ serializedFunction.postMessage([callId, args]);
39
+ });
40
+ };
41
+ }
42
+ const functionDeserializationPlugin = {
43
+ match: isSerializedFunction,
44
+ deserialize: (value) => deserializeFunction(value)
45
+ };
46
+ export {
47
+ deserializeFunction,
48
+ functionDeserializationPlugin,
49
+ isSerializedFunction,
50
+ serializeFunction
51
+ };
52
+ //# sourceMappingURL=function-serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/controls/serialization/message-port/function-serialization.ts"],"sourcesContent":["import {\n DeserializationPlugin,\n type AnyFunction,\n type SerializedFunctionReturnType,\n type DeserializedFunction,\n} from '@makeswift/controls'\n\nexport { type DeserializedFunction } from '@makeswift/controls'\n\ndeclare const SerializedFunctionTag: unique symbol\n\ntype ResolveCallPromise<T extends AnyFunction> = (value: SerializedFunctionReturnType<T>) => void\n\ntype OnMessageHandler<T extends AnyFunction> = MessagePort['onmessage'] & {\n newCall?(resolve: ResolveCallPromise<T>): number\n}\n\nexport type SerializedFunction<T extends AnyFunction> = MessagePort & {\n onmessage: OnMessageHandler<T>\n readonly [SerializedFunctionTag]: T\n}\n\nexport function isSerializedFunction(value: any): value is SerializedFunction<AnyFunction> {\n return value instanceof MessagePort\n}\n\ntype CallID = number\n\nexport function serializeFunction<T extends AnyFunction>(func: T): SerializedFunction<T> {\n type CallMessageEvent = MessageEvent<[CallID, Parameters<T>]>\n\n const messageChannel = new MessageChannel()\n\n messageChannel.port1.onmessage = ({ data: [callId, args] }: CallMessageEvent) => {\n Promise.resolve()\n .then(() => func.apply(null, args))\n .then(result => messageChannel.port1.postMessage([callId, result]))\n }\n\n return messageChannel.port2 as SerializedFunction<T>\n}\n\nfunction onmessageHandler<T extends AnyFunction>(): OnMessageHandler<T> {\n type ResultMessageEvent = MessageEvent<[CallID, SerializedFunctionReturnType<T>]>\n let nextCallId = 0\n const calls = new Map<CallID, ResolveCallPromise<T>>()\n\n const result: OnMessageHandler<T> = ({ data: [callId, result] }: ResultMessageEvent) => {\n calls.get(callId)?.(result)\n calls.delete(callId)\n }\n\n result.newCall = (resolve: ResolveCallPromise<T>) => {\n const callId = nextCallId++\n calls.set(callId, resolve)\n return callId\n }\n\n return result\n}\n\nexport function deserializeFunction<T extends AnyFunction>(\n serializedFunction: SerializedFunction<T>,\n): DeserializedFunction<T> {\n if (serializedFunction.onmessage == null) {\n serializedFunction.onmessage = onmessageHandler<T>()\n }\n\n return function deserializedFunction(...args) {\n return new Promise(resolve => {\n const { newCall } = serializedFunction.onmessage\n if (newCall == null) {\n throw new Error(\n `Deserialized function call failed: 'onmessage' handler is missing 'newCall' method`,\n )\n }\n\n const callId = newCall(resolve)\n serializedFunction.postMessage([callId, args])\n })\n }\n}\n\nexport const functionDeserializationPlugin: DeserializationPlugin<\n SerializedFunction<AnyFunction>,\n DeserializedFunction<AnyFunction>\n> = {\n match: isSerializedFunction,\n deserialize: value => deserializeFunction(value),\n}\n"],"mappings":"AAsBO,SAAS,qBAAqB,OAAsD;AACzF,SAAO,iBAAiB;AAC1B;AAIO,SAAS,kBAAyC,MAAgC;AAGvF,QAAM,iBAAiB,IAAI,eAAe;AAE1C,iBAAe,MAAM,YAAY,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,MAAwB;AAC/E,YAAQ,QAAQ,EACb,KAAK,MAAM,KAAK,MAAM,MAAM,IAAI,CAAC,EACjC,KAAK,YAAU,eAAe,MAAM,YAAY,CAAC,QAAQ,MAAM,CAAC,CAAC;AAAA,EACtE;AAEA,SAAO,eAAe;AACxB;AAEA,SAAS,mBAA+D;AAEtE,MAAI,aAAa;AACjB,QAAM,QAAQ,oBAAI,IAAmC;AAErD,QAAM,SAA8B,CAAC,EAAE,MAAM,CAAC,QAAQA,OAAM,EAAE,MAA0B;AACtF,UAAM,IAAI,MAAM,IAAIA,OAAM;AAC1B,UAAM,OAAO,MAAM;AAAA,EACrB;AAEA,SAAO,UAAU,CAAC,YAAmC;AACnD,UAAM,SAAS;AACf,UAAM,IAAI,QAAQ,OAAO;AACzB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,oBACd,oBACyB;AACzB,MAAI,mBAAmB,aAAa,MAAM;AACxC,uBAAmB,YAAY,iBAAoB;AAAA,EACrD;AAEA,SAAO,SAAS,wBAAwB,MAAM;AAC5C,WAAO,IAAI,QAAQ,aAAW;AAC5B,YAAM,EAAE,QAAQ,IAAI,mBAAmB;AACvC,UAAI,WAAW,MAAM;AACnB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,YAAM,SAAS,QAAQ,OAAO;AAC9B,yBAAmB,YAAY,CAAC,QAAQ,IAAI,CAAC;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;AAEO,MAAM,gCAGT;AAAA,EACF,OAAO;AAAA,EACP,aAAa,WAAS,oBAAoB,KAAK;AACjD;","names":["result"]}
@@ -0,0 +1,3 @@
1
+ export * from "./function-serialization";
2
+ export * from "./visitor";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/controls/serialization/message-port/index.ts"],"sourcesContent":["export * from './function-serialization'\nexport * from './visitor'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,24 @@
1
+ import { isFunction } from "@makeswift/controls";
2
+ import { BaseControlSerializationVisitor } from "../base/visitor";
3
+ import { serializeFunction } from "./function-serialization";
4
+ class ClientMessagePortSerializationVisitor extends BaseControlSerializationVisitor {
5
+ transferables = [];
6
+ constructor() {
7
+ const serializeFunctionPlugin = {
8
+ match: isFunction,
9
+ serialize: (val) => {
10
+ const r = serializeFunction(val);
11
+ this.transferables.push(r);
12
+ return r;
13
+ }
14
+ };
15
+ super([serializeFunctionPlugin]);
16
+ }
17
+ getTransferables() {
18
+ return [...this.transferables];
19
+ }
20
+ }
21
+ export {
22
+ ClientMessagePortSerializationVisitor
23
+ };
24
+ //# sourceMappingURL=visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/controls/serialization/message-port/visitor.ts"],"sourcesContent":["import { AnyFunction, SerializationPlugin, isFunction } from '@makeswift/controls'\n\nimport { BaseControlSerializationVisitor } from '../base/visitor'\nimport { serializeFunction } from './function-serialization'\n\nexport class ClientMessagePortSerializationVisitor extends BaseControlSerializationVisitor {\n private transferables: Transferable[] = []\n\n constructor() {\n const serializeFunctionPlugin: SerializationPlugin<AnyFunction> = {\n match: isFunction,\n serialize: (val: AnyFunction) => {\n const r = serializeFunction(val)\n this.transferables.push(r)\n return r\n },\n }\n\n super([serializeFunctionPlugin])\n }\n\n getTransferables(): Transferable[] {\n return [...this.transferables]\n }\n}\n"],"mappings":"AAAA,SAA2C,kBAAkB;AAE7D,SAAS,uCAAuC;AAChD,SAAS,yBAAyB;AAE3B,MAAM,8CAA8C,gCAAgC;AAAA,EACjF,gBAAgC,CAAC;AAAA,EAEzC,cAAc;AACZ,UAAM,0BAA4D;AAAA,MAChE,OAAO;AAAA,MACP,WAAW,CAAC,QAAqB;AAC/B,cAAM,IAAI,kBAAkB,GAAG;AAC/B,aAAK,cAAc,KAAK,CAAC;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,CAAC,uBAAuB,CAAC;AAAA,EACjC;AAAA,EAEA,mBAAmC;AACjC,WAAO,CAAC,GAAG,KAAK,aAAa;AAAA,EAC/B;AACF;","names":[]}
@@ -28,13 +28,22 @@ async function config({
28
28
  },
29
29
  customRoutes: async (route) => {
30
30
  if (route === "/redirect-preview") {
31
- const request = req instanceof NextRequest ? req : new NextRequest(req, req);
31
+ const request = req instanceof NextRequest ? req : requestToNextRequest(req);
32
32
  return { res: await appRouterRedirectPreviewHandler(request, context, client) };
33
33
  }
34
34
  return null;
35
35
  }
36
36
  };
37
37
  }
38
+ const requestToNextRequest = (req) => {
39
+ const hasBody = req.method !== "GET" && req.method !== "HEAD";
40
+ return new NextRequest(req.url, {
41
+ method: req.method,
42
+ headers: req.headers,
43
+ signal: req.signal,
44
+ ...hasBody && { body: req.body, duplex: "half" }
45
+ });
46
+ };
38
47
  export {
39
48
  argsPattern,
40
49
  config
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/next/api-handler/config/app-router.ts"],"sourcesContent":["import { P } from 'ts-pattern'\nimport { revalidatePath, revalidateTag } from 'next/cache'\nimport { NextRequest } from 'next/server'\n\nimport { MAKESWIFT_CACHE_TAG } from '../../cache'\nimport { type ApiResponse } from '../../../api-handler/request-response'\n\nimport { appRouterRedirectPreviewHandler } from '../handlers/app-router-redirect-preview'\nimport { MAKESWIFT_SITE_VERSION_COOKIE, PRERENDER_BYPASS_COOKIE } from '../preview'\n\nimport { validateApiRoute, type ApiHandlerConfig } from './base'\nimport { MakeswiftClient } from '../../../client'\n\ntype Params = { [key: string]: string | string[] }\ntype Context = { params: Promise<Params> }\n\n// In older versions of Next (prior to 15.5.0), the inbound request is typed as\n// a `NextRequest`, but requests received at runtime fail the `instanceof\n// NextRequest` check. In newer versions of Next, requests are correctly typed\n// as `NextRequest`. To maintain compatibility across all Next.js versions, we\n// match against both.\nexport type ApiHandlerArgs = [NextRequest | Request, Context]\nexport const argsPattern = [\n P.union(P.instanceOf(Request), P.instanceOf(NextRequest)),\n P.any,\n] as const\n\nexport async function config({\n req,\n context,\n client,\n}: {\n req: NextRequest | Request\n context: Context\n client: MakeswiftClient\n}): Promise<ApiHandlerConfig> {\n return {\n req,\n route: validateApiRoute(await context.params),\n previewCookieNames: [PRERENDER_BYPASS_COOKIE, MAKESWIFT_SITE_VERSION_COOKIE],\n sendResponse: async (res: ApiResponse): Promise<Response | void> => res,\n revalidationHandler: async (path?: string): Promise<void> => {\n if (path != null) {\n revalidatePath(path)\n } else {\n revalidateTag(MAKESWIFT_CACHE_TAG)\n }\n },\n customRoutes: async (route: string) => {\n if (route === '/redirect-preview') {\n // Convert any Request to NextRequest, if necessary. Due to an issue in\n // how NextRequests are instantiated, we have to pass the original\n // request to the constructor twice. See\n // https://github.com/vercel/next.js/issues/52967\n const request = req instanceof NextRequest ? req : new NextRequest(req, req)\n return { res: await appRouterRedirectPreviewHandler(request, context, client) }\n }\n\n return null\n },\n }\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,SAAS,gBAAgB,qBAAqB;AAC9C,SAAS,mBAAmB;AAE5B,SAAS,2BAA2B;AAGpC,SAAS,uCAAuC;AAChD,SAAS,+BAA+B,+BAA+B;AAEvE,SAAS,wBAA+C;AAYjD,MAAM,cAAc;AAAA,EACzB,EAAE,MAAM,EAAE,WAAW,OAAO,GAAG,EAAE,WAAW,WAAW,CAAC;AAAA,EACxD,EAAE;AACJ;AAEA,eAAsB,OAAO;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAI8B;AAC5B,SAAO;AAAA,IACL;AAAA,IACA,OAAO,iBAAiB,MAAM,QAAQ,MAAM;AAAA,IAC5C,oBAAoB,CAAC,yBAAyB,6BAA6B;AAAA,IAC3E,cAAc,OAAO,QAA+C;AAAA,IACpE,qBAAqB,OAAO,SAAiC;AAC3D,UAAI,QAAQ,MAAM;AAChB,uBAAe,IAAI;AAAA,MACrB,OAAO;AACL,sBAAc,mBAAmB;AAAA,MACnC;AAAA,IACF;AAAA,IACA,cAAc,OAAO,UAAkB;AACrC,UAAI,UAAU,qBAAqB;AAKjC,cAAM,UAAU,eAAe,cAAc,MAAM,IAAI,YAAY,KAAK,GAAG;AAC3E,eAAO,EAAE,KAAK,MAAM,gCAAgC,SAAS,SAAS,MAAM,EAAE;AAAA,MAChF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/config/app-router.ts"],"sourcesContent":["import { P } from 'ts-pattern'\nimport { revalidatePath, revalidateTag } from 'next/cache'\nimport { NextRequest } from 'next/server'\n\nimport { MAKESWIFT_CACHE_TAG } from '../../cache'\nimport { type ApiResponse } from '../../../api-handler/request-response'\n\nimport { appRouterRedirectPreviewHandler } from '../handlers/app-router-redirect-preview'\nimport { MAKESWIFT_SITE_VERSION_COOKIE, PRERENDER_BYPASS_COOKIE } from '../preview'\n\nimport { validateApiRoute, type ApiHandlerConfig } from './base'\nimport { MakeswiftClient } from '../../../client'\n\ntype Params = { [key: string]: string | string[] }\ntype Context = { params: Promise<Params> }\n\n// In older versions of Next (prior to 15.5.0), the inbound request is typed as\n// a `NextRequest`, but requests received at runtime fail the `instanceof\n// NextRequest` check. In newer versions of Next, requests are correctly typed\n// as `NextRequest`. To maintain compatibility across all Next.js versions, we\n// match against both.\nexport type ApiHandlerArgs = [NextRequest | Request, Context]\nexport const argsPattern = [\n P.union(P.instanceOf(Request), P.instanceOf(NextRequest)),\n P.any,\n] as const\n\nexport async function config({\n req,\n context,\n client,\n}: {\n req: NextRequest | Request\n context: Context\n client: MakeswiftClient\n}): Promise<ApiHandlerConfig> {\n return {\n req,\n route: validateApiRoute(await context.params),\n previewCookieNames: [PRERENDER_BYPASS_COOKIE, MAKESWIFT_SITE_VERSION_COOKIE],\n sendResponse: async (res: ApiResponse): Promise<Response | void> => res,\n revalidationHandler: async (path?: string): Promise<void> => {\n if (path != null) {\n revalidatePath(path)\n } else {\n revalidateTag(MAKESWIFT_CACHE_TAG)\n }\n },\n customRoutes: async (route: string) => {\n if (route === '/redirect-preview') {\n // Convert any `Request` to `NextRequest` for consumption by the `appRouterRedirectPreviewHandler` call below\n const request = req instanceof NextRequest ? req : requestToNextRequest(req)\n return { res: await appRouterRedirectPreviewHandler(request, context, client) }\n }\n\n return null\n },\n }\n}\n\nconst requestToNextRequest = (req: Request): NextRequest => {\n // Because we're supporting multiple versions of Next.js, we have to account for two issues here:\n //\n // 1. https://github.com/vercel/next.js/issues/52967 for Next prior to v13.4.17 (see\n // https://github.com/vercel/next.js/commit/e1133cf0970e80d8f88e6c3516881780703eb7f5\n // and https://github.com/vercel/next.js/commit/af97755e3c62a6b786b98b98ef8e91bf3d595957),\n // which requires us to pass two arguments to the `NextRequest` constructor in order to\n // fully copy the request\n //\n // 2. https://github.com/better-auth/better-auth/issues/8194#issuecomment-3975332346 for Next 16\n // when running on Node.js 24+, which prevents us from simply passing the original request\n // as the second argument to the `NextRequest` constructor, thus the manual copying of the\n // relevant server-side properties\n\n const hasBody = req.method !== 'GET' && req.method !== 'HEAD'\n\n return new NextRequest(req.url, {\n method: req.method,\n headers: req.headers,\n signal: req.signal,\n ...(hasBody && { body: req.body, duplex: 'half' }),\n })\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,SAAS,gBAAgB,qBAAqB;AAC9C,SAAS,mBAAmB;AAE5B,SAAS,2BAA2B;AAGpC,SAAS,uCAAuC;AAChD,SAAS,+BAA+B,+BAA+B;AAEvE,SAAS,wBAA+C;AAYjD,MAAM,cAAc;AAAA,EACzB,EAAE,MAAM,EAAE,WAAW,OAAO,GAAG,EAAE,WAAW,WAAW,CAAC;AAAA,EACxD,EAAE;AACJ;AAEA,eAAsB,OAAO;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAI8B;AAC5B,SAAO;AAAA,IACL;AAAA,IACA,OAAO,iBAAiB,MAAM,QAAQ,MAAM;AAAA,IAC5C,oBAAoB,CAAC,yBAAyB,6BAA6B;AAAA,IAC3E,cAAc,OAAO,QAA+C;AAAA,IACpE,qBAAqB,OAAO,SAAiC;AAC3D,UAAI,QAAQ,MAAM;AAChB,uBAAe,IAAI;AAAA,MACrB,OAAO;AACL,sBAAc,mBAAmB;AAAA,MACnC;AAAA,IACF;AAAA,IACA,cAAc,OAAO,UAAkB;AACrC,UAAI,UAAU,qBAAqB;AAEjC,cAAM,UAAU,eAAe,cAAc,MAAM,qBAAqB,GAAG;AAC3E,eAAO,EAAE,KAAK,MAAM,gCAAgC,SAAS,SAAS,MAAM,EAAE;AAAA,MAChF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,MAAM,uBAAuB,CAAC,QAA8B;AAc1D,QAAM,UAAU,IAAI,WAAW,SAAS,IAAI,WAAW;AAEvD,SAAO,IAAI,YAAY,IAAI,KAAK;AAAA,IAC9B,QAAQ,IAAI;AAAA,IACZ,SAAS,IAAI;AAAA,IACb,QAAQ,IAAI;AAAA,IACZ,GAAI,WAAW,EAAE,MAAM,IAAI,MAAM,QAAQ,OAAO;AAAA,EAClD,CAAC;AACH;","names":[]}
@@ -16,7 +16,7 @@ async function config({
16
16
  sendResponse: (apiResponse) => pipeResponseTo(apiResponse, res),
17
17
  revalidationHandler: async (path) => {
18
18
  if (path != null) {
19
- res.revalidate(path);
19
+ await res.revalidate(path);
20
20
  } else {
21
21
  }
22
22
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/next/api-handler/config/pages-router.ts"],"sourcesContent":["import { P } from 'ts-pattern'\nimport { NextApiRequest, NextApiResponse } from 'next'\n\nimport { type ApiResponse } from '../../../api-handler/request-response'\nimport { toApiRequest, pipeResponseTo } from '../../../api-handler/node-request-response'\n\nimport { pagesRouterRedirectPreviewHandler } from '../handlers/pages-router-redirect-preview'\nimport { PRERENDER_BYPASS_COOKIE, PREVIEW_DATA_COOKIE } from '../preview'\n\nimport { validateApiRoute, type ApiHandlerConfig } from './base'\nimport { MakeswiftClient } from '../../../client'\n\nexport type ApiHandlerArgs = [NextApiRequest, NextApiResponse]\nexport const argsPattern = [P.any, P.any] as const\n\nexport async function config({\n req,\n res,\n client,\n}: {\n req: NextApiRequest\n res: NextApiResponse\n client: MakeswiftClient\n}): Promise<ApiHandlerConfig> {\n return {\n req: toApiRequest(req),\n route: validateApiRoute(await apiRequestParams(req)),\n previewCookieNames: [PRERENDER_BYPASS_COOKIE, PREVIEW_DATA_COOKIE],\n\n sendResponse: (apiResponse: ApiResponse): Promise<Response | void> =>\n pipeResponseTo(apiResponse, res),\n\n revalidationHandler: async (path?: string): Promise<void> => {\n if (path != null) {\n res.revalidate(path)\n } else {\n // No-op, Pages Router does not support tag-based revalidation\n }\n },\n\n customRoutes: async (route: string) => {\n if (route === '/redirect-preview') {\n return { res: await pagesRouterRedirectPreviewHandler(req, res, client) }\n }\n\n return null\n },\n }\n}\n\nfunction apiRequestParams(request: NextApiRequest): Promise<NextApiRequest['query']> {\n // `NextApiRequest.query` prop became async in Next.js 15, but it's not reflected in the type definition;\n // force-casting it to a `Promise` manually\n return Promise.resolve(request.query)\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAIlB,SAAS,cAAc,sBAAsB;AAE7C,SAAS,yCAAyC;AAClD,SAAS,yBAAyB,2BAA2B;AAE7D,SAAS,wBAA+C;AAIjD,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG;AAExC,eAAsB,OAAO;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAI8B;AAC5B,SAAO;AAAA,IACL,KAAK,aAAa,GAAG;AAAA,IACrB,OAAO,iBAAiB,MAAM,iBAAiB,GAAG,CAAC;AAAA,IACnD,oBAAoB,CAAC,yBAAyB,mBAAmB;AAAA,IAEjE,cAAc,CAAC,gBACb,eAAe,aAAa,GAAG;AAAA,IAEjC,qBAAqB,OAAO,SAAiC;AAC3D,UAAI,QAAQ,MAAM;AAChB,YAAI,WAAW,IAAI;AAAA,MACrB,OAAO;AAAA,MAEP;AAAA,IACF;AAAA,IAEA,cAAc,OAAO,UAAkB;AACrC,UAAI,UAAU,qBAAqB;AACjC,eAAO,EAAE,KAAK,MAAM,kCAAkC,KAAK,KAAK,MAAM,EAAE;AAAA,MAC1E;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,SAA2D;AAGnF,SAAO,QAAQ,QAAQ,QAAQ,KAAK;AACtC;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/config/pages-router.ts"],"sourcesContent":["import { P } from 'ts-pattern'\nimport { NextApiRequest, NextApiResponse } from 'next'\n\nimport { type ApiResponse } from '../../../api-handler/request-response'\nimport { toApiRequest, pipeResponseTo } from '../../../api-handler/node-request-response'\n\nimport { pagesRouterRedirectPreviewHandler } from '../handlers/pages-router-redirect-preview'\nimport { PRERENDER_BYPASS_COOKIE, PREVIEW_DATA_COOKIE } from '../preview'\n\nimport { validateApiRoute, type ApiHandlerConfig } from './base'\nimport { MakeswiftClient } from '../../../client'\n\nexport type ApiHandlerArgs = [NextApiRequest, NextApiResponse]\nexport const argsPattern = [P.any, P.any] as const\n\nexport async function config({\n req,\n res,\n client,\n}: {\n req: NextApiRequest\n res: NextApiResponse\n client: MakeswiftClient\n}): Promise<ApiHandlerConfig> {\n return {\n req: toApiRequest(req),\n route: validateApiRoute(await apiRequestParams(req)),\n previewCookieNames: [PRERENDER_BYPASS_COOKIE, PREVIEW_DATA_COOKIE],\n\n sendResponse: (apiResponse: ApiResponse): Promise<Response | void> =>\n pipeResponseTo(apiResponse, res),\n\n revalidationHandler: async (path?: string): Promise<void> => {\n if (path != null) {\n await res.revalidate(path)\n } else {\n // No-op, Pages Router does not support tag-based revalidation\n }\n },\n\n customRoutes: async (route: string) => {\n if (route === '/redirect-preview') {\n return { res: await pagesRouterRedirectPreviewHandler(req, res, client) }\n }\n\n return null\n },\n }\n}\n\nfunction apiRequestParams(request: NextApiRequest): Promise<NextApiRequest['query']> {\n // `NextApiRequest.query` prop became async in Next.js 15, but it's not reflected in the type definition;\n // force-casting it to a `Promise` manually\n return Promise.resolve(request.query)\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAIlB,SAAS,cAAc,sBAAsB;AAE7C,SAAS,yCAAyC;AAClD,SAAS,yBAAyB,2BAA2B;AAE7D,SAAS,wBAA+C;AAIjD,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG;AAExC,eAAsB,OAAO;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAI8B;AAC5B,SAAO;AAAA,IACL,KAAK,aAAa,GAAG;AAAA,IACrB,OAAO,iBAAiB,MAAM,iBAAiB,GAAG,CAAC;AAAA,IACnD,oBAAoB,CAAC,yBAAyB,mBAAmB;AAAA,IAEjE,cAAc,CAAC,gBACb,eAAe,aAAa,GAAG;AAAA,IAEjC,qBAAqB,OAAO,SAAiC;AAC3D,UAAI,QAAQ,MAAM;AAChB,cAAM,IAAI,WAAW,IAAI;AAAA,MAC3B,OAAO;AAAA,MAEP;AAAA,IACF;AAAA,IAEA,cAAc,OAAO,UAAkB;AACrC,UAAI,UAAU,qBAAqB;AACjC,eAAO,EAAE,KAAK,MAAM,kCAAkC,KAAK,KAAK,MAAM,EAAE;AAAA,MAC1E;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,SAA2D;AAGnF,SAAO,QAAQ,QAAQ,QAAQ,KAAK;AACtC;","names":[]}
@@ -3,7 +3,10 @@ import { jsx } from "react/jsx-runtime";
3
3
  import { useMemo } from "react";
4
4
  import NextImage from "next/image";
5
5
  import { useIsPagesRouter } from "../../hooks/use-is-pages-router";
6
- import { FrameworkContext } from "../../../runtimes/react/components/framework-context";
6
+ import {
7
+ FrameworkContext,
8
+ versionedFetch
9
+ } from "../../../runtimes/react/components/framework-context";
7
10
  import { MAKESWIFT_CACHE_TAG } from "../../cache";
8
11
  import { context as appRouterContext } from "./app-router";
9
12
  import { context as pagesRouterContext } from "./pages-router";
@@ -18,7 +21,7 @@ function FrameworkProvider({
18
21
  ...isPagesRouter ? pagesRouterContext : appRouterContext,
19
22
  Image: NextImage,
20
23
  Link,
21
- fetch: (url, init) => fetch(url, { ...init, next: { tags: [MAKESWIFT_CACHE_TAG] } })
24
+ versionedFetch: (siteVersion) => (url, init) => versionedFetch(siteVersion)(url, { ...init, next: { tags: [MAKESWIFT_CACHE_TAG] } })
22
25
  }),
23
26
  [isPagesRouter]
24
27
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/next/components/framework-provider/index.tsx"],"sourcesContent":["'use client'\n\nimport { type PropsWithChildren, useMemo } from 'react'\nimport NextImage from 'next/image'\n\nimport { useIsPagesRouter } from '../../hooks/use-is-pages-router'\nimport { FrameworkContext } from '../../../runtimes/react/components/framework-context'\nimport { MAKESWIFT_CACHE_TAG } from '../../cache'\n\nimport { context as appRouterContext } from './app-router'\nimport { context as pagesRouterContext } from './pages-router'\nimport { Link } from './link'\n\nexport function FrameworkProvider({\n children,\n forcePagesRouter,\n}: PropsWithChildren<{ forcePagesRouter?: boolean }>) {\n const isPagesRouter = useIsPagesRouter() || forcePagesRouter\n const context = useMemo<FrameworkContext>(\n () => ({\n ...(isPagesRouter ? pagesRouterContext : appRouterContext),\n Image: NextImage,\n Link,\n fetch: (url, init) => fetch(url, { ...init, next: { tags: [MAKESWIFT_CACHE_TAG] } }),\n }),\n [isPagesRouter],\n )\n\n return <FrameworkContext.Provider value={context}>{children}</FrameworkContext.Provider>\n}\n"],"mappings":";AA4BS;AA1BT,SAAiC,eAAe;AAChD,OAAO,eAAe;AAEtB,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;AAEpC,SAAS,WAAW,wBAAwB;AAC5C,SAAS,WAAW,0BAA0B;AAC9C,SAAS,YAAY;AAEd,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAAsD;AACpD,QAAM,gBAAgB,iBAAiB,KAAK;AAC5C,QAAM,UAAU;AAAA,IACd,OAAO;AAAA,MACL,GAAI,gBAAgB,qBAAqB;AAAA,MACzC,OAAO;AAAA,MACP;AAAA,MACA,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,EAAE,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;AAAA,IACrF;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAEA,SAAO,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,SAAU,UAAS;AAC9D;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/next/components/framework-provider/index.tsx"],"sourcesContent":["'use client'\n\nimport { type PropsWithChildren, useMemo } from 'react'\nimport NextImage from 'next/image'\n\nimport { useIsPagesRouter } from '../../hooks/use-is-pages-router'\nimport {\n FrameworkContext,\n versionedFetch,\n} from '../../../runtimes/react/components/framework-context'\n\nimport { type SiteVersion } from '../../../api/site-version'\nimport { MAKESWIFT_CACHE_TAG } from '../../cache'\n\nimport { context as appRouterContext } from './app-router'\nimport { context as pagesRouterContext } from './pages-router'\nimport { Link } from './link'\n\nexport function FrameworkProvider({\n children,\n forcePagesRouter,\n}: PropsWithChildren<{ forcePagesRouter?: boolean }>) {\n const isPagesRouter = useIsPagesRouter() || forcePagesRouter\n const context = useMemo<FrameworkContext>(\n () => ({\n ...(isPagesRouter ? pagesRouterContext : appRouterContext),\n Image: NextImage,\n Link,\n versionedFetch: (siteVersion: SiteVersion | null) => (url, init) =>\n versionedFetch(siteVersion)(url, { ...init, next: { tags: [MAKESWIFT_CACHE_TAG] } }),\n }),\n [isPagesRouter],\n )\n\n return <FrameworkContext.Provider value={context}>{children}</FrameworkContext.Provider>\n}\n"],"mappings":";AAkCS;AAhCT,SAAiC,eAAe;AAChD,OAAO,eAAe;AAEtB,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAGP,SAAS,2BAA2B;AAEpC,SAAS,WAAW,wBAAwB;AAC5C,SAAS,WAAW,0BAA0B;AAC9C,SAAS,YAAY;AAEd,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAAsD;AACpD,QAAM,gBAAgB,iBAAiB,KAAK;AAC5C,QAAM,UAAU;AAAA,IACd,OAAO;AAAA,MACL,GAAI,gBAAgB,qBAAqB;AAAA,MACzC,OAAO;AAAA,MACP;AAAA,MACA,gBAAgB,CAAC,gBAAoC,CAAC,KAAK,SACzD,eAAe,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;AAAA,IACvF;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAEA,SAAO,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,SAAU,UAAS;AAC9D;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/next/components/tests/controls/color-control/fixtures.ts"],"sourcesContent":["import { type ValueType } from '@makeswift/controls'\nimport { ColorDefinition } from '@makeswift/controls'\n\nimport { APIResourceType, type Swatch } from '../../../../../api'\nimport { type CacheData } from '../../../../../api/client'\n\ntype SwatchData = Omit<Swatch, 'id'>\n\nexport const swatchId = '[swatch-test-id]'\nexport const swatch: SwatchData = {\n __typename: APIResourceType.Swatch,\n hue: 238,\n saturation: 87,\n lightness: 49,\n}\n\nexport const value: ValueType<ColorDefinition> = {\n swatchId,\n alpha: 0.5,\n}\n\nexport const cacheData = (swatch: SwatchData | null): Partial<CacheData> => ({\n apiResources: {\n Swatch: [{ id: swatchId, value: swatch == null ? null : { id: swatchId, ...swatch } }],\n },\n})\n"],"mappings":"AAGA,SAAS,uBAAoC;AAKtC,MAAM,WAAW;AACjB,MAAM,SAAqB;AAAA,EAChC,YAAY,gBAAgB;AAAA,EAC5B,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,WAAW;AACb;AAEO,MAAM,QAAoC;AAAA,EAC/C;AAAA,EACA,OAAO;AACT;AAEO,MAAM,YAAY,CAACA,aAAmD;AAAA,EAC3E,cAAc;AAAA,IACZ,QAAQ,CAAC,EAAE,IAAI,UAAU,OAAOA,WAAU,OAAO,OAAO,EAAE,IAAI,UAAU,GAAGA,QAAO,EAAE,CAAC;AAAA,EACvF;AACF;","names":["swatch"]}
1
+ {"version":3,"sources":["../../../../../../../src/next/components/tests/controls/color-control/fixtures.ts"],"sourcesContent":["import { type ValueType } from '@makeswift/controls'\nimport { ColorDefinition } from '@makeswift/controls'\n\nimport { APIResourceType, type Swatch } from '../../../../../api'\nimport { type CacheData } from '../../../../../api/react'\n\ntype SwatchData = Omit<Swatch, 'id'>\n\nexport const swatchId = '[swatch-test-id]'\nexport const swatch: SwatchData = {\n __typename: APIResourceType.Swatch,\n hue: 238,\n saturation: 87,\n lightness: 49,\n}\n\nexport const value: ValueType<ColorDefinition> = {\n swatchId,\n alpha: 0.5,\n}\n\nexport const cacheData = (swatch: SwatchData | null): Partial<CacheData> => ({\n apiResources: {\n Swatch: [{ id: swatchId, value: swatch == null ? null : { id: swatchId, ...swatch } }],\n },\n})\n"],"mappings":"AAGA,SAAS,uBAAoC;AAKtC,MAAM,WAAW;AACjB,MAAM,SAAqB;AAAA,EAChC,YAAY,gBAAgB;AAAA,EAC5B,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,WAAW;AACb;AAEO,MAAM,QAAoC;AAAA,EAC/C;AAAA,EACA,OAAO;AACT;AAEO,MAAM,YAAY,CAACA,aAAmD;AAAA,EAC3E,cAAc;AAAA,IACZ,QAAQ,CAAC,EAAE,IAAI,UAAU,OAAOA,WAAU,OAAO,OAAO,EAAE,IAAI,UAAU,GAAGA,QAAO,EAAE,CAAC;AAAA,EACvF;AACF;","names":["swatch"]}
@@ -5,6 +5,7 @@ import { JSDOM } from "jsdom";
5
5
  import { render, screen } from "@testing-library/react";
6
6
  import "@testing-library/jest-dom";
7
7
  import { ServerInsertedHTMLContext } from "next/navigation";
8
+ import { ReactRuntime } from "../../../../react";
8
9
  import { MakeswiftComponent } from "../../../../runtimes/react/components/MakeswiftComponent";
9
10
  import { Page } from "../../page";
10
11
  import { isServer } from "../../../../utils/is-server";
@@ -67,7 +68,7 @@ async function testPageControlPropRendering(controlDefinition, {
67
68
  propKey: controlData
68
69
  }
69
70
  };
70
- const runtime = Testing.createReactRuntime();
71
+ const runtime = new ReactRuntime();
71
72
  registerComponents?.(runtime);
72
73
  runtime.registerComponent(
73
74
  forwardRef(({ propKey }, ref) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/next/components/tests/controls/page-control-prop-rendering.tsx"],"sourcesContent":["import { type ReactNode, Fragment, forwardRef, useRef, isValidElement, act } from 'react'\nimport { renderToReadableStream } from 'react-dom/server'\nimport { JSDOM } from 'jsdom'\nimport { render, screen } from '@testing-library/react'\nimport '@testing-library/jest-dom'\nimport { ServerInsertedHTMLContext } from 'next/navigation'\n\nimport { type Data, type ValueType, type DataType, ControlDefinition } from '@makeswift/controls'\n\nimport { type CacheData } from '../../../../api/client'\nimport { ElementData } from '../../../../state/read-only-state'\nimport { ReactRuntime } from '../../../../runtimes/react/react-runtime'\nimport { MakeswiftComponent } from '../../../../runtimes/react/components/MakeswiftComponent'\nimport { Page } from '../../page'\nimport { isServer } from '../../../../utils/is-server'\nimport * as Testing from '../../../testing'\n\nconst ROOT_ID = '00000000-0000-0000-0000-000000000000'\nconst ELEMENT_ID = '11111111-1111-1111-1111-111111111111'\n\nconst renderProp = (prop: any) =>\n prop === undefined ? 'undefined' : isValidElement(prop) ? prop : JSON.stringify(prop)\n\nconst propSnapshot = (prop: HTMLElement | null) =>\n prop?.childElementCount ? prop.childNodes : parseStringifiedProp(prop?.textContent ?? '')\n\nconst parseStringifiedProp = (prop: string) => (prop === 'undefined' ? undefined : JSON.parse(prop))\n\nasync function streamToString(stream: ReadableStream) {\n const reader = stream.getReader()\n const decoder = new TextDecoder()\n\n let result = ''\n\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n result += decoder.decode(value, { stream: true })\n }\n\n return result\n}\n\nasync function renderToString(element: ReactNode) {\n return await streamToString(await renderToReadableStream(element))\n}\n\nasync function serverSideRender(children: ReactNode) {\n // wrap the children in a context provider to capture server-inserted HTML, see\n // https://github.com/vercel/next.js/blob/canary/packages/next/src/server/app-render/server-inserted-html.tsx\n const serverInsertedCallbacks: (() => React.ReactNode)[] = []\n\n const elementTree = (\n <ServerInsertedHTMLContext.Provider value={handler => serverInsertedCallbacks.push(handler)}>\n {children}\n </ServerInsertedHTMLContext.Provider>\n )\n\n const elementsHTML = await renderToString(elementTree)\n\n const serverInsertedNodes = serverInsertedCallbacks.map((callback, index) => (\n <Fragment key={'__next_server_inserted__' + index}>{callback()}</Fragment>\n ))\n\n const headHTML = await renderToString(serverInsertedNodes)\n\n const dom = new JSDOM(\n `<!DOCTYPE html><head>${headHTML}</head><body><div id=\"root\">${elementsHTML}</div></body></div>`,\n {\n runScripts: 'dangerously',\n },\n )\n\n return dom.window.document\n}\n\nexport async function testPageControlPropRendering<D extends ControlDefinition>(\n controlDefinition: D,\n {\n toData,\n value,\n locale,\n cacheData,\n expectedRenders,\n registerComponents,\n action,\n rootElements = [],\n }: {\n toData?: (value: ValueType<D>) => DataType<D>\n value: ValueType<D> | undefined\n locale?: string | null\n cacheData?: Partial<CacheData>\n expectedRenders?: number\n registerComponents?: (runtime: ReactRuntime) => void\n action?: (element: HTMLElement) => Promise<void>\n rootElements?: ElementData[]\n },\n) {\n // Arrange\n const controlData: DataType<D> | Data =\n value !== undefined ? (toData ? toData(value) : controlDefinition.toData(value)) : undefined\n\n const testComponentMeta = {\n type: 'TestComponent',\n label: 'Test Component',\n }\n\n const testId = 'test-id'\n const renderCountTestId = 'render-count-test-id'\n const elementData: ElementData = {\n key: ELEMENT_ID,\n type: testComponentMeta.type,\n props: {\n propKey: controlData,\n },\n }\n\n const runtime = Testing.createReactRuntime()\n registerComponents?.(runtime)\n\n // Act\n runtime.registerComponent(\n forwardRef<HTMLDivElement, { propKey?: any }>(({ propKey }, ref) => {\n const renderCount = useRef(0)\n ++renderCount.current\n\n return (\n <div ref={ref}>\n <div data-testid={renderCountTestId}>{renderCount.current}</div>\n <div data-testid={testId}>{renderProp(propKey)}</div>\n </div>\n )\n }),\n {\n ...testComponentMeta,\n props: {\n propKey: controlDefinition as any,\n },\n },\n )\n\n const testElementTree = (component: ReactNode) => (\n <Testing.ReactProvider runtime={runtime}>{component}</Testing.ReactProvider>\n )\n\n if (!isServer()) {\n const rootElementData: ElementData = Testing.createRootComponent(\n [elementData, ...rootElements],\n ROOT_ID,\n )\n\n const snapshot = Testing.createMakeswiftPageSnapshot(rootElementData, { locale, cacheData })\n\n // Assert\n await act(async () => render(testElementTree(<Page snapshot={snapshot} />)))\n\n if (action) {\n await act(async () => {\n await action(screen.getByTestId(testId))\n })\n }\n\n expect(snapshot).toMatchSnapshot('snapshot')\n expect(propSnapshot(screen.getByTestId(testId))).toMatchSnapshot('resolvedValue')\n\n if (expectedRenders != null) {\n expect(Number(screen.getByTestId(renderCountTestId).textContent)).toBe(expectedRenders)\n }\n } else {\n // test server-side rendering using a component snapshot\n console.assert(action == null)\n console.assert(rootElements.length === 0)\n\n const snapshot = Testing.createMakeswiftComponentSnapshot(elementData, { locale, cacheData })\n const elementTree = testElementTree(\n <MakeswiftComponent snapshot={snapshot} {...testComponentMeta} />,\n )\n\n const document = await serverSideRender(elementTree)\n const getByTestId = (id: string): HTMLElement | null =>\n document.querySelector(`[data-testid=\"${id}\"]`)\n\n expect(propSnapshot(getByTestId(testId))).toMatchSnapshot('resolvedValue')\n expect([...document.querySelectorAll('style')].map(n => n.textContent)).toMatchSnapshot(\n 'component styles',\n )\n expect(Number(getByTestId(renderCountTestId)?.textContent)).toBe(1)\n }\n}\n"],"mappings":"AAqDI,cA0EI,YA1EJ;AArDJ,SAAyB,UAAU,YAAY,QAAQ,gBAAgB,WAAW;AAClF,SAAS,8BAA8B;AACvC,SAAS,aAAa;AACtB,SAAS,QAAQ,cAAc;AAC/B,OAAO;AACP,SAAS,iCAAiC;AAO1C,SAAS,0BAA0B;AACnC,SAAS,YAAY;AACrB,SAAS,gBAAgB;AACzB,YAAY,aAAa;AAEzB,MAAM,UAAU;AAChB,MAAM,aAAa;AAEnB,MAAM,aAAa,CAAC,SAClB,SAAS,SAAY,cAAc,eAAe,IAAI,IAAI,OAAO,KAAK,UAAU,IAAI;AAEtF,MAAM,eAAe,CAAC,SACpB,MAAM,oBAAoB,KAAK,aAAa,qBAAqB,MAAM,eAAe,EAAE;AAE1F,MAAM,uBAAuB,CAAC,SAAkB,SAAS,cAAc,SAAY,KAAK,MAAM,IAAI;AAElG,eAAe,eAAe,QAAwB;AACpD,QAAM,SAAS,OAAO,UAAU;AAChC,QAAM,UAAU,IAAI,YAAY;AAEhC,MAAI,SAAS;AAEb,SAAO,MAAM;AACX,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,QAAI;AAAM;AACV,cAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,EAClD;AAEA,SAAO;AACT;AAEA,eAAe,eAAe,SAAoB;AAChD,SAAO,MAAM,eAAe,MAAM,uBAAuB,OAAO,CAAC;AACnE;AAEA,eAAe,iBAAiB,UAAqB;AAGnD,QAAM,0BAAqD,CAAC;AAE5D,QAAM,cACJ,oBAAC,0BAA0B,UAA1B,EAAmC,OAAO,aAAW,wBAAwB,KAAK,OAAO,GACvF,UACH;AAGF,QAAM,eAAe,MAAM,eAAe,WAAW;AAErD,QAAM,sBAAsB,wBAAwB,IAAI,CAAC,UAAU,UACjE,oBAAC,YAAmD,mBAAS,KAA9C,6BAA6B,KAAmB,CAChE;AAED,QAAM,WAAW,MAAM,eAAe,mBAAmB;AAEzD,QAAM,MAAM,IAAI;AAAA,IACd,wBAAwB,QAAQ,+BAA+B,YAAY;AAAA,IAC3E;AAAA,MACE,YAAY;AAAA,IACd;AAAA,EACF;AAEA,SAAO,IAAI,OAAO;AACpB;AAEA,eAAsB,6BACpB,mBACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,CAAC;AAClB,GAUA;AAEA,QAAM,cACJ,UAAU,SAAa,SAAS,OAAO,KAAK,IAAI,kBAAkB,OAAO,KAAK,IAAK;AAErF,QAAM,oBAAoB;AAAA,IACxB,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAEA,QAAM,SAAS;AACf,QAAM,oBAAoB;AAC1B,QAAM,cAA2B;AAAA,IAC/B,KAAK;AAAA,IACL,MAAM,kBAAkB;AAAA,IACxB,OAAO;AAAA,MACL,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,UAAU,QAAQ,mBAAmB;AAC3C,uBAAqB,OAAO;AAG5B,UAAQ;AAAA,IACN,WAA8C,CAAC,EAAE,QAAQ,GAAG,QAAQ;AAClE,YAAM,cAAc,OAAO,CAAC;AAC5B,QAAE,YAAY;AAEd,aACE,qBAAC,SAAI,KACH;AAAA,4BAAC,SAAI,eAAa,mBAAoB,sBAAY,SAAQ;AAAA,QAC1D,oBAAC,SAAI,eAAa,QAAS,qBAAW,OAAO,GAAE;AAAA,SACjD;AAAA,IAEJ,CAAC;AAAA,IACD;AAAA,MACE,GAAG;AAAA,MACH,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,QAAM,kBAAkB,CAAC,cACvB,oBAAC,QAAQ,eAAR,EAAsB,SAAmB,qBAAU;AAGtD,MAAI,CAAC,SAAS,GAAG;AACf,UAAM,kBAA+B,QAAQ;AAAA,MAC3C,CAAC,aAAa,GAAG,YAAY;AAAA,MAC7B;AAAA,IACF;AAEA,UAAM,WAAW,QAAQ,4BAA4B,iBAAiB,EAAE,QAAQ,UAAU,CAAC;AAG3F,UAAM,IAAI,YAAY,OAAO,gBAAgB,oBAAC,QAAK,UAAoB,CAAE,CAAC,CAAC;AAE3E,QAAI,QAAQ;AACV,YAAM,IAAI,YAAY;AACpB,cAAM,OAAO,OAAO,YAAY,MAAM,CAAC;AAAA,MACzC,CAAC;AAAA,IACH;AAEA,WAAO,QAAQ,EAAE,gBAAgB,UAAU;AAC3C,WAAO,aAAa,OAAO,YAAY,MAAM,CAAC,CAAC,EAAE,gBAAgB,eAAe;AAEhF,QAAI,mBAAmB,MAAM;AAC3B,aAAO,OAAO,OAAO,YAAY,iBAAiB,EAAE,WAAW,CAAC,EAAE,KAAK,eAAe;AAAA,IACxF;AAAA,EACF,OAAO;AAEL,YAAQ,OAAO,UAAU,IAAI;AAC7B,YAAQ,OAAO,aAAa,WAAW,CAAC;AAExC,UAAM,WAAW,QAAQ,iCAAiC,aAAa,EAAE,QAAQ,UAAU,CAAC;AAC5F,UAAM,cAAc;AAAA,MAClB,oBAAC,sBAAmB,UAAqB,GAAG,mBAAmB;AAAA,IACjE;AAEA,UAAM,WAAW,MAAM,iBAAiB,WAAW;AACnD,UAAM,cAAc,CAAC,OACnB,SAAS,cAAc,iBAAiB,EAAE,IAAI;AAEhD,WAAO,aAAa,YAAY,MAAM,CAAC,CAAC,EAAE,gBAAgB,eAAe;AACzE,WAAO,CAAC,GAAG,SAAS,iBAAiB,OAAO,CAAC,EAAE,IAAI,OAAK,EAAE,WAAW,CAAC,EAAE;AAAA,MACtE;AAAA,IACF;AACA,WAAO,OAAO,YAAY,iBAAiB,GAAG,WAAW,CAAC,EAAE,KAAK,CAAC;AAAA,EACpE;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/next/components/tests/controls/page-control-prop-rendering.tsx"],"sourcesContent":["import { type ReactNode, Fragment, forwardRef, useRef, isValidElement, act } from 'react';\nimport { renderToReadableStream } from 'react-dom/server'\nimport { JSDOM } from 'jsdom'\nimport { render, screen } from '@testing-library/react'\nimport '@testing-library/jest-dom'\nimport { ServerInsertedHTMLContext } from 'next/navigation'\n\nimport { type Data, type ValueType, type DataType, ControlDefinition } from '@makeswift/controls'\n\nimport { type CacheData } from '../../../../api/react'\nimport { ElementData } from '../../../../state/react-page'\nimport { ReactRuntime } from '../../../../react'\nimport { MakeswiftComponent } from '../../../../runtimes/react/components/MakeswiftComponent'\nimport { Page } from '../../page'\nimport { isServer } from '../../../../utils/is-server'\nimport * as Testing from '../../../testing'\n\nconst ROOT_ID = '00000000-0000-0000-0000-000000000000'\nconst ELEMENT_ID = '11111111-1111-1111-1111-111111111111'\n\nconst renderProp = (prop: any) =>\n prop === undefined ? 'undefined' : isValidElement(prop) ? prop : JSON.stringify(prop)\n\nconst propSnapshot = (prop: HTMLElement | null) =>\n prop?.childElementCount ? prop.childNodes : parseStringifiedProp(prop?.textContent ?? '')\n\nconst parseStringifiedProp = (prop: string) => (prop === 'undefined' ? undefined : JSON.parse(prop))\n\nasync function streamToString(stream: ReadableStream) {\n const reader = stream.getReader()\n const decoder = new TextDecoder()\n\n let result = ''\n\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n result += decoder.decode(value, { stream: true })\n }\n\n return result\n}\n\nasync function renderToString(element: ReactNode) {\n return await streamToString(await renderToReadableStream(element))\n}\n\nasync function serverSideRender(children: ReactNode) {\n // wrap the children in a context provider to capture server-inserted HTML, see\n // https://github.com/vercel/next.js/blob/canary/packages/next/src/server/app-render/server-inserted-html.tsx\n const serverInsertedCallbacks: (() => React.ReactNode)[] = []\n\n const elementTree = (\n <ServerInsertedHTMLContext.Provider value={handler => serverInsertedCallbacks.push(handler)}>\n {children}\n </ServerInsertedHTMLContext.Provider>\n )\n\n const elementsHTML = await renderToString(elementTree)\n\n const serverInsertedNodes = serverInsertedCallbacks.map((callback, index) => (\n <Fragment key={'__next_server_inserted__' + index}>{callback()}</Fragment>\n ))\n\n const headHTML = await renderToString(serverInsertedNodes)\n\n const dom = new JSDOM(\n `<!DOCTYPE html><head>${headHTML}</head><body><div id=\"root\">${elementsHTML}</div></body></div>`,\n {\n runScripts: 'dangerously',\n },\n )\n\n return dom.window.document\n}\n\nexport async function testPageControlPropRendering<D extends ControlDefinition>(\n controlDefinition: D,\n {\n toData,\n value,\n locale,\n cacheData,\n expectedRenders,\n registerComponents,\n action,\n rootElements = [],\n }: {\n toData?: (value: ValueType<D>) => DataType<D>\n value: ValueType<D> | undefined\n locale?: string | null\n cacheData?: Partial<CacheData>\n expectedRenders?: number\n registerComponents?: (runtime: ReactRuntime) => void\n action?: (element: HTMLElement) => Promise<void>\n rootElements?: ElementData[]\n },\n) {\n // Arrange\n const controlData: DataType<D> | Data =\n value !== undefined ? (toData ? toData(value) : controlDefinition.toData(value)) : undefined\n\n const testComponentMeta = {\n type: 'TestComponent',\n label: 'Test Component',\n }\n\n const testId = 'test-id'\n const renderCountTestId = 'render-count-test-id'\n const elementData: ElementData = {\n key: ELEMENT_ID,\n type: testComponentMeta.type,\n props: {\n propKey: controlData,\n },\n }\n\n const runtime = new ReactRuntime()\n registerComponents?.(runtime)\n\n // Act\n runtime.registerComponent(\n forwardRef<HTMLDivElement, { propKey?: any }>(({ propKey }, ref) => {\n const renderCount = useRef(0)\n ++renderCount.current\n\n return (\n <div ref={ref}>\n <div data-testid={renderCountTestId}>{renderCount.current}</div>\n <div data-testid={testId}>{renderProp(propKey)}</div>\n </div>\n )\n }),\n {\n ...testComponentMeta,\n props: {\n propKey: controlDefinition as any,\n },\n },\n )\n\n const testElementTree = (component: ReactNode) => (\n <Testing.ReactProvider runtime={runtime}>{component}</Testing.ReactProvider>\n )\n\n if (!isServer()) {\n const rootElementData: ElementData = Testing.createRootComponent(\n [elementData, ...rootElements],\n ROOT_ID,\n )\n\n const snapshot = Testing.createMakeswiftPageSnapshot(rootElementData, { locale, cacheData })\n\n // Assert\n await act(async () => render(testElementTree(<Page snapshot={snapshot} />)))\n\n if (action) {\n await act(async () => {\n await action(screen.getByTestId(testId))\n })\n }\n\n expect(snapshot).toMatchSnapshot('snapshot')\n expect(propSnapshot(screen.getByTestId(testId))).toMatchSnapshot('resolvedValue')\n\n if (expectedRenders != null) {\n expect(Number(screen.getByTestId(renderCountTestId).textContent)).toBe(expectedRenders)\n }\n } else {\n // test server-side rendering using a component snapshot\n console.assert(action == null)\n console.assert(rootElements.length === 0)\n\n const snapshot = Testing.createMakeswiftComponentSnapshot(elementData, { locale, cacheData })\n const elementTree = testElementTree(\n <MakeswiftComponent snapshot={snapshot} {...testComponentMeta} />,\n )\n\n const document = await serverSideRender(elementTree)\n const getByTestId = (id: string): HTMLElement | null =>\n document.querySelector(`[data-testid=\"${id}\"]`)\n\n expect(propSnapshot(getByTestId(testId))).toMatchSnapshot('resolvedValue')\n expect([...document.querySelectorAll('style')].map(n => n.textContent)).toMatchSnapshot(\n 'component styles',\n )\n expect(Number(getByTestId(renderCountTestId)?.textContent)).toBe(1)\n }\n}\n"],"mappings":"AAqDI,cA0EI,YA1EJ;AArDJ,SAAyB,UAAU,YAAY,QAAQ,gBAAgB,WAAW;AAClF,SAAS,8BAA8B;AACvC,SAAS,aAAa;AACtB,SAAS,QAAQ,cAAc;AAC/B,OAAO;AACP,SAAS,iCAAiC;AAM1C,SAAS,oBAAoB;AAC7B,SAAS,0BAA0B;AACnC,SAAS,YAAY;AACrB,SAAS,gBAAgB;AACzB,YAAY,aAAa;AAEzB,MAAM,UAAU;AAChB,MAAM,aAAa;AAEnB,MAAM,aAAa,CAAC,SAClB,SAAS,SAAY,cAAc,eAAe,IAAI,IAAI,OAAO,KAAK,UAAU,IAAI;AAEtF,MAAM,eAAe,CAAC,SACpB,MAAM,oBAAoB,KAAK,aAAa,qBAAqB,MAAM,eAAe,EAAE;AAE1F,MAAM,uBAAuB,CAAC,SAAkB,SAAS,cAAc,SAAY,KAAK,MAAM,IAAI;AAElG,eAAe,eAAe,QAAwB;AACpD,QAAM,SAAS,OAAO,UAAU;AAChC,QAAM,UAAU,IAAI,YAAY;AAEhC,MAAI,SAAS;AAEb,SAAO,MAAM;AACX,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,QAAI;AAAM;AACV,cAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,EAClD;AAEA,SAAO;AACT;AAEA,eAAe,eAAe,SAAoB;AAChD,SAAO,MAAM,eAAe,MAAM,uBAAuB,OAAO,CAAC;AACnE;AAEA,eAAe,iBAAiB,UAAqB;AAGnD,QAAM,0BAAqD,CAAC;AAE5D,QAAM,cACJ,oBAAC,0BAA0B,UAA1B,EAAmC,OAAO,aAAW,wBAAwB,KAAK,OAAO,GACvF,UACH;AAGF,QAAM,eAAe,MAAM,eAAe,WAAW;AAErD,QAAM,sBAAsB,wBAAwB,IAAI,CAAC,UAAU,UACjE,oBAAC,YAAmD,mBAAS,KAA9C,6BAA6B,KAAmB,CAChE;AAED,QAAM,WAAW,MAAM,eAAe,mBAAmB;AAEzD,QAAM,MAAM,IAAI;AAAA,IACd,wBAAwB,QAAQ,+BAA+B,YAAY;AAAA,IAC3E;AAAA,MACE,YAAY;AAAA,IACd;AAAA,EACF;AAEA,SAAO,IAAI,OAAO;AACpB;AAEA,eAAsB,6BACpB,mBACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,CAAC;AAClB,GAUA;AAEA,QAAM,cACJ,UAAU,SAAa,SAAS,OAAO,KAAK,IAAI,kBAAkB,OAAO,KAAK,IAAK;AAErF,QAAM,oBAAoB;AAAA,IACxB,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAEA,QAAM,SAAS;AACf,QAAM,oBAAoB;AAC1B,QAAM,cAA2B;AAAA,IAC/B,KAAK;AAAA,IACL,MAAM,kBAAkB;AAAA,IACxB,OAAO;AAAA,MACL,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,aAAa;AACjC,uBAAqB,OAAO;AAG5B,UAAQ;AAAA,IACN,WAA8C,CAAC,EAAE,QAAQ,GAAG,QAAQ;AAClE,YAAM,cAAc,OAAO,CAAC;AAC5B,QAAE,YAAY;AAEd,aACE,qBAAC,SAAI,KACH;AAAA,4BAAC,SAAI,eAAa,mBAAoB,sBAAY,SAAQ;AAAA,QAC1D,oBAAC,SAAI,eAAa,QAAS,qBAAW,OAAO,GAAE;AAAA,SACjD;AAAA,IAEJ,CAAC;AAAA,IACD;AAAA,MACE,GAAG;AAAA,MACH,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAEA,QAAM,kBAAkB,CAAC,cACvB,oBAAC,QAAQ,eAAR,EAAsB,SAAmB,qBAAU;AAGtD,MAAI,CAAC,SAAS,GAAG;AACf,UAAM,kBAA+B,QAAQ;AAAA,MAC3C,CAAC,aAAa,GAAG,YAAY;AAAA,MAC7B;AAAA,IACF;AAEA,UAAM,WAAW,QAAQ,4BAA4B,iBAAiB,EAAE,QAAQ,UAAU,CAAC;AAG3F,UAAM,IAAI,YAAY,OAAO,gBAAgB,oBAAC,QAAK,UAAoB,CAAE,CAAC,CAAC;AAE3E,QAAI,QAAQ;AACV,YAAM,IAAI,YAAY;AACpB,cAAM,OAAO,OAAO,YAAY,MAAM,CAAC;AAAA,MACzC,CAAC;AAAA,IACH;AAEA,WAAO,QAAQ,EAAE,gBAAgB,UAAU;AAC3C,WAAO,aAAa,OAAO,YAAY,MAAM,CAAC,CAAC,EAAE,gBAAgB,eAAe;AAEhF,QAAI,mBAAmB,MAAM;AAC3B,aAAO,OAAO,OAAO,YAAY,iBAAiB,EAAE,WAAW,CAAC,EAAE,KAAK,eAAe;AAAA,IACxF;AAAA,EACF,OAAO;AAEL,YAAQ,OAAO,UAAU,IAAI;AAC7B,YAAQ,OAAO,aAAa,WAAW,CAAC;AAExC,UAAM,WAAW,QAAQ,iCAAiC,aAAa,EAAE,QAAQ,UAAU,CAAC;AAC5F,UAAM,cAAc;AAAA,MAClB,oBAAC,sBAAmB,UAAqB,GAAG,mBAAmB;AAAA,IACjE;AAEA,UAAM,WAAW,MAAM,iBAAiB,WAAW;AACnD,UAAM,cAAc,CAAC,OACnB,SAAS,cAAc,iBAAiB,EAAE,IAAI;AAEhD,WAAO,aAAa,YAAY,MAAM,CAAC,CAAC,EAAE,gBAAgB,eAAe;AACzE,WAAO,CAAC,GAAG,SAAS,iBAAiB,OAAO,CAAC,EAAE,IAAI,OAAK,EAAE,WAAW,CAAC,EAAE;AAAA,MACtE;AAAA,IACF;AACA,WAAO,OAAO,YAAY,iBAAiB,GAAG,WAAW,CAAC,EAAE,KAAK,CAAC;AAAA,EACpE;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/next/components/tests/controls/rich-text-v2-control/fixtures.tsx"],"sourcesContent":["import { APIResourceType, type Swatch, type Typography } from '../../../../../api'\n\nimport * as Fixture from '../fixtures/rich-text-v2'\nimport { type CacheData } from '../../../../../api/client'\n\nconst swatchId = 'U3dhdGNoOmJkODYxMWM5LTNiZjItNDM3MS1iMmU4LTBmMmNlMDZjNDE1OA=='\nconst swatch: Swatch = {\n __typename: APIResourceType.Swatch,\n id: swatchId,\n hue: 238,\n saturation: 87,\n lightness: 49,\n}\n\nconst typographyId = 'VHlwb2dyYXBoeTowNGI4OTZlMC0wZWEyLTRkMTMtYmU3ZS0xYmY1M2VmMjBiZjc='\nconst typography: Typography = {\n __typename: APIResourceType.Typography,\n id: typographyId,\n name: 'Body',\n style: [\n {\n deviceId: 'desktop',\n value: {\n fontFamily: 'Lato',\n fontSize: { value: 16, unit: 'px' },\n color: null,\n lineHeight: null,\n letterSpacing: null,\n fontWeight: null,\n textAlign: null,\n uppercase: null,\n underline: null,\n strikethrough: null,\n italic: null,\n },\n },\n ],\n}\n\nexport const value = Fixture.data\nexport const cacheData = (): Partial<CacheData> => ({\n apiResources: {\n Swatch: [\n {\n id: swatchId,\n value: swatch,\n },\n ],\n Typography: [\n {\n id: typographyId,\n value: typography,\n },\n ],\n },\n})\n"],"mappings":"AAAA,SAAS,uBAAqD;AAE9D,YAAY,aAAa;AAGzB,MAAM,WAAW;AACjB,MAAM,SAAiB;AAAA,EACrB,YAAY,gBAAgB;AAAA,EAC5B,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,WAAW;AACb;AAEA,MAAM,eAAe;AACrB,MAAM,aAAyB;AAAA,EAC7B,YAAY,gBAAgB;AAAA,EAC5B,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,OAAO;AAAA,IACL;AAAA,MACE,UAAU;AAAA,MACV,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,UAAU,EAAE,OAAO,IAAI,MAAM,KAAK;AAAA,QAClC,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WAAW;AAAA,QACX,eAAe;AAAA,QACf,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,QAAQ,QAAQ;AACtB,MAAM,YAAY,OAA2B;AAAA,EAClD,cAAc;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/next/components/tests/controls/rich-text-v2-control/fixtures.tsx"],"sourcesContent":["import { APIResourceType, type Swatch, type Typography } from '../../../../../api'\n\nimport * as Fixture from '../fixtures/rich-text-v2'\nimport { type CacheData } from '../../../../../api/react'\n\nconst swatchId = 'U3dhdGNoOmJkODYxMWM5LTNiZjItNDM3MS1iMmU4LTBmMmNlMDZjNDE1OA=='\nconst swatch: Swatch = {\n __typename: APIResourceType.Swatch,\n id: swatchId,\n hue: 238,\n saturation: 87,\n lightness: 49,\n}\n\nconst typographyId = 'VHlwb2dyYXBoeTowNGI4OTZlMC0wZWEyLTRkMTMtYmU3ZS0xYmY1M2VmMjBiZjc='\nconst typography: Typography = {\n __typename: APIResourceType.Typography,\n id: typographyId,\n name: 'Body',\n style: [\n {\n deviceId: 'desktop',\n value: {\n fontFamily: 'Lato',\n fontSize: { value: 16, unit: 'px' },\n color: null,\n lineHeight: null,\n letterSpacing: null,\n fontWeight: null,\n textAlign: null,\n uppercase: null,\n underline: null,\n strikethrough: null,\n italic: null,\n },\n },\n ],\n}\n\nexport const value = Fixture.data\nexport const cacheData = (): Partial<CacheData> => ({\n apiResources: {\n Swatch: [\n {\n id: swatchId,\n value: swatch,\n },\n ],\n Typography: [\n {\n id: typographyId,\n value: typography,\n },\n ],\n },\n})\n"],"mappings":"AAAA,SAAS,uBAAqD;AAE9D,YAAY,aAAa;AAGzB,MAAM,WAAW;AACjB,MAAM,SAAiB;AAAA,EACrB,YAAY,gBAAgB;AAAA,EAC5B,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,WAAW;AACb;AAEA,MAAM,eAAe;AACrB,MAAM,aAAyB;AAAA,EAC7B,YAAY,gBAAgB;AAAA,EAC5B,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,OAAO;AAAA,IACL;AAAA,MACE,UAAU;AAAA,MACV,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,UAAU,EAAE,OAAO,IAAI,MAAM,KAAK;AAAA,QAClC,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WAAW;AAAA,QACX,eAAe;AAAA,QACf,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,QAAQ,QAAQ;AACtB,MAAM,YAAY,OAA2B;AAAA,EAClD,cAAc;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,6 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { Suspense, act } from "react";
3
3
  import { render } from "@testing-library/react";
4
+ import { ReactRuntime } from "../../../../react";
4
5
  import * as Testing from "../../../testing";
5
6
  import { MakeswiftComponent } from "../../../../runtimes/react/components/MakeswiftComponent";
6
7
  import { Checkbox, TextInput } from "@makeswift/controls";
@@ -24,7 +25,7 @@ const elementData = (props) => ({
24
25
  props
25
26
  });
26
27
  async function renderComponentSnapshot(snapshot, component = CustomComponent, { builtinSuspense } = {}) {
27
- const runtime = Testing.createReactRuntime();
28
+ const runtime = new ReactRuntime();
28
29
  runtime.registerComponent(component, {
29
30
  type: CustomComponentType,
30
31
  label: "Custom Component",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/next/components/tests/makeswift-component/fixtures.tsx"],"sourcesContent":["import { Suspense, act } from 'react'\nimport { render } from '@testing-library/react'\n\nimport * as Testing from '../../../testing'\nimport { MakeswiftComponent } from '../../../../runtimes/react/components/MakeswiftComponent'\nimport { type MakeswiftComponentSnapshot } from '../../../../client'\n\nimport { Checkbox, TextInput } from '@makeswift/controls'\nimport { type ComponentType } from '../../../../state/read-only-state'\n\nexport const CustomComponentType = 'CustomComponent'\nexport const componentId = 'component-id'\nexport const containerId = 'container-id'\nexport const fallbackId = 'fallback-id'\n\nexport type ComponentProps = {\n text: string\n suspend: boolean\n}\n\nexport function CustomComponent({ text, suspend }: ComponentProps) {\n if (suspend) {\n throw new Promise(() => {}) // suspend indefinitely\n }\n\n return <div data-testid={componentId}>{text}</div>\n}\n\nexport function CustomComponentWithFallback(props: ComponentProps) {\n return (\n <Suspense fallback={<div data-testid={fallbackId}>Loading...</div>}>\n <CustomComponent {...props} />\n </Suspense>\n )\n}\n\nexport const elementData = (props: { text: string; suspend?: boolean }) => ({\n type: CustomComponentType,\n key: '0000-0000-0000-0000',\n props,\n})\n\nexport async function renderComponentSnapshot(\n snapshot: MakeswiftComponentSnapshot,\n component: ComponentType<ComponentProps> = CustomComponent,\n { builtinSuspense }: { builtinSuspense?: boolean } = {},\n) {\n const runtime = Testing.createReactRuntime()\n\n runtime.registerComponent(component, {\n type: CustomComponentType,\n label: 'Custom Component',\n builtinSuspense,\n props: {\n text: TextInput({ defaultValue: 'Default Text' }),\n suspend: Checkbox({ defaultValue: false, label: 'Suspend' }),\n },\n })\n\n await act(async () =>\n render(\n <Testing.ReactProvider runtime={runtime} siteVersion={null}>\n <div data-testid={containerId}>\n <MakeswiftComponent\n label=\"Embedded Component\"\n type={CustomComponentType}\n snapshot={snapshot}\n />\n </div>\n </Testing.ReactProvider>,\n ),\n )\n}\n"],"mappings":"AAyBS;AAzBT,SAAS,UAAU,WAAW;AAC9B,SAAS,cAAc;AAEvB,YAAY,aAAa;AACzB,SAAS,0BAA0B;AAGnC,SAAS,UAAU,iBAAiB;AAG7B,MAAM,sBAAsB;AAC5B,MAAM,cAAc;AACpB,MAAM,cAAc;AACpB,MAAM,aAAa;AAOnB,SAAS,gBAAgB,EAAE,MAAM,QAAQ,GAAmB;AACjE,MAAI,SAAS;AACX,UAAM,IAAI,QAAQ,MAAM;AAAA,IAAC,CAAC;AAAA,EAC5B;AAEA,SAAO,oBAAC,SAAI,eAAa,aAAc,gBAAK;AAC9C;AAEO,SAAS,4BAA4B,OAAuB;AACjE,SACE,oBAAC,YAAS,UAAU,oBAAC,SAAI,eAAa,YAAY,wBAAU,GAC1D,8BAAC,mBAAiB,GAAG,OAAO,GAC9B;AAEJ;AAEO,MAAM,cAAc,CAAC,WAAgD;AAAA,EAC1E,MAAM;AAAA,EACN,KAAK;AAAA,EACL;AACF;AAEA,eAAsB,wBACpB,UACA,YAA2C,iBAC3C,EAAE,gBAAgB,IAAmC,CAAC,GACtD;AACA,QAAM,UAAU,QAAQ,mBAAmB;AAE3C,UAAQ,kBAAkB,WAAW;AAAA,IACnC,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,OAAO;AAAA,MACL,MAAM,UAAU,EAAE,cAAc,eAAe,CAAC;AAAA,MAChD,SAAS,SAAS,EAAE,cAAc,OAAO,OAAO,UAAU,CAAC;AAAA,IAC7D;AAAA,EACF,CAAC;AAED,QAAM;AAAA,IAAI,YACR;AAAA,MACE,oBAAC,QAAQ,eAAR,EAAsB,SAAkB,aAAa,MACpD,8BAAC,SAAI,eAAa,aAChB;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,MAAM;AAAA,UACN;AAAA;AAAA,MACF,GACF,GACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/next/components/tests/makeswift-component/fixtures.tsx"],"sourcesContent":["import { Suspense, act } from 'react'\nimport { render } from '@testing-library/react'\n\nimport { ReactRuntime } from '../../../../react'\nimport * as Testing from '../../../testing'\nimport { MakeswiftComponent } from '../../../../runtimes/react/components/MakeswiftComponent'\nimport { type MakeswiftComponentSnapshot } from '../../../../client'\n\nimport { Checkbox, TextInput } from '@makeswift/controls'\nimport { ComponentType } from '../../../../state/react-page'\n\nexport const CustomComponentType = 'CustomComponent'\nexport const componentId = 'component-id'\nexport const containerId = 'container-id'\nexport const fallbackId = 'fallback-id'\n\nexport type ComponentProps = {\n text: string\n suspend: boolean\n}\n\nexport function CustomComponent({ text, suspend }: ComponentProps) {\n if (suspend) {\n throw new Promise(() => {}) // suspend indefinitely\n }\n\n return <div data-testid={componentId}>{text}</div>\n}\n\nexport function CustomComponentWithFallback(props: ComponentProps) {\n return (\n <Suspense fallback={<div data-testid={fallbackId}>Loading...</div>}>\n <CustomComponent {...props} />\n </Suspense>\n )\n}\n\nexport const elementData = (props: { text: string; suspend?: boolean }) => ({\n type: CustomComponentType,\n key: '0000-0000-0000-0000',\n props,\n})\n\nexport async function renderComponentSnapshot(\n snapshot: MakeswiftComponentSnapshot,\n component: ComponentType<ComponentProps> = CustomComponent,\n { builtinSuspense }: { builtinSuspense?: boolean } = {},\n) {\n const runtime = new ReactRuntime()\n\n runtime.registerComponent(component, {\n type: CustomComponentType,\n label: 'Custom Component',\n builtinSuspense,\n props: {\n text: TextInput({ defaultValue: 'Default Text' }),\n suspend: Checkbox({ defaultValue: false, label: 'Suspend' }),\n },\n })\n\n await act(async () =>\n render(\n <Testing.ReactProvider runtime={runtime} siteVersion={null}>\n <div data-testid={containerId}>\n <MakeswiftComponent\n label=\"Embedded Component\"\n type={CustomComponentType}\n snapshot={snapshot}\n />\n </div>\n </Testing.ReactProvider>,\n ),\n )\n}\n"],"mappings":"AA0BS;AA1BT,SAAS,UAAU,WAAW;AAC9B,SAAS,cAAc;AAEvB,SAAS,oBAAoB;AAC7B,YAAY,aAAa;AACzB,SAAS,0BAA0B;AAGnC,SAAS,UAAU,iBAAiB;AAG7B,MAAM,sBAAsB;AAC5B,MAAM,cAAc;AACpB,MAAM,cAAc;AACpB,MAAM,aAAa;AAOnB,SAAS,gBAAgB,EAAE,MAAM,QAAQ,GAAmB;AACjE,MAAI,SAAS;AACX,UAAM,IAAI,QAAQ,MAAM;AAAA,IAAC,CAAC;AAAA,EAC5B;AAEA,SAAO,oBAAC,SAAI,eAAa,aAAc,gBAAK;AAC9C;AAEO,SAAS,4BAA4B,OAAuB;AACjE,SACE,oBAAC,YAAS,UAAU,oBAAC,SAAI,eAAa,YAAY,wBAAU,GAC1D,8BAAC,mBAAiB,GAAG,OAAO,GAC9B;AAEJ;AAEO,MAAM,cAAc,CAAC,WAAgD;AAAA,EAC1E,MAAM;AAAA,EACN,KAAK;AAAA,EACL;AACF;AAEA,eAAsB,wBACpB,UACA,YAA2C,iBAC3C,EAAE,gBAAgB,IAAmC,CAAC,GACtD;AACA,QAAM,UAAU,IAAI,aAAa;AAEjC,UAAQ,kBAAkB,WAAW;AAAA,IACnC,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,OAAO;AAAA,MACL,MAAM,UAAU,EAAE,cAAc,eAAe,CAAC;AAAA,MAChD,SAAS,SAAS,EAAE,cAAc,OAAO,OAAO,UAAU,CAAC;AAAA,IAC7D;AAAA,EACF,CAAC;AAED,QAAM;AAAA,IAAI,YACR;AAAA,MACE,oBAAC,QAAQ,eAAR,EAAsB,SAAkB,aAAa,MACpD,8BAAC,SAAI,eAAa,aAChB;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,MAAM;AAAA,UACN;AAAA;AAAA,MACF,GACF,GACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -7,6 +7,7 @@ import {
7
7
  import { randomUUID } from "crypto";
8
8
  import { Page } from "../../page";
9
9
  import { act } from "react";
10
+ import { ReactRuntime } from "../../../../react";
10
11
  import * as Testing from "../../../testing";
11
12
  const pagePropControllerTest = (propDef, value, component, assert, options) => describe("Page", () => {
12
13
  test(`can render ${propDef.type} v0 data`, async () => {
@@ -26,7 +27,7 @@ const pagePropControllerTest = (propDef, value, component, assert, options) => d
26
27
  }
27
28
  ]);
28
29
  const snapshot = Testing.createMakeswiftPageSnapshot(elementData);
29
- const runtime = Testing.createReactRuntime();
30
+ const runtime = new ReactRuntime();
30
31
  runtime.registerComponent(component(testId), {
31
32
  type: TestComponentType,
32
33
  label: "TestComponent",
@@ -59,7 +60,7 @@ const pagePropControllerTest = (propDef, value, component, assert, options) => d
59
60
  }
60
61
  ]);
61
62
  const snapshot = Testing.createMakeswiftPageSnapshot(elementData);
62
- const runtime = Testing.createReactRuntime();
63
+ const runtime = new ReactRuntime();
63
64
  runtime.registerComponent(component(testId), {
64
65
  type: TestComponentType,
65
66
  label: "TestComponent",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/next/components/tests/prop-controllers/page-prop-controller.tsx"],"sourcesContent":["/** @jest-environment jsdom */\n\nimport { render, screen } from '@testing-library/react'\nimport '@testing-library/jest-dom'\n\nimport {\n type OptionsType,\n Types,\n type Descriptor,\n type PropDef,\n type Value,\n} from '@makeswift/prop-controllers'\n\nimport { type ElementData, type ComponentType } from '../../../../state/read-only-state'\nimport { randomUUID } from 'crypto'\n\nimport { Page } from '../../page'\nimport { act } from 'react'\nimport * as Testing from '../../../testing'\n\nexport const pagePropControllerTest = <\n P extends PropDef & ((options?: any) => any),\n C extends ComponentType<{ propKey: Value<P> | undefined }>,\n>(\n propDef: P,\n value: Value<typeof propDef>,\n component: (testId: string) => C,\n assert: (element: HTMLElement) => void,\n options?: OptionsType<P>,\n) =>\n describe('Page', () => {\n test(`can render ${propDef.type} v0 data`, async () => {\n // Arrange\n const descriptorV0: Descriptor<typeof propDef> = {\n type: propDef.type,\n options,\n }\n\n const TestComponentType = 'TestComponent'\n const testId = 'test-id'\n\n const elementData: ElementData = Testing.createRootComponent([\n {\n key: randomUUID(),\n type: TestComponentType,\n props: {\n propKey: propDef.toPropData(value, descriptorV0),\n },\n },\n ])\n const snapshot = Testing.createMakeswiftPageSnapshot(elementData)\n const runtime = Testing.createReactRuntime()\n\n runtime.registerComponent(component(testId), {\n type: TestComponentType,\n label: 'TestComponent',\n props: {\n propKey: propDef(options),\n },\n })\n\n await act(async () =>\n render(\n <Testing.ReactProvider runtime={runtime}>\n <Page snapshot={snapshot} />\n </Testing.ReactProvider>,\n ),\n )\n\n assert(screen.getByTestId(testId))\n })\n\n test(`can render ${propDef.type} v1 data`, async () => {\n // Arrange\n const gapXDefinitionV1: Descriptor<typeof propDef> = {\n type: Types.GapX,\n version: 1,\n options: {},\n }\n\n const TestComponentType = 'TestComponent'\n const testId = 'test-id'\n const elementData: ElementData = Testing.createRootComponent([\n {\n key: randomUUID(),\n type: TestComponentType,\n props: {\n propKey: propDef.toPropData(value, gapXDefinitionV1),\n },\n },\n ])\n const snapshot = Testing.createMakeswiftPageSnapshot(elementData)\n const runtime = Testing.createReactRuntime()\n\n runtime.registerComponent(component(testId), {\n type: TestComponentType,\n label: 'TestComponent',\n props: {\n propKey: propDef(options),\n },\n })\n\n await act(async () =>\n render(\n <Testing.ReactProvider runtime={runtime}>\n <Page snapshot={snapshot} />\n </Testing.ReactProvider>,\n ),\n )\n\n assert(screen.getByTestId(testId))\n })\n })\n"],"mappings":"AAgEY;AA9DZ,SAAS,QAAQ,cAAc;AAC/B,OAAO;AAEP;AAAA,EAEE;AAAA,OAIK;AAGP,SAAS,kBAAkB;AAE3B,SAAS,YAAY;AACrB,SAAS,WAAW;AACpB,YAAY,aAAa;AAElB,MAAM,yBAAyB,CAIpC,SACA,OACA,WACA,QACA,YAEA,SAAS,QAAQ,MAAM;AACrB,OAAK,cAAc,QAAQ,IAAI,YAAY,YAAY;AAErD,UAAM,eAA2C;AAAA,MAC/C,MAAM,QAAQ;AAAA,MACd;AAAA,IACF;AAEA,UAAM,oBAAoB;AAC1B,UAAM,SAAS;AAEf,UAAM,cAA2B,QAAQ,oBAAoB;AAAA,MAC3D;AAAA,QACE,KAAK,WAAW;AAAA,QAChB,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS,QAAQ,WAAW,OAAO,YAAY;AAAA,QACjD;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,WAAW,QAAQ,4BAA4B,WAAW;AAChE,UAAM,UAAU,QAAQ,mBAAmB;AAE3C,YAAQ,kBAAkB,UAAU,MAAM,GAAG;AAAA,MAC3C,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS,QAAQ,OAAO;AAAA,MAC1B;AAAA,IACF,CAAC;AAED,UAAM;AAAA,MAAI,YACR;AAAA,QACE,oBAAC,QAAQ,eAAR,EAAsB,SACrB,8BAAC,QAAK,UAAoB,GAC5B;AAAA,MACF;AAAA,IACF;AAEA,WAAO,OAAO,YAAY,MAAM,CAAC;AAAA,EACnC,CAAC;AAED,OAAK,cAAc,QAAQ,IAAI,YAAY,YAAY;AAErD,UAAM,mBAA+C;AAAA,MACnD,MAAM,MAAM;AAAA,MACZ,SAAS;AAAA,MACT,SAAS,CAAC;AAAA,IACZ;AAEA,UAAM,oBAAoB;AAC1B,UAAM,SAAS;AACf,UAAM,cAA2B,QAAQ,oBAAoB;AAAA,MAC3D;AAAA,QACE,KAAK,WAAW;AAAA,QAChB,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS,QAAQ,WAAW,OAAO,gBAAgB;AAAA,QACrD;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,WAAW,QAAQ,4BAA4B,WAAW;AAChE,UAAM,UAAU,QAAQ,mBAAmB;AAE3C,YAAQ,kBAAkB,UAAU,MAAM,GAAG;AAAA,MAC3C,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS,QAAQ,OAAO;AAAA,MAC1B;AAAA,IACF,CAAC;AAED,UAAM;AAAA,MAAI,YACR;AAAA,QACE,oBAAC,QAAQ,eAAR,EAAsB,SACrB,8BAAC,QAAK,UAAoB,GAC5B;AAAA,MACF;AAAA,IACF;AAEA,WAAO,OAAO,YAAY,MAAM,CAAC;AAAA,EACnC,CAAC;AACH,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/next/components/tests/prop-controllers/page-prop-controller.tsx"],"sourcesContent":["/** @jest-environment jsdom */\n\nimport { render, screen } from '@testing-library/react'\nimport '@testing-library/jest-dom'\n\nimport {\n type OptionsType,\n Types,\n type Descriptor,\n type PropDef,\n type Value,\n} from '@makeswift/prop-controllers'\n\nimport { type ElementData, type ComponentType } from '../../../../state/react-page'\nimport { randomUUID } from 'crypto'\n\nimport { Page } from '../../page'\nimport { act } from \"react\";\nimport { ReactRuntime } from '../../../../react'\nimport * as Testing from '../../../testing'\n\nexport const pagePropControllerTest = <\n P extends PropDef & ((options?: any) => any),\n C extends ComponentType<{ propKey: Value<P> | undefined }>,\n>(\n propDef: P,\n value: Value<typeof propDef>,\n component: (testId: string) => C,\n assert: (element: HTMLElement) => void,\n options?: OptionsType<P>,\n) =>\n describe('Page', () => {\n test(`can render ${propDef.type} v0 data`, async () => {\n // Arrange\n const descriptorV0: Descriptor<typeof propDef> = {\n type: propDef.type,\n options,\n }\n\n const TestComponentType = 'TestComponent'\n const testId = 'test-id'\n\n const elementData: ElementData = Testing.createRootComponent([\n {\n key: randomUUID(),\n type: TestComponentType,\n props: {\n propKey: propDef.toPropData(value, descriptorV0),\n },\n },\n ])\n const snapshot = Testing.createMakeswiftPageSnapshot(elementData)\n const runtime = new ReactRuntime()\n\n runtime.registerComponent(component(testId), {\n type: TestComponentType,\n label: 'TestComponent',\n props: {\n propKey: propDef(options),\n },\n })\n\n await act(async () =>\n render(\n <Testing.ReactProvider runtime={runtime}>\n <Page snapshot={snapshot} />\n </Testing.ReactProvider>,\n ),\n )\n\n assert(screen.getByTestId(testId))\n })\n\n test(`can render ${propDef.type} v1 data`, async () => {\n // Arrange\n const gapXDefinitionV1: Descriptor<typeof propDef> = {\n type: Types.GapX,\n version: 1,\n options: {},\n }\n\n const TestComponentType = 'TestComponent'\n const testId = 'test-id'\n const elementData: ElementData = Testing.createRootComponent([\n {\n key: randomUUID(),\n type: TestComponentType,\n props: {\n propKey: propDef.toPropData(value, gapXDefinitionV1),\n },\n },\n ])\n const snapshot = Testing.createMakeswiftPageSnapshot(elementData)\n const runtime = new ReactRuntime()\n\n runtime.registerComponent(component(testId), {\n type: TestComponentType,\n label: 'TestComponent',\n props: {\n propKey: propDef(options),\n },\n })\n\n await act(async () =>\n render(\n <Testing.ReactProvider runtime={runtime}>\n <Page snapshot={snapshot} />\n </Testing.ReactProvider>,\n ),\n )\n\n assert(screen.getByTestId(testId))\n })\n })\n"],"mappings":"AAiEY;AA/DZ,SAAS,QAAQ,cAAc;AAC/B,OAAO;AAEP;AAAA,EAEE;AAAA,OAIK;AAGP,SAAS,kBAAkB;AAE3B,SAAS,YAAY;AACrB,SAAS,WAAW;AACpB,SAAS,oBAAoB;AAC7B,YAAY,aAAa;AAElB,MAAM,yBAAyB,CAIpC,SACA,OACA,WACA,QACA,YAEA,SAAS,QAAQ,MAAM;AACrB,OAAK,cAAc,QAAQ,IAAI,YAAY,YAAY;AAErD,UAAM,eAA2C;AAAA,MAC/C,MAAM,QAAQ;AAAA,MACd;AAAA,IACF;AAEA,UAAM,oBAAoB;AAC1B,UAAM,SAAS;AAEf,UAAM,cAA2B,QAAQ,oBAAoB;AAAA,MAC3D;AAAA,QACE,KAAK,WAAW;AAAA,QAChB,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS,QAAQ,WAAW,OAAO,YAAY;AAAA,QACjD;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,WAAW,QAAQ,4BAA4B,WAAW;AAChE,UAAM,UAAU,IAAI,aAAa;AAEjC,YAAQ,kBAAkB,UAAU,MAAM,GAAG;AAAA,MAC3C,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS,QAAQ,OAAO;AAAA,MAC1B;AAAA,IACF,CAAC;AAED,UAAM;AAAA,MAAI,YACR;AAAA,QACE,oBAAC,QAAQ,eAAR,EAAsB,SACrB,8BAAC,QAAK,UAAoB,GAC5B;AAAA,MACF;AAAA,IACF;AAEA,WAAO,OAAO,YAAY,MAAM,CAAC;AAAA,EACnC,CAAC;AAED,OAAK,cAAc,QAAQ,IAAI,YAAY,YAAY;AAErD,UAAM,mBAA+C;AAAA,MACnD,MAAM,MAAM;AAAA,MACZ,SAAS;AAAA,MACT,SAAS,CAAC;AAAA,IACZ;AAEA,UAAM,oBAAoB;AAC1B,UAAM,SAAS;AACf,UAAM,cAA2B,QAAQ,oBAAoB;AAAA,MAC3D;AAAA,QACE,KAAK,WAAW;AAAA,QAChB,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS,QAAQ,WAAW,OAAO,gBAAgB;AAAA,QACrD;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,WAAW,QAAQ,4BAA4B,WAAW;AAChE,UAAM,UAAU,IAAI,aAAa;AAEjC,YAAQ,kBAAkB,UAAU,MAAM,GAAG;AAAA,MAC3C,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS,QAAQ,OAAO;AAAA,MAC1B;AAAA,IACF,CAAC;AAED,UAAM;AAAA,MAAI,YACR;AAAA,QACE,oBAAC,QAAQ,eAAR,EAAsB,SACrB,8BAAC,QAAK,UAAoB,GAC5B;AAAA,MACF;AAAA,IACF;AAEA,WAAO,OAAO,YAAY,MAAM,CAAC;AAAA,EACnC,CAAC;AACH,CAAC;","names":[]}
@@ -0,0 +1,6 @@
1
+ import { MAKESWIFT_CACHE_TAG } from "./cache";
2
+ const fetch = (url, init) => globalThis.fetch(url, { ...init, next: { tags: [MAKESWIFT_CACHE_TAG] } });
3
+ export {
4
+ fetch
5
+ };
6
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/next/fetch.ts"],"sourcesContent":["import { type HttpFetch } from '../state/makeswift-api-client'\n\nimport { MAKESWIFT_CACHE_TAG } from './cache'\n\nexport const fetch: HttpFetch = (url, init) =>\n globalThis.fetch(url, { ...init, next: { tags: [MAKESWIFT_CACHE_TAG] } })\n"],"mappings":"AAEA,SAAS,2BAA2B;AAE7B,MAAM,QAAmB,CAAC,KAAK,SACpC,WAAW,MAAM,KAAK,EAAE,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;","names":[]}
@@ -0,0 +1,11 @@
1
+ import { ReactRuntime } from "../runtimes/react/react-runtime";
2
+ import { fetch } from "./fetch";
3
+ class NextReactRuntime extends ReactRuntime {
4
+ constructor(args = {}) {
5
+ super({ ...args, fetch });
6
+ }
7
+ }
8
+ export {
9
+ NextReactRuntime
10
+ };
11
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/next/runtime.ts"],"sourcesContent":["import { ReactRuntime } from '../runtimes/react/react-runtime'\nimport { type BreakpointsInput } from '../state/modules/breakpoints'\n\nimport { fetch } from './fetch'\n\nexport class NextReactRuntime extends ReactRuntime {\n constructor(\n args: { appOrigin?: string; apiOrigin?: string; breakpoints?: BreakpointsInput } = {},\n ) {\n super({ ...args, fetch })\n }\n}\n"],"mappings":"AAAA,SAAS,oBAAoB;AAG7B,SAAS,aAAa;AAEf,MAAM,yBAAyB,aAAa;AAAA,EACjD,YACE,OAAmF,CAAC,GACpF;AACA,UAAM,EAAE,GAAG,MAAM,MAAM,CAAC;AAAA,EAC1B;AACF;","names":[]}
@@ -1,5 +1,5 @@
1
1
  import { randomUUID } from "crypto";
2
- import { CacheData } from "../../api/client";
2
+ import { CacheData } from "../../api/react";
3
3
  import { MakeswiftComponentType } from "../../components/builtin/constants";
4
4
  function createRootComponent(elements, rootId) {
5
5
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/testing/element-data.ts"],"sourcesContent":["import { randomUUID } from 'crypto'\n\nimport {\n type MakeswiftPageSnapshot,\n type MakeswiftPageDocument,\n type MakeswiftComponentSnapshot,\n} from '../../client'\nimport { CacheData } from '../../api/client'\nimport { type ElementData } from '../../state/read-only-state'\nimport { MakeswiftComponentType } from '../../components/builtin/constants'\n\nexport function createRootComponent(elements: ElementData[], rootId?: string) {\n return {\n key: rootId ?? randomUUID(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nconst isDocument = (\n elementDataOrDocument: ElementData | MakeswiftPageDocument,\n): elementDataOrDocument is MakeswiftPageDocument =>\n 'snippets' in elementDataOrDocument ||\n 'fonts' in elementDataOrDocument ||\n 'meta' in elementDataOrDocument ||\n 'seo' in elementDataOrDocument\n\nexport function createMakeswiftPageSnapshot(\n elementDataOrDocument: ElementData | MakeswiftPageDocument,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftPageSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftPageSnapshot {\n return {\n document: isDocument(elementDataOrDocument)\n ? elementDataOrDocument\n : {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementDataOrDocument,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n\nexport function createMakeswiftComponentSnapshot(\n elementData: ElementData | null,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftComponentSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftComponentSnapshot {\n return {\n key: randomUUID(),\n document: {\n id: 'test-component-id',\n name: 'Test Component Document',\n siteId: 'test-site-id',\n data: elementData,\n inheritsFromParent: false,\n locale,\n },\n meta: {\n allowLocaleFallback: false,\n requestedLocale: locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAO3B,SAAS,iBAAiB;AAE1B,SAAS,8BAA8B;AAEhC,SAAS,oBAAoB,UAAyB,QAAiB;AAC5E,SAAO;AAAA,IACL,KAAK,UAAU,WAAW;AAAA,IAC1B,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,aAAa,CACjB,0BAEA,cAAc,yBACd,WAAW,yBACX,UAAU,yBACV,SAAS;AAEJ,SAAS,4BACd,uBACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAAyF,CAAC,GACnE;AACvB,SAAO;AAAA,IACL,UAAU,WAAW,qBAAqB,IACtC,wBACA;AAAA,MACE,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB;AAAA,IACF;AAAA,IACJ,WAAW;AAAA,MACT,GAAG,UAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,iCACd,aACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAA8F,CAAC,GACnE;AAC5B,SAAO;AAAA,IACL,KAAK,WAAW;AAAA,IAChB,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,IACnB;AAAA,IACA,WAAW;AAAA,MACT,GAAG,UAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/testing/element-data.ts"],"sourcesContent":["import { randomUUID } from 'crypto'\n\nimport {\n type MakeswiftPageSnapshot,\n type MakeswiftPageDocument,\n type MakeswiftComponentSnapshot,\n} from '../../client'\nimport { CacheData } from '../../api/react'\nimport { type ElementData } from '../../state/react-page'\nimport { MakeswiftComponentType } from '../../components/builtin/constants'\n\nexport function createRootComponent(elements: ElementData[], rootId?: string) {\n return {\n key: rootId ?? randomUUID(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nconst isDocument = (\n elementDataOrDocument: ElementData | MakeswiftPageDocument,\n): elementDataOrDocument is MakeswiftPageDocument =>\n 'snippets' in elementDataOrDocument ||\n 'fonts' in elementDataOrDocument ||\n 'meta' in elementDataOrDocument ||\n 'seo' in elementDataOrDocument\n\nexport function createMakeswiftPageSnapshot(\n elementDataOrDocument: ElementData | MakeswiftPageDocument,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftPageSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftPageSnapshot {\n return {\n document: isDocument(elementDataOrDocument)\n ? elementDataOrDocument\n : {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementDataOrDocument,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n\nexport function createMakeswiftComponentSnapshot(\n elementData: ElementData | null,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftComponentSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftComponentSnapshot {\n return {\n key: randomUUID(),\n document: {\n id: 'test-component-id',\n name: 'Test Component Document',\n siteId: 'test-site-id',\n data: elementData,\n inheritsFromParent: false,\n locale,\n },\n meta: {\n allowLocaleFallback: false,\n requestedLocale: locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAO3B,SAAS,iBAAiB;AAE1B,SAAS,8BAA8B;AAEhC,SAAS,oBAAoB,UAAyB,QAAiB;AAC5E,SAAO;AAAA,IACL,KAAK,UAAU,WAAW;AAAA,IAC1B,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,aAAa,CACjB,0BAEA,cAAc,yBACd,WAAW,yBACX,UAAU,yBACV,SAAS;AAEJ,SAAS,4BACd,uBACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAAyF,CAAC,GACnE;AACvB,SAAO;AAAA,IACL,UAAU,WAAW,qBAAqB,IACtC,wBACA;AAAA,MACE,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB;AAAA,IACF;AAAA,IACJ,WAAW;AAAA,MACT,GAAG,UAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,iCACd,aACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAA8F,CAAC,GACnE;AAC5B,SAAO;AAAA,IACL,KAAK,WAAW;AAAA,IAChB,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,IACnB;AAAA,IACA,WAAW;AAAA,MACT,GAAG,UAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;","names":[]}
@@ -1,6 +1,5 @@
1
1
  export * from "./breakpoints";
2
2
  export * from "./element-data";
3
3
  export * from "./react-provider";
4
- export * from "./react-runtime";
5
4
  export * from "./page-rendering";
6
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/testing/index.ts"],"sourcesContent":["export * from './breakpoints'\nexport * from './element-data'\nexport * from './react-provider'\nexport * from './react-runtime'\nexport * from './page-rendering'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/testing/index.ts"],"sourcesContent":["export * from './breakpoints'\nexport * from './element-data'\nexport * from './react-provider'\nexport * from './page-rendering'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -2,12 +2,12 @@ import { Fragment, jsx } from "react/jsx-runtime";
2
2
  import { act } from "react";
3
3
  import "@testing-library/jest-dom";
4
4
  import { render } from "@testing-library/react";
5
+ import { ReactRuntime } from "../../runtimes/react/react-runtime";
5
6
  import { MakeswiftComponentType } from "../../components/builtin/constants";
6
7
  import { Page as MakeswiftPage } from "../components/page";
7
8
  import { ReactProvider } from "./react-provider";
8
- import { createReactRuntime } from "./react-runtime";
9
9
  async function testMakeswiftPageHeadRendering(props, { forcePagesRouter = false } = {}) {
10
- const runtime = createReactRuntime();
10
+ const runtime = new ReactRuntime();
11
11
  runtime.registerComponent(() => /* @__PURE__ */ jsx(Fragment, {}), {
12
12
  type: MakeswiftComponentType.Root,
13
13
  label: "Root",
@@ -23,7 +23,7 @@ async function testMakeswiftPageHeadRendering(props, { forcePagesRouter = false
23
23
  );
24
24
  }
25
25
  async function testMakeswiftPageRendering(props, { forcePagesRouter = false } = {}) {
26
- const runtime = createReactRuntime();
26
+ const runtime = new ReactRuntime();
27
27
  return await act(
28
28
  async () => render(
29
29
  /* @__PURE__ */ jsx(ReactProvider, { runtime, siteVersion: null, forcePagesRouter, children: /* @__PURE__ */ jsx(MakeswiftPage, { ...props }) }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/testing/page-rendering.tsx"],"sourcesContent":["import { type ComponentPropsWithoutRef, act } from 'react'\n\nimport '@testing-library/jest-dom'\nimport { render } from '@testing-library/react'\n\nimport { MakeswiftComponentType } from '../../components/builtin/constants'\n\nimport { Page as MakeswiftPage } from '../components/page'\n\nimport { ReactProvider } from './react-provider'\nimport { createReactRuntime } from './react-runtime'\n\nexport async function testMakeswiftPageHeadRendering(\n props: ComponentPropsWithoutRef<typeof MakeswiftPage>,\n { forcePagesRouter = false }: { forcePagesRouter?: boolean } = {},\n) {\n const runtime = createReactRuntime()\n\n runtime.registerComponent(() => <></>, {\n type: MakeswiftComponentType.Root,\n label: 'Root',\n props: {},\n })\n\n return await act(async () =>\n render(\n <ReactProvider runtime={runtime} siteVersion={null} forcePagesRouter={forcePagesRouter}>\n <MakeswiftPage {...props} />\n </ReactProvider>,\n {\n container: document.body.appendChild(document.createElement('head')),\n },\n ),\n )\n}\n\nexport async function testMakeswiftPageRendering(\n props: ComponentPropsWithoutRef<typeof MakeswiftPage>,\n { forcePagesRouter = false }: { forcePagesRouter?: boolean } = {},\n) {\n const runtime = createReactRuntime()\n\n return await act(async () =>\n render(\n <ReactProvider runtime={runtime} siteVersion={null} forcePagesRouter={forcePagesRouter}>\n <MakeswiftPage {...props} />\n </ReactProvider>,\n {\n container: document.body.appendChild(document.createElement('div')),\n },\n ),\n )\n}\n"],"mappings":"AAkBkC;AAlBlC,SAAwC,WAAW;AAEnD,OAAO;AACP,SAAS,cAAc;AAEvB,SAAS,8BAA8B;AAEvC,SAAS,QAAQ,qBAAqB;AAEtC,SAAS,qBAAqB;AAC9B,SAAS,0BAA0B;AAEnC,eAAsB,+BACpB,OACA,EAAE,mBAAmB,MAAM,IAAoC,CAAC,GAChE;AACA,QAAM,UAAU,mBAAmB;AAEnC,UAAQ,kBAAkB,MAAM,gCAAE,GAAK;AAAA,IACrC,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,IACP,OAAO,CAAC;AAAA,EACV,CAAC;AAED,SAAO,MAAM;AAAA,IAAI,YACf;AAAA,MACE,oBAAC,iBAAc,SAAkB,aAAa,MAAM,kBAClD,8BAAC,iBAAe,GAAG,OAAO,GAC5B;AAAA,MACA;AAAA,QACE,WAAW,SAAS,KAAK,YAAY,SAAS,cAAc,MAAM,CAAC;AAAA,MACrE;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAsB,2BACpB,OACA,EAAE,mBAAmB,MAAM,IAAoC,CAAC,GAChE;AACA,QAAM,UAAU,mBAAmB;AAEnC,SAAO,MAAM;AAAA,IAAI,YACf;AAAA,MACE,oBAAC,iBAAc,SAAkB,aAAa,MAAM,kBAClD,8BAAC,iBAAe,GAAG,OAAO,GAC5B;AAAA,MACA;AAAA,QACE,WAAW,SAAS,KAAK,YAAY,SAAS,cAAc,KAAK,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/testing/page-rendering.tsx"],"sourcesContent":["import { type ComponentPropsWithoutRef, act } from 'react';\n\nimport '@testing-library/jest-dom'\nimport { render } from '@testing-library/react'\n\nimport { ReactRuntime } from '../../runtimes/react/react-runtime'\nimport { MakeswiftComponentType } from '../../components/builtin/constants'\n\nimport { Page as MakeswiftPage } from '../components/page'\n\nimport { ReactProvider } from './react-provider'\n\nexport async function testMakeswiftPageHeadRendering(\n props: ComponentPropsWithoutRef<typeof MakeswiftPage>,\n { forcePagesRouter = false }: { forcePagesRouter?: boolean } = {},\n) {\n const runtime = new ReactRuntime()\n\n runtime.registerComponent(() => <></>, {\n type: MakeswiftComponentType.Root,\n label: 'Root',\n props: {},\n })\n\n return await act(async () =>\n render(\n <ReactProvider runtime={runtime} siteVersion={null} forcePagesRouter={forcePagesRouter}>\n <MakeswiftPage {...props} />\n </ReactProvider>,\n {\n container: document.body.appendChild(document.createElement('head')),\n },\n ),\n )\n}\n\nexport async function testMakeswiftPageRendering(\n props: ComponentPropsWithoutRef<typeof MakeswiftPage>,\n { forcePagesRouter = false }: { forcePagesRouter?: boolean } = {},\n) {\n const runtime = new ReactRuntime()\n\n return await act(async () =>\n render(\n <ReactProvider runtime={runtime} siteVersion={null} forcePagesRouter={forcePagesRouter}>\n <MakeswiftPage {...props} />\n </ReactProvider>,\n {\n container: document.body.appendChild(document.createElement('div')),\n },\n ),\n )\n}\n"],"mappings":"AAkBkC;AAlBlC,SAAwC,WAAW;AAEnD,OAAO;AACP,SAAS,cAAc;AAEvB,SAAS,oBAAoB;AAC7B,SAAS,8BAA8B;AAEvC,SAAS,QAAQ,qBAAqB;AAEtC,SAAS,qBAAqB;AAE9B,eAAsB,+BACpB,OACA,EAAE,mBAAmB,MAAM,IAAoC,CAAC,GAChE;AACA,QAAM,UAAU,IAAI,aAAa;AAEjC,UAAQ,kBAAkB,MAAM,gCAAE,GAAK;AAAA,IACrC,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,IACP,OAAO,CAAC;AAAA,EACV,CAAC;AAED,SAAO,MAAM;AAAA,IAAI,YACf;AAAA,MACE,oBAAC,iBAAc,SAAkB,aAAa,MAAM,kBAClD,8BAAC,iBAAe,GAAG,OAAO,GAC5B;AAAA,MACA;AAAA,QACE,WAAW,SAAS,KAAK,YAAY,SAAS,cAAc,MAAM,CAAC;AAAA,MACrE;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAsB,2BACpB,OACA,EAAE,mBAAmB,MAAM,IAAoC,CAAC,GAChE;AACA,QAAM,UAAU,IAAI,aAAa;AAEjC,SAAO,MAAM;AAAA,IAAI,YACf;AAAA,MACE,oBAAC,iBAAc,SAAkB,aAAa,MAAM,kBAClD,8BAAC,iBAAe,GAAG,OAAO,GAC5B;AAAA,MACA;AAAA,QACE,WAAW,SAAS,KAAK,YAAY,SAAS,cAAc,KAAK,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prop-controllers/descriptors.ts"],"sourcesContent":["import {\n type ResolvedValueType,\n ControlDefinition as UnifiedControlDefinition,\n} from '@makeswift/controls'\n\nimport { type ResponsiveColor } from '../components/utils/types'\nimport type { Data } from '../state/read-only-state'\nimport {\n BorderDescriptor,\n CheckboxDescriptor,\n LinkDescriptor,\n ResolveLinkPropControllerValue,\n Types as PropControllerTypes,\n ShadowsDescriptor,\n ResolveShadowsPropControllerValue,\n ResponsiveLengthDescriptor,\n ResolveResponsiveLengthPropControllerValue,\n NumberDescriptor,\n ResolveNumberPropControllerValue,\n ResponsiveColorDescriptor,\n ResolveCheckboxPropControllerValue,\n BorderRadiusDescriptor,\n ResolveBorderPropControllerValue,\n ResolveBorderRadiusPropControllerValue,\n DateDescriptor,\n ResolveDatePropControllerValue,\n FontDescriptor,\n ResolveFontPropControllerValue,\n VideoDescriptor,\n ResolveVideoPropControllerValue,\n TableDescriptor,\n ResolveTablePropControllerValue,\n MarginDescriptor,\n ResolveMarginPropControllerValue,\n PaddingDescriptor,\n ResolvePaddingPropControllerValue,\n WidthDescriptor,\n ResolveWidthPropControllerValue,\n TextStyleDescriptor,\n ResolveTextStylePropControllerValue,\n NavigationLinksDescriptor,\n ResolveNavigationLinksPropControllerValue,\n TextAreaDescriptor,\n ResolveTextAreaPropControllerValue,\n GapX,\n ResponsiveNumber,\n ResponsiveSelect,\n ResolveGapYPropControllerValue,\n GapYDescriptor,\n ElementIDDescriptor,\n ResolveElementIDPropControllerValue,\n TableFormFieldsDescriptor,\n ResolveTableFormFieldsPropControllerValue,\n GridDescriptor,\n ResolveGridPropControllerValue,\n ImageDescriptor,\n ResolveImagePropControllerValue,\n ImagesDescriptor,\n ResolveImagesPropControllerValue,\n BackgroundsDescriptor,\n ResolveBackgroundsPropControllerValue,\n ResponsiveOpacity,\n ResponsiveIconRadioGroup,\n ResolveSocialLinksPropControllerValue,\n SocialLinksDescriptor,\n TextInputDescriptor,\n ResolveTextInputPropControllerValue,\n type Descriptor as PropDescriptor,\n type Value as PropValue,\n} from '@makeswift/prop-controllers'\n\nimport { DeletedPropControllerDescriptor } from './deleted'\n\nexport type { Data }\n\nexport type Gap = { value: number; unit: 'px' }\n\ntype PropControllerDescriptor<T extends Data = Data> =\n | DeletedPropControllerDescriptor<T>\n | BackgroundsDescriptor<T>\n | BorderDescriptor<T>\n | BorderRadiusDescriptor<T>\n | CheckboxDescriptor<T>\n | DateDescriptor<T>\n | ElementIDDescriptor<T>\n | FontDescriptor<T>\n | PropDescriptor<typeof GapX>\n | GapYDescriptor<T>\n | GridDescriptor<T>\n | ImageDescriptor<T>\n | ImagesDescriptor<T>\n | LinkDescriptor<T>\n | MarginDescriptor<T>\n | NavigationLinksDescriptor<T>\n | NumberDescriptor<T>\n | PaddingDescriptor<T>\n | ResponsiveColorDescriptor<T>\n | ResponsiveLengthDescriptor<T>\n | PropDescriptor<typeof ResponsiveIconRadioGroup>\n | PropDescriptor<typeof ResponsiveNumber>\n | PropDescriptor<typeof ResponsiveOpacity>\n | PropDescriptor<typeof ResponsiveSelect>\n | ShadowsDescriptor<T>\n | SocialLinksDescriptor<T>\n | TableDescriptor<T>\n | TableFormFieldsDescriptor<T>\n | TextAreaDescriptor<T>\n | TextInputDescriptor<T>\n | TextStyleDescriptor<T>\n | VideoDescriptor<T>\n | WidthDescriptor<T>\n\nexport type LegacyDescriptor<T extends Data = Data> = PropControllerDescriptor<T>\n\nexport type Descriptor<T extends Data = Data> = LegacyDescriptor<T> | UnifiedControlDefinition\n\nexport function isLegacyDescriptor<T extends Data>(\n control: Descriptor<T>,\n): control is LegacyDescriptor<T> {\n return !(control instanceof UnifiedControlDefinition)\n}\n\nexport type PanelDescriptorType =\n | typeof PropControllerTypes.Backgrounds\n | typeof PropControllerTypes.ResponsiveIconRadioGroup\n | typeof PropControllerTypes.Margin\n | typeof PropControllerTypes.Padding\n | typeof PropControllerTypes.Shadows\n | typeof PropControllerTypes.Border\n | typeof PropControllerTypes.GapY\n | typeof PropControllerTypes.GapX\n | typeof PropControllerTypes.BorderRadius\n | typeof PropControllerTypes.Checkbox\n | typeof PropControllerTypes.TextInput\n | typeof PropControllerTypes.Link\n | typeof PropControllerTypes.ResponsiveSelect\n | typeof PropControllerTypes.ResponsiveColor\n | typeof PropControllerTypes.TextStyle\n | typeof PropControllerTypes.Images\n | typeof PropControllerTypes.ResponsiveNumber\n | typeof PropControllerTypes.Number\n | typeof PropControllerTypes.Date\n | typeof PropControllerTypes.Font\n | typeof PropControllerTypes.TextArea\n | typeof PropControllerTypes.Table\n | typeof PropControllerTypes.Image\n | typeof PropControllerTypes.ResponsiveOpacity\n | typeof PropControllerTypes.SocialLinks\n | typeof PropControllerTypes.Video\n | typeof PropControllerTypes.NavigationLinks\n\nexport type PanelDescriptor<T extends Data = Data> = Extract<\n Descriptor<T>,\n { type: PanelDescriptorType }\n>\n\n// see https://github.com/prettier/prettier/issues/7940#issuecomment-2074455883\n// prettier-ignore\nexport type PropControllerDescriptorValueType<T extends PropControllerDescriptor> = T['type'] extends typeof PropControllerTypes.ResponsiveColor\n ? // TODO(miguel): We're not importing a resolver type from `@makeswift/prop-controllers` because\n // the resolved type is tightly coupled with the runtime (i.e., it's the result of an API call).\n // This means that we probably want to rethink how types are resolved and where that lives.\n ResponsiveColor | null | undefined\n : T['type'] extends typeof PropControllerTypes.Backgrounds\n ? ResolveBackgroundsPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.Backgrounds }>\n >\n : T['type'] extends typeof PropControllerTypes.Checkbox\n ? ResolveCheckboxPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Checkbox }>>\n : T['type'] extends typeof PropControllerTypes.Date\n ? ResolveDatePropControllerValue<Extract<T, { type: typeof PropControllerTypes.Date }>>\n : T['type'] extends typeof PropControllerTypes.ElementID\n ? ResolveElementIDPropControllerValue<Extract<T, { type: typeof PropControllerTypes.ElementID }>>\n : T['type'] extends typeof PropControllerTypes.Font\n ? ResolveFontPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Font }>>\n : T['type'] extends typeof PropControllerTypes.GapX\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.GapY\n ? ResolveGapYPropControllerValue<Extract<T, { type: typeof PropControllerTypes.GapY }>>\n : T['type'] extends typeof PropControllerTypes.Grid\n ? ResolveGridPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Grid }>>\n : T['type'] extends typeof PropControllerTypes.Image\n ? ResolveImagePropControllerValue<Extract<T, { type: typeof PropControllerTypes.Image }>>\n : T['type'] extends typeof PropControllerTypes.Images\n ? ResolveImagesPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Images }>>\n : T['type'] extends typeof PropControllerTypes.ResponsiveIconRadioGroup\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.ResponsiveNumber\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.ResponsiveOpacity\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.ResponsiveSelect\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.Link\n ? ResolveLinkPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Link }>>\n : T['type'] extends typeof PropControllerTypes.Width\n ? ResolveWidthPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Width }>>\n : T['type'] extends typeof PropControllerTypes.Padding\n ? ResolvePaddingPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Padding }>>\n : T['type'] extends typeof PropControllerTypes.Margin\n ? ResolveMarginPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Margin }>>\n : T['type'] extends typeof PropControllerTypes.NavigationLinks\n ? ResolveNavigationLinksPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.NavigationLinks }>\n >\n : T['type'] extends typeof PropControllerTypes.BorderRadius\n ? ResolveBorderRadiusPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.BorderRadius }>\n >\n : T['type'] extends typeof PropControllerTypes.Shadows\n ? ResolveShadowsPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Shadows }>>\n : T['type'] extends typeof PropControllerTypes.SocialLinks\n ? ResolveSocialLinksPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.SocialLinks }>\n >\n : T['type'] extends typeof PropControllerTypes.ResponsiveLength\n ? ResolveResponsiveLengthPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.ResponsiveLength }>\n >\n : T['type'] extends typeof PropControllerTypes.Border\n ? ResolveBorderPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Border }>>\n : T['type'] extends typeof PropControllerTypes.Number\n ? ResolveNumberPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Number }>>\n : T['type'] extends typeof PropControllerTypes.Table\n ? ResolveTablePropControllerValue<Extract<T, { type: typeof PropControllerTypes.Table }>>\n : T['type'] extends typeof PropControllerTypes.TableFormFields\n ? ResolveTableFormFieldsPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.TableFormFields }>\n >\n : T['type'] extends typeof PropControllerTypes.TextStyle\n ? ResolveTextStylePropControllerValue<Extract<T, { type: typeof PropControllerTypes.TextStyle }>>\n : T['type'] extends typeof PropControllerTypes.TextArea\n ? ResolveTextAreaPropControllerValue<Extract<T, { type: typeof PropControllerTypes.TextArea }>>\n : T['type'] extends typeof PropControllerTypes.TextInput\n ? ResolveTextInputPropControllerValue<Extract<T, { type: typeof PropControllerTypes.TextInput }>>\n : T['type'] extends typeof PropControllerTypes.Video\n ? ResolveVideoPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Video }>>\n : T extends Descriptor<infer U>\n ? U | undefined\n : never\n\nexport type DescriptorValueType<T extends Descriptor> = T extends PropControllerDescriptor\n ? PropControllerDescriptorValueType<T>\n : T extends UnifiedControlDefinition\n ? ResolvedValueType<T>\n : T extends Descriptor<infer U>\n ? U | undefined\n : never\n\nexport type PanelDescriptorValueType<T extends PanelDescriptor> =\n T extends PanelDescriptor<infer U> ? U : never\n"],"mappings":"AAAA;AAAA,EAEE,qBAAqB;AAAA,OAChB;AAiHA,SAAS,mBACd,SACgC;AAChC,SAAO,EAAE,mBAAmB;AAC9B;","names":[]}
1
+ {"version":3,"sources":["../../../src/prop-controllers/descriptors.ts"],"sourcesContent":["import {\n type ResolvedValueType,\n ControlDefinition as UnifiedControlDefinition,\n} from '@makeswift/controls'\n\nimport { type ResponsiveColor } from '../components/utils/types'\nimport type { Data } from '../state/react-page'\nimport {\n BorderDescriptor,\n CheckboxDescriptor,\n LinkDescriptor,\n ResolveLinkPropControllerValue,\n Types as PropControllerTypes,\n ShadowsDescriptor,\n ResolveShadowsPropControllerValue,\n ResponsiveLengthDescriptor,\n ResolveResponsiveLengthPropControllerValue,\n NumberDescriptor,\n ResolveNumberPropControllerValue,\n ResponsiveColorDescriptor,\n ResolveCheckboxPropControllerValue,\n BorderRadiusDescriptor,\n ResolveBorderPropControllerValue,\n ResolveBorderRadiusPropControllerValue,\n DateDescriptor,\n ResolveDatePropControllerValue,\n FontDescriptor,\n ResolveFontPropControllerValue,\n VideoDescriptor,\n ResolveVideoPropControllerValue,\n TableDescriptor,\n ResolveTablePropControllerValue,\n MarginDescriptor,\n ResolveMarginPropControllerValue,\n PaddingDescriptor,\n ResolvePaddingPropControllerValue,\n WidthDescriptor,\n ResolveWidthPropControllerValue,\n TextStyleDescriptor,\n ResolveTextStylePropControllerValue,\n NavigationLinksDescriptor,\n ResolveNavigationLinksPropControllerValue,\n TextAreaDescriptor,\n ResolveTextAreaPropControllerValue,\n GapX,\n ResponsiveNumber,\n ResponsiveSelect,\n ResolveGapYPropControllerValue,\n GapYDescriptor,\n ElementIDDescriptor,\n ResolveElementIDPropControllerValue,\n TableFormFieldsDescriptor,\n ResolveTableFormFieldsPropControllerValue,\n GridDescriptor,\n ResolveGridPropControllerValue,\n ImageDescriptor,\n ResolveImagePropControllerValue,\n ImagesDescriptor,\n ResolveImagesPropControllerValue,\n BackgroundsDescriptor,\n ResolveBackgroundsPropControllerValue,\n ResponsiveOpacity,\n ResponsiveIconRadioGroup,\n ResolveSocialLinksPropControllerValue,\n SocialLinksDescriptor,\n TextInputDescriptor,\n ResolveTextInputPropControllerValue,\n type Descriptor as PropDescriptor,\n type Value as PropValue,\n} from '@makeswift/prop-controllers'\n\nimport { DeletedPropControllerDescriptor } from './deleted'\n\nexport type { Data }\n\nexport type Gap = { value: number; unit: 'px' }\n\ntype PropControllerDescriptor<T extends Data = Data> =\n | DeletedPropControllerDescriptor<T>\n | BackgroundsDescriptor<T>\n | BorderDescriptor<T>\n | BorderRadiusDescriptor<T>\n | CheckboxDescriptor<T>\n | DateDescriptor<T>\n | ElementIDDescriptor<T>\n | FontDescriptor<T>\n | PropDescriptor<typeof GapX>\n | GapYDescriptor<T>\n | GridDescriptor<T>\n | ImageDescriptor<T>\n | ImagesDescriptor<T>\n | LinkDescriptor<T>\n | MarginDescriptor<T>\n | NavigationLinksDescriptor<T>\n | NumberDescriptor<T>\n | PaddingDescriptor<T>\n | ResponsiveColorDescriptor<T>\n | ResponsiveLengthDescriptor<T>\n | PropDescriptor<typeof ResponsiveIconRadioGroup>\n | PropDescriptor<typeof ResponsiveNumber>\n | PropDescriptor<typeof ResponsiveOpacity>\n | PropDescriptor<typeof ResponsiveSelect>\n | ShadowsDescriptor<T>\n | SocialLinksDescriptor<T>\n | TableDescriptor<T>\n | TableFormFieldsDescriptor<T>\n | TextAreaDescriptor<T>\n | TextInputDescriptor<T>\n | TextStyleDescriptor<T>\n | VideoDescriptor<T>\n | WidthDescriptor<T>\n\nexport type LegacyDescriptor<T extends Data = Data> = PropControllerDescriptor<T>\n\nexport type Descriptor<T extends Data = Data> = LegacyDescriptor<T> | UnifiedControlDefinition\n\nexport function isLegacyDescriptor<T extends Data>(\n control: Descriptor<T>,\n): control is LegacyDescriptor<T> {\n return !(control instanceof UnifiedControlDefinition)\n}\n\nexport type PanelDescriptorType =\n | typeof PropControllerTypes.Backgrounds\n | typeof PropControllerTypes.ResponsiveIconRadioGroup\n | typeof PropControllerTypes.Margin\n | typeof PropControllerTypes.Padding\n | typeof PropControllerTypes.Shadows\n | typeof PropControllerTypes.Border\n | typeof PropControllerTypes.GapY\n | typeof PropControllerTypes.GapX\n | typeof PropControllerTypes.BorderRadius\n | typeof PropControllerTypes.Checkbox\n | typeof PropControllerTypes.TextInput\n | typeof PropControllerTypes.Link\n | typeof PropControllerTypes.ResponsiveSelect\n | typeof PropControllerTypes.ResponsiveColor\n | typeof PropControllerTypes.TextStyle\n | typeof PropControllerTypes.Images\n | typeof PropControllerTypes.ResponsiveNumber\n | typeof PropControllerTypes.Number\n | typeof PropControllerTypes.Date\n | typeof PropControllerTypes.Font\n | typeof PropControllerTypes.TextArea\n | typeof PropControllerTypes.Table\n | typeof PropControllerTypes.Image\n | typeof PropControllerTypes.ResponsiveOpacity\n | typeof PropControllerTypes.SocialLinks\n | typeof PropControllerTypes.Video\n | typeof PropControllerTypes.NavigationLinks\n\nexport type PanelDescriptor<T extends Data = Data> = Extract<\n Descriptor<T>,\n { type: PanelDescriptorType }\n>\n\n// see https://github.com/prettier/prettier/issues/7940#issuecomment-2074455883\n// prettier-ignore\nexport type PropControllerDescriptorValueType<T extends PropControllerDescriptor> = T['type'] extends typeof PropControllerTypes.ResponsiveColor\n ? // TODO(miguel): We're not importing a resolver type from `@makeswift/prop-controllers` because\n // the resolved type is tightly coupled with the runtime (i.e., it's the result of an API call).\n // This means that we probably want to rethink how types are resolved and where that lives.\n ResponsiveColor | null | undefined\n : T['type'] extends typeof PropControllerTypes.Backgrounds\n ? ResolveBackgroundsPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.Backgrounds }>\n >\n : T['type'] extends typeof PropControllerTypes.Checkbox\n ? ResolveCheckboxPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Checkbox }>>\n : T['type'] extends typeof PropControllerTypes.Date\n ? ResolveDatePropControllerValue<Extract<T, { type: typeof PropControllerTypes.Date }>>\n : T['type'] extends typeof PropControllerTypes.ElementID\n ? ResolveElementIDPropControllerValue<Extract<T, { type: typeof PropControllerTypes.ElementID }>>\n : T['type'] extends typeof PropControllerTypes.Font\n ? ResolveFontPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Font }>>\n : T['type'] extends typeof PropControllerTypes.GapX\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.GapY\n ? ResolveGapYPropControllerValue<Extract<T, { type: typeof PropControllerTypes.GapY }>>\n : T['type'] extends typeof PropControllerTypes.Grid\n ? ResolveGridPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Grid }>>\n : T['type'] extends typeof PropControllerTypes.Image\n ? ResolveImagePropControllerValue<Extract<T, { type: typeof PropControllerTypes.Image }>>\n : T['type'] extends typeof PropControllerTypes.Images\n ? ResolveImagesPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Images }>>\n : T['type'] extends typeof PropControllerTypes.ResponsiveIconRadioGroup\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.ResponsiveNumber\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.ResponsiveOpacity\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.ResponsiveSelect\n ? PropValue<T> | undefined\n : T['type'] extends typeof PropControllerTypes.Link\n ? ResolveLinkPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Link }>>\n : T['type'] extends typeof PropControllerTypes.Width\n ? ResolveWidthPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Width }>>\n : T['type'] extends typeof PropControllerTypes.Padding\n ? ResolvePaddingPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Padding }>>\n : T['type'] extends typeof PropControllerTypes.Margin\n ? ResolveMarginPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Margin }>>\n : T['type'] extends typeof PropControllerTypes.NavigationLinks\n ? ResolveNavigationLinksPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.NavigationLinks }>\n >\n : T['type'] extends typeof PropControllerTypes.BorderRadius\n ? ResolveBorderRadiusPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.BorderRadius }>\n >\n : T['type'] extends typeof PropControllerTypes.Shadows\n ? ResolveShadowsPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Shadows }>>\n : T['type'] extends typeof PropControllerTypes.SocialLinks\n ? ResolveSocialLinksPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.SocialLinks }>\n >\n : T['type'] extends typeof PropControllerTypes.ResponsiveLength\n ? ResolveResponsiveLengthPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.ResponsiveLength }>\n >\n : T['type'] extends typeof PropControllerTypes.Border\n ? ResolveBorderPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Border }>>\n : T['type'] extends typeof PropControllerTypes.Number\n ? ResolveNumberPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Number }>>\n : T['type'] extends typeof PropControllerTypes.Table\n ? ResolveTablePropControllerValue<Extract<T, { type: typeof PropControllerTypes.Table }>>\n : T['type'] extends typeof PropControllerTypes.TableFormFields\n ? ResolveTableFormFieldsPropControllerValue<\n Extract<T, { type: typeof PropControllerTypes.TableFormFields }>\n >\n : T['type'] extends typeof PropControllerTypes.TextStyle\n ? ResolveTextStylePropControllerValue<Extract<T, { type: typeof PropControllerTypes.TextStyle }>>\n : T['type'] extends typeof PropControllerTypes.TextArea\n ? ResolveTextAreaPropControllerValue<Extract<T, { type: typeof PropControllerTypes.TextArea }>>\n : T['type'] extends typeof PropControllerTypes.TextInput\n ? ResolveTextInputPropControllerValue<Extract<T, { type: typeof PropControllerTypes.TextInput }>>\n : T['type'] extends typeof PropControllerTypes.Video\n ? ResolveVideoPropControllerValue<Extract<T, { type: typeof PropControllerTypes.Video }>>\n : T extends Descriptor<infer U>\n ? U | undefined\n : never\n\nexport type DescriptorValueType<T extends Descriptor> = T extends PropControllerDescriptor\n ? PropControllerDescriptorValueType<T>\n : T extends UnifiedControlDefinition\n ? ResolvedValueType<T>\n : T extends Descriptor<infer U>\n ? U | undefined\n : never\n\nexport type PanelDescriptorValueType<T extends PanelDescriptor> =\n T extends PanelDescriptor<infer U> ? U : never\n"],"mappings":"AAAA;AAAA,EAEE,qBAAqB;AAAA,OAChB;AAiHA,SAAS,mBACd,SACgC;AAChC,SAAO,EAAE,mBAAmB;AAC9B;","names":[]}