@makeswift/runtime 0.25.0-canary.8 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (777) hide show
  1. package/dist/cjs/api/react.js +10 -14
  2. package/dist/cjs/api/react.js.map +1 -1
  3. package/dist/cjs/api/site-version/index.js +103 -0
  4. package/dist/cjs/api/site-version/index.js.map +1 -0
  5. package/dist/cjs/api-handler/handlers/manifest.js +3 -4
  6. package/dist/cjs/api-handler/handlers/manifest.js.map +1 -1
  7. package/dist/cjs/api-handler/handlers/redirect-live.js +52 -0
  8. package/dist/cjs/api-handler/handlers/redirect-live.js.map +1 -0
  9. package/dist/cjs/api-handler/index.js +6 -5
  10. package/dist/cjs/api-handler/index.js.map +1 -1
  11. package/dist/cjs/api-handler/node-request-response.js +99 -0
  12. package/dist/cjs/api-handler/node-request-response.js.map +1 -0
  13. package/dist/cjs/{next/preview-mode.js → api-handler/preview.js} +12 -18
  14. package/dist/cjs/api-handler/preview.js.map +1 -0
  15. package/dist/cjs/api-handler/request-response.js +9 -0
  16. package/dist/cjs/api-handler/request-response.js.map +1 -1
  17. package/dist/cjs/client/index.js +67 -59
  18. package/dist/cjs/client/index.js.map +1 -1
  19. package/dist/cjs/components/builtin/Box/animations.js.map +1 -1
  20. package/dist/cjs/components/builtin/Form/components/Field/services/responsiveField.js.map +1 -1
  21. package/dist/cjs/components/builtin/Image/Image.js +4 -26
  22. package/dist/cjs/components/builtin/Image/Image.js.map +1 -1
  23. package/dist/cjs/components/builtin/Root/Root.js +4 -4
  24. package/dist/cjs/components/builtin/Root/Root.js.map +1 -1
  25. package/dist/cjs/components/builtin/Slot/Slot.js +1 -1
  26. package/dist/cjs/components/builtin/Slot/Slot.js.map +1 -1
  27. package/dist/cjs/components/builtin/Video/Video.js +3 -13
  28. package/dist/cjs/components/builtin/Video/Video.js.map +1 -1
  29. package/dist/cjs/components/hooks/useMediaQuery.js +1 -2
  30. package/dist/cjs/components/hooks/useMediaQuery.js.map +1 -1
  31. package/dist/cjs/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js +3 -13
  32. package/dist/cjs/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
  33. package/dist/cjs/components/shared/BackgroundsContainer/components/Backgrounds/index.js +4 -14
  34. package/dist/cjs/components/shared/BackgroundsContainer/components/Backgrounds/index.js.map +1 -1
  35. package/dist/cjs/components/shared/Link/index.js +15 -40
  36. package/dist/cjs/components/shared/Link/index.js.map +1 -1
  37. package/dist/cjs/{next/components/Slot.js → components/shared/react-player.js} +9 -18
  38. package/dist/cjs/components/shared/react-player.js.map +1 -0
  39. package/dist/cjs/components/utils/responsive-style.js.map +1 -1
  40. package/dist/cjs/css/border-radius.js.map +1 -1
  41. package/dist/cjs/css/border.js.map +1 -1
  42. package/dist/cjs/css/margin.js.map +1 -1
  43. package/dist/cjs/css/padding.js.map +1 -1
  44. package/dist/cjs/next/api-handler/config/app-router.js +12 -10
  45. package/dist/cjs/next/api-handler/config/app-router.js.map +1 -1
  46. package/dist/cjs/next/api-handler/config/pages-router.js +9 -69
  47. package/dist/cjs/next/api-handler/config/pages-router.js.map +1 -1
  48. package/dist/cjs/next/api-handler/handlers/{redirect-draft.js → app-router-redirect-preview.js} +30 -26
  49. package/dist/cjs/next/api-handler/handlers/app-router-redirect-preview.js.map +1 -0
  50. package/dist/cjs/next/api-handler/handlers/{redirect-preview.js → pages-router-redirect-preview.js} +29 -22
  51. package/dist/cjs/next/api-handler/handlers/pages-router-redirect-preview.js.map +1 -0
  52. package/dist/cjs/next/api-handler/index.js +4 -3
  53. package/dist/cjs/next/api-handler/index.js.map +1 -1
  54. package/dist/cjs/next/api-handler/{draft.js → preview.js} +13 -11
  55. package/dist/cjs/next/api-handler/preview.js.map +1 -0
  56. package/dist/cjs/next/app-router-site-version.js +40 -0
  57. package/dist/cjs/next/app-router-site-version.js.map +1 -0
  58. package/dist/cjs/next/client.js +9 -3
  59. package/dist/cjs/next/client.js.map +1 -1
  60. package/dist/cjs/next/components/framework-provider/app-router/index.js.map +1 -1
  61. package/dist/cjs/next/components/framework-provider/index.js +20 -2
  62. package/dist/cjs/next/components/framework-provider/index.js.map +1 -1
  63. package/dist/cjs/next/components/framework-provider/link.js +69 -0
  64. package/dist/cjs/next/components/framework-provider/link.js.map +1 -0
  65. package/dist/cjs/next/components/framework-provider/pages-router/index.js.map +1 -1
  66. package/dist/cjs/next/components/page.js +1 -1
  67. package/dist/cjs/next/components/page.js.map +1 -1
  68. package/dist/cjs/next/components/tests/__fixtures__/element-data/box-component.js +124 -0
  69. package/dist/cjs/next/components/tests/__fixtures__/element-data/box-component.js.map +1 -0
  70. package/dist/cjs/next/components/tests/__fixtures__/element-data/button-component.js +109 -0
  71. package/dist/cjs/next/components/tests/__fixtures__/element-data/button-component.js.map +1 -0
  72. package/dist/cjs/next/components/tests/__fixtures__/element-data/image-component.js +193 -0
  73. package/dist/cjs/next/components/tests/__fixtures__/element-data/image-component.js.map +1 -0
  74. package/dist/cjs/{api-handler/handlers/clear-draft.js → next/components/tests/__fixtures__/resources/files.js} +17 -19
  75. package/dist/cjs/next/components/tests/__fixtures__/resources/files.js.map +1 -0
  76. package/dist/cjs/next/components/tests/__fixtures__/resources/index.js +27 -0
  77. package/dist/cjs/next/components/tests/__fixtures__/resources/index.js.map +1 -0
  78. package/dist/cjs/next/components/tests/__fixtures__/resources/page-pathname-slices.js +33 -0
  79. package/dist/cjs/next/components/tests/__fixtures__/resources/page-pathname-slices.js.map +1 -0
  80. package/dist/cjs/next/components/tests/__fixtures__/resources/swatches.js +35 -0
  81. package/dist/cjs/next/components/tests/__fixtures__/resources/swatches.js.map +1 -0
  82. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +1 -1
  83. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  84. package/dist/cjs/next/document.js +2 -1
  85. package/dist/cjs/next/document.js.map +1 -1
  86. package/dist/cjs/next/index.js +2 -2
  87. package/dist/cjs/next/index.js.map +1 -1
  88. package/dist/cjs/next/middleware/request-utils.js +11 -17
  89. package/dist/cjs/next/middleware/request-utils.js.map +1 -1
  90. package/dist/cjs/next/root-style-registry.js +10 -25
  91. package/dist/cjs/next/root-style-registry.js.map +1 -1
  92. package/dist/cjs/next/server.js +2 -2
  93. package/dist/cjs/next/server.js.map +1 -1
  94. package/dist/cjs/next/testing/page-rendering.js +16 -3
  95. package/dist/cjs/next/testing/page-rendering.js.map +1 -1
  96. package/dist/cjs/next/testing/react-provider.js +2 -2
  97. package/dist/cjs/next/testing/react-provider.js.map +1 -1
  98. package/dist/cjs/next/tests/test-utils.js +7 -5
  99. package/dist/cjs/next/tests/test-utils.js.map +1 -1
  100. package/dist/cjs/{next → runtimes/react}/components/MakeswiftComponent.js +4 -4
  101. package/dist/cjs/runtimes/react/components/MakeswiftComponent.js.map +1 -0
  102. package/dist/cjs/runtimes/react/components/RuntimeProvider.js +9 -7
  103. package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
  104. package/dist/cjs/runtimes/react/components/Slot.js +38 -0
  105. package/dist/cjs/runtimes/react/components/Slot.js.map +1 -0
  106. package/dist/cjs/{next → runtimes/react}/components/SlotProvider.js +3 -3
  107. package/dist/cjs/runtimes/react/components/SlotProvider.js.map +1 -0
  108. package/dist/cjs/runtimes/react/components/framework-context.js +38 -3
  109. package/dist/cjs/runtimes/react/components/framework-context.js.map +1 -1
  110. package/dist/cjs/runtimes/react/components/page/index.js +18 -16
  111. package/dist/cjs/runtimes/react/components/page/index.js.map +1 -1
  112. package/dist/cjs/runtimes/react/components/{draft-switcher/draft-switcher.js → preview-switcher/preview-switcher.js} +12 -22
  113. package/dist/cjs/runtimes/react/components/preview-switcher/preview-switcher.js.map +1 -0
  114. package/dist/cjs/runtimes/react/components/{draft-switcher/draft-toolbar.js → preview-switcher/preview-toolbar.js} +17 -9
  115. package/dist/cjs/runtimes/react/components/preview-switcher/preview-toolbar.js.map +1 -0
  116. package/dist/cjs/runtimes/react/controls/style.js.map +1 -1
  117. package/dist/cjs/runtimes/react/hooks/makeswift-api.js +9 -10
  118. package/dist/cjs/runtimes/react/hooks/makeswift-api.js.map +1 -1
  119. package/dist/cjs/runtimes/react/hooks/use-selector.js +1 -1
  120. package/dist/cjs/runtimes/react/hooks/use-selector.js.map +1 -1
  121. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js +1 -1
  122. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  123. package/dist/cjs/runtimes/react/hooks/use-universal-dispatch.js.map +1 -1
  124. package/dist/cjs/runtimes/react/host-api-client.js +7 -2
  125. package/dist/cjs/runtimes/react/host-api-client.js.map +1 -1
  126. package/dist/cjs/runtimes/react/root-style-registry.js +39 -13
  127. package/dist/cjs/runtimes/react/root-style-registry.js.map +1 -1
  128. package/dist/cjs/runtimes/react/use-global-style.js +1 -1
  129. package/dist/cjs/runtimes/react/use-global-style.js.map +1 -1
  130. package/dist/cjs/runtimes/react/use-style.js +3 -3
  131. package/dist/cjs/runtimes/react/use-style.js.map +1 -1
  132. package/dist/cjs/state/actions.js +6 -0
  133. package/dist/cjs/state/actions.js.map +1 -1
  134. package/dist/cjs/state/makeswift-api-client.js +42 -57
  135. package/dist/cjs/state/makeswift-api-client.js.map +1 -1
  136. package/dist/cjs/state/mixins/setup-teardown.js.map +1 -1
  137. package/dist/cjs/state/modules/api-resources.js +2 -0
  138. package/dist/cjs/state/modules/api-resources.js.map +1 -1
  139. package/dist/cjs/state/modules/box-models.js +2 -0
  140. package/dist/cjs/state/modules/box-models.js.map +1 -1
  141. package/dist/cjs/state/modules/breakpoints.js +3 -1
  142. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  143. package/dist/cjs/state/modules/builder-edit-mode.js +2 -0
  144. package/dist/cjs/state/modules/builder-edit-mode.js.map +1 -1
  145. package/dist/cjs/state/modules/components-meta.js +2 -0
  146. package/dist/cjs/state/modules/components-meta.js.map +1 -1
  147. package/dist/cjs/state/modules/element-imperative-handles.js +2 -0
  148. package/dist/cjs/state/modules/element-imperative-handles.js.map +1 -1
  149. package/dist/cjs/state/modules/element-trees.js +2 -0
  150. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  151. package/dist/cjs/state/modules/is-in-builder.js +2 -0
  152. package/dist/cjs/state/modules/is-in-builder.js.map +1 -1
  153. package/dist/cjs/state/modules/is-preview.js +3 -0
  154. package/dist/cjs/state/modules/is-preview.js.map +1 -1
  155. package/dist/cjs/state/modules/localized-resources-map.js +2 -0
  156. package/dist/cjs/state/modules/localized-resources-map.js.map +1 -1
  157. package/dist/cjs/state/modules/pointer.js +2 -0
  158. package/dist/cjs/state/modules/pointer.js.map +1 -1
  159. package/dist/cjs/state/modules/prop-controller-handles.js +2 -0
  160. package/dist/cjs/state/modules/prop-controller-handles.js.map +1 -1
  161. package/dist/cjs/state/modules/prop-controllers.js +2 -0
  162. package/dist/cjs/state/modules/prop-controllers.js.map +1 -1
  163. package/dist/cjs/state/modules/react-components.js +2 -0
  164. package/dist/cjs/state/modules/react-components.js.map +1 -1
  165. package/dist/cjs/state/modules/read-only-documents.js +2 -0
  166. package/dist/cjs/state/modules/read-only-documents.js.map +1 -1
  167. package/dist/cjs/state/modules/read-write-documents.js +2 -0
  168. package/dist/cjs/state/modules/read-write-documents.js.map +1 -1
  169. package/dist/cjs/state/react-builder-preview.js +32 -38
  170. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  171. package/dist/cjs/state/react-page.js +15 -19
  172. package/dist/cjs/state/react-page.js.map +1 -1
  173. package/dist/cjs/state/toolkit.js +54 -0
  174. package/dist/cjs/state/toolkit.js.map +1 -0
  175. package/dist/cjs/testing/fixtures.js +38 -0
  176. package/dist/cjs/testing/fixtures.js.map +1 -0
  177. package/dist/cjs/utils/esm-compat.js +29 -0
  178. package/dist/cjs/utils/esm-compat.js.map +1 -0
  179. package/dist/esm/api/react.js +10 -14
  180. package/dist/esm/api/react.js.map +1 -1
  181. package/dist/esm/api/site-version/index.js +75 -0
  182. package/dist/esm/api/site-version/index.js.map +1 -0
  183. package/dist/esm/api-handler/handlers/manifest.js +3 -4
  184. package/dist/esm/api-handler/handlers/manifest.js.map +1 -1
  185. package/dist/esm/api-handler/handlers/redirect-live.js +27 -0
  186. package/dist/esm/api-handler/handlers/redirect-live.js.map +1 -0
  187. package/dist/esm/api-handler/index.js +7 -6
  188. package/dist/esm/api-handler/index.js.map +1 -1
  189. package/dist/esm/api-handler/node-request-response.js +73 -0
  190. package/dist/esm/api-handler/node-request-response.js.map +1 -0
  191. package/dist/esm/api-handler/preview.js +9 -0
  192. package/dist/esm/api-handler/preview.js.map +1 -0
  193. package/dist/esm/api-handler/request-response.js +9 -0
  194. package/dist/esm/api-handler/request-response.js.map +1 -1
  195. package/dist/esm/client/index.js +65 -58
  196. package/dist/esm/client/index.js.map +1 -1
  197. package/dist/esm/components/builtin/Box/animations.js.map +1 -1
  198. package/dist/esm/components/builtin/Form/components/Field/services/responsiveField.js.map +1 -1
  199. package/dist/esm/components/builtin/Image/Image.js +4 -16
  200. package/dist/esm/components/builtin/Image/Image.js.map +1 -1
  201. package/dist/esm/components/builtin/Root/Root.js +4 -4
  202. package/dist/esm/components/builtin/Root/Root.js.map +1 -1
  203. package/dist/esm/components/builtin/Slot/Slot.js +1 -1
  204. package/dist/esm/components/builtin/Slot/Slot.js.map +1 -1
  205. package/dist/esm/components/builtin/Video/Video.js +1 -1
  206. package/dist/esm/components/builtin/Video/Video.js.map +1 -1
  207. package/dist/esm/components/hooks/useMediaQuery.js +1 -2
  208. package/dist/esm/components/hooks/useMediaQuery.js.map +1 -1
  209. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js +1 -1
  210. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
  211. package/dist/esm/components/shared/BackgroundsContainer/components/Backgrounds/index.js +4 -14
  212. package/dist/esm/components/shared/BackgroundsContainer/components/Backgrounds/index.js.map +1 -1
  213. package/dist/esm/components/shared/Link/index.js +13 -28
  214. package/dist/esm/components/shared/Link/index.js.map +1 -1
  215. package/dist/esm/components/shared/react-player.js +7 -0
  216. package/dist/esm/components/shared/react-player.js.map +1 -0
  217. package/dist/esm/components/utils/responsive-style.js.map +1 -1
  218. package/dist/esm/css/border-radius.js.map +1 -1
  219. package/dist/esm/css/border.js.map +1 -1
  220. package/dist/esm/css/margin.js.map +1 -1
  221. package/dist/esm/css/padding.js.map +1 -1
  222. package/dist/esm/next/api-handler/config/app-router.js +12 -10
  223. package/dist/esm/next/api-handler/config/app-router.js.map +1 -1
  224. package/dist/esm/next/api-handler/config/pages-router.js +9 -69
  225. package/dist/esm/next/api-handler/config/pages-router.js.map +1 -1
  226. package/dist/esm/next/api-handler/handlers/app-router-redirect-preview.js +64 -0
  227. package/dist/esm/next/api-handler/handlers/app-router-redirect-preview.js.map +1 -0
  228. package/dist/esm/next/api-handler/handlers/pages-router-redirect-preview.js +52 -0
  229. package/dist/esm/next/api-handler/handlers/pages-router-redirect-preview.js.map +1 -0
  230. package/dist/esm/next/api-handler/index.js +4 -3
  231. package/dist/esm/next/api-handler/index.js.map +1 -1
  232. package/dist/esm/next/api-handler/preview.js +15 -0
  233. package/dist/esm/next/api-handler/preview.js.map +1 -0
  234. package/dist/esm/next/app-router-site-version.js +16 -0
  235. package/dist/esm/next/app-router-site-version.js.map +1 -0
  236. package/dist/esm/next/client.js +10 -4
  237. package/dist/esm/next/client.js.map +1 -1
  238. package/dist/esm/next/components/framework-provider/app-router/index.js.map +1 -1
  239. package/dist/esm/next/components/framework-provider/index.js +13 -2
  240. package/dist/esm/next/components/framework-provider/index.js.map +1 -1
  241. package/dist/esm/next/components/framework-provider/link.js +35 -0
  242. package/dist/esm/next/components/framework-provider/link.js.map +1 -0
  243. package/dist/esm/next/components/framework-provider/pages-router/index.js.map +1 -1
  244. package/dist/esm/next/components/page.js +2 -4
  245. package/dist/esm/next/components/page.js.map +1 -1
  246. package/dist/esm/next/components/tests/__fixtures__/element-data/box-component.js +99 -0
  247. package/dist/esm/next/components/tests/__fixtures__/element-data/box-component.js.map +1 -0
  248. package/dist/esm/next/components/tests/__fixtures__/element-data/button-component.js +83 -0
  249. package/dist/esm/next/components/tests/__fixtures__/element-data/button-component.js.map +1 -0
  250. package/dist/esm/next/components/tests/__fixtures__/element-data/image-component.js +169 -0
  251. package/dist/esm/next/components/tests/__fixtures__/element-data/image-component.js.map +1 -0
  252. package/dist/esm/next/components/tests/__fixtures__/resources/files.js +15 -0
  253. package/dist/esm/next/components/tests/__fixtures__/resources/files.js.map +1 -0
  254. package/dist/esm/next/components/tests/__fixtures__/resources/index.js +4 -0
  255. package/dist/esm/next/components/tests/__fixtures__/resources/index.js.map +1 -0
  256. package/dist/esm/next/components/tests/__fixtures__/resources/page-pathname-slices.js +9 -0
  257. package/dist/esm/next/components/tests/__fixtures__/resources/page-pathname-slices.js.map +1 -0
  258. package/dist/esm/next/components/tests/__fixtures__/resources/swatches.js +11 -0
  259. package/dist/esm/next/components/tests/__fixtures__/resources/swatches.js.map +1 -0
  260. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +1 -1
  261. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  262. package/dist/esm/next/document.js +2 -1
  263. package/dist/esm/next/document.js.map +1 -1
  264. package/dist/esm/next/index.js +2 -2
  265. package/dist/esm/next/index.js.map +1 -1
  266. package/dist/esm/next/middleware/request-utils.js +14 -17
  267. package/dist/esm/next/middleware/request-utils.js.map +1 -1
  268. package/dist/esm/next/root-style-registry.js +11 -23
  269. package/dist/esm/next/root-style-registry.js.map +1 -1
  270. package/dist/esm/next/server.js +1 -1
  271. package/dist/esm/next/server.js.map +1 -1
  272. package/dist/esm/next/testing/page-rendering.js +14 -2
  273. package/dist/esm/next/testing/page-rendering.js.map +1 -1
  274. package/dist/esm/next/testing/react-provider.js +2 -2
  275. package/dist/esm/next/testing/react-provider.js.map +1 -1
  276. package/dist/esm/next/tests/test-utils.js +7 -5
  277. package/dist/esm/next/tests/test-utils.js.map +1 -1
  278. package/dist/esm/{next → runtimes/react}/components/MakeswiftComponent.js +6 -4
  279. package/dist/esm/runtimes/react/components/MakeswiftComponent.js.map +1 -0
  280. package/dist/esm/runtimes/react/components/RuntimeProvider.js +9 -7
  281. package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
  282. package/dist/esm/{next → runtimes/react}/components/Slot.js +3 -5
  283. package/dist/esm/runtimes/react/components/Slot.js.map +1 -0
  284. package/dist/esm/{next → runtimes/react}/components/SlotProvider.js +1 -2
  285. package/dist/esm/runtimes/react/components/SlotProvider.js.map +1 -0
  286. package/dist/esm/runtimes/react/components/framework-context.js +41 -3
  287. package/dist/esm/runtimes/react/components/framework-context.js.map +1 -1
  288. package/dist/esm/runtimes/react/components/page/index.js +19 -17
  289. package/dist/esm/runtimes/react/components/page/index.js.map +1 -1
  290. package/dist/esm/runtimes/react/components/{draft-switcher/draft-switcher.js → preview-switcher/preview-switcher.js} +8 -18
  291. package/dist/esm/runtimes/react/components/preview-switcher/preview-switcher.js.map +1 -0
  292. package/dist/esm/runtimes/react/components/{draft-switcher/draft-toolbar.js → preview-switcher/preview-toolbar.js} +13 -5
  293. package/dist/esm/runtimes/react/components/preview-switcher/preview-toolbar.js.map +1 -0
  294. package/dist/esm/runtimes/react/controls/style.js.map +1 -1
  295. package/dist/esm/runtimes/react/hooks/makeswift-api.js +1 -2
  296. package/dist/esm/runtimes/react/hooks/makeswift-api.js.map +1 -1
  297. package/dist/esm/runtimes/react/hooks/use-selector.js +1 -1
  298. package/dist/esm/runtimes/react/hooks/use-selector.js.map +1 -1
  299. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js +1 -1
  300. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  301. package/dist/esm/runtimes/react/hooks/use-universal-dispatch.js.map +1 -1
  302. package/dist/esm/runtimes/react/host-api-client.js +7 -2
  303. package/dist/esm/runtimes/react/host-api-client.js.map +1 -1
  304. package/dist/esm/runtimes/react/root-style-registry.js +37 -13
  305. package/dist/esm/runtimes/react/root-style-registry.js.map +1 -1
  306. package/dist/esm/runtimes/react/use-global-style.js +1 -1
  307. package/dist/esm/runtimes/react/use-global-style.js.map +1 -1
  308. package/dist/esm/runtimes/react/use-style.js +1 -1
  309. package/dist/esm/runtimes/react/use-style.js.map +1 -1
  310. package/dist/esm/state/actions.js +5 -0
  311. package/dist/esm/state/actions.js.map +1 -1
  312. package/dist/esm/state/makeswift-api-client.js +42 -58
  313. package/dist/esm/state/makeswift-api-client.js.map +1 -1
  314. package/dist/esm/state/mixins/setup-teardown.js.map +1 -1
  315. package/dist/esm/state/modules/api-resources.js +3 -1
  316. package/dist/esm/state/modules/api-resources.js.map +1 -1
  317. package/dist/esm/state/modules/box-models.js +3 -1
  318. package/dist/esm/state/modules/box-models.js.map +1 -1
  319. package/dist/esm/state/modules/breakpoints.js +4 -2
  320. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  321. package/dist/esm/state/modules/builder-edit-mode.js +3 -1
  322. package/dist/esm/state/modules/builder-edit-mode.js.map +1 -1
  323. package/dist/esm/state/modules/components-meta.js +3 -1
  324. package/dist/esm/state/modules/components-meta.js.map +1 -1
  325. package/dist/esm/state/modules/element-imperative-handles.js +3 -1
  326. package/dist/esm/state/modules/element-imperative-handles.js.map +1 -1
  327. package/dist/esm/state/modules/element-trees.js +3 -1
  328. package/dist/esm/state/modules/element-trees.js.map +1 -1
  329. package/dist/esm/state/modules/is-in-builder.js +3 -1
  330. package/dist/esm/state/modules/is-in-builder.js.map +1 -1
  331. package/dist/esm/state/modules/is-preview.js +3 -0
  332. package/dist/esm/state/modules/is-preview.js.map +1 -1
  333. package/dist/esm/state/modules/localized-resources-map.js +3 -1
  334. package/dist/esm/state/modules/localized-resources-map.js.map +1 -1
  335. package/dist/esm/state/modules/pointer.js +3 -1
  336. package/dist/esm/state/modules/pointer.js.map +1 -1
  337. package/dist/esm/state/modules/prop-controller-handles.js +3 -1
  338. package/dist/esm/state/modules/prop-controller-handles.js.map +1 -1
  339. package/dist/esm/state/modules/prop-controllers.js +3 -1
  340. package/dist/esm/state/modules/prop-controllers.js.map +1 -1
  341. package/dist/esm/state/modules/react-components.js +3 -1
  342. package/dist/esm/state/modules/react-components.js.map +1 -1
  343. package/dist/esm/state/modules/read-only-documents.js +6 -1
  344. package/dist/esm/state/modules/read-only-documents.js.map +1 -1
  345. package/dist/esm/state/modules/read-write-documents.js +3 -1
  346. package/dist/esm/state/modules/read-write-documents.js.map +1 -1
  347. package/dist/esm/state/react-builder-preview.js +33 -40
  348. package/dist/esm/state/react-builder-preview.js.map +1 -1
  349. package/dist/esm/state/react-page.js +16 -21
  350. package/dist/esm/state/react-page.js.map +1 -1
  351. package/dist/esm/state/toolkit.js +28 -0
  352. package/dist/esm/state/toolkit.js.map +1 -0
  353. package/dist/esm/testing/fixtures.js +13 -0
  354. package/dist/esm/testing/fixtures.js.map +1 -0
  355. package/dist/esm/utils/esm-compat.js +5 -0
  356. package/dist/esm/utils/esm-compat.js.map +1 -0
  357. package/dist/types/api/graphql/documents/queries.d.ts +7 -7
  358. package/dist/types/api/graphql/documents/queries.d.ts.map +1 -1
  359. package/dist/types/api/graphql/generated/fragment-document-nodes.d.ts.map +1 -1
  360. package/dist/types/api/react.d.ts +3 -4
  361. package/dist/types/api/react.d.ts.map +1 -1
  362. package/dist/types/api/site-version/index.d.ts +19 -0
  363. package/dist/types/api/site-version/index.d.ts.map +1 -0
  364. package/dist/types/api/site-version/site-version.test.d.ts +2 -0
  365. package/dist/types/api/site-version/site-version.test.d.ts.map +1 -0
  366. package/dist/types/api-handler/handlers/manifest.d.ts +1 -3
  367. package/dist/types/api-handler/handlers/manifest.d.ts.map +1 -1
  368. package/dist/types/api-handler/handlers/redirect-live.d.ts +6 -0
  369. package/dist/types/api-handler/handlers/redirect-live.d.ts.map +1 -0
  370. package/dist/types/api-handler/index.d.ts +5 -5
  371. package/dist/types/api-handler/index.d.ts.map +1 -1
  372. package/dist/types/api-handler/node-request-response.d.ts +8 -0
  373. package/dist/types/api-handler/node-request-response.d.ts.map +1 -0
  374. package/dist/types/api-handler/node-request-response.test.d.ts +2 -0
  375. package/dist/types/api-handler/node-request-response.test.d.ts.map +1 -0
  376. package/dist/types/api-handler/preview.d.ts +5 -0
  377. package/dist/types/api-handler/preview.d.ts.map +1 -0
  378. package/dist/types/api-handler/request-response.d.ts +1 -0
  379. package/dist/types/api-handler/request-response.d.ts.map +1 -1
  380. package/dist/types/client/index.d.ts +174 -165
  381. package/dist/types/client/index.d.ts.map +1 -1
  382. package/dist/types/components/builtin/Box/Box.d.ts +15 -147
  383. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  384. package/dist/types/components/builtin/Box/components/Placeholder/index.d.ts +0 -1
  385. package/dist/types/components/builtin/Box/components/Placeholder/index.d.ts.map +1 -1
  386. package/dist/types/components/builtin/Button/Button.d.ts +4 -70
  387. package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
  388. package/dist/types/components/builtin/Carousel/Carousel.d.ts +0 -1
  389. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  390. package/dist/types/components/builtin/Countdown/Countdown.d.ts +0 -1
  391. package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
  392. package/dist/types/components/builtin/Divider/Divider.d.ts +0 -1
  393. package/dist/types/components/builtin/Divider/Divider.d.ts.map +1 -1
  394. package/dist/types/components/builtin/Embed/Embed.d.ts +0 -1
  395. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  396. package/dist/types/components/builtin/Form/Form.d.ts +0 -1
  397. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  398. package/dist/types/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  399. package/dist/types/components/builtin/Form/components/Field/components/Checkbox/index.d.ts.map +1 -1
  400. package/dist/types/components/builtin/Form/components/Field/components/CheckboxTableField/index.d.ts +0 -1
  401. package/dist/types/components/builtin/Form/components/Field/components/CheckboxTableField/index.d.ts.map +1 -1
  402. package/dist/types/components/builtin/Form/components/Field/components/EmailTableField/index.d.ts +0 -1
  403. package/dist/types/components/builtin/Form/components/Field/components/EmailTableField/index.d.ts.map +1 -1
  404. package/dist/types/components/builtin/Form/components/Field/components/Input/index.d.ts +0 -1
  405. package/dist/types/components/builtin/Form/components/Field/components/Input/index.d.ts.map +1 -1
  406. package/dist/types/components/builtin/Form/components/Field/components/LongTextTableField/index.d.ts +0 -1
  407. package/dist/types/components/builtin/Form/components/Field/components/LongTextTableField/index.d.ts.map +1 -1
  408. package/dist/types/components/builtin/Form/components/Field/components/NumberTableField/index.d.ts +0 -1
  409. package/dist/types/components/builtin/Form/components/Field/components/NumberTableField/index.d.ts.map +1 -1
  410. package/dist/types/components/builtin/Form/components/Field/components/PhoneNumberTableField/index.d.ts +0 -1
  411. package/dist/types/components/builtin/Form/components/Field/components/PhoneNumberTableField/index.d.ts.map +1 -1
  412. package/dist/types/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts +0 -1
  413. package/dist/types/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts.map +1 -1
  414. package/dist/types/components/builtin/Form/components/Field/components/RadioButton/index.d.ts +1 -1
  415. package/dist/types/components/builtin/Form/components/Field/components/RadioButton/index.d.ts.map +1 -1
  416. package/dist/types/components/builtin/Form/components/Field/components/SingleLineTextTableField/index.d.ts +0 -1
  417. package/dist/types/components/builtin/Form/components/Field/components/SingleLineTextTableField/index.d.ts.map +1 -1
  418. package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnSingleSelect/index.d.ts +0 -1
  419. package/dist/types/components/builtin/Form/components/Field/components/SingleSelectTableField/components/TableColumnSingleSelect/index.d.ts.map +1 -1
  420. package/dist/types/components/builtin/Form/components/Field/components/TextArea/index.d.ts +0 -1
  421. package/dist/types/components/builtin/Form/components/Field/components/TextArea/index.d.ts.map +1 -1
  422. package/dist/types/components/builtin/Form/components/Field/components/URLTableField/index.d.ts +0 -1
  423. package/dist/types/components/builtin/Form/components/Field/components/URLTableField/index.d.ts.map +1 -1
  424. package/dist/types/components/builtin/Form/components/Field/index.d.ts +0 -1
  425. package/dist/types/components/builtin/Form/components/Field/index.d.ts.map +1 -1
  426. package/dist/types/components/builtin/Form/components/Field/services/responsiveField.d.ts +1 -1
  427. package/dist/types/components/builtin/Form/components/Field/services/responsiveField.d.ts.map +1 -1
  428. package/dist/types/components/builtin/Form/components/Placeholder/index.d.ts +0 -1
  429. package/dist/types/components/builtin/Form/components/Placeholder/index.d.ts.map +1 -1
  430. package/dist/types/components/builtin/Form/components/Spinner/index.d.ts +0 -1
  431. package/dist/types/components/builtin/Form/components/Spinner/index.d.ts.map +1 -1
  432. package/dist/types/components/builtin/Form/context/FormContext.d.ts +0 -1
  433. package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -1
  434. package/dist/types/components/builtin/Image/Image.d.ts +0 -1
  435. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  436. package/dist/types/components/builtin/Navigation/Navigation.d.ts +0 -1
  437. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  438. package/dist/types/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts +0 -1
  439. package/dist/types/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts.map +1 -1
  440. package/dist/types/components/builtin/Navigation/components/MobileMenu/index.d.ts +0 -1
  441. package/dist/types/components/builtin/Navigation/components/MobileMenu/index.d.ts.map +1 -1
  442. package/dist/types/components/builtin/Root/Root.d.ts +1 -2
  443. package/dist/types/components/builtin/Root/Root.d.ts.map +1 -1
  444. package/dist/types/components/builtin/Root/components/Placeholder/index.d.ts +0 -1
  445. package/dist/types/components/builtin/Root/components/Placeholder/index.d.ts.map +1 -1
  446. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +0 -1
  447. package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -1
  448. package/dist/types/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts +0 -1
  449. package/dist/types/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts.map +1 -1
  450. package/dist/types/components/builtin/Text/Text.d.ts +0 -1
  451. package/dist/types/components/builtin/Text/Text.d.ts.map +1 -1
  452. package/dist/types/components/builtin/Video/Video.d.ts +0 -1
  453. package/dist/types/components/builtin/Video/Video.d.ts.map +1 -1
  454. package/dist/types/components/hooks/useMediaQuery.d.ts.map +1 -1
  455. package/dist/types/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts +0 -1
  456. package/dist/types/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
  457. package/dist/types/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts +0 -1
  458. package/dist/types/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts.map +1 -1
  459. package/dist/types/components/shared/ErrorBoundary.d.ts +0 -1
  460. package/dist/types/components/shared/ErrorBoundary.d.ts.map +1 -1
  461. package/dist/types/components/shared/FallbackComponent/FallbackComponent.d.ts +0 -1
  462. package/dist/types/components/shared/FallbackComponent/FallbackComponent.d.ts.map +1 -1
  463. package/dist/types/components/shared/Link/index.d.ts.map +1 -1
  464. package/dist/types/components/shared/react-player.d.ts +3 -0
  465. package/dist/types/components/shared/react-player.d.ts.map +1 -0
  466. package/dist/types/components/utils/columns.d.ts.map +1 -1
  467. package/dist/types/components/utils/responsive-style.d.ts +1 -1
  468. package/dist/types/components/utils/responsive-style.d.ts.map +1 -1
  469. package/dist/types/controls/control.d.ts +1 -25
  470. package/dist/types/controls/control.d.ts.map +1 -1
  471. package/dist/types/controls/link.d.ts +3 -3
  472. package/dist/types/controls/link.d.ts.map +1 -1
  473. package/dist/types/controls/rich-text/control.d.ts.map +1 -1
  474. package/dist/types/controls/rich-text-v2/control.d.ts +13 -13
  475. package/dist/types/controls/rich-text-v2/control.d.ts.map +1 -1
  476. package/dist/types/controls/rich-text-v2/plugin.d.ts +2 -2
  477. package/dist/types/controls/rich-text-v2/plugin.d.ts.map +1 -1
  478. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +556 -12
  479. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  480. package/dist/types/css/border-radius.d.ts +1 -1
  481. package/dist/types/css/border-radius.d.ts.map +1 -1
  482. package/dist/types/css/border.d.ts +1 -1
  483. package/dist/types/css/border.d.ts.map +1 -1
  484. package/dist/types/css/margin.d.ts +1 -1
  485. package/dist/types/css/margin.d.ts.map +1 -1
  486. package/dist/types/css/padding.d.ts +1 -1
  487. package/dist/types/css/padding.d.ts.map +1 -1
  488. package/dist/types/next/api-handler/config/app-router.d.ts +10 -8
  489. package/dist/types/next/api-handler/config/app-router.d.ts.map +1 -1
  490. package/dist/types/next/api-handler/config/pages-router.d.ts +3 -2
  491. package/dist/types/next/api-handler/config/pages-router.d.ts.map +1 -1
  492. package/dist/types/next/api-handler/handlers/app-router-redirect-preview.d.ts +5 -0
  493. package/dist/types/next/api-handler/handlers/app-router-redirect-preview.d.ts.map +1 -0
  494. package/dist/types/next/api-handler/handlers/app-router-redirect-preview.test.d.ts +2 -0
  495. package/dist/types/next/api-handler/handlers/app-router-redirect-preview.test.d.ts.map +1 -0
  496. package/dist/types/next/api-handler/handlers/pages-router-redirect-preview.d.ts +4 -0
  497. package/dist/types/next/api-handler/handlers/pages-router-redirect-preview.d.ts.map +1 -0
  498. package/dist/types/next/api-handler/index.d.ts +1 -1
  499. package/dist/types/next/api-handler/index.d.ts.map +1 -1
  500. package/dist/types/next/api-handler/preview.d.ts +8 -0
  501. package/dist/types/next/api-handler/preview.d.ts.map +1 -0
  502. package/dist/types/next/app-router-site-version.d.ts +3 -0
  503. package/dist/types/next/app-router-site-version.d.ts.map +1 -0
  504. package/dist/types/next/client.d.ts +3 -3
  505. package/dist/types/next/client.d.ts.map +1 -1
  506. package/dist/types/next/components/framework-provider/app-router/index.d.ts +1 -1
  507. package/dist/types/next/components/framework-provider/app-router/index.d.ts.map +1 -1
  508. package/dist/types/next/components/framework-provider/index.d.ts.map +1 -1
  509. package/dist/types/next/components/framework-provider/link.d.ts +2 -0
  510. package/dist/types/next/components/framework-provider/link.d.ts.map +1 -0
  511. package/dist/types/next/components/framework-provider/pages-router/index.d.ts +1 -1
  512. package/dist/types/next/components/framework-provider/pages-router/index.d.ts.map +1 -1
  513. package/dist/types/next/components/page.d.ts +2 -7
  514. package/dist/types/next/components/page.d.ts.map +1 -1
  515. package/dist/types/next/components/tests/__fixtures__/element-data/box-component.d.ts +8 -0
  516. package/dist/types/next/components/tests/__fixtures__/element-data/box-component.d.ts.map +1 -0
  517. package/dist/types/next/components/tests/__fixtures__/element-data/button-component.d.ts +9 -0
  518. package/dist/types/next/components/tests/__fixtures__/element-data/button-component.d.ts.map +1 -0
  519. package/dist/types/next/components/tests/__fixtures__/element-data/image-component.d.ts +7 -0
  520. package/dist/types/next/components/tests/__fixtures__/element-data/image-component.d.ts.map +1 -0
  521. package/dist/types/next/components/tests/__fixtures__/resources/files.d.ts +3 -0
  522. package/dist/types/next/components/tests/__fixtures__/resources/files.d.ts.map +1 -0
  523. package/dist/types/next/components/tests/__fixtures__/resources/index.d.ts +4 -0
  524. package/dist/types/next/components/tests/__fixtures__/resources/index.d.ts.map +1 -0
  525. package/dist/types/next/components/tests/__fixtures__/resources/page-pathname-slices.d.ts +3 -0
  526. package/dist/types/next/components/tests/__fixtures__/resources/page-pathname-slices.d.ts.map +1 -0
  527. package/dist/types/next/components/tests/__fixtures__/resources/swatches.d.ts +3 -0
  528. package/dist/types/next/components/tests/__fixtures__/resources/swatches.d.ts.map +1 -0
  529. package/dist/types/next/components/tests/components/box-component-rendering.test.d.ts +3 -0
  530. package/dist/types/next/components/tests/components/box-component-rendering.test.d.ts.map +1 -0
  531. package/dist/types/next/components/tests/components/button-component-rendering.test.d.ts +3 -0
  532. package/dist/types/next/components/tests/components/button-component-rendering.test.d.ts.map +1 -0
  533. package/dist/types/next/components/tests/components/image-component-rendering.test.d.ts +3 -0
  534. package/dist/types/next/components/tests/components/image-component-rendering.test.d.ts.map +1 -0
  535. package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts.map +1 -1
  536. package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts.map +1 -1
  537. package/dist/types/next/components/tests/controls/style-control/fixtures.d.ts.map +1 -1
  538. package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts +3 -16
  539. package/dist/types/next/components/tests/prop-controllers/page-prop-controller.d.ts.map +1 -1
  540. package/dist/types/next/document.d.ts.map +1 -1
  541. package/dist/types/next/index.d.ts +3 -3
  542. package/dist/types/next/index.d.ts.map +1 -1
  543. package/dist/types/next/middleware/request-utils.d.ts +1 -0
  544. package/dist/types/next/middleware/request-utils.d.ts.map +1 -1
  545. package/dist/types/next/root-style-registry.d.ts +3 -12
  546. package/dist/types/next/root-style-registry.d.ts.map +1 -1
  547. package/dist/types/next/server.d.ts +1 -1
  548. package/dist/types/next/server.d.ts.map +1 -1
  549. package/dist/types/next/testing/element-data.d.ts +13 -13
  550. package/dist/types/next/testing/page-rendering.d.ts +3 -0
  551. package/dist/types/next/testing/page-rendering.d.ts.map +1 -1
  552. package/dist/types/next/testing/react-provider.d.ts +3 -3
  553. package/dist/types/next/testing/react-provider.d.ts.map +1 -1
  554. package/dist/types/next/tests/server.api-handler-app-router-redirect-preview.test.d.ts +2 -0
  555. package/dist/types/next/tests/server.api-handler-app-router-redirect-preview.test.d.ts.map +1 -0
  556. package/dist/types/next/tests/server.api-handler-pages-router-redirect-preview.test.d.ts +2 -0
  557. package/dist/types/next/tests/server.api-handler-pages-router-redirect-preview.test.d.ts.map +1 -0
  558. package/dist/types/next/tests/server.api-handler-redirect-live.test.d.ts +2 -0
  559. package/dist/types/next/tests/server.api-handler-redirect-live.test.d.ts.map +1 -0
  560. package/dist/types/next/tests/test-utils.d.ts.map +1 -1
  561. package/dist/types/runtimes/react/components/Document.d.ts +0 -1
  562. package/dist/types/runtimes/react/components/Document.d.ts.map +1 -1
  563. package/dist/types/runtimes/react/components/DocumentRoot.d.ts +0 -1
  564. package/dist/types/runtimes/react/components/DocumentRoot.d.ts.map +1 -1
  565. package/dist/types/runtimes/react/components/Element.d.ts +0 -1
  566. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  567. package/dist/types/runtimes/react/components/ElementData.d.ts +0 -1
  568. package/dist/types/runtimes/react/components/ElementData.d.ts.map +1 -1
  569. package/dist/types/runtimes/react/components/ElementReference.d.ts +0 -1
  570. package/dist/types/runtimes/react/components/ElementReference.d.ts.map +1 -1
  571. package/dist/types/{next → runtimes/react}/components/MakeswiftComponent.d.ts +1 -2
  572. package/dist/types/runtimes/react/components/MakeswiftComponent.d.ts.map +1 -0
  573. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +3 -2
  574. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
  575. package/dist/types/{next → runtimes/react}/components/Slot.d.ts +2 -2
  576. package/dist/types/runtimes/react/components/Slot.d.ts.map +1 -0
  577. package/dist/types/{next → runtimes/react}/components/SlotProvider.d.ts +1 -2
  578. package/dist/types/runtimes/react/components/SlotProvider.d.ts.map +1 -0
  579. package/dist/types/runtimes/react/components/framework-context.d.ts +25 -1
  580. package/dist/types/runtimes/react/components/framework-context.d.ts.map +1 -1
  581. package/dist/types/runtimes/react/components/page/HeadSnippet.d.ts +0 -1
  582. package/dist/types/runtimes/react/components/page/HeadSnippet.d.ts.map +1 -1
  583. package/dist/types/runtimes/react/components/page/Page.d.ts +0 -1
  584. package/dist/types/runtimes/react/components/page/Page.d.ts.map +1 -1
  585. package/dist/types/runtimes/react/components/page/PageHead.d.ts +0 -1
  586. package/dist/types/runtimes/react/components/page/PageHead.d.ts.map +1 -1
  587. package/dist/types/runtimes/react/components/page/index.d.ts +23 -3
  588. package/dist/types/runtimes/react/components/page/index.d.ts.map +1 -1
  589. package/dist/types/runtimes/react/components/preview-switcher/preview-switcher.d.ts +4 -0
  590. package/dist/types/runtimes/react/components/preview-switcher/preview-switcher.d.ts.map +1 -0
  591. package/dist/types/runtimes/react/components/preview-switcher/preview-toolbar.d.ts +2 -0
  592. package/dist/types/runtimes/react/components/preview-switcher/preview-toolbar.d.ts.map +1 -0
  593. package/dist/types/runtimes/react/components/render-hook.d.ts +0 -1
  594. package/dist/types/runtimes/react/components/render-hook.d.ts.map +1 -1
  595. package/dist/types/runtimes/react/controls/control.d.ts +0 -1
  596. package/dist/types/runtimes/react/controls/control.d.ts.map +1 -1
  597. package/dist/types/runtimes/react/controls/group.d.ts +0 -1
  598. package/dist/types/runtimes/react/controls/group.d.ts.map +1 -1
  599. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts +0 -1
  600. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts.map +1 -1
  601. package/dist/types/runtimes/react/controls/rich-text/ReadOnlyText.d.ts +0 -1
  602. package/dist/types/runtimes/react/controls/rich-text/ReadOnlyText.d.ts.map +1 -1
  603. package/dist/types/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts +0 -1
  604. package/dist/types/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts.map +1 -1
  605. package/dist/types/runtimes/react/controls/style.d.ts +1 -1
  606. package/dist/types/runtimes/react/controls/style.d.ts.map +1 -1
  607. package/dist/types/runtimes/react/controls.d.ts +0 -1
  608. package/dist/types/runtimes/react/controls.d.ts.map +1 -1
  609. package/dist/types/runtimes/react/hooks/makeswift-api.d.ts.map +1 -1
  610. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts +0 -1
  611. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts.map +1 -1
  612. package/dist/types/runtimes/react/hooks/use-document-context.d.ts +0 -1
  613. package/dist/types/runtimes/react/hooks/use-document-context.d.ts.map +1 -1
  614. package/dist/types/runtimes/react/hooks/use-document-cycles.d.ts +0 -1
  615. package/dist/types/runtimes/react/hooks/use-document-cycles.d.ts.map +1 -1
  616. package/dist/types/runtimes/react/hooks/use-react-runtime.d.ts +0 -1
  617. package/dist/types/runtimes/react/hooks/use-react-runtime.d.ts.map +1 -1
  618. package/dist/types/runtimes/react/hooks/use-selector.d.ts.map +1 -1
  619. package/dist/types/runtimes/react/hooks/use-store.d.ts +25 -2
  620. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  621. package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts.map +1 -1
  622. package/dist/types/runtimes/react/hooks/use-universal-dispatch.d.ts +1 -1
  623. package/dist/types/runtimes/react/hooks/use-universal-dispatch.d.ts.map +1 -1
  624. package/dist/types/runtimes/react/host-api-client.d.ts.map +1 -1
  625. package/dist/types/runtimes/react/legacy-controls.d.ts +0 -1
  626. package/dist/types/runtimes/react/legacy-controls.d.ts.map +1 -1
  627. package/dist/types/runtimes/react/root-style-registry.d.ts +30 -10
  628. package/dist/types/runtimes/react/root-style-registry.d.ts.map +1 -1
  629. package/dist/types/runtimes/react/use-global-style.d.ts.map +1 -1
  630. package/dist/types/runtimes/react/use-style.d.ts +1 -1
  631. package/dist/types/runtimes/react/use-style.d.ts.map +1 -1
  632. package/dist/types/slate/BlockPlugin/index.d.ts +5 -5
  633. package/dist/types/slate/BlockPlugin/utils/location.d.ts.map +1 -1
  634. package/dist/types/slate/InlineModePlugin/index.d.ts +41 -41
  635. package/dist/types/slate/InlinePlugin/getValue.d.ts.map +1 -1
  636. package/dist/types/slate/InlinePlugin/index.d.ts +5 -6
  637. package/dist/types/slate/InlinePlugin/index.d.ts.map +1 -1
  638. package/dist/types/slate/InlinePlugin/onChange.d.ts.map +1 -1
  639. package/dist/types/slate/LinkPlugin/getValue.d.ts +1 -1
  640. package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
  641. package/dist/types/slate/LinkPlugin/index.d.ts +3 -4
  642. package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
  643. package/dist/types/slate/LinkPlugin/onChange.d.ts.map +1 -1
  644. package/dist/types/slate/TextAlignPlugin/index.d.ts +5 -6
  645. package/dist/types/slate/TextAlignPlugin/index.d.ts.map +1 -1
  646. package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  647. package/dist/types/slate/TypographyPlugin/index.d.ts +2 -3
  648. package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
  649. package/dist/types/slate/test-helpers/editor-v1.d.ts +0 -1
  650. package/dist/types/slate/test-helpers/editor-v1.d.ts.map +1 -1
  651. package/dist/types/slate/test-helpers/editor-v2-inline.d.ts +0 -1
  652. package/dist/types/slate/test-helpers/editor-v2-inline.d.ts.map +1 -1
  653. package/dist/types/slate/test-helpers/editor-v2.d.ts +0 -1
  654. package/dist/types/slate/test-helpers/editor-v2.d.ts.map +1 -1
  655. package/dist/types/slate/test-helpers/slate-test-helper.d.ts +4 -4
  656. package/dist/types/slate/test-helpers/slate-test-helper.d.ts.map +1 -1
  657. package/dist/types/slate/test-helpers/test-elements.d.ts +8 -64
  658. package/dist/types/slate/test-helpers/test-elements.d.ts.map +1 -1
  659. package/dist/types/slate/utils/editor.d.ts.map +1 -1
  660. package/dist/types/slate/utils/element.d.ts.map +1 -1
  661. package/dist/types/slate/utils/location.d.ts.map +1 -1
  662. package/dist/types/slate/utils/responsive.d.ts.map +1 -1
  663. package/dist/types/state/__tests__/actions.test.d.ts +2 -0
  664. package/dist/types/state/__tests__/actions.test.d.ts.map +1 -0
  665. package/dist/types/state/actions.d.ts +3 -2
  666. package/dist/types/state/actions.d.ts.map +1 -1
  667. package/dist/types/state/makeswift-api-client.d.ts +19 -11
  668. package/dist/types/state/makeswift-api-client.d.ts.map +1 -1
  669. package/dist/types/state/mixins/setup-teardown.d.ts +1 -1
  670. package/dist/types/state/mixins/setup-teardown.d.ts.map +1 -1
  671. package/dist/types/state/modules/api-resources.d.ts +2 -2
  672. package/dist/types/state/modules/api-resources.d.ts.map +1 -1
  673. package/dist/types/state/modules/box-models.d.ts +2 -2
  674. package/dist/types/state/modules/box-models.d.ts.map +1 -1
  675. package/dist/types/state/modules/breakpoints.d.ts +2 -2
  676. package/dist/types/state/modules/breakpoints.d.ts.map +1 -1
  677. package/dist/types/state/modules/builder-edit-mode.d.ts +2 -2
  678. package/dist/types/state/modules/builder-edit-mode.d.ts.map +1 -1
  679. package/dist/types/state/modules/components-meta.d.ts +2 -2
  680. package/dist/types/state/modules/components-meta.d.ts.map +1 -1
  681. package/dist/types/state/modules/element-imperative-handles.d.ts +2 -2
  682. package/dist/types/state/modules/element-imperative-handles.d.ts.map +1 -1
  683. package/dist/types/state/modules/element-trees.d.ts +2 -2
  684. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  685. package/dist/types/state/modules/is-in-builder.d.ts +2 -2
  686. package/dist/types/state/modules/is-in-builder.d.ts.map +1 -1
  687. package/dist/types/state/modules/is-preview.d.ts +2 -2
  688. package/dist/types/state/modules/is-preview.d.ts.map +1 -1
  689. package/dist/types/state/modules/localized-resources-map.d.ts +2 -2
  690. package/dist/types/state/modules/localized-resources-map.d.ts.map +1 -1
  691. package/dist/types/state/modules/pointer.d.ts +2 -2
  692. package/dist/types/state/modules/pointer.d.ts.map +1 -1
  693. package/dist/types/state/modules/prop-controller-handles.d.ts +2 -2
  694. package/dist/types/state/modules/prop-controller-handles.d.ts.map +1 -1
  695. package/dist/types/state/modules/prop-controllers.d.ts +2 -2
  696. package/dist/types/state/modules/prop-controllers.d.ts.map +1 -1
  697. package/dist/types/state/modules/react-components.d.ts +2 -2
  698. package/dist/types/state/modules/react-components.d.ts.map +1 -1
  699. package/dist/types/state/modules/read-only-documents.d.ts +2 -2
  700. package/dist/types/state/modules/read-only-documents.d.ts.map +1 -1
  701. package/dist/types/state/modules/read-write-documents.d.ts +2 -2
  702. package/dist/types/state/modules/read-write-documents.d.ts.map +1 -1
  703. package/dist/types/state/react-builder-preview.d.ts +57 -10
  704. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  705. package/dist/types/state/react-page.d.ts +67 -36
  706. package/dist/types/state/react-page.d.ts.map +1 -1
  707. package/dist/types/state/toolkit.d.ts +11 -0
  708. package/dist/types/state/toolkit.d.ts.map +1 -0
  709. package/dist/types/testing/fixtures.d.ts +7 -0
  710. package/dist/types/testing/fixtures.d.ts.map +1 -0
  711. package/dist/types/utils/clamp.d.ts.map +1 -1
  712. package/dist/types/utils/esm-compat.d.ts +2 -0
  713. package/dist/types/utils/esm-compat.d.ts.map +1 -0
  714. package/dist/types/utils/keys.d.ts.map +1 -1
  715. package/package.json +14 -15
  716. package/dist/cjs/api/site-version.js +0 -42
  717. package/dist/cjs/api/site-version.js.map +0 -1
  718. package/dist/cjs/api-handler/handlers/clear-draft.js.map +0 -1
  719. package/dist/cjs/next/api-handler/draft.js.map +0 -1
  720. package/dist/cjs/next/api-handler/handlers/redirect-draft.js.map +0 -1
  721. package/dist/cjs/next/api-handler/handlers/redirect-preview.js.map +0 -1
  722. package/dist/cjs/next/components/MakeswiftComponent.js.map +0 -1
  723. package/dist/cjs/next/components/Slot.js.map +0 -1
  724. package/dist/cjs/next/components/SlotProvider.js.map +0 -1
  725. package/dist/cjs/next/draft-mode/index.js +0 -56
  726. package/dist/cjs/next/draft-mode/index.js.map +0 -1
  727. package/dist/cjs/next/preview-mode.js.map +0 -1
  728. package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js.map +0 -1
  729. package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js.map +0 -1
  730. package/dist/esm/api/site-version.js +0 -15
  731. package/dist/esm/api/site-version.js.map +0 -1
  732. package/dist/esm/api-handler/handlers/clear-draft.js +0 -17
  733. package/dist/esm/api-handler/handlers/clear-draft.js.map +0 -1
  734. package/dist/esm/next/api-handler/draft.js +0 -14
  735. package/dist/esm/next/api-handler/draft.js.map +0 -1
  736. package/dist/esm/next/api-handler/handlers/redirect-draft.js +0 -52
  737. package/dist/esm/next/api-handler/handlers/redirect-draft.js.map +0 -1
  738. package/dist/esm/next/api-handler/handlers/redirect-preview.js +0 -37
  739. package/dist/esm/next/api-handler/handlers/redirect-preview.js.map +0 -1
  740. package/dist/esm/next/components/MakeswiftComponent.js.map +0 -1
  741. package/dist/esm/next/components/Slot.js.map +0 -1
  742. package/dist/esm/next/components/SlotProvider.js.map +0 -1
  743. package/dist/esm/next/draft-mode/index.js +0 -30
  744. package/dist/esm/next/draft-mode/index.js.map +0 -1
  745. package/dist/esm/next/preview-mode.js +0 -16
  746. package/dist/esm/next/preview-mode.js.map +0 -1
  747. package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js.map +0 -1
  748. package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js.map +0 -1
  749. package/dist/types/api/site-version.d.ts +0 -7
  750. package/dist/types/api/site-version.d.ts.map +0 -1
  751. package/dist/types/api-handler/handlers/clear-draft.d.ts +0 -7
  752. package/dist/types/api-handler/handlers/clear-draft.d.ts.map +0 -1
  753. package/dist/types/next/api-handler/draft.d.ts +0 -8
  754. package/dist/types/next/api-handler/draft.d.ts.map +0 -1
  755. package/dist/types/next/api-handler/handlers/redirect-draft.d.ts +0 -6
  756. package/dist/types/next/api-handler/handlers/redirect-draft.d.ts.map +0 -1
  757. package/dist/types/next/api-handler/handlers/redirect-draft.test.d.ts +0 -2
  758. package/dist/types/next/api-handler/handlers/redirect-draft.test.d.ts.map +0 -1
  759. package/dist/types/next/api-handler/handlers/redirect-preview.d.ts +0 -5
  760. package/dist/types/next/api-handler/handlers/redirect-preview.d.ts.map +0 -1
  761. package/dist/types/next/components/MakeswiftComponent.d.ts.map +0 -1
  762. package/dist/types/next/components/Slot.d.ts.map +0 -1
  763. package/dist/types/next/components/SlotProvider.d.ts.map +0 -1
  764. package/dist/types/next/draft-mode/index.d.ts +0 -15
  765. package/dist/types/next/draft-mode/index.d.ts.map +0 -1
  766. package/dist/types/next/preview-mode.d.ts +0 -17
  767. package/dist/types/next/preview-mode.d.ts.map +0 -1
  768. package/dist/types/next/tests/server.api-handler-clear-draft.test.d.ts +0 -2
  769. package/dist/types/next/tests/server.api-handler-clear-draft.test.d.ts.map +0 -1
  770. package/dist/types/next/tests/server.api-handler-redirect-draft.test.d.ts +0 -2
  771. package/dist/types/next/tests/server.api-handler-redirect-draft.test.d.ts.map +0 -1
  772. package/dist/types/next/tests/server.api-handler-redirect-preview.test.d.ts +0 -2
  773. package/dist/types/next/tests/server.api-handler-redirect-preview.test.d.ts.map +0 -1
  774. package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts +0 -4
  775. package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts.map +0 -1
  776. package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts +0 -6
  777. package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts.map +0 -1
@@ -17,7 +17,6 @@ import {
17
17
  getPropControllerDescriptors,
18
18
  isElementReference
19
19
  } from "../state/react-page";
20
- import { MakeswiftSiteVersion } from "../api/site-version";
21
20
  import { toIterablePaginationResult } from "../utils/pagination";
22
21
  import { deterministicUUID } from "../utils/deterministic-uuid";
23
22
  import { Schema } from "@makeswift/controls";
@@ -102,6 +101,11 @@ const makeswiftComponentDocumentFallbackSchema = z.object({
102
101
  locale: z.string().nullable(),
103
102
  data: z.null()
104
103
  });
104
+ const previewTokenPayloadSchema = z.object({
105
+ payload: z.object({
106
+ version: z.string()
107
+ })
108
+ });
105
109
  function componentDocumentToRootEmbeddedDocument({
106
110
  document,
107
111
  documentKey,
@@ -193,13 +197,18 @@ Received "${apiKey}" instead.`
193
197
  this.runtime = runtime;
194
198
  }
195
199
  async fetch(path, siteVersion) {
196
- const response = await fetch(new URL(path, this.apiOrigin).toString(), {
197
- headers: {
198
- ["X-API-Key"]: this.apiKey,
199
- "Makeswift-Site-API-Key": this.apiKey,
200
- "Makeswift-Site-Version": siteVersion
201
- },
202
- ...siteVersion === MakeswiftSiteVersion.Working ? { cache: "no-store" } : {},
200
+ const requestUrl = new URL(path, this.apiOrigin);
201
+ const requestHeaders = new Headers({
202
+ "X-API-Key": this.apiKey,
203
+ "Makeswift-Site-API-Key": this.apiKey
204
+ });
205
+ if (siteVersion?.token) {
206
+ requestUrl.searchParams.set("version", siteVersion.version);
207
+ requestHeaders.set("makeswift-preview-token", siteVersion.token);
208
+ }
209
+ const response = await fetch(requestUrl.toString(), {
210
+ headers: requestHeaders,
211
+ ...siteVersion != null ? { cache: "no-store" } : {},
203
212
  ...this.fetchOptions(siteVersion)
204
213
  });
205
214
  return response;
@@ -211,11 +220,11 @@ Received "${apiKey}" instead.`
211
220
  return {};
212
221
  }
213
222
  getPagesInternal = async ({
214
- siteVersion = MakeswiftSiteVersion.Live,
223
+ siteVersion = null,
215
224
  ...params
216
225
  } = {}) => {
217
226
  const queryParams = getPagesQueryParams(params);
218
- const response = await this.fetch(`v4/pages?${queryParams.toString()}`, siteVersion);
227
+ const response = await this.fetch(`v5/pages?${queryParams.toString()}`, siteVersion);
219
228
  if (!response.ok) {
220
229
  console.error("Failed to get pages", {
221
230
  response: await failedResponseBody(response),
@@ -234,11 +243,8 @@ Received "${apiKey}" instead.`
234
243
  return parsedResponse.data;
235
244
  };
236
245
  getPages = toIterablePaginationResult(this.getPagesInternal);
237
- async getPage(pathname, {
238
- siteVersion = MakeswiftSiteVersion.Live,
239
- locale
240
- } = {}) {
241
- const url = new URL(`v2/pages/${encodeURIComponent(pathname)}`, this.apiOrigin);
246
+ async getPage(pathname, { siteVersion = null, locale } = {}) {
247
+ const url = new URL(`v3/pages/${encodeURIComponent(pathname)}`, this.apiOrigin);
242
248
  if (locale)
243
249
  url.searchParams.set("locale", locale);
244
250
  const response = await this.fetch(url.pathname + url.search, siteVersion);
@@ -258,7 +264,7 @@ Received "${apiKey}" instead.`
258
264
  async getTypographies(typographyIds, siteVersion) {
259
265
  if (typographyIds.length === 0)
260
266
  return [];
261
- const url = new URL(`v2/typographies/bulk`, this.apiOrigin);
267
+ const url = new URL(`v3/typographies/bulk`, this.apiOrigin);
262
268
  typographyIds.forEach((id) => {
263
269
  url.searchParams.append("ids", id);
264
270
  });
@@ -276,7 +282,7 @@ Received "${apiKey}" instead.`
276
282
  async getSwatches(ids, siteVersion) {
277
283
  if (ids.length === 0)
278
284
  return [];
279
- const url = new URL(`v2/swatches/bulk`, this.apiOrigin);
285
+ const url = new URL(`v3/swatches/bulk`, this.apiOrigin);
280
286
  ids.forEach((id) => {
281
287
  url.searchParams.append("ids", id);
282
288
  });
@@ -433,7 +439,7 @@ Received "${apiKey}" instead.`
433
439
  };
434
440
  const siteVersion = await siteVersionPromise;
435
441
  const response = await this.fetch(
436
- `v3/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,
442
+ `v4/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,
437
443
  siteVersion
438
444
  );
439
445
  if (!response.ok) {
@@ -476,11 +482,11 @@ Received "${apiKey}" instead.`
476
482
  const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback;
477
483
  let response;
478
484
  const responseForRequestedLocale = await this.fetch(
479
- `v1/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,
485
+ `v2/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,
480
486
  siteVersion
481
487
  );
482
488
  if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {
483
- response = await this.fetch(`v1/element-trees/${encodeURIComponent(id)}`, siteVersion);
489
+ response = await this.fetch(`v2/element-trees/${encodeURIComponent(id)}`, siteVersion);
484
490
  } else {
485
491
  response = responseForRequestedLocale;
486
492
  }
@@ -520,7 +526,7 @@ Received "${apiKey}" instead.`
520
526
  };
521
527
  }
522
528
  async getSwatch(swatchId, siteVersion) {
523
- const response = await this.fetch(`v2/swatches/${swatchId}`, siteVersion);
529
+ const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion);
524
530
  if (!response.ok) {
525
531
  if (response.status !== 404) {
526
532
  console.error(`Failed to get swatch '${swatchId}'`, {
@@ -541,7 +547,7 @@ Received "${apiKey}" instead.`
541
547
  return result.file;
542
548
  }
543
549
  async getTypography(typographyId, siteVersion) {
544
- const response = await this.fetch(`v2/typographies/${typographyId}`, siteVersion);
550
+ const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion);
545
551
  if (!response.ok) {
546
552
  if (response.status !== 404) {
547
553
  console.error(`Failed to get typography '${typographyId}'`, {
@@ -555,7 +561,7 @@ Received "${apiKey}" instead.`
555
561
  return typography;
556
562
  }
557
563
  async getGlobalElement(globalElementId, siteVersion) {
558
- const response = await this.fetch(`v2/global-elements/${globalElementId}`, siteVersion);
564
+ const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion);
559
565
  if (!response.ok) {
560
566
  if (response.status !== 404) {
561
567
  console.error(`Failed to get global element '${globalElementId}'`, {
@@ -570,7 +576,7 @@ Received "${apiKey}" instead.`
570
576
  }
571
577
  async getLocalizedGlobalElement(globalElementId, locale, siteVersion) {
572
578
  const response = await this.fetch(
573
- `v2/localized-global-elements/${globalElementId}?locale=${locale}`,
579
+ `v3/localized-global-elements/${globalElementId}?locale=${locale}`,
574
580
  siteVersion
575
581
  );
576
582
  if (!response.ok) {
@@ -589,7 +595,7 @@ Received "${apiKey}" instead.`
589
595
  async getPagePathnameSlices(pageIds, siteVersion, { locale }) {
590
596
  if (pageIds.length === 0)
591
597
  return [];
592
- const url = new URL(`v2/page-pathname-slices/bulk`, this.apiOrigin);
598
+ const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin);
593
599
  pageIds.forEach((id) => url.searchParams.append("ids", id));
594
600
  if (locale != null)
595
601
  url.searchParams.set("locale", locale);
@@ -625,50 +631,51 @@ Received "${apiKey}" instead.`
625
631
  );
626
632
  return result.table;
627
633
  }
628
- /**
629
- * @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap
630
- * using data from `getPages` instead.
631
- */
632
- async getSitemap({
633
- limit = 50,
634
- after,
635
- pathnamePrefix,
636
- locale
637
- } = {}) {
638
- const url = new URL("v1/sitemap", this.apiOrigin);
639
- url.searchParams.set("limit", limit.toString());
640
- if (after != null)
641
- url.searchParams.set("after", after);
642
- if (pathnamePrefix != null)
643
- url.searchParams.set("pathnamePrefix", pathnamePrefix);
644
- if (locale != null)
645
- url.searchParams.set("locale", locale);
646
- const response = await this.fetch(url.pathname + url.search, MakeswiftSiteVersion.Live);
647
- if (!response.ok) {
648
- console.error("Failed to get sitemap ", {
649
- response: await failedResponseBody(response),
650
- limit,
651
- after,
652
- pathnamePrefix,
653
- locale
654
- });
655
- throw new Error(`Failed to get sitemap with error: ${responseError(response)}`);
656
- }
657
- const sitemap = await response.json();
658
- return sitemap;
659
- }
660
634
  getTranslatableData(elementTree) {
661
635
  return this.runtime.getTranslatableData(elementTree);
662
636
  }
663
637
  mergeTranslatedData(elementTree, translatedData) {
664
638
  return this.runtime.mergeTranslatedData(elementTree, translatedData);
665
639
  }
640
+ async readPreviewToken(token) {
641
+ const response = await fetch(new URL("v1/preview-tokens/reads", this.apiOrigin).toString(), {
642
+ method: "POST",
643
+ headers: {
644
+ ["X-API-Key"]: this.apiKey,
645
+ "Makeswift-Site-API-Key": this.apiKey,
646
+ "Content-Type": "application/json"
647
+ },
648
+ body: JSON.stringify({ token }),
649
+ cache: "no-store"
650
+ });
651
+ if (!response.ok) {
652
+ if (response.status === 401) {
653
+ console.error(`Preview token is invalid or expired`, {
654
+ response: await failedResponseBody(response)
655
+ });
656
+ } else if (response.status !== 404) {
657
+ console.error(`Failed to verify preview token`, {
658
+ response: await failedResponseBody(response)
659
+ });
660
+ }
661
+ return null;
662
+ }
663
+ const json = await response.json();
664
+ const parsed = previewTokenPayloadSchema.safeParse(json);
665
+ if (!parsed.success) {
666
+ throw new Error(
667
+ `Failed to parse preview token payload: ${parsed.error.errors.map((e) => e.message).join("; ")}`
668
+ );
669
+ }
670
+ return parsed.data;
671
+ }
666
672
  }
667
673
  export {
668
674
  MakeswiftClient,
669
675
  SnippetLocation2 as SnippetLocation,
670
676
  componentDocumentToRootEmbeddedDocument,
671
677
  failedResponseBody,
672
- pageToRootDocument
678
+ pageToRootDocument,
679
+ previewTokenPayloadSchema
673
680
  };
674
681
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/client/index.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { FileQuery, IntrospectedResourcesQuery, TableQuery } from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n SnippetLocation,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } from '../api/react'\nimport { Descriptor as PropControllerDescriptor } from '../prop-controllers/descriptors'\nimport {\n getElementChildren,\n getSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport { ReactRuntime } from '../runtimes/react'\nimport {\n type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { MakeswiftSiteVersion } from '../api/site-version'\nimport { toIterablePaginationResult } from '../utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\n\nexport { SnippetLocation } from '../api/graphql/generated/types'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 20,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n localizedPages: LocalizedPage[]\n locale: string | null\n}\n\nexport function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n description,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n description?: string\n meta: MakeswiftComponentSnapshotMetadata\n}): EmbeddedDocument {\n const { data: rootElement, locale, id } = document\n\n if (rootElement != null && rootElement.type !== type) {\n throw new Error(\n `Type \"${rootElement.type}\" does not match the expected type \"${type}\" from the snapshot`,\n )\n }\n\n const rootDocument: EmbeddedDocument = {\n key: documentKey,\n rootElement: rootElement ?? {\n // Fallback rootElement\n // Create a stable uuid so two different clients will have the same empty element data.\n // This is needed to make presence feature work for an element that is not yet created.\n key: deterministicUUID({ id, locale, seed: documentKey }),\n type,\n props: {},\n },\n locale,\n id,\n type,\n name,\n meta: { ...meta, description },\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n\nfunction responseError(response: Response): string {\n return `${response.status} ${response.statusText}`\n}\n\nexport type Snippet = {\n id: string\n code: string\n location: SnippetLocation\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\n\ntype Font = { family: string; variants: string[] }\n\ntype Meta = {\n title?: string | null\n description?: string | null\n keywords?: string | null\n socialImage?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\ntype LocalizedPage = {\n id: string\n data: Element\n elementTreeId: string\n parentId: string | null\n meta: Omit<Meta, 'favicon'>\n seo: Seo\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n runtime: ReactRuntime\n}\n\nexport type Sitemap = {\n id: string\n loc: string\n lastmod?: string\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n priority?: number\n alternateRefs?: {\n hreflang: string\n href: string\n }[]\n}[]\n\nconst pagePathnameSlicesAPISchema = z.array(\n z\n .object({\n id: z.string(),\n basePageId: z.string(),\n pathname: z.string(),\n localizedPathname: z.string().optional(),\n __typename: z.literal('PagePathnameSlice'),\n })\n .nullable(),\n)\n\nconst getPageAPISchema = z.object({\n pathname: z.string(),\n locale: z.string(),\n alternate: z.array(\n z.object({\n pathname: z.string(),\n locale: z.string(),\n }),\n ),\n})\n\ntype GetPageAPI = z.infer<typeof getPageAPISchema>\n\nexport class MakeswiftClient {\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n readonly apiKey: string\n readonly apiOrigin: URL\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: MakeswiftConfig,\n ) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n\n this.graphqlClient = new GraphQLClient(new URL('graphql', apiOrigin).href)\n this.runtime = runtime\n }\n\n private async fetch(path: string, siteVersion: MakeswiftSiteVersion): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Makeswift-Site-Version': siteVersion,\n },\n ...(siteVersion === MakeswiftSiteVersion.Working ? { cache: 'no-store' } : {}),\n ...this.fetchOptions(siteVersion),\n })\n\n return response\n }\n\n /**\n * Override this method to provide additional fetch options, e.g. revalidation, cache tags, etc.\n */\n fetchOptions(_siteVersion: MakeswiftSiteVersion): Record<string, unknown> {\n return {}\n }\n\n private getPagesInternal = async ({\n siteVersion = MakeswiftSiteVersion.Live,\n ...params\n }: {\n siteVersion?: MakeswiftSiteVersion\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v4/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', {\n response: await failedResponseBody(response),\n siteVersion,\n params,\n })\n\n throw new Error(`Failed to get pages: ${responseError(response)}`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse 'getPages' response: ${parsedResponse.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n {\n siteVersion = MakeswiftSiteVersion.Live,\n locale,\n }: { siteVersion?: MakeswiftSiteVersion; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v2/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (locale) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v2/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get typographies for [${typographyIds.join(', ')}]`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v2/swatches/bulk`, this.apiOrigin)\n\n ids.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get swatches for ${ids.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n return await response.json()\n }\n\n private async getIntrospectedResources(\n {\n swatchIds,\n ...introspectedResourceIds\n }: IntrospectedResourcesQueryVariables & { swatchIds: string[] },\n siteVersion: MakeswiftSiteVersion,\n ): Promise<IntrospectedResourcesQueryResult & { swatches: (Swatch | null)[] }> {\n const result = await this.graphqlClient.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n const swatches = await this.getSwatches(swatchIds, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: MakeswiftSiteVersion,\n locale: string | null,\n ): Promise<CacheData> {\n const runtime = this.runtime\n const descriptors = getPropControllerDescriptors(runtime.store.getState())\n const swatchIds = new Set<string>()\n const fileIds = new Set<string>()\n const typographyIds = new Set<string>()\n const tableIds = new Set<string>()\n const pageIds = new Set<string>()\n const globalElements = new Map<string, GlobalElement | null>()\n const localizedGlobalElements = new Map<string, LocalizedGlobalElement | null>()\n const localizedResourcesMap = new Map<string, string | null>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElementId = current.value\n const globalElement = await this.getGlobalElement(globalElementId, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\n localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement)\n }\n }\n\n globalElements.set(globalElementId, globalElement)\n\n if (elementData == null) continue\n\n element = elementData as ElementData\n } else {\n element = current\n }\n\n const elementDescriptors = descriptors.get(element.type)\n\n if (elementDescriptors == null) continue\n\n getResourcesFromElementDescriptors(elementDescriptors, element.props)\n\n function getResourcesFromElementDescriptors(\n elementDescriptors: Record<string, PropControllerDescriptor>,\n props: ElementData['props'],\n ) {\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n getSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n })\n }\n }\n\n const typographies = await this.getTypographies([...typographyIds], siteVersion)\n\n typographies.forEach(typography => {\n typography?.style.forEach(style => {\n const swatchId = style.value.color?.swatchId\n\n if (swatchId != null) swatchIds.add(swatchId)\n })\n })\n\n const pagePathnames = await this.getPagePathnameSlices([...pageIds], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\n [APIResourceType.Swatch]: [...swatchIds].map(id => ({\n id,\n value: swatches.find(swatch => swatch?.id === id) ?? null,\n })),\n [APIResourceType.File]: [...fileIds].map(id => ({\n id,\n value: files.find(file => file?.id === id) ?? null,\n })),\n [APIResourceType.Typography]: [...typographyIds].map(id => ({\n id,\n value: typographies.find(typography => typography?.id === id) ?? null,\n })),\n [APIResourceType.Table]: [...tableIds].map(id => ({\n id,\n value: tables.find(table => table?.id === id) ?? null,\n })),\n [APIResourceType.PagePathnameSlice]: [...pageIds].map(id => ({\n id,\n value: pagePathnames.find(pagePathnameSlice => pagePathnameSlice?.id === id) ?? null,\n locale,\n })),\n [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({\n id,\n value,\n })),\n [APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(\n ([id, value]) => ({\n id,\n value,\n locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftPageSnapshot | null> {\n const queryParams = (): string => {\n const params = new URLSearchParams()\n if (locale) params.set('locale', locale)\n if (allowLocaleFallback != null) params.set('allowLocaleFallback', `${allowLocaleFallback}`)\n return params.toString()\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v3/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n // The /v3/pages endpoint returns null for document.locale when the requested locale is the default.\n // This legacy behavior is set to change with the upcoming /v4/pages endpoint.\n // We rely on document.locale when reading from the API cache, so ensure the cache is built during\n // introspection using the same value.\n document.locale,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v1/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v1/element-trees/${encodeURIComponent(id)}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (!response.ok) {\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n console.error(`Failed to get component snapshot for '${id}':`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get component snapshot for '${id}': ${responseError(response)}`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(await response.json())\n const cacheData = await this.introspect(document.data, siteVersion, locale ?? null)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: MakeswiftSiteVersion): Promise<Swatch | null> {\n const response = await this.fetch(`v2/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get swatch '${swatchId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getFile(fileId: string): Promise<File | null> {\n const result = await this.graphqlClient.request<FileQueryResult, FileQueryVariables>(\n FileQuery,\n { fileId },\n )\n\n return result.file\n }\n\n async getTypography(\n typographyId: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v2/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get typography '${typographyId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v2/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const globalElement = await response.json()\n\n return globalElement\n }\n\n async getLocalizedGlobalElement(\n globalElementId: string,\n locale: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v2/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get localized global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n }\n\n return null\n }\n\n const localizedGlobalElement = await response.json()\n\n return localizedGlobalElement\n }\n\n async getPagePathnameSlices(\n pageIds: string[],\n siteVersion: MakeswiftSiteVersion,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v2/page-pathname-slices/bulk`, this.apiOrigin)\n\n pageIds.forEach(id => url.searchParams.append('ids', id))\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get page pathname slice(s) for ${pageIds.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = pagePathnameSlicesAPISchema.parse(json)\n\n // We're mapping the basePageId to be the id, because we're still using the GraphQL\n // fragment as our APIResource. The id on the APIResource needs to match the pageId\n // so that we can find the corresponding page pathname slice when we call getPagePathnameSlice(pageId).\n // TODO: Update this once we move away from the GraphQL fragments.\n return pagePathnameSlices.map(pagePathnameSlice => {\n if (pagePathnameSlice == null) return null\n\n return {\n ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: MakeswiftSiteVersion,\n { locale }: { locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { locale })\n\n return pagePathnameSlices.at(0) ?? null\n }\n\n async getTable(tableId: string): Promise<Table | null> {\n const result = await this.graphqlClient.request<TableQueryResult, TableQueryVariables>(\n TableQuery,\n { tableId },\n )\n\n return result.table\n }\n\n /**\n * @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap\n * using data from `getPages` instead.\n */\n async getSitemap({\n limit = 50,\n after,\n pathnamePrefix,\n locale,\n }: {\n limit?: number\n after?: string\n pathnamePrefix?: string\n locale?: string\n } = {}): Promise<Sitemap> {\n const url = new URL('v1/sitemap', this.apiOrigin)\n\n url.searchParams.set('limit', limit.toString())\n if (after != null) url.searchParams.set('after', after)\n if (pathnamePrefix != null) url.searchParams.set('pathnamePrefix', pathnamePrefix)\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, MakeswiftSiteVersion.Live)\n\n if (!response.ok) {\n console.error('Failed to get sitemap ', {\n response: await failedResponseBody(response),\n limit,\n after,\n pathnamePrefix,\n locale,\n })\n\n throw new Error(`Failed to get sitemap with error: ${responseError(response)}`)\n }\n\n const sitemap = await response.json()\n\n return sitemap\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return this.runtime.getTranslatableData(elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return this.runtime.mergeTranslatedData(elementTree, translatedData)\n }\n}\n"],"mappings":"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","names":["SnippetLocation","getResourcesFromElementDescriptors","elementDescriptors","element"]}
1
+ {"version":3,"sources":["../../../src/client/index.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { FileQuery, IntrospectedResourcesQuery, TableQuery } from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n SnippetLocation,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } from '../api/react'\nimport { Descriptor as PropControllerDescriptor } from '../prop-controllers/descriptors'\nimport {\n getElementChildren,\n getSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport { ReactRuntime } from '../runtimes/react'\nimport {\n type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { type SiteVersion } from '../api/site-version'\nimport { toIterablePaginationResult } from '../utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\n\nexport { SnippetLocation } from '../api/graphql/generated/types'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 20,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n localizedPages: LocalizedPage[]\n locale: string | null\n}\n\nexport function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport const previewTokenPayloadSchema = z.object({\n payload: z.object({\n version: z.string(),\n }),\n})\n\nexport type PreviewTokenPayload = z.infer<typeof previewTokenPayloadSchema>\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n description,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n description?: string\n meta: MakeswiftComponentSnapshotMetadata\n}): EmbeddedDocument {\n const { data: rootElement, locale, id } = document\n\n if (rootElement != null && rootElement.type !== type) {\n throw new Error(\n `Type \"${rootElement.type}\" does not match the expected type \"${type}\" from the snapshot`,\n )\n }\n\n const rootDocument: EmbeddedDocument = {\n key: documentKey,\n rootElement: rootElement ?? {\n // Fallback rootElement\n // Create a stable uuid so two different clients will have the same empty element data.\n // This is needed to make presence feature work for an element that is not yet created.\n key: deterministicUUID({ id, locale, seed: documentKey }),\n type,\n props: {},\n },\n locale,\n id,\n type,\n name,\n meta: { ...meta, description },\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n\nfunction responseError(response: Response): string {\n return `${response.status} ${response.statusText}`\n}\n\nexport type Snippet = {\n id: string\n code: string\n location: SnippetLocation\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\n\ntype Font = { family: string; variants: string[] }\n\ntype Meta = {\n title?: string | null\n description?: string | null\n keywords?: string | null\n socialImage?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\ntype LocalizedPage = {\n id: string\n data: Element\n elementTreeId: string\n parentId: string | null\n meta: Omit<Meta, 'favicon'>\n seo: Seo\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n runtime: ReactRuntime\n}\n\nexport type Sitemap = {\n id: string\n loc: string\n lastmod?: string\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n priority?: number\n alternateRefs?: {\n hreflang: string\n href: string\n }[]\n}[]\n\nconst pagePathnameSlicesAPISchema = z.array(\n z\n .object({\n id: z.string(),\n basePageId: z.string(),\n pathname: z.string(),\n localizedPathname: z.string().optional(),\n __typename: z.literal('PagePathnameSlice'),\n })\n .nullable(),\n)\n\nconst getPageAPISchema = z.object({\n pathname: z.string(),\n locale: z.string(),\n alternate: z.array(\n z.object({\n pathname: z.string(),\n locale: z.string(),\n }),\n ),\n})\n\ntype GetPageAPI = z.infer<typeof getPageAPISchema>\n\nexport class MakeswiftClient {\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n readonly apiKey: string\n readonly apiOrigin: URL\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: MakeswiftConfig,\n ) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n\n this.graphqlClient = new GraphQLClient(new URL('graphql', apiOrigin).href)\n this.runtime = runtime\n }\n\n private async fetch(path: string, siteVersion: SiteVersion | null): Promise<Response> {\n const requestUrl = new URL(path, this.apiOrigin)\n\n const requestHeaders = new Headers({\n 'X-API-Key': this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n })\n\n if (siteVersion?.token) {\n requestUrl.searchParams.set('version', siteVersion.version)\n requestHeaders.set('makeswift-preview-token', siteVersion.token)\n }\n\n const response = await fetch(requestUrl.toString(), {\n headers: requestHeaders,\n ...(siteVersion != null ? { cache: 'no-store' } : {}),\n ...this.fetchOptions(siteVersion),\n })\n\n return response\n }\n\n /**\n * Override this method to provide additional fetch options, e.g. revalidation, cache tags, etc.\n */\n fetchOptions(_siteVersion: SiteVersion | null): Record<string, unknown> {\n return {}\n }\n\n private getPagesInternal = async ({\n siteVersion = null,\n ...params\n }: {\n siteVersion?: SiteVersion | null\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v5/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', {\n response: await failedResponseBody(response),\n siteVersion,\n params,\n })\n\n throw new Error(`Failed to get pages: ${responseError(response)}`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse 'getPages' response: ${parsedResponse.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n { siteVersion = null, locale }: { siteVersion?: SiteVersion | null; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v3/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (locale) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v3/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get typographies for [${typographyIds.join(', ')}]`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: SiteVersion | null,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v3/swatches/bulk`, this.apiOrigin)\n\n ids.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get swatches for ${ids.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n\n return []\n }\n\n return await response.json()\n }\n\n private async getIntrospectedResources(\n {\n swatchIds,\n ...introspectedResourceIds\n }: IntrospectedResourcesQueryVariables & { swatchIds: string[] },\n siteVersion: SiteVersion | null,\n ): Promise<IntrospectedResourcesQueryResult & { swatches: (Swatch | null)[] }> {\n const result = await this.graphqlClient.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n const swatches = await this.getSwatches(swatchIds, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: SiteVersion | null,\n locale: string | null,\n ): Promise<CacheData> {\n const runtime = this.runtime\n const descriptors = getPropControllerDescriptors(runtime.store.getState())\n const swatchIds = new Set<string>()\n const fileIds = new Set<string>()\n const typographyIds = new Set<string>()\n const tableIds = new Set<string>()\n const pageIds = new Set<string>()\n const globalElements = new Map<string, GlobalElement | null>()\n const localizedGlobalElements = new Map<string, LocalizedGlobalElement | null>()\n const localizedResourcesMap = new Map<string, string | null>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElementId = current.value\n const globalElement = await this.getGlobalElement(globalElementId, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\n localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement)\n }\n }\n\n globalElements.set(globalElementId, globalElement)\n\n if (elementData == null) continue\n\n element = elementData as ElementData\n } else {\n element = current\n }\n\n const elementDescriptors = descriptors.get(element.type)\n\n if (elementDescriptors == null) continue\n\n getResourcesFromElementDescriptors(elementDescriptors, element.props)\n\n function getResourcesFromElementDescriptors(\n elementDescriptors: Record<string, PropControllerDescriptor>,\n props: ElementData['props'],\n ) {\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n getSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n })\n }\n }\n\n const typographies = await this.getTypographies([...typographyIds], siteVersion)\n\n typographies.forEach(typography => {\n typography?.style.forEach(style => {\n const swatchId = style.value.color?.swatchId\n\n if (swatchId != null) swatchIds.add(swatchId)\n })\n })\n\n const pagePathnames = await this.getPagePathnameSlices([...pageIds], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\n [APIResourceType.Swatch]: [...swatchIds].map(id => ({\n id,\n value: swatches.find(swatch => swatch?.id === id) ?? null,\n })),\n [APIResourceType.File]: [...fileIds].map(id => ({\n id,\n value: files.find(file => file?.id === id) ?? null,\n })),\n [APIResourceType.Typography]: [...typographyIds].map(id => ({\n id,\n value: typographies.find(typography => typography?.id === id) ?? null,\n })),\n [APIResourceType.Table]: [...tableIds].map(id => ({\n id,\n value: tables.find(table => table?.id === id) ?? null,\n })),\n [APIResourceType.PagePathnameSlice]: [...pageIds].map(id => ({\n id,\n value: pagePathnames.find(pagePathnameSlice => pagePathnameSlice?.id === id) ?? null,\n locale,\n })),\n [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({\n id,\n value,\n })),\n [APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(\n ([id, value]) => ({\n id,\n value,\n locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftPageSnapshot | null> {\n const queryParams = (): string => {\n const params = new URLSearchParams()\n if (locale) params.set('locale', locale)\n if (allowLocaleFallback != null) params.set('allowLocaleFallback', `${allowLocaleFallback}`)\n return params.toString()\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v4/pages/${encodeURIComponent(pathname)}/document?${queryParams()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error(`Failed to get page snapshot for '${pathname}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get page snapshot for '${pathname}': ${responseError(response)}`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n // The /v3/pages endpoint returns null for document.locale when the requested locale is the default.\n // This legacy behavior is set to change with the upcoming /v4/pages endpoint.\n // We rely on document.locale when reading from the API cache, so ensure the cache is built during\n // introspection using the same value.\n document.locale,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: SiteVersion | null | Promise<SiteVersion | null>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v2/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v2/element-trees/${encodeURIComponent(id)}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (!response.ok) {\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n console.error(`Failed to get component snapshot for '${id}':`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n throw new Error(`Failed to get component snapshot for '${id}': ${responseError(response)}`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(await response.json())\n const cacheData = await this.introspect(document.data, siteVersion, locale ?? null)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: SiteVersion | null): Promise<Swatch | null> {\n const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get swatch '${swatchId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getFile(fileId: string): Promise<File | null> {\n const result = await this.graphqlClient.request<FileQueryResult, FileQueryVariables>(\n FileQuery,\n { fileId },\n )\n\n return result.file\n }\n\n async getTypography(\n typographyId: string,\n siteVersion: SiteVersion | null,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get typography '${typographyId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: SiteVersion | null,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n })\n }\n\n return null\n }\n\n const globalElement = await response.json()\n\n return globalElement\n }\n\n async getLocalizedGlobalElement(\n globalElementId: string,\n locale: string,\n siteVersion: SiteVersion | null,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v3/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404) {\n console.error(`Failed to get localized global element '${globalElementId}'`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n }\n\n return null\n }\n\n const localizedGlobalElement = await response.json()\n\n return localizedGlobalElement\n }\n\n async getPagePathnameSlices(\n pageIds: string[],\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin)\n\n pageIds.forEach(id => url.searchParams.append('ids', id))\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get page pathname slice(s) for ${pageIds.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = pagePathnameSlicesAPISchema.parse(json)\n\n // We're mapping the basePageId to be the id, because we're still using the GraphQL\n // fragment as our APIResource. The id on the APIResource needs to match the pageId\n // so that we can find the corresponding page pathname slice when we call getPagePathnameSlice(pageId).\n // TODO: Update this once we move away from the GraphQL fragments.\n return pagePathnameSlices.map(pagePathnameSlice => {\n if (pagePathnameSlice == null) return null\n\n return {\n ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { locale })\n\n return pagePathnameSlices.at(0) ?? null\n }\n\n async getTable(tableId: string): Promise<Table | null> {\n const result = await this.graphqlClient.request<TableQueryResult, TableQueryVariables>(\n TableQuery,\n { tableId },\n )\n\n return result.table\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return this.runtime.getTranslatableData(elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return this.runtime.mergeTranslatedData(elementTree, translatedData)\n }\n\n async readPreviewToken(token: string): Promise<PreviewTokenPayload | null> {\n const response = await fetch(new URL('v1/preview-tokens/reads', this.apiOrigin).toString(), {\n method: 'POST',\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ token }),\n cache: 'no-store',\n })\n\n if (!response.ok) {\n if (response.status === 401) {\n console.error(`Preview token is invalid or expired`, {\n response: await failedResponseBody(response),\n })\n } else if (response.status !== 404) {\n console.error(`Failed to verify preview token`, {\n response: await failedResponseBody(response),\n })\n }\n\n return null\n }\n\n const json = await response.json()\n\n const parsed = previewTokenPayloadSchema.safeParse(json)\n if (!parsed.success) {\n throw new Error(\n `Failed to parse preview token payload: ${parsed.error.errors.map(e => e.message).join('; ')}`,\n )\n }\n\n return parsed.data\n }\n}\n"],"mappings":"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","names":["SnippetLocation","getResourcesFromElementDescriptors","elementDescriptors","element"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/builtin/Box/animations.tsx"],"sourcesContent":["'use client'\n\nimport { CSSObject } from '@emotion/css'\nimport { useState, useEffect, useCallback, useRef } from 'react'\nimport { ResponsiveValue } from '../../../prop-controllers'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useMediaQuery } from '../../hooks'\nimport { gridItemIdentifierClassName } from '../../shared/grid-item'\nimport {\n BoxAnimateIn,\n DEFAULT_BOX_ANIMATE_DELAY,\n DEFAULT_BOX_ANIMATE_DURATION,\n DEFAULT_BOX_ANIMATE_TYPE,\n DEFAULT_ITEM_ANIMATE_TYPE,\n DEFAULT_ITEM_STAGGER_DURATION,\n} from './constants'\nimport { type ResponsiveNumberValue, type ResponsiveSelectValue } from '@makeswift/prop-controllers'\n\nfunction useElementOnScreen(\n options: IntersectionObserverInit,\n): [boolean, (element: HTMLElement | null) => void] {\n const [isVisible, setIsVisible] = useState(false)\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null)\n\n const setElement = useCallback((element: HTMLElement | null) => {\n if (element != null) {\n const observer = new IntersectionObserver(([entry]) => {\n if (entry?.isIntersecting) setIsVisible(true)\n }, options)\n\n observer.observe(element)\n\n intersectionObserverRef.current = observer\n } else {\n intersectionObserverRef.current?.disconnect()\n\n intersectionObserverRef.current = null\n }\n }, [])\n\n return [isVisible, setElement]\n}\n\nexport type BoxAnimationProps = {\n boxAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n boxAnimateDuration?: ResponsiveNumberValue\n boxAnimateDelay?: ResponsiveNumberValue\n itemAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n itemAnimateDuration?: ResponsiveNumberValue\n itemAnimateDelay?: ResponsiveNumberValue\n itemStaggerDuration?: ResponsiveNumberValue\n}\n\nfunction compareResponsiveValues<T>(a?: ResponsiveValue<T>, b?: ResponsiveValue<T>) {\n if (a == null && b == null) {\n return true\n }\n if (a != null && b != null) {\n let isEqual = true\n a.forEach((currentA, index) => {\n const currentB = b.at(index)\n if (currentB == null) {\n isEqual = false\n return\n }\n\n if (currentA.deviceId != currentB?.deviceId || currentA.value != currentB.value) {\n isEqual = false\n }\n })\n return isEqual\n }\n\n return false\n}\n\nexport function areBoxAnimationPropsEqual(prevProps: BoxAnimationProps, props: BoxAnimationProps) {\n return (\n compareResponsiveValues(prevProps.boxAnimateType, props.boxAnimateType) &&\n compareResponsiveValues(prevProps.boxAnimateDuration, props.boxAnimateDuration) &&\n compareResponsiveValues(prevProps.boxAnimateDelay, props.boxAnimateDelay) &&\n compareResponsiveValues(prevProps.itemAnimateType, props.itemAnimateType) &&\n compareResponsiveValues(prevProps.itemAnimateDuration, props.itemAnimateDuration) &&\n compareResponsiveValues(prevProps.itemAnimateDelay, props.itemAnimateDelay) &&\n compareResponsiveValues(prevProps.itemStaggerDuration, props.itemStaggerDuration)\n )\n}\n\nconst exitedBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 0 },\n fadeLeft: { transform: 'translate3d(60px,0,0)', opacity: 0 },\n fadeRight: { transform: 'translate3d(-60px,0,0)', opacity: 0 },\n fadeDown: { transform: 'translate3d(0,-80px,0)', opacity: 0 },\n fadeUp: { transform: 'translate3d(0,80px,0)', opacity: 0 },\n blurIn: { filter: 'blur(20px)', opacity: 0 },\n scaleDown: {\n transform: 'scale(1.2)',\n opacity: 0,\n },\n scaleUp: {\n transform: 'scale(.75)',\n opacity: 0,\n },\n}\n\nconst enteredBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 1 },\n fadeLeft: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeRight: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeDown: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n fadeUp: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n blurIn: { filter: 'blur(0px)', opacity: 1 },\n scaleDown: {\n transform: 'scale(1)',\n opacity: 1,\n },\n scaleUp: {\n transform: 'scale(1)',\n opacity: 1,\n },\n}\n\nexport function useBoxAnimation(\n responsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n itemResponsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n): [string, () => void, (element: HTMLElement | null) => void] {\n const [isVisible, setElement] = useElementOnScreen({\n root: null,\n rootMargin: `0px 0px -10% 0px`,\n threshold: 0.2,\n })\n const animationType = useMediaQuery(responsiveAnimationType) || DEFAULT_BOX_ANIMATE_TYPE\n const itemAnimationType = useMediaQuery(itemResponsiveAnimationType) || DEFAULT_ITEM_ANIMATE_TYPE\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const actualDelay = delay * 1000\n const actualDuration = duration * 1000\n\n const entered = {\n ...enteredBoxAnimationProperties[animationType],\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...enteredBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const exited = {\n ...exitedBoxAnimationProperties[animationType],\n transition: `all 0ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...exitedBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const [isEntered, setEntered] = useState(false)\n\n useEffect(() => {\n if (isVisible && !isEntered) setEntered(true)\n }, [isVisible, entered])\n\n const replayAnimation = useCallback(() => {\n setEntered(false)\n }, [])\n\n return [\n useStyle({\n '@media (prefers-reduced-motion: no-preference)': isEntered ? entered : exited,\n }),\n replayAnimation,\n setElement,\n ]\n}\n\nexport function useItemAnimation(\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n responsiveStagger: ResponsiveValue<number> | undefined,\n index: number,\n) {\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const stagger = useMediaQuery(responsiveStagger) || DEFAULT_ITEM_STAGGER_DURATION\n const delayFromStagger = responsiveStagger == null || index == null ? 0 : stagger * index\n const actualDelay = (delay + delayFromStagger) * 1000\n const actualDuration = duration * 1000\n\n return useStyle({\n '@media (prefers-reduced-motion: no-preference)': {\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n },\n })\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../src/components/builtin/Box/animations.tsx"],"sourcesContent":["'use client'\n\nimport { type CSSObject } from '@emotion/serialize'\nimport { useState, useEffect, useCallback, useRef } from 'react'\nimport { ResponsiveValue } from '../../../prop-controllers'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useMediaQuery } from '../../hooks'\nimport { gridItemIdentifierClassName } from '../../shared/grid-item'\nimport {\n BoxAnimateIn,\n DEFAULT_BOX_ANIMATE_DELAY,\n DEFAULT_BOX_ANIMATE_DURATION,\n DEFAULT_BOX_ANIMATE_TYPE,\n DEFAULT_ITEM_ANIMATE_TYPE,\n DEFAULT_ITEM_STAGGER_DURATION,\n} from './constants'\nimport { type ResponsiveNumberValue, type ResponsiveSelectValue } from '@makeswift/prop-controllers'\n\nfunction useElementOnScreen(\n options: IntersectionObserverInit,\n): [boolean, (element: HTMLElement | null) => void] {\n const [isVisible, setIsVisible] = useState(false)\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null)\n\n const setElement = useCallback((element: HTMLElement | null) => {\n if (element != null) {\n const observer = new IntersectionObserver(([entry]) => {\n if (entry?.isIntersecting) setIsVisible(true)\n }, options)\n\n observer.observe(element)\n\n intersectionObserverRef.current = observer\n } else {\n intersectionObserverRef.current?.disconnect()\n\n intersectionObserverRef.current = null\n }\n }, [])\n\n return [isVisible, setElement]\n}\n\nexport type BoxAnimationProps = {\n boxAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n boxAnimateDuration?: ResponsiveNumberValue\n boxAnimateDelay?: ResponsiveNumberValue\n itemAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n itemAnimateDuration?: ResponsiveNumberValue\n itemAnimateDelay?: ResponsiveNumberValue\n itemStaggerDuration?: ResponsiveNumberValue\n}\n\nfunction compareResponsiveValues<T>(a?: ResponsiveValue<T>, b?: ResponsiveValue<T>) {\n if (a == null && b == null) {\n return true\n }\n if (a != null && b != null) {\n let isEqual = true\n a.forEach((currentA, index) => {\n const currentB = b.at(index)\n if (currentB == null) {\n isEqual = false\n return\n }\n\n if (currentA.deviceId != currentB?.deviceId || currentA.value != currentB.value) {\n isEqual = false\n }\n })\n return isEqual\n }\n\n return false\n}\n\nexport function areBoxAnimationPropsEqual(prevProps: BoxAnimationProps, props: BoxAnimationProps) {\n return (\n compareResponsiveValues(prevProps.boxAnimateType, props.boxAnimateType) &&\n compareResponsiveValues(prevProps.boxAnimateDuration, props.boxAnimateDuration) &&\n compareResponsiveValues(prevProps.boxAnimateDelay, props.boxAnimateDelay) &&\n compareResponsiveValues(prevProps.itemAnimateType, props.itemAnimateType) &&\n compareResponsiveValues(prevProps.itemAnimateDuration, props.itemAnimateDuration) &&\n compareResponsiveValues(prevProps.itemAnimateDelay, props.itemAnimateDelay) &&\n compareResponsiveValues(prevProps.itemStaggerDuration, props.itemStaggerDuration)\n )\n}\n\nconst exitedBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 0 },\n fadeLeft: { transform: 'translate3d(60px,0,0)', opacity: 0 },\n fadeRight: { transform: 'translate3d(-60px,0,0)', opacity: 0 },\n fadeDown: { transform: 'translate3d(0,-80px,0)', opacity: 0 },\n fadeUp: { transform: 'translate3d(0,80px,0)', opacity: 0 },\n blurIn: { filter: 'blur(20px)', opacity: 0 },\n scaleDown: {\n transform: 'scale(1.2)',\n opacity: 0,\n },\n scaleUp: {\n transform: 'scale(.75)',\n opacity: 0,\n },\n}\n\nconst enteredBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 1 },\n fadeLeft: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeRight: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeDown: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n fadeUp: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n blurIn: { filter: 'blur(0px)', opacity: 1 },\n scaleDown: {\n transform: 'scale(1)',\n opacity: 1,\n },\n scaleUp: {\n transform: 'scale(1)',\n opacity: 1,\n },\n}\n\nexport function useBoxAnimation(\n responsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n itemResponsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n): [string, () => void, (element: HTMLElement | null) => void] {\n const [isVisible, setElement] = useElementOnScreen({\n root: null,\n rootMargin: `0px 0px -10% 0px`,\n threshold: 0.2,\n })\n const animationType = useMediaQuery(responsiveAnimationType) || DEFAULT_BOX_ANIMATE_TYPE\n const itemAnimationType = useMediaQuery(itemResponsiveAnimationType) || DEFAULT_ITEM_ANIMATE_TYPE\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const actualDelay = delay * 1000\n const actualDuration = duration * 1000\n\n const entered = {\n ...enteredBoxAnimationProperties[animationType],\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...enteredBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const exited = {\n ...exitedBoxAnimationProperties[animationType],\n transition: `all 0ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...exitedBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const [isEntered, setEntered] = useState(false)\n\n useEffect(() => {\n if (isVisible && !isEntered) setEntered(true)\n }, [isVisible, entered])\n\n const replayAnimation = useCallback(() => {\n setEntered(false)\n }, [])\n\n return [\n useStyle({\n '@media (prefers-reduced-motion: no-preference)': isEntered ? entered : exited,\n }),\n replayAnimation,\n setElement,\n ]\n}\n\nexport function useItemAnimation(\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n responsiveStagger: ResponsiveValue<number> | undefined,\n index: number,\n) {\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const stagger = useMediaQuery(responsiveStagger) || DEFAULT_ITEM_STAGGER_DURATION\n const delayFromStagger = responsiveStagger == null || index == null ? 0 : stagger * index\n const actualDelay = (delay + delayFromStagger) * 1000\n const actualDuration = duration * 1000\n\n return useStyle({\n '@media (prefers-reduced-motion: no-preference)': {\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n },\n })\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/builtin/Form/components/Field/services/responsiveField.ts"],"sourcesContent":["import { colorToString } from '../../../../../utils/colorToString'\n\nimport {\n Size,\n Shape,\n Contrast,\n Shapes,\n Sizes,\n Contrasts,\n Value,\n} from '../../../context/FormContext'\nimport { useResponsiveStyle } from '../../../../../utils/responsive-style'\nimport { CSSObject } from '@emotion/css'\n\nexport function getSizeHeight(size: Size): number {\n switch (size) {\n case Sizes.SMALL:\n return 30\n\n case Sizes.MEDIUM:\n return 38\n\n case Sizes.LARGE:\n return 48\n\n default:\n throw new Error(`Invalid form size \"${size}\"`)\n }\n}\n\nexport function getSizeHorizontalPadding(size: Size): number {\n switch (size) {\n case Sizes.SMALL:\n return 8\n\n case Sizes.MEDIUM:\n return 12\n\n case Sizes.LARGE:\n return 16\n\n default:\n throw new Error(`Invalid form size \"${size}\"`)\n }\n}\n\nfunction getSizeVerticalPadding(size: Size): number {\n switch (size) {\n case Sizes.SMALL:\n return 3\n\n case Sizes.MEDIUM:\n return 7\n\n case Sizes.LARGE:\n return 11\n\n default:\n throw new Error(`Invalid form size \"${size}\"`)\n }\n}\n\nexport function getShapeBorderRadius(shape: Shape): number {\n switch (shape) {\n case Shapes.SQUARE:\n return 0\n\n case Shapes.ROUNDED:\n return 4\n\n case Shapes.PILL:\n return 500\n\n default:\n throw new Error(`Invalid form shape \"${shape}\"`)\n }\n}\n\nexport function getContrastBorderColor(contrast: Contrast, error?: boolean): string {\n switch (contrast) {\n case Contrasts.LIGHT:\n return error ? 'rgba(255, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.25)'\n\n case Contrasts.DARK:\n return error ? 'rgba(255, 0, 0, 0.7)' : 'rgba(255, 255, 255, 0.6)'\n\n default:\n throw new Error(`Invalid form contrast \"${contrast}\"`)\n }\n}\n\nexport function getContrastBackgroundColor(contrast: Contrast): string {\n switch (contrast) {\n case Contrasts.LIGHT:\n return 'white'\n\n case Contrasts.DARK:\n return 'rgba(0, 0, 0, 0.7)'\n\n default:\n throw new Error(`Invalid form contrast \"${contrast}\"`)\n }\n}\n\nexport function getContrastColor(contrast: Contrast): string {\n switch (contrast) {\n case Contrasts.LIGHT:\n return 'rgba(0, 0, 0, 0.95)'\n\n case Contrasts.DARK:\n return 'white'\n\n default:\n throw new Error(`Invalid form contrast \"${contrast}\"`)\n }\n}\n\nfunction getContrastPlaceholderColor(contrast: Contrast) {\n switch (contrast) {\n case Contrasts.LIGHT:\n return 'rgba(0, 0, 0, 0.3)'\n\n case Contrasts.DARK:\n return 'rgba(255,255,255,0.3)'\n\n default:\n throw new Error(`Invalid form contrast \"${contrast}\"`)\n }\n}\n\nexport default function responsiveField(\n props: Pick<Value, 'shape' | 'size' | 'contrast' | 'brandColor'> & { error?: boolean },\n): CSSObject {\n return {\n display: 'block',\n width: '100%',\n outline: 'none',\n borderWidth: 1,\n borderStyle: 'solid',\n transition: 'border-color 200ms',\n ...useResponsiveStyle(\n [props.shape, props.size, props.contrast, props.brandColor] as const,\n ([\n shape = Shapes.ROUNDED,\n size = Sizes.MEDIUM,\n contrast = Contrasts.LIGHT,\n brandColor = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n ]) => ({\n padding: `${getSizeVerticalPadding(size)}px ${getSizeHorizontalPadding(size)}px`,\n borderRadius: getShapeBorderRadius(shape),\n borderColor: getContrastBorderColor(contrast, props.error),\n color: getContrastColor(contrast),\n backgroundColor: getContrastBackgroundColor(contrast),\n\n ':focus, :focus-within': {\n borderColor: colorToString(brandColor),\n },\n\n '::placeholder': {\n color: getContrastPlaceholderColor(contrast),\n },\n }),\n ),\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/builtin/Form/components/Field/services/responsiveField.ts"],"sourcesContent":["import { colorToString } from '../../../../../utils/colorToString'\n\nimport {\n Size,\n Shape,\n Contrast,\n Shapes,\n Sizes,\n Contrasts,\n Value,\n} from '../../../context/FormContext'\nimport { useResponsiveStyle } from '../../../../../utils/responsive-style'\nimport { type CSSObject } from '@emotion/serialize'\n\nexport function getSizeHeight(size: Size): number {\n switch (size) {\n case Sizes.SMALL:\n return 30\n\n case Sizes.MEDIUM:\n return 38\n\n case Sizes.LARGE:\n return 48\n\n default:\n throw new Error(`Invalid form size \"${size}\"`)\n }\n}\n\nexport function getSizeHorizontalPadding(size: Size): number {\n switch (size) {\n case Sizes.SMALL:\n return 8\n\n case Sizes.MEDIUM:\n return 12\n\n case Sizes.LARGE:\n return 16\n\n default:\n throw new Error(`Invalid form size \"${size}\"`)\n }\n}\n\nfunction getSizeVerticalPadding(size: Size): number {\n switch (size) {\n case Sizes.SMALL:\n return 3\n\n case Sizes.MEDIUM:\n return 7\n\n case Sizes.LARGE:\n return 11\n\n default:\n throw new Error(`Invalid form size \"${size}\"`)\n }\n}\n\nexport function getShapeBorderRadius(shape: Shape): number {\n switch (shape) {\n case Shapes.SQUARE:\n return 0\n\n case Shapes.ROUNDED:\n return 4\n\n case Shapes.PILL:\n return 500\n\n default:\n throw new Error(`Invalid form shape \"${shape}\"`)\n }\n}\n\nexport function getContrastBorderColor(contrast: Contrast, error?: boolean): string {\n switch (contrast) {\n case Contrasts.LIGHT:\n return error ? 'rgba(255, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.25)'\n\n case Contrasts.DARK:\n return error ? 'rgba(255, 0, 0, 0.7)' : 'rgba(255, 255, 255, 0.6)'\n\n default:\n throw new Error(`Invalid form contrast \"${contrast}\"`)\n }\n}\n\nexport function getContrastBackgroundColor(contrast: Contrast): string {\n switch (contrast) {\n case Contrasts.LIGHT:\n return 'white'\n\n case Contrasts.DARK:\n return 'rgba(0, 0, 0, 0.7)'\n\n default:\n throw new Error(`Invalid form contrast \"${contrast}\"`)\n }\n}\n\nexport function getContrastColor(contrast: Contrast): string {\n switch (contrast) {\n case Contrasts.LIGHT:\n return 'rgba(0, 0, 0, 0.95)'\n\n case Contrasts.DARK:\n return 'white'\n\n default:\n throw new Error(`Invalid form contrast \"${contrast}\"`)\n }\n}\n\nfunction getContrastPlaceholderColor(contrast: Contrast) {\n switch (contrast) {\n case Contrasts.LIGHT:\n return 'rgba(0, 0, 0, 0.3)'\n\n case Contrasts.DARK:\n return 'rgba(255,255,255,0.3)'\n\n default:\n throw new Error(`Invalid form contrast \"${contrast}\"`)\n }\n}\n\nexport default function responsiveField(\n props: Pick<Value, 'shape' | 'size' | 'contrast' | 'brandColor'> & { error?: boolean },\n): CSSObject {\n return {\n display: 'block',\n width: '100%',\n outline: 'none',\n borderWidth: 1,\n borderStyle: 'solid',\n transition: 'border-color 200ms',\n ...useResponsiveStyle(\n [props.shape, props.size, props.contrast, props.brandColor] as const,\n ([\n shape = Shapes.ROUNDED,\n size = Sizes.MEDIUM,\n contrast = Contrasts.LIGHT,\n brandColor = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n ]) => ({\n padding: `${getSizeVerticalPadding(size)}px ${getSizeHorizontalPadding(size)}px`,\n borderRadius: getShapeBorderRadius(shape),\n borderColor: getContrastBorderColor(contrast, props.error),\n color: getContrastColor(contrast),\n backgroundColor: getContrastBackgroundColor(contrast),\n\n ':focus, :focus-within': {\n borderColor: colorToString(brandColor),\n },\n\n '::placeholder': {\n color: getContrastPlaceholderColor(contrast),\n },\n }),\n ),\n }\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAE9B;AAAA,EAIE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,0BAA0B;AAG5B,SAAS,cAAc,MAAoB;AAChD,UAAQ,MAAM;AAAA,IACZ,KAAK,MAAM;AACT,aAAO;AAAA,IAET,KAAK,MAAM;AACT,aAAO;AAAA,IAET,KAAK,MAAM;AACT,aAAO;AAAA,IAET;AACE,YAAM,IAAI,MAAM,sBAAsB,IAAI,GAAG;AAAA,EACjD;AACF;AAEO,SAAS,yBAAyB,MAAoB;AAC3D,UAAQ,MAAM;AAAA,IACZ,KAAK,MAAM;AACT,aAAO;AAAA,IAET,KAAK,MAAM;AACT,aAAO;AAAA,IAET,KAAK,MAAM;AACT,aAAO;AAAA,IAET;AACE,YAAM,IAAI,MAAM,sBAAsB,IAAI,GAAG;AAAA,EACjD;AACF;AAEA,SAAS,uBAAuB,MAAoB;AAClD,UAAQ,MAAM;AAAA,IACZ,KAAK,MAAM;AACT,aAAO;AAAA,IAET,KAAK,MAAM;AACT,aAAO;AAAA,IAET,KAAK,MAAM;AACT,aAAO;AAAA,IAET;AACE,YAAM,IAAI,MAAM,sBAAsB,IAAI,GAAG;AAAA,EACjD;AACF;AAEO,SAAS,qBAAqB,OAAsB;AACzD,UAAQ,OAAO;AAAA,IACb,KAAK,OAAO;AACV,aAAO;AAAA,IAET,KAAK,OAAO;AACV,aAAO;AAAA,IAET,KAAK,OAAO;AACV,aAAO;AAAA,IAET;AACE,YAAM,IAAI,MAAM,uBAAuB,KAAK,GAAG;AAAA,EACnD;AACF;AAEO,SAAS,uBAAuB,UAAoB,OAAyB;AAClF,UAAQ,UAAU;AAAA,IAChB,KAAK,UAAU;AACb,aAAO,QAAQ,yBAAyB;AAAA,IAE1C,KAAK,UAAU;AACb,aAAO,QAAQ,yBAAyB;AAAA,IAE1C;AACE,YAAM,IAAI,MAAM,0BAA0B,QAAQ,GAAG;AAAA,EACzD;AACF;AAEO,SAAS,2BAA2B,UAA4B;AACrE,UAAQ,UAAU;AAAA,IAChB,KAAK,UAAU;AACb,aAAO;AAAA,IAET,KAAK,UAAU;AACb,aAAO;AAAA,IAET;AACE,YAAM,IAAI,MAAM,0BAA0B,QAAQ,GAAG;AAAA,EACzD;AACF;AAEO,SAAS,iBAAiB,UAA4B;AAC3D,UAAQ,UAAU;AAAA,IAChB,KAAK,UAAU;AACb,aAAO;AAAA,IAET,KAAK,UAAU;AACb,aAAO;AAAA,IAET;AACE,YAAM,IAAI,MAAM,0BAA0B,QAAQ,GAAG;AAAA,EACzD;AACF;AAEA,SAAS,4BAA4B,UAAoB;AACvD,UAAQ,UAAU;AAAA,IAChB,KAAK,UAAU;AACb,aAAO;AAAA,IAET,KAAK,UAAU;AACb,aAAO;AAAA,IAET;AACE,YAAM,IAAI,MAAM,0BAA0B,QAAQ,GAAG;AAAA,EACzD;AACF;AAEe,SAAR,gBACL,OACW;AACX,SAAO;AAAA,IACL,SAAS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,GAAG;AAAA,MACD,CAAC,MAAM,OAAO,MAAM,MAAM,MAAM,UAAU,MAAM,UAAU;AAAA,MAC1D,CAAC;AAAA,QACC,QAAQ,OAAO;AAAA,QACf,OAAO,MAAM;AAAA,QACb,WAAW,UAAU;AAAA,QACrB,aAAa,EAAE,QAAQ,EAAE,KAAK,GAAG,YAAY,GAAG,WAAW,EAAE,GAAG,OAAO,EAAE;AAAA,MAC3E,OAAO;AAAA,QACL,SAAS,GAAG,uBAAuB,IAAI,CAAC,MAAM,yBAAyB,IAAI,CAAC;AAAA,QAC5E,cAAc,qBAAqB,KAAK;AAAA,QACxC,aAAa,uBAAuB,UAAU,MAAM,KAAK;AAAA,QACzD,OAAO,iBAAiB,QAAQ;AAAA,QAChC,iBAAiB,2BAA2B,QAAQ;AAAA,QAEpD,yBAAyB;AAAA,UACvB,aAAa,cAAc,UAAU;AAAA,QACvC;AAAA,QAEA,iBAAiB;AAAA,UACf,OAAO,4BAA4B,QAAQ;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { useState, useEffect, forwardRef } from "react";
4
- import NextImage from "next/image";
5
4
  import { findBreakpointOverride } from "@makeswift/controls";
6
5
  import { placeholders } from "../../utils/placeholders";
7
6
  import { Link } from "../../shared/Link";
@@ -9,10 +8,9 @@ import { cx } from "@emotion/css";
9
8
  import { useStyle } from "../../../runtimes/react/use-style";
10
9
  import { useResponsiveStyle, useResponsiveWidth } from "../../utils/responsive-style";
11
10
  import { useFile } from "../../../runtimes/react/hooks/makeswift-api";
12
- import { major as nextMajorVersion } from "../../../next/next-version";
13
11
  import { useBreakpoints } from "../../../runtimes/react/hooks/use-breakpoints";
12
+ import { useFrameworkContext } from "../../../runtimes/react/components/hooks/use-framework-context";
14
13
  import { match, P } from "ts-pattern";
15
- const NextLegacyImage = NextImage;
16
14
  function loadImage(src) {
17
15
  return new Promise((resolve, reject) => {
18
16
  const image = new Image();
@@ -87,21 +85,11 @@ const ImageComponent = forwardRef(function Image2({
87
85
  boxShadow,
88
86
  className
89
87
  );
88
+ const { Image: Image3 } = useFrameworkContext();
90
89
  if (!dimensions)
91
90
  return null;
92
- return /* @__PURE__ */ jsx(Container, { link, ref, id, className: containerClassName, children: nextMajorVersion < 13 ? /* @__PURE__ */ jsx(
93
- NextLegacyImage,
94
- {
95
- layout: "responsive",
96
- src: imageSrc,
97
- sizes: imageSizes(breakpoints, width),
98
- alt: altText,
99
- width: dimensions.width,
100
- height: dimensions.height,
101
- priority
102
- }
103
- ) : /* @__PURE__ */ jsx(
104
- NextImage,
91
+ return /* @__PURE__ */ jsx(Container, { link, ref, id, className: containerClassName, children: /* @__PURE__ */ jsx(
92
+ Image3,
105
93
  {
106
94
  src: imageSrc,
107
95
  priority,