@makeswift/runtime 0.24.0-canary.1 → 0.24.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 (431) hide show
  1. package/dist/cjs/api/react.js +28 -7
  2. package/dist/cjs/api/react.js.map +1 -1
  3. package/dist/cjs/api/site-version.js +36 -0
  4. package/dist/cjs/api/site-version.js.map +1 -0
  5. package/dist/cjs/components/builtin/Box/register.js +3 -3
  6. package/dist/cjs/components/builtin/Box/register.js.map +1 -1
  7. package/dist/cjs/components/builtin/Button/register.js +2 -2
  8. package/dist/cjs/components/builtin/Button/register.js.map +1 -1
  9. package/dist/cjs/components/builtin/Carousel/Carousel.js +6 -5
  10. package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
  11. package/dist/cjs/components/builtin/Carousel/register.js +2 -2
  12. package/dist/cjs/components/builtin/Carousel/register.js.map +1 -1
  13. package/dist/cjs/components/builtin/Countdown/register.js +2 -2
  14. package/dist/cjs/components/builtin/Countdown/register.js.map +1 -1
  15. package/dist/cjs/components/builtin/Form/register.js +4 -4
  16. package/dist/cjs/components/builtin/Form/register.js.map +1 -1
  17. package/dist/cjs/components/builtin/Image/Image.js +3 -3
  18. package/dist/cjs/components/builtin/Image/Image.js.map +1 -1
  19. package/dist/cjs/components/builtin/Navigation/register.js +4 -4
  20. package/dist/cjs/components/builtin/Navigation/register.js.map +1 -1
  21. package/dist/cjs/components/builtin/SocialLinks/register.js +3 -3
  22. package/dist/cjs/components/builtin/SocialLinks/register.js.map +1 -1
  23. package/dist/cjs/components/builtin/Text/register.js +3 -3
  24. package/dist/cjs/components/builtin/Text/register.js.map +1 -1
  25. package/dist/cjs/components/hooks/useMediaQuery.js +5 -5
  26. package/dist/cjs/components/hooks/useMediaQuery.js.map +1 -1
  27. package/dist/cjs/components/page/Page.js +7 -4
  28. package/dist/cjs/components/page/Page.js.map +1 -1
  29. package/dist/cjs/components/page/PageHead.js +17 -8
  30. package/dist/cjs/components/page/PageHead.js.map +1 -1
  31. package/dist/cjs/components/page/page-seo-settings.js +43 -0
  32. package/dist/cjs/components/page/page-seo-settings.js.map +1 -0
  33. package/dist/cjs/components/shared/Link/index.js +3 -1
  34. package/dist/cjs/components/shared/Link/index.js.map +1 -1
  35. package/dist/cjs/components/utils/responsive-style.js +2 -3
  36. package/dist/cjs/components/utils/responsive-style.js.map +1 -1
  37. package/dist/cjs/core/index.js +18 -2
  38. package/dist/cjs/core/index.js.map +1 -1
  39. package/dist/cjs/jest-setup.js +3 -0
  40. package/dist/cjs/jest-setup.js.map +1 -1
  41. package/dist/cjs/locale.js +79 -0
  42. package/dist/cjs/locale.js.map +1 -1
  43. package/dist/cjs/next/api-handler/handlers/clear-draft.js +64 -0
  44. package/dist/cjs/next/api-handler/handlers/clear-draft.js.map +1 -0
  45. package/dist/cjs/next/api-handler/handlers/manifest.js +3 -2
  46. package/dist/cjs/next/api-handler/handlers/manifest.js.map +1 -1
  47. package/dist/cjs/next/api-handler/handlers/redirect-draft.js +77 -0
  48. package/dist/cjs/next/api-handler/handlers/redirect-draft.js.map +1 -0
  49. package/dist/cjs/next/api-handler/handlers/redirect-preview.js +67 -0
  50. package/dist/cjs/next/api-handler/handlers/redirect-preview.js.map +1 -0
  51. package/dist/cjs/next/api-handler/handlers/utils/draft.js +53 -0
  52. package/dist/cjs/next/api-handler/handlers/utils/draft.js.map +1 -0
  53. package/dist/cjs/next/api-handler/handlers/webhook/index.js +3 -3
  54. package/dist/cjs/next/api-handler/handlers/webhook/index.js.map +1 -1
  55. package/dist/cjs/next/api-handler/handlers/webhook/site-published.js +8 -5
  56. package/dist/cjs/next/api-handler/handlers/webhook/site-published.js.map +1 -1
  57. package/dist/cjs/next/api-handler/handlers/webhook/types.js.map +1 -1
  58. package/dist/cjs/next/api-handler/index.js +24 -9
  59. package/dist/cjs/next/api-handler/index.js.map +1 -1
  60. package/dist/cjs/next/cache.js +29 -0
  61. package/dist/cjs/next/cache.js.map +1 -0
  62. package/dist/cjs/next/client.js +135 -60
  63. package/dist/cjs/next/client.js.map +1 -1
  64. package/dist/cjs/next/components/page.js +3 -2
  65. package/dist/cjs/next/components/page.js.map +1 -1
  66. package/dist/cjs/next/components/tests/controls/color-control/fixtures.js +51 -0
  67. package/dist/cjs/next/components/tests/controls/color-control/fixtures.js.map +1 -0
  68. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +4 -1
  69. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  70. package/dist/cjs/next/components/tests/controls/rich-text-v2-control/fixtures.js +91 -0
  71. package/dist/cjs/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -0
  72. package/dist/cjs/next/document.js +1 -3
  73. package/dist/cjs/next/document.js.map +1 -1
  74. package/dist/cjs/next/draft-mode/index.js +3 -3
  75. package/dist/cjs/next/draft-mode/index.js.map +1 -1
  76. package/dist/cjs/next/hooks/use-is-pages-router.js.map +1 -1
  77. package/dist/cjs/next/index.js +0 -3
  78. package/dist/cjs/next/index.js.map +1 -1
  79. package/dist/cjs/next/middleware/index.js +29 -0
  80. package/dist/cjs/next/middleware/index.js.map +1 -0
  81. package/dist/cjs/next/middleware/request-utils.js +49 -0
  82. package/dist/cjs/next/middleware/request-utils.js.map +1 -0
  83. package/dist/cjs/next/preview-mode.js +4 -110
  84. package/dist/cjs/next/preview-mode.js.map +1 -1
  85. package/dist/cjs/next/root-style-registry.js +7 -4
  86. package/dist/cjs/next/root-style-registry.js.map +1 -1
  87. package/dist/cjs/next/server.js +0 -3
  88. package/dist/cjs/next/server.js.map +1 -1
  89. package/dist/cjs/next/tests/test-utils.js +61 -0
  90. package/dist/cjs/next/tests/test-utils.js.map +1 -0
  91. package/dist/cjs/runtimes/react/components/Document.js +1 -1
  92. package/dist/cjs/runtimes/react/components/Document.js.map +1 -1
  93. package/dist/cjs/runtimes/react/components/ElementData.js +1 -0
  94. package/dist/cjs/runtimes/react/components/ElementData.js.map +1 -1
  95. package/dist/cjs/runtimes/react/components/RuntimeProvider.js +14 -3
  96. package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
  97. package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js +72 -0
  98. package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js.map +1 -0
  99. package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js +79 -0
  100. package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js.map +1 -0
  101. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js +67 -0
  102. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
  103. package/dist/cjs/runtimes/react/components/hooks/use-builder-handshake.js +45 -0
  104. package/dist/cjs/runtimes/react/components/hooks/use-builder-handshake.js.map +1 -0
  105. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js +1 -1
  106. package/dist/cjs/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js.map +1 -1
  107. package/dist/cjs/runtimes/react/hooks/use-cache-data.js +2 -2
  108. package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -1
  109. package/dist/cjs/runtimes/react/hooks/use-document-context.js +8 -13
  110. package/dist/cjs/runtimes/react/hooks/use-document-context.js.map +1 -1
  111. package/dist/cjs/runtimes/react/hooks/use-register-document.js +8 -1
  112. package/dist/cjs/runtimes/react/hooks/use-register-document.js.map +1 -1
  113. package/dist/cjs/runtimes/react/hooks/use-resolvable-record.js +68 -0
  114. package/dist/cjs/runtimes/react/hooks/use-resolvable-record.js.map +1 -0
  115. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +3 -3
  116. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  117. package/dist/cjs/runtimes/react/hooks/use-resolved-value.js +1 -1
  118. package/dist/cjs/runtimes/react/hooks/use-resolved-value.js.map +1 -1
  119. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js +2 -1
  120. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  121. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js +1 -2
  122. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  123. package/dist/cjs/runtimes/react/host-api-client.js +5 -1
  124. package/dist/cjs/runtimes/react/host-api-client.js.map +1 -1
  125. package/dist/cjs/slate/BlockPlugin/setBlockKeyForDevice.js +1 -2
  126. package/dist/cjs/slate/BlockPlugin/setBlockKeyForDevice.js.map +1 -1
  127. package/dist/cjs/slate/TypographyPlugin/setActiveTypographyStyle.js +2 -2
  128. package/dist/cjs/slate/TypographyPlugin/setActiveTypographyStyle.js.map +1 -1
  129. package/dist/cjs/slate/selectors.js +2 -3
  130. package/dist/cjs/slate/selectors.js.map +1 -1
  131. package/dist/cjs/state/makeswift-api-client.js +23 -12
  132. package/dist/cjs/state/makeswift-api-client.js.map +1 -1
  133. package/dist/cjs/state/modules/breakpoints.js +1 -44
  134. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  135. package/dist/cjs/state/modules/element-trees.js +10 -7
  136. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  137. package/dist/esm/api/react.js +28 -7
  138. package/dist/esm/api/react.js.map +1 -1
  139. package/dist/esm/api/site-version.js +10 -0
  140. package/dist/esm/api/site-version.js.map +1 -0
  141. package/dist/esm/components/builtin/Box/register.js +1 -1
  142. package/dist/esm/components/builtin/Box/register.js.map +1 -1
  143. package/dist/esm/components/builtin/Button/register.js +1 -1
  144. package/dist/esm/components/builtin/Button/register.js.map +1 -1
  145. package/dist/esm/components/builtin/Carousel/Carousel.js +5 -4
  146. package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
  147. package/dist/esm/components/builtin/Carousel/register.js +1 -1
  148. package/dist/esm/components/builtin/Carousel/register.js.map +1 -1
  149. package/dist/esm/components/builtin/Countdown/register.js +1 -1
  150. package/dist/esm/components/builtin/Countdown/register.js.map +1 -1
  151. package/dist/esm/components/builtin/Form/register.js +1 -1
  152. package/dist/esm/components/builtin/Form/register.js.map +1 -1
  153. package/dist/esm/components/builtin/Image/Image.js +1 -1
  154. package/dist/esm/components/builtin/Image/Image.js.map +1 -1
  155. package/dist/esm/components/builtin/Navigation/register.js +1 -1
  156. package/dist/esm/components/builtin/Navigation/register.js.map +1 -1
  157. package/dist/esm/components/builtin/SocialLinks/register.js +1 -1
  158. package/dist/esm/components/builtin/SocialLinks/register.js.map +1 -1
  159. package/dist/esm/components/builtin/Text/register.js +1 -1
  160. package/dist/esm/components/builtin/Text/register.js.map +1 -1
  161. package/dist/esm/components/hooks/useMediaQuery.js +1 -1
  162. package/dist/esm/components/hooks/useMediaQuery.js.map +1 -1
  163. package/dist/esm/components/page/Page.js +5 -2
  164. package/dist/esm/components/page/Page.js.map +1 -1
  165. package/dist/esm/components/page/PageHead.js +17 -8
  166. package/dist/esm/components/page/PageHead.js.map +1 -1
  167. package/dist/esm/components/page/page-seo-settings.js +19 -0
  168. package/dist/esm/components/page/page-seo-settings.js.map +1 -0
  169. package/dist/esm/components/shared/Link/index.js +3 -1
  170. package/dist/esm/components/shared/Link/index.js.map +1 -1
  171. package/dist/esm/components/utils/responsive-style.js +3 -2
  172. package/dist/esm/components/utils/responsive-style.js.map +1 -1
  173. package/dist/esm/core/index.js +18 -2
  174. package/dist/esm/core/index.js.map +1 -1
  175. package/dist/esm/jest-setup.js +4 -1
  176. package/dist/esm/jest-setup.js.map +1 -1
  177. package/dist/esm/locale.js +79 -0
  178. package/dist/esm/locale.js.map +1 -1
  179. package/dist/esm/next/api-handler/handlers/clear-draft.js +50 -0
  180. package/dist/esm/next/api-handler/handlers/clear-draft.js.map +1 -0
  181. package/dist/esm/next/api-handler/handlers/manifest.js +3 -2
  182. package/dist/esm/next/api-handler/handlers/manifest.js.map +1 -1
  183. package/dist/esm/next/api-handler/handlers/redirect-draft.js +63 -0
  184. package/dist/esm/next/api-handler/handlers/redirect-draft.js.map +1 -0
  185. package/dist/esm/next/api-handler/handlers/redirect-preview.js +53 -0
  186. package/dist/esm/next/api-handler/handlers/redirect-preview.js.map +1 -0
  187. package/dist/esm/next/api-handler/handlers/utils/draft.js +24 -0
  188. package/dist/esm/next/api-handler/handlers/utils/draft.js.map +1 -0
  189. package/dist/esm/next/api-handler/handlers/webhook/index.js +3 -3
  190. package/dist/esm/next/api-handler/handlers/webhook/index.js.map +1 -1
  191. package/dist/esm/next/api-handler/handlers/webhook/site-published.js +7 -3
  192. package/dist/esm/next/api-handler/handlers/webhook/site-published.js.map +1 -1
  193. package/dist/esm/next/api-handler/handlers/webhook/types.js.map +1 -1
  194. package/dist/esm/next/api-handler/index.js +28 -9
  195. package/dist/esm/next/api-handler/index.js.map +1 -1
  196. package/dist/esm/next/cache.js +5 -0
  197. package/dist/esm/next/cache.js.map +1 -0
  198. package/dist/esm/next/client.js +128 -54
  199. package/dist/esm/next/client.js.map +1 -1
  200. package/dist/esm/next/components/page.js +3 -2
  201. package/dist/esm/next/components/page.js.map +1 -1
  202. package/dist/esm/next/components/tests/controls/color-control/fixtures.js +24 -0
  203. package/dist/esm/next/components/tests/controls/color-control/fixtures.js.map +1 -0
  204. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +4 -1
  205. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
  206. package/dist/esm/next/components/tests/controls/rich-text-v2-control/fixtures.js +56 -0
  207. package/dist/esm/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -0
  208. package/dist/esm/next/document.js +1 -3
  209. package/dist/esm/next/document.js.map +1 -1
  210. package/dist/esm/next/draft-mode/index.js +1 -1
  211. package/dist/esm/next/draft-mode/index.js.map +1 -1
  212. package/dist/esm/next/hooks/use-is-pages-router.js.map +1 -1
  213. package/dist/esm/next/index.js +0 -2
  214. package/dist/esm/next/index.js.map +1 -1
  215. package/dist/esm/next/middleware/index.js +5 -0
  216. package/dist/esm/next/middleware/index.js.map +1 -0
  217. package/dist/esm/next/middleware/request-utils.js +28 -0
  218. package/dist/esm/next/middleware/request-utils.js.map +1 -0
  219. package/dist/esm/next/preview-mode.js +2 -105
  220. package/dist/esm/next/preview-mode.js.map +1 -1
  221. package/dist/esm/next/root-style-registry.js +7 -4
  222. package/dist/esm/next/root-style-registry.js.map +1 -1
  223. package/dist/esm/next/server.js +0 -2
  224. package/dist/esm/next/server.js.map +1 -1
  225. package/dist/esm/next/tests/test-utils.js +37 -0
  226. package/dist/esm/next/tests/test-utils.js.map +1 -0
  227. package/dist/esm/runtimes/react/components/Document.js +2 -2
  228. package/dist/esm/runtimes/react/components/Document.js.map +1 -1
  229. package/dist/esm/runtimes/react/components/ElementData.js +1 -0
  230. package/dist/esm/runtimes/react/components/ElementData.js.map +1 -1
  231. package/dist/esm/runtimes/react/components/RuntimeProvider.js +15 -4
  232. package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
  233. package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js +48 -0
  234. package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js.map +1 -0
  235. package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js +55 -0
  236. package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js.map +1 -0
  237. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js +43 -0
  238. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
  239. package/dist/esm/runtimes/react/components/hooks/use-builder-handshake.js +21 -0
  240. package/dist/esm/runtimes/react/components/hooks/use-builder-handshake.js.map +1 -0
  241. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js +2 -2
  242. package/dist/esm/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.js.map +1 -1
  243. package/dist/esm/runtimes/react/hooks/use-cache-data.js +2 -2
  244. package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -1
  245. package/dist/esm/runtimes/react/hooks/use-document-context.js +6 -11
  246. package/dist/esm/runtimes/react/hooks/use-document-context.js.map +1 -1
  247. package/dist/esm/runtimes/react/hooks/use-register-document.js +9 -2
  248. package/dist/esm/runtimes/react/hooks/use-register-document.js.map +1 -1
  249. package/dist/esm/runtimes/react/hooks/use-resolvable-record.js +44 -0
  250. package/dist/esm/runtimes/react/hooks/use-resolvable-record.js.map +1 -0
  251. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +3 -3
  252. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  253. package/dist/esm/runtimes/react/hooks/use-resolved-value.js +1 -1
  254. package/dist/esm/runtimes/react/hooks/use-resolved-value.js.map +1 -1
  255. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js +3 -2
  256. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  257. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js +2 -2
  258. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  259. package/dist/esm/runtimes/react/host-api-client.js +5 -1
  260. package/dist/esm/runtimes/react/host-api-client.js.map +1 -1
  261. package/dist/esm/slate/BlockPlugin/setBlockKeyForDevice.js +4 -2
  262. package/dist/esm/slate/BlockPlugin/setBlockKeyForDevice.js.map +1 -1
  263. package/dist/esm/slate/TypographyPlugin/setActiveTypographyStyle.js +3 -1
  264. package/dist/esm/slate/TypographyPlugin/setActiveTypographyStyle.js.map +1 -1
  265. package/dist/esm/slate/selectors.js +4 -2
  266. package/dist/esm/slate/selectors.js.map +1 -1
  267. package/dist/esm/state/makeswift-api-client.js +22 -11
  268. package/dist/esm/state/makeswift-api-client.js.map +1 -1
  269. package/dist/esm/state/modules/breakpoints.js +1 -42
  270. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  271. package/dist/esm/state/modules/element-trees.js +10 -7
  272. package/dist/esm/state/modules/element-trees.js.map +1 -1
  273. package/dist/types/api/react.d.ts +4 -1
  274. package/dist/types/api/react.d.ts.map +1 -1
  275. package/dist/types/api/site-version.d.ts +6 -0
  276. package/dist/types/api/site-version.d.ts.map +1 -0
  277. package/dist/types/components/builtin/Box/register.d.ts.map +1 -1
  278. package/dist/types/components/builtin/Button/register.d.ts.map +1 -1
  279. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  280. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  281. package/dist/types/components/hooks/useMediaQuery.d.ts +1 -1
  282. package/dist/types/components/hooks/useMediaQuery.d.ts.map +1 -1
  283. package/dist/types/components/page/Page.d.ts +3 -1
  284. package/dist/types/components/page/Page.d.ts.map +1 -1
  285. package/dist/types/components/page/PageHead.d.ts +3 -1
  286. package/dist/types/components/page/PageHead.d.ts.map +1 -1
  287. package/dist/types/components/page/page-seo-settings.d.ts +11 -0
  288. package/dist/types/components/page/page-seo-settings.d.ts.map +1 -0
  289. package/dist/types/components/shared/Link/index.d.ts.map +1 -1
  290. package/dist/types/components/utils/responsive-style.d.ts +1 -1
  291. package/dist/types/components/utils/responsive-style.d.ts.map +1 -1
  292. package/dist/types/controls/link.d.ts +1 -1
  293. package/dist/types/core/index.d.ts +1 -1
  294. package/dist/types/core/index.d.ts.map +1 -1
  295. package/dist/types/locale.d.ts +3 -3
  296. package/dist/types/locale.d.ts.map +1 -1
  297. package/dist/types/next/api-handler/handlers/clear-draft.d.ts +20 -0
  298. package/dist/types/next/api-handler/handlers/clear-draft.d.ts.map +1 -0
  299. package/dist/types/next/api-handler/handlers/manifest.d.ts +1 -0
  300. package/dist/types/next/api-handler/handlers/manifest.d.ts.map +1 -1
  301. package/dist/types/next/api-handler/handlers/redirect-draft.d.ts +18 -0
  302. package/dist/types/next/api-handler/handlers/redirect-draft.d.ts.map +1 -0
  303. package/dist/types/next/api-handler/handlers/redirect-preview.d.ts +18 -0
  304. package/dist/types/next/api-handler/handlers/redirect-preview.d.ts.map +1 -0
  305. package/dist/types/next/api-handler/handlers/utils/draft.d.ts +16 -0
  306. package/dist/types/next/api-handler/handlers/utils/draft.d.ts.map +1 -0
  307. package/dist/types/next/api-handler/handlers/webhook/index.d.ts +9 -11
  308. package/dist/types/next/api-handler/handlers/webhook/index.d.ts.map +1 -1
  309. package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts +6 -3
  310. package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts.map +1 -1
  311. package/dist/types/next/api-handler/handlers/webhook/types.d.ts +13 -12
  312. package/dist/types/next/api-handler/handlers/webhook/types.d.ts.map +1 -1
  313. package/dist/types/next/api-handler/index.d.ts +10 -5
  314. package/dist/types/next/api-handler/index.d.ts.map +1 -1
  315. package/dist/types/next/cache.d.ts +2 -0
  316. package/dist/types/next/cache.d.ts.map +1 -0
  317. package/dist/types/next/client.d.ts +14 -12
  318. package/dist/types/next/client.d.ts.map +1 -1
  319. package/dist/types/next/components/page.d.ts +21 -1
  320. package/dist/types/next/components/page.d.ts.map +1 -1
  321. package/dist/types/next/components/tests/controls/color-control/client.test.d.ts +3 -0
  322. package/dist/types/next/components/tests/controls/color-control/client.test.d.ts.map +1 -0
  323. package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts +11 -0
  324. package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts.map +1 -0
  325. package/dist/types/next/components/tests/controls/color-control/server.test.d.ts +2 -0
  326. package/dist/types/next/components/tests/controls/color-control/server.test.d.ts.map +1 -0
  327. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
  328. package/dist/types/next/components/tests/controls/rich-text-v2-control/client.test.d.ts +2 -0
  329. package/dist/types/next/components/tests/controls/rich-text-v2-control/client.test.d.ts.map +1 -0
  330. package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts +42 -0
  331. package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts.map +1 -0
  332. package/dist/types/next/components/tests/controls/rich-text-v2-control/server.test.d.ts +2 -0
  333. package/dist/types/next/components/tests/controls/rich-text-v2-control/server.test.d.ts.map +1 -0
  334. package/dist/types/next/components/tests/makeswift-page-metadata-rendering.test.d.ts +3 -0
  335. package/dist/types/next/components/tests/makeswift-page-metadata-rendering.test.d.ts.map +1 -0
  336. package/dist/types/next/document.d.ts +1 -5
  337. package/dist/types/next/document.d.ts.map +1 -1
  338. package/dist/types/next/draft-mode/index.d.ts +2 -2
  339. package/dist/types/next/hooks/use-is-pages-router.d.ts.map +1 -1
  340. package/dist/types/next/index.d.ts +0 -1
  341. package/dist/types/next/index.d.ts.map +1 -1
  342. package/dist/types/next/middleware/index.d.ts +2 -0
  343. package/dist/types/next/middleware/index.d.ts.map +1 -0
  344. package/dist/types/next/middleware/request-utils.d.ts +3 -0
  345. package/dist/types/next/middleware/request-utils.d.ts.map +1 -0
  346. package/dist/types/next/middleware/request-utils.test.d.ts +2 -0
  347. package/dist/types/next/middleware/request-utils.test.d.ts.map +1 -0
  348. package/dist/types/next/preview-mode.d.ts +3 -10
  349. package/dist/types/next/preview-mode.d.ts.map +1 -1
  350. package/dist/types/next/root-style-registry.d.ts +2 -1
  351. package/dist/types/next/root-style-registry.d.ts.map +1 -1
  352. package/dist/types/next/server.d.ts +0 -1
  353. package/dist/types/next/server.d.ts.map +1 -1
  354. package/dist/types/next/tests/client.error-handling.test.d.ts +2 -0
  355. package/dist/types/next/tests/client.error-handling.test.d.ts.map +1 -0
  356. package/dist/types/next/tests/client.get-page-snapshot.test.d.ts +2 -0
  357. package/dist/types/next/tests/client.get-page-snapshot.test.d.ts.map +1 -0
  358. package/dist/types/next/tests/client.get-resources.test.d.ts +2 -0
  359. package/dist/types/next/tests/client.get-resources.test.d.ts.map +1 -0
  360. package/dist/types/next/tests/server.makeswift-api-handler.test.d.ts +2 -0
  361. package/dist/types/next/tests/server.makeswift-api-handler.test.d.ts.map +1 -0
  362. package/dist/types/next/tests/test-utils.d.ts +8 -0
  363. package/dist/types/next/tests/test-utils.d.ts.map +1 -0
  364. package/dist/types/runtimes/react/components/Document.d.ts.map +1 -1
  365. package/dist/types/runtimes/react/components/ElementData.d.ts.map +1 -1
  366. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +2 -1
  367. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
  368. package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts +4 -0
  369. package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts.map +1 -0
  370. package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts +6 -0
  371. package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts.map +1 -0
  372. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts +4 -0
  373. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts.map +1 -0
  374. package/dist/types/runtimes/react/components/hooks/use-builder-handshake.d.ts +4 -0
  375. package/dist/types/runtimes/react/components/hooks/use-builder-handshake.d.ts.map +1 -0
  376. package/dist/types/runtimes/react/hooks/use-cache-data.d.ts.map +1 -1
  377. package/dist/types/runtimes/react/hooks/use-document-context.d.ts +2 -7
  378. package/dist/types/runtimes/react/hooks/use-document-context.d.ts.map +1 -1
  379. package/dist/types/runtimes/react/hooks/use-register-document.d.ts.map +1 -1
  380. package/dist/types/runtimes/react/hooks/use-resolvable-record.d.ts +3 -0
  381. package/dist/types/runtimes/react/hooks/use-resolvable-record.d.ts.map +1 -0
  382. package/dist/types/runtimes/react/hooks/use-resource-resolver.d.ts.map +1 -1
  383. package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts.map +1 -1
  384. package/dist/types/runtimes/react/host-api-client.d.ts.map +1 -1
  385. package/dist/types/slate/BlockPlugin/setBlockKeyForDevice.d.ts +1 -1
  386. package/dist/types/slate/BlockPlugin/setBlockKeyForDevice.d.ts.map +1 -1
  387. package/dist/types/slate/TypographyPlugin/setActiveTypographyStyle.d.ts +1 -1
  388. package/dist/types/slate/TypographyPlugin/setActiveTypographyStyle.d.ts.map +1 -1
  389. package/dist/types/slate/selectors.d.ts +1 -2
  390. package/dist/types/slate/selectors.d.ts.map +1 -1
  391. package/dist/types/state/makeswift-api-client.d.ts +2 -1
  392. package/dist/types/state/makeswift-api-client.d.ts.map +1 -1
  393. package/dist/types/state/modules/__tests__/fixtures/element-trees-demo-component.d.ts +7 -0
  394. package/dist/types/state/modules/__tests__/fixtures/element-trees-demo-component.d.ts.map +1 -0
  395. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts +239 -0
  396. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts.map +1 -1
  397. package/dist/types/state/modules/breakpoints.d.ts +2 -7
  398. package/dist/types/state/modules/breakpoints.d.ts.map +1 -1
  399. package/dist/types/state/modules/element-trees.d.ts +1 -1
  400. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  401. package/package.json +15 -5
  402. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js +0 -80
  403. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js.map +0 -1
  404. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js +0 -100
  405. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js.map +0 -1
  406. package/dist/cjs/next/draft-mode/draft-mode-script.js +0 -137
  407. package/dist/cjs/next/draft-mode/draft-mode-script.js.map +0 -1
  408. package/dist/cjs/runtimes/react/resolvable-record.js +0 -67
  409. package/dist/cjs/runtimes/react/resolvable-record.js.map +0 -1
  410. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js +0 -60
  411. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js.map +0 -1
  412. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js +0 -80
  413. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js.map +0 -1
  414. package/dist/esm/next/draft-mode/draft-mode-script.js +0 -103
  415. package/dist/esm/next/draft-mode/draft-mode-script.js.map +0 -1
  416. package/dist/esm/runtimes/react/resolvable-record.js +0 -43
  417. package/dist/esm/runtimes/react/resolvable-record.js.map +0 -1
  418. package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts +0 -20
  419. package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts.map +0 -1
  420. package/dist/types/next/api-handler/handlers/proxy-draft-mode.test.d.ts +0 -2
  421. package/dist/types/next/api-handler/handlers/proxy-draft-mode.test.d.ts.map +0 -1
  422. package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts +0 -20
  423. package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts.map +0 -1
  424. package/dist/types/next/components/tests/controls/color-control.test.d.ts +0 -3
  425. package/dist/types/next/components/tests/controls/color-control.test.d.ts.map +0 -1
  426. package/dist/types/next/components/tests/controls/rich-text-v2-control.test.d.ts +0 -2
  427. package/dist/types/next/components/tests/controls/rich-text-v2-control.test.d.ts.map +0 -1
  428. package/dist/types/next/draft-mode/draft-mode-script.d.ts +0 -6
  429. package/dist/types/next/draft-mode/draft-mode-script.d.ts.map +0 -1
  430. package/dist/types/runtimes/react/resolvable-record.d.ts +0 -3
  431. package/dist/types/runtimes/react/resolvable-record.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/next/components/tests/controls/page-control-prop-rendering.tsx"],"sourcesContent":["import { type ReactNode, Fragment, forwardRef, useRef, isValidElement } from 'react'\nimport { renderToReadableStream } from 'react-dom/server'\nimport { JSDOM } from 'jsdom'\nimport { act } from 'react-dom/test-utils'\nimport { render, screen } from '@testing-library/react'\nimport '@testing-library/jest-dom'\nimport { ServerInsertedHTMLContext } from 'next/navigation'\n\nimport { type Data, type ValueType, type DataType, ControlDefinition } from '@makeswift/controls'\n\nimport { type CacheData } from '../../../../api/react'\nimport { ElementData } from '../../../../state/react-page'\nimport { ReactRuntime } from '../../../../react'\nimport { MakeswiftComponent } from '../../MakeswiftComponent'\nimport { Page } from '../../page'\nimport { isServer } from '../../../../utils/is-server'\nimport * as Testing from '../../../../runtimes/react/testing'\n\nconst ROOT_ID = '00000000-0000-0000-0000-000000000000'\nconst ELEMENT_ID = '11111111-1111-1111-1111-111111111111'\n\nconst renderProp = (prop: any) =>\n prop === undefined ? 'undefined' : isValidElement(prop) ? prop : JSON.stringify(prop)\n\nconst propSnapshot = (prop: HTMLElement | null) =>\n prop?.childElementCount ? prop.childNodes : parseStringifiedProp(prop?.textContent ?? '')\n\nconst parseStringifiedProp = (prop: string) => (prop === 'undefined' ? undefined : JSON.parse(prop))\n\nasync function streamToString(stream: ReadableStream) {\n const reader = stream.getReader()\n const decoder = new TextDecoder()\n\n let result = ''\n\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n result += decoder.decode(value, { stream: true })\n }\n\n return result\n}\n\nasync function renderToString(element: ReactNode) {\n return await streamToString(await renderToReadableStream(element))\n}\n\nasync function serverSideRender(children: ReactNode) {\n // wrap the children in a context provider to capture server-inserted HTML, see\n // https://github.com/vercel/next.js/blob/canary/packages/next/src/server/app-render/server-inserted-html.tsx\n const serverInsertedCallbacks: (() => React.ReactNode)[] = []\n\n const elementTree = (\n <ServerInsertedHTMLContext.Provider value={handler => serverInsertedCallbacks.push(handler)}>\n {children}\n </ServerInsertedHTMLContext.Provider>\n )\n\n const elementsHTML = await renderToString(elementTree)\n\n const serverInsertedNodes = serverInsertedCallbacks.map((callback, index) => (\n <Fragment key={'__next_server_inserted__' + index}>{callback()}</Fragment>\n ))\n\n const headHTML = await renderToString(serverInsertedNodes)\n\n const dom = new JSDOM(\n `<!DOCTYPE html><head>${headHTML}</head><body><div id=\"root\">${elementsHTML}</div></body></div>`,\n )\n\n return dom.window.document\n}\n\nexport async function testPageControlPropRendering<D extends ControlDefinition>(\n controlDefinition: D,\n {\n toData,\n value,\n locale,\n cacheData,\n expectedRenders,\n registerComponents,\n action,\n rootElements = [],\n }: {\n toData?: (value: ValueType<D>) => DataType<D>\n value: ValueType<D> | undefined\n locale?: string | null\n cacheData?: Partial<CacheData>\n expectedRenders?: number\n registerComponents?: (runtime: ReactRuntime) => void\n action?: (element: HTMLElement) => Promise<void>\n rootElements?: ElementData[]\n },\n) {\n // Arrange\n const controlData: DataType<D> | Data =\n value !== undefined ? (toData ? toData(value) : controlDefinition.toData(value)) : undefined\n\n const testComponentMeta = {\n type: 'TestComponent',\n label: 'Test Component',\n }\n\n const testId = 'test-id'\n const renderCountTestId = 'render-count-test-id'\n const elementData: ElementData = {\n key: ELEMENT_ID,\n type: testComponentMeta.type,\n props: {\n propKey: controlData,\n },\n }\n\n const runtime = new ReactRuntime()\n registerComponents?.(runtime)\n\n // Act\n runtime.registerComponent(\n forwardRef<HTMLDivElement, { propKey?: any }>(({ propKey }, ref) => {\n const renderCount = useRef(0)\n ++renderCount.current\n\n return (\n <div ref={ref}>\n <div data-testid={renderCountTestId}>{renderCount.current}</div>\n <div data-testid={testId}>{renderProp(propKey)}</div>\n </div>\n )\n }),\n {\n ...testComponentMeta,\n props: {\n propKey: controlDefinition as any,\n },\n },\n )\n\n const testElementTree = (component: ReactNode) => (\n <Testing.ReactProvider runtime={runtime}>{component}</Testing.ReactProvider>\n )\n\n if (!isServer()) {\n const rootElementData: ElementData = Testing.createRootComponent(\n [elementData, ...rootElements],\n ROOT_ID,\n )\n\n const snapshot = Testing.createMakeswiftPageSnapshot(rootElementData, { locale, cacheData })\n\n // Assert\n await act(async () => render(testElementTree(<Page snapshot={snapshot} />)))\n\n if (action) {\n await act(async () => {\n await action(screen.getByTestId(testId))\n })\n }\n\n expect(snapshot).toMatchSnapshot('snapshot')\n expect(propSnapshot(screen.getByTestId(testId))).toMatchSnapshot('resolvedValue')\n\n if (expectedRenders != null) {\n expect(Number(screen.getByTestId(renderCountTestId).textContent)).toBe(expectedRenders)\n }\n } else {\n // test server-side rendering using a component snapshot\n console.assert(action == null)\n console.assert(rootElements.length === 0)\n\n const snapshot = Testing.createMakeswiftComponentSnapshot(elementData, { locale, cacheData })\n const elementTree = testElementTree(\n <MakeswiftComponent snapshot={snapshot} {...testComponentMeta} />,\n )\n\n const document = await serverSideRender(elementTree)\n const getByTestId = (id: string): HTMLElement | null =>\n document.querySelector(`[data-testid=\"${id}\"]`)\n\n expect(propSnapshot(getByTestId(testId))).toMatchSnapshot('resolvedValue')\n expect([...document.querySelectorAll('style')].map(n => n.textContent)).toMatchSnapshot(\n 'component styles',\n )\n expect(Number(getByTestId(renderCountTestId)?.textContent)).toBe(1)\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/next/components/tests/controls/page-control-prop-rendering.tsx"],"sourcesContent":["import { type ReactNode, Fragment, forwardRef, useRef, isValidElement } from 'react'\nimport { renderToReadableStream } from 'react-dom/server'\nimport { JSDOM } from 'jsdom'\nimport { act } from 'react-dom/test-utils'\nimport { render, screen } from '@testing-library/react'\nimport '@testing-library/jest-dom'\nimport { ServerInsertedHTMLContext } from 'next/navigation'\n\nimport { type Data, type ValueType, type DataType, ControlDefinition } from '@makeswift/controls'\n\nimport { type CacheData } from '../../../../api/react'\nimport { ElementData } from '../../../../state/react-page'\nimport { ReactRuntime } from '../../../../react'\nimport { MakeswiftComponent } from '../../MakeswiftComponent'\nimport { Page } from '../../page'\nimport { isServer } from '../../../../utils/is-server'\nimport * as Testing from '../../../../runtimes/react/testing'\n\nconst ROOT_ID = '00000000-0000-0000-0000-000000000000'\nconst ELEMENT_ID = '11111111-1111-1111-1111-111111111111'\n\nconst renderProp = (prop: any) =>\n prop === undefined ? 'undefined' : isValidElement(prop) ? prop : JSON.stringify(prop)\n\nconst propSnapshot = (prop: HTMLElement | null) =>\n prop?.childElementCount ? prop.childNodes : parseStringifiedProp(prop?.textContent ?? '')\n\nconst parseStringifiedProp = (prop: string) => (prop === 'undefined' ? undefined : JSON.parse(prop))\n\nasync function streamToString(stream: ReadableStream) {\n const reader = stream.getReader()\n const decoder = new TextDecoder()\n\n let result = ''\n\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n result += decoder.decode(value, { stream: true })\n }\n\n return result\n}\n\nasync function renderToString(element: ReactNode) {\n return await streamToString(await renderToReadableStream(element))\n}\n\nasync function serverSideRender(children: ReactNode) {\n // wrap the children in a context provider to capture server-inserted HTML, see\n // https://github.com/vercel/next.js/blob/canary/packages/next/src/server/app-render/server-inserted-html.tsx\n const serverInsertedCallbacks: (() => React.ReactNode)[] = []\n\n const elementTree = (\n <ServerInsertedHTMLContext.Provider value={handler => serverInsertedCallbacks.push(handler)}>\n {children}\n </ServerInsertedHTMLContext.Provider>\n )\n\n const elementsHTML = await renderToString(elementTree)\n\n const serverInsertedNodes = serverInsertedCallbacks.map((callback, index) => (\n <Fragment key={'__next_server_inserted__' + index}>{callback()}</Fragment>\n ))\n\n const headHTML = await renderToString(serverInsertedNodes)\n\n const dom = new JSDOM(\n `<!DOCTYPE html><head>${headHTML}</head><body><div id=\"root\">${elementsHTML}</div></body></div>`,\n {\n runScripts: 'dangerously',\n },\n )\n\n return dom.window.document\n}\n\nexport async function testPageControlPropRendering<D extends ControlDefinition>(\n controlDefinition: D,\n {\n toData,\n value,\n locale,\n cacheData,\n expectedRenders,\n registerComponents,\n action,\n rootElements = [],\n }: {\n toData?: (value: ValueType<D>) => DataType<D>\n value: ValueType<D> | undefined\n locale?: string | null\n cacheData?: Partial<CacheData>\n expectedRenders?: number\n registerComponents?: (runtime: ReactRuntime) => void\n action?: (element: HTMLElement) => Promise<void>\n rootElements?: ElementData[]\n },\n) {\n // Arrange\n const controlData: DataType<D> | Data =\n value !== undefined ? (toData ? toData(value) : controlDefinition.toData(value)) : undefined\n\n const testComponentMeta = {\n type: 'TestComponent',\n label: 'Test Component',\n }\n\n const testId = 'test-id'\n const renderCountTestId = 'render-count-test-id'\n const elementData: ElementData = {\n key: ELEMENT_ID,\n type: testComponentMeta.type,\n props: {\n propKey: controlData,\n },\n }\n\n const runtime = new ReactRuntime()\n registerComponents?.(runtime)\n\n // Act\n runtime.registerComponent(\n forwardRef<HTMLDivElement, { propKey?: any }>(({ propKey }, ref) => {\n const renderCount = useRef(0)\n ++renderCount.current\n\n return (\n <div ref={ref}>\n <div data-testid={renderCountTestId}>{renderCount.current}</div>\n <div data-testid={testId}>{renderProp(propKey)}</div>\n </div>\n )\n }),\n {\n ...testComponentMeta,\n props: {\n propKey: controlDefinition as any,\n },\n },\n )\n\n const testElementTree = (component: ReactNode) => (\n <Testing.ReactProvider runtime={runtime}>{component}</Testing.ReactProvider>\n )\n\n if (!isServer()) {\n const rootElementData: ElementData = Testing.createRootComponent(\n [elementData, ...rootElements],\n ROOT_ID,\n )\n\n const snapshot = Testing.createMakeswiftPageSnapshot(rootElementData, { locale, cacheData })\n\n // Assert\n await act(async () => render(testElementTree(<Page snapshot={snapshot} />)))\n\n if (action) {\n await act(async () => {\n await action(screen.getByTestId(testId))\n })\n }\n\n expect(snapshot).toMatchSnapshot('snapshot')\n expect(propSnapshot(screen.getByTestId(testId))).toMatchSnapshot('resolvedValue')\n\n if (expectedRenders != null) {\n expect(Number(screen.getByTestId(renderCountTestId).textContent)).toBe(expectedRenders)\n }\n } else {\n // test server-side rendering using a component snapshot\n console.assert(action == null)\n console.assert(rootElements.length === 0)\n\n const snapshot = Testing.createMakeswiftComponentSnapshot(elementData, { locale, cacheData })\n const elementTree = testElementTree(\n <MakeswiftComponent snapshot={snapshot} {...testComponentMeta} />,\n )\n\n const document = await serverSideRender(elementTree)\n const getByTestId = (id: string): HTMLElement | null =>\n document.querySelector(`[data-testid=\"${id}\"]`)\n\n expect(propSnapshot(getByTestId(testId))).toMatchSnapshot('resolvedValue')\n expect([...document.querySelectorAll('style')].map(n => n.textContent)).toMatchSnapshot(\n 'component styles',\n )\n expect(Number(getByTestId(renderCountTestId)?.textContent)).toBe(1)\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,56 @@
1
+ import { APIResourceType } from "../../../../../api";
2
+ import * as Fixture from "../fixtures/rich-text-v2";
3
+ const swatchId = "U3dhdGNoOmJkODYxMWM5LTNiZjItNDM3MS1iMmU4LTBmMmNlMDZjNDE1OA==";
4
+ const swatch = {
5
+ __typename: APIResourceType.Swatch,
6
+ id: swatchId,
7
+ hue: 238,
8
+ saturation: 87,
9
+ lightness: 49
10
+ };
11
+ const typographyId = "VHlwb2dyYXBoeTowNGI4OTZlMC0wZWEyLTRkMTMtYmU3ZS0xYmY1M2VmMjBiZjc=";
12
+ const typography = {
13
+ __typename: APIResourceType.Typography,
14
+ id: typographyId,
15
+ name: "Body",
16
+ style: [
17
+ {
18
+ deviceId: "desktop",
19
+ value: {
20
+ fontFamily: "Lato",
21
+ fontSize: { value: 16, unit: "px" },
22
+ color: null,
23
+ lineHeight: null,
24
+ letterSpacing: null,
25
+ fontWeight: null,
26
+ textAlign: null,
27
+ uppercase: null,
28
+ underline: null,
29
+ strikethrough: null,
30
+ italic: null
31
+ }
32
+ }
33
+ ]
34
+ };
35
+ const value = Fixture.data;
36
+ const cacheData = () => ({
37
+ apiResources: {
38
+ Swatch: [
39
+ {
40
+ id: swatchId,
41
+ value: swatch
42
+ }
43
+ ],
44
+ Typography: [
45
+ {
46
+ id: typographyId,
47
+ value: typography
48
+ }
49
+ ]
50
+ }
51
+ });
52
+ export {
53
+ cacheData,
54
+ value
55
+ };
56
+ //# sourceMappingURL=fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/next/components/tests/controls/rich-text-v2-control/fixtures.tsx"],"sourcesContent":["import { APIResourceType, type Swatch, type Typography } from '../../../../../api'\n\nimport * as Fixture from '../fixtures/rich-text-v2'\nimport { type CacheData } from '../../../../../api/react'\n\nconst swatchId = 'U3dhdGNoOmJkODYxMWM5LTNiZjItNDM3MS1iMmU4LTBmMmNlMDZjNDE1OA=='\nconst swatch: Swatch = {\n __typename: APIResourceType.Swatch,\n id: swatchId,\n hue: 238,\n saturation: 87,\n lightness: 49,\n}\n\nconst typographyId = 'VHlwb2dyYXBoeTowNGI4OTZlMC0wZWEyLTRkMTMtYmU3ZS0xYmY1M2VmMjBiZjc='\nconst typography: Typography = {\n __typename: APIResourceType.Typography,\n id: typographyId,\n name: 'Body',\n style: [\n {\n deviceId: 'desktop',\n value: {\n fontFamily: 'Lato',\n fontSize: { value: 16, unit: 'px' },\n color: null,\n lineHeight: null,\n letterSpacing: null,\n fontWeight: null,\n textAlign: null,\n uppercase: null,\n underline: null,\n strikethrough: null,\n italic: null,\n },\n },\n ],\n}\n\nexport const value = Fixture.data\nexport const cacheData = (): Partial<CacheData> => ({\n apiResources: {\n Swatch: [\n {\n id: swatchId,\n value: swatch,\n },\n ],\n Typography: [\n {\n id: typographyId,\n value: typography,\n },\n ],\n },\n})\n"],"mappings":"AAAA,SAAS,uBAAqD;AAE9D,YAAY,aAAa;AAGzB,MAAM,WAAW;AACjB,MAAM,SAAiB;AAAA,EACrB,YAAY,gBAAgB;AAAA,EAC5B,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,WAAW;AACb;AAEA,MAAM,eAAe;AACrB,MAAM,aAAyB;AAAA,EAC7B,YAAY,gBAAgB;AAAA,EAC5B,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,OAAO;AAAA,IACL;AAAA,MACE,UAAU;AAAA,MACV,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,UAAU,EAAE,OAAO,IAAI,MAAM,KAAK;AAAA,QAClC,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WAAW;AAAA,QACX,eAAe;AAAA,QACf,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,QAAQ,QAAQ;AACtB,MAAM,YAAY,OAA2B;AAAA,EAClD,cAAc;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -8,7 +8,6 @@ import NextDocument, {
8
8
  Main,
9
9
  NextScript
10
10
  } from "next/document";
11
- import { PreviewModeScript } from "./preview-mode";
12
11
  class Document extends NextDocument {
13
12
  static async getInitialProps(ctx) {
14
13
  const initialProps = await NextDocument.getInitialProps(ctx);
@@ -23,9 +22,8 @@ class Document extends NextDocument {
23
22
  };
24
23
  }
25
24
  render() {
26
- const { isPreview } = this.props.__NEXT_DATA__;
27
25
  return /* @__PURE__ */ jsxs(Html, { children: [
28
- /* @__PURE__ */ jsx(Head, { children: /* @__PURE__ */ jsx(PreviewModeScript, { isPreview, appOrigin: this.props.appOrigin }) }),
26
+ /* @__PURE__ */ jsx(Head, {}),
29
27
  /* @__PURE__ */ jsxs("body", { children: [
30
28
  /* @__PURE__ */ jsx(Main, {}),
31
29
  /* @__PURE__ */ jsx(NextScript, {})
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/document.tsx"],"sourcesContent":["'use client'\n\nimport { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { PreviewModeScript } from './preview-mode'\n\ntype DocumentProps = { appOrigin?: string }\n\nexport class Document extends NextDocument<DocumentProps> {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n <style data-emotion={`css ${ids.join(' ')}`} dangerouslySetInnerHTML={{ __html: css }} />\n </>\n ),\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} appOrigin={this.props.appOrigin} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n"],"mappings":";AA0BQ,mBAEE,KAFF;AAxBR,SAAS,aAAa;AACtB,OAAO,yBAAyB;AAChC,OAAO;AAAA,EAGL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,yBAAyB;AAI3B,MAAM,iBAAiB,aAA4B;AAAA,EACxD,aAAa,gBAAgB,KAAqD;AAChF,UAAM,eAAe,MAAM,aAAa,gBAAgB,GAAG;AAE3D,UAAM,EAAE,gBAAgB,IAAI,oBAAoB,KAAK;AACrD,UAAM,EAAE,KAAK,IAAI,IAAI,gBAAgB,aAAa,IAAI;AAEtD,WAAO;AAAA,MACL,GAAG;AAAA,MACH,QACE,iCACG;AAAA,qBAAa;AAAA,QACd,oBAAC,WAAM,gBAAc,OAAO,IAAI,KAAK,GAAG,CAAC,IAAI,yBAAyB,EAAE,QAAQ,IAAI,GAAG;AAAA,SACzF;AAAA,IAEJ;AAAA,EACF;AAAA,EAEA,SAAS;AACP,UAAM,EAAE,UAAU,IAAI,KAAK,MAAM;AAEjC,WACE,qBAAC,QACC;AAAA,0BAAC,QACC,8BAAC,qBAAkB,WAAsB,WAAW,KAAK,MAAM,WAAW,GAC5E;AAAA,MACA,qBAAC,UACC;AAAA,4BAAC,QAAK;AAAA,QACN,oBAAC,cAAW;AAAA,SACd;AAAA,OACF;AAAA,EAEJ;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/document.tsx"],"sourcesContent":["'use client'\n\nimport { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n <style data-emotion={`css ${ids.join(' ')}`} dangerouslySetInnerHTML={{ __html: css }} />\n </>\n ),\n }\n }\n\n render() {\n return (\n <Html>\n <Head />\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n"],"mappings":";AAuBQ,mBAEE,KAFF;AArBR,SAAS,aAAa;AACtB,OAAO,yBAAyB;AAChC,OAAO;AAAA,EAGL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,iBAAiB,aAAa;AAAA,EACzC,aAAa,gBAAgB,KAAqD;AAChF,UAAM,eAAe,MAAM,aAAa,gBAAgB,GAAG;AAE3D,UAAM,EAAE,gBAAgB,IAAI,oBAAoB,KAAK;AACrD,UAAM,EAAE,KAAK,IAAI,IAAI,gBAAgB,aAAa,IAAI;AAEtD,WAAO;AAAA,MACL,GAAG;AAAA,MACH,QACE,iCACG;AAAA,qBAAa;AAAA,QACd,oBAAC,WAAM,gBAAc,OAAO,IAAI,KAAK,GAAG,CAAC,IAAI,yBAAyB,EAAE,QAAQ,IAAI,GAAG;AAAA,SACzF;AAAA,IAEJ;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WACE,qBAAC,QACC;AAAA,0BAAC,QAAK;AAAA,MACN,qBAAC,UACC;AAAA,4BAAC,QAAK;AAAA,QACN,oBAAC,cAAW;AAAA,SACd;AAAA,OACF;AAAA,EAEJ;AACF;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { cookies, draftMode } from "next/headers";
3
- import { makeswiftSiteVersionSchema, MakeswiftSiteVersion } from "../preview-mode";
3
+ import { MakeswiftSiteVersion, makeswiftSiteVersionSchema } from "../../api/site-version";
4
4
  const MAKESWIFT_DRAFT_MODE_DATA_COOKIE = "x-makeswift-draft-data";
5
5
  const makeswiftDraftDataSchema = z.object({
6
6
  makeswift: z.literal(true),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/draft-mode/index.tsx"],"sourcesContent":["import { z } from 'zod'\nimport { cookies, draftMode } from 'next/headers'\nimport { makeswiftSiteVersionSchema, MakeswiftSiteVersion } from '../preview-mode'\n\nexport const MAKESWIFT_DRAFT_MODE_DATA_COOKIE = 'x-makeswift-draft-data'\n\nexport const makeswiftDraftDataSchema = z.object({\n makeswift: z.literal(true),\n siteVersion: makeswiftSiteVersionSchema,\n})\n\nexport type MakeswiftDraftData = z.infer<typeof makeswiftDraftDataSchema>\n\nasync function getDraftData(): Promise<MakeswiftDraftData | null> {\n const { isEnabled: isDraftModeEnabled } = await draftMode()\n if (!isDraftModeEnabled) return null\n\n const cookie = (await cookies()).get(MAKESWIFT_DRAFT_MODE_DATA_COOKIE)\n if (cookie == null) return null\n\n const draftData = JSON.parse(cookie.value)\n const result = makeswiftDraftDataSchema.safeParse(draftData)\n\n if (result.success) return result.data\n return null\n}\n\nexport async function getSiteVersion() {\n return (await getDraftData())?.siteVersion ?? MakeswiftSiteVersion.Live\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,SAAS,SAAS,iBAAiB;AACnC,SAAS,4BAA4B,4BAA4B;AAE1D,MAAM,mCAAmC;AAEzC,MAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,WAAW,EAAE,QAAQ,IAAI;AAAA,EACzB,aAAa;AACf,CAAC;AAID,eAAe,eAAmD;AAChE,QAAM,EAAE,WAAW,mBAAmB,IAAI,MAAM,UAAU;AAC1D,MAAI,CAAC;AAAoB,WAAO;AAEhC,QAAM,UAAU,MAAM,QAAQ,GAAG,IAAI,gCAAgC;AACrE,MAAI,UAAU;AAAM,WAAO;AAE3B,QAAM,YAAY,KAAK,MAAM,OAAO,KAAK;AACzC,QAAM,SAAS,yBAAyB,UAAU,SAAS;AAE3D,MAAI,OAAO;AAAS,WAAO,OAAO;AAClC,SAAO;AACT;AAEA,eAAsB,iBAAiB;AACrC,UAAQ,MAAM,aAAa,IAAI,eAAe,qBAAqB;AACrE;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/draft-mode/index.tsx"],"sourcesContent":["import { z } from 'zod'\nimport { cookies, draftMode } from 'next/headers'\nimport { MakeswiftSiteVersion, makeswiftSiteVersionSchema } from '../../api/site-version'\n\nexport const MAKESWIFT_DRAFT_MODE_DATA_COOKIE = 'x-makeswift-draft-data'\n\nexport const makeswiftDraftDataSchema = z.object({\n makeswift: z.literal(true),\n siteVersion: makeswiftSiteVersionSchema,\n})\n\nexport type MakeswiftDraftData = z.infer<typeof makeswiftDraftDataSchema>\n\nasync function getDraftData(): Promise<MakeswiftDraftData | null> {\n const { isEnabled: isDraftModeEnabled } = await draftMode()\n if (!isDraftModeEnabled) return null\n\n const cookie = (await cookies()).get(MAKESWIFT_DRAFT_MODE_DATA_COOKIE)\n if (cookie == null) return null\n\n const draftData = JSON.parse(cookie.value)\n const result = makeswiftDraftDataSchema.safeParse(draftData)\n\n if (result.success) return result.data\n return null\n}\n\nexport async function getSiteVersion() {\n return (await getDraftData())?.siteVersion ?? MakeswiftSiteVersion.Live\n}\n"],"mappings":"AAAA,SAAS,SAAS;AAClB,SAAS,SAAS,iBAAiB;AACnC,SAAS,sBAAsB,kCAAkC;AAE1D,MAAM,mCAAmC;AAEzC,MAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,WAAW,EAAE,QAAQ,IAAI;AAAA,EACzB,aAAa;AACf,CAAC;AAID,eAAe,eAAmD;AAChE,QAAM,EAAE,WAAW,mBAAmB,IAAI,MAAM,UAAU;AAC1D,MAAI,CAAC;AAAoB,WAAO;AAEhC,QAAM,UAAU,MAAM,QAAQ,GAAG,IAAI,gCAAgC;AACrE,MAAI,UAAU;AAAM,WAAO;AAE3B,QAAM,YAAY,KAAK,MAAM,OAAO,KAAK;AACzC,QAAM,SAAS,yBAAyB,UAAU,SAAS;AAE3D,MAAI,OAAO;AAAS,WAAO,OAAO;AAClC,SAAO;AACT;AAEA,eAAsB,iBAAiB;AACrC,UAAQ,MAAM,aAAa,IAAI,eAAe,qBAAqB;AACrE;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/hooks/use-is-pages-router.ts"],"sourcesContent":["import { useRouter } from 'next/router'\n\nexport function useIsPagesRouter() {\n try {\n useRouter()\n return true\n } catch (error) {\n return false\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAEnB,SAAS,mBAAmB;AACjC,MAAI;AACF,cAAU;AACV,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/hooks/use-is-pages-router.ts"],"sourcesContent":["import { useRouter } from 'next/router'\n\nexport function useIsPagesRouter() {\n // switch to `next/compat/router` once we drop support for Next.js 14:\n // https://nextjs.org/docs/pages/api-reference/functions/use-router#the-nextcompatrouter-export\n try {\n useRouter()\n return true\n } catch (error) {\n return false\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAEnB,SAAS,mBAAmB;AAGjC,MAAI;AACF,cAAU;AACV,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -2,14 +2,12 @@ import { Page } from "./components/page";
2
2
  import { MakeswiftComponent } from "./components/MakeswiftComponent";
3
3
  import { Slot } from "./components/Slot";
4
4
  import { Makeswift } from "./client";
5
- import { PreviewModeScript } from "./preview-mode";
6
5
  import { RootStyleRegistry } from "./root-style-registry";
7
6
  import { ReactRuntimeProvider } from "../runtimes/react/";
8
7
  export {
9
8
  Makeswift,
10
9
  MakeswiftComponent,
11
10
  Page,
12
- PreviewModeScript,
13
11
  ReactRuntimeProvider,
14
12
  RootStyleRegistry,
15
13
  Slot
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/index.tsx"],"sourcesContent":["export type { PageProps } from './components/page'\nexport { Page } from './components/page'\nexport { MakeswiftComponent } from './components/MakeswiftComponent'\nexport { Slot } from './components/Slot'\nexport type { MakeswiftPage, MakeswiftPageDocument, MakeswiftPageSnapshot, Sitemap } from './client'\nexport { Makeswift } from './client'\nexport type { MakeswiftPreviewData } from './preview-mode'\nexport { PreviewModeScript } from './preview-mode'\nexport { RootStyleRegistry } from './root-style-registry'\nexport { ReactRuntimeProvider } from '../runtimes/react/'\n"],"mappings":"AACA,SAAS,YAAY;AACrB,SAAS,0BAA0B;AACnC,SAAS,YAAY;AAErB,SAAS,iBAAiB;AAE1B,SAAS,yBAAyB;AAClC,SAAS,yBAAyB;AAClC,SAAS,4BAA4B;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/index.tsx"],"sourcesContent":["export type { PageProps } from './components/page'\nexport { Page } from './components/page'\nexport { MakeswiftComponent } from './components/MakeswiftComponent'\nexport { Slot } from './components/Slot'\nexport type { MakeswiftPage, MakeswiftPageDocument, MakeswiftPageSnapshot, Sitemap } from './client'\nexport { Makeswift } from './client'\nexport type { MakeswiftPreviewData } from './preview-mode'\nexport { RootStyleRegistry } from './root-style-registry'\nexport { ReactRuntimeProvider } from '../runtimes/react/'\n"],"mappings":"AACA,SAAS,YAAY;AACrB,SAAS,0BAA0B;AACnC,SAAS,YAAY;AAErB,SAAS,iBAAiB;AAE1B,SAAS,yBAAyB;AAClC,SAAS,4BAA4B;","names":[]}
@@ -0,0 +1,5 @@
1
+ import { isDraftModeRequest } from "./request-utils";
2
+ export {
3
+ isDraftModeRequest as unstable_isDraftModeRequest
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/next/middleware/index.ts"],"sourcesContent":["export { isDraftModeRequest as unstable_isDraftModeRequest } from './request-utils'\n"],"mappings":"AAAA,SAA+B,0BAAmC;","names":[]}
@@ -0,0 +1,28 @@
1
+ import {
2
+ MAKESWIFT_DRAFT_DATA_COOKIE,
3
+ PRERENDER_BYPASS_COOKIE
4
+ } from "../api-handler/handlers/utils/draft";
5
+ const HeaderNames = {
6
+ DraftMode: "X-Makeswift-Draft-Mode",
7
+ PreviewMode: "X-Makeswift-Preview-Mode"
8
+ };
9
+ const SearchParams = {
10
+ DraftMode: "x-makeswift-draft-mode",
11
+ PreviewMode: "x-makeswift-preview-mode"
12
+ };
13
+ function getDraftModeSecret(request) {
14
+ return request.nextUrl.searchParams.get(SearchParams.DraftMode) ?? request.headers.get(HeaderNames.DraftMode) ?? null;
15
+ }
16
+ function isDraftModeRequest(request) {
17
+ const hasSecret = getDraftModeSecret(request) != null;
18
+ if (hasSecret)
19
+ return true;
20
+ const hasDraftCookies = request.cookies.has(PRERENDER_BYPASS_COOKIE) && request.cookies.has(MAKESWIFT_DRAFT_DATA_COOKIE);
21
+ if (hasDraftCookies)
22
+ return true;
23
+ return false;
24
+ }
25
+ export {
26
+ isDraftModeRequest
27
+ };
28
+ //# sourceMappingURL=request-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/next/middleware/request-utils.ts"],"sourcesContent":["import { NextRequest } from 'next/server'\nimport {\n MAKESWIFT_DRAFT_DATA_COOKIE,\n PRERENDER_BYPASS_COOKIE,\n} from '../api-handler/handlers/utils/draft'\n\nconst HeaderNames = {\n DraftMode: 'X-Makeswift-Draft-Mode',\n PreviewMode: 'X-Makeswift-Preview-Mode',\n} as const\n\nconst SearchParams = {\n DraftMode: 'x-makeswift-draft-mode',\n PreviewMode: 'x-makeswift-preview-mode',\n} as const\n\nfunction getDraftModeSecret(request: NextRequest): string | null {\n return (\n request.nextUrl.searchParams.get(SearchParams.DraftMode) ??\n request.headers.get(HeaderNames.DraftMode) ??\n null\n )\n}\n\nexport function isDraftModeRequest(request: NextRequest): boolean {\n const hasSecret = getDraftModeSecret(request) != null\n if (hasSecret) return true\n\n const hasDraftCookies =\n request.cookies.has(PRERENDER_BYPASS_COOKIE) && request.cookies.has(MAKESWIFT_DRAFT_DATA_COOKIE)\n\n if (hasDraftCookies) return true\n\n return false\n}\n"],"mappings":"AACA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,MAAM,cAAc;AAAA,EAClB,WAAW;AAAA,EACX,aAAa;AACf;AAEA,MAAM,eAAe;AAAA,EACnB,WAAW;AAAA,EACX,aAAa;AACf;AAEA,SAAS,mBAAmB,SAAqC;AAC/D,SACE,QAAQ,QAAQ,aAAa,IAAI,aAAa,SAAS,KACvD,QAAQ,QAAQ,IAAI,YAAY,SAAS,KACzC;AAEJ;AAEO,SAAS,mBAAmB,SAA+B;AAChE,QAAM,YAAY,mBAAmB,OAAO,KAAK;AACjD,MAAI;AAAW,WAAO;AAEtB,QAAM,kBACJ,QAAQ,QAAQ,IAAI,uBAAuB,KAAK,QAAQ,QAAQ,IAAI,2BAA2B;AAEjG,MAAI;AAAiB,WAAO;AAE5B,SAAO;AACT;","names":[]}
@@ -1,8 +1,5 @@
1
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
1
  import { z } from "zod";
3
- import { ActionTypes } from "../react";
4
- const makeswiftSiteVersionSchema = z.enum(["Live", "Working"]);
5
- const MakeswiftSiteVersion = makeswiftSiteVersionSchema.Enum;
2
+ import { makeswiftSiteVersionSchema } from "../api/site-version";
6
3
  const makeswiftPreviewDataSchema = z.object({
7
4
  makeswift: z.literal(true),
8
5
  siteVersion: makeswiftSiteVersionSchema
@@ -13,107 +10,7 @@ function getMakeswiftSiteVersion(previewData) {
13
10
  return result.data.siteVersion;
14
11
  return null;
15
12
  }
16
- function PreviewModeScript({
17
- isPreview = false,
18
- appOrigin = "https://app.makeswift.com"
19
- }) {
20
- const previewModeScript = `
21
- const isPreview = ${isPreview}
22
- const appOrigin = '${appOrigin.replace("'", "\\'")}'
23
- const searchParamName = 'x-makeswift-preview-mode'
24
- const headerName = 'X-Makeswift-Preview-Mode'
25
- const originalUrl = new URL(window.location.href)
26
-
27
- if (window.parent !== window) {
28
- window.addEventListener('message', event => {
29
- if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {
30
- const { secret } = event.data
31
-
32
- if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {
33
- const url = new URL(originalUrl)
34
-
35
- url.searchParams.set(searchParamName, secret)
36
-
37
- window.location.replace(url)
38
- } else {
39
- const originalFetch = window.fetch
40
-
41
- window.fetch = function patchedFetch(resource, options) {
42
- const request = new Request(resource, options)
43
-
44
- if (new URL(request.url).origin !== window.location.origin) {
45
- return originalFetch.call(this, resource, options)
46
- }
47
-
48
- const newHeaders = new Headers(request.headers)
49
- newHeaders.set(headerName, secret)
50
-
51
- return originalFetch.call(
52
- this,
53
- new Request(request, { headers: newHeaders })
54
- )
55
- }
56
- }
57
- }
58
- })
59
-
60
- window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)
61
- }
62
-
63
- if (originalUrl.searchParams.has(searchParamName)) {
64
- const url = new URL(originalUrl)
65
-
66
- url.searchParams.delete(searchParamName)
67
-
68
- window.history.replaceState(null, '', url)
69
- }
70
- `;
71
- const makeswiftConnectionCheckScript = `
72
- const appOrigin = '${appOrigin.replace("'", "\\'")}'
73
-
74
- if (window.parent !== window) {
75
- window.addEventListener('message', event => {
76
- if (
77
- event.origin === appOrigin &&
78
- event.data.type === '${ActionTypes.MAKESWIFT_CONNECTION_INIT}'
79
- ) {
80
- setInterval(() => {
81
- window.parent.postMessage({
82
- type: '${ActionTypes.MAKESWIFT_CONNECTION_CHECK}',
83
- payload: {
84
- currentUrl: window.location.href
85
- }
86
- }, appOrigin)
87
- }, 20)
88
- }
89
- })
90
-
91
- window.parent.postMessage({ type: '${ActionTypes.MAKESWIFT_CONNECTION_INIT}' }, appOrigin)
92
- }
93
- `;
94
- return /* @__PURE__ */ jsxs(Fragment, { children: [
95
- /* @__PURE__ */ jsx(
96
- "script",
97
- {
98
- id: "makeswift-preview-mode",
99
- type: "module",
100
- dangerouslySetInnerHTML: { __html: previewModeScript }
101
- }
102
- ),
103
- /* @__PURE__ */ jsx(
104
- "script",
105
- {
106
- id: "makeswift-connection-check",
107
- type: "module",
108
- dangerouslySetInnerHTML: { __html: makeswiftConnectionCheckScript }
109
- }
110
- )
111
- ] });
112
- }
113
13
  export {
114
- MakeswiftSiteVersion,
115
- PreviewModeScript,
116
- getMakeswiftSiteVersion,
117
- makeswiftSiteVersionSchema
14
+ getMakeswiftSiteVersion
118
15
  };
119
16
  //# sourceMappingURL=preview-mode.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/preview-mode.tsx"],"sourcesContent":["import { PreviewData } from 'next'\nimport { z } from 'zod'\nimport { ActionTypes } from '../react'\n\nexport const makeswiftSiteVersionSchema = z.enum(['Live', 'Working'])\nexport const MakeswiftSiteVersion = makeswiftSiteVersionSchema.Enum\nexport type MakeswiftSiteVersion = z.infer<typeof makeswiftSiteVersionSchema>\n\nconst makeswiftPreviewDataSchema = z.object({\n makeswift: z.literal(true),\n siteVersion: makeswiftSiteVersionSchema,\n})\nexport type MakeswiftPreviewData = z.infer<typeof makeswiftPreviewDataSchema>\n\nexport function getMakeswiftSiteVersion(previewData: PreviewData): MakeswiftSiteVersion | null {\n const result = makeswiftPreviewDataSchema.safeParse(previewData)\n\n if (result.success) return result.data.siteVersion\n\n return null\n}\n\ntype Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const previewModeScript = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(resource, options) {\n const request = new Request(resource, options)\n\n if (new URL(request.url).origin !== window.location.origin) {\n return originalFetch.call(this, resource, options)\n }\n \n const newHeaders = new Headers(request.headers)\n newHeaders.set(headerName, secret)\n\n return originalFetch.call(\n this,\n new Request(request, { headers: newHeaders })\n )\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n const makeswiftConnectionCheckScript = `\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (\n event.origin === appOrigin && \n event.data.type === '${ActionTypes.MAKESWIFT_CONNECTION_INIT}'\n ) {\n setInterval(() => {\n window.parent.postMessage({ \n type: '${ActionTypes.MAKESWIFT_CONNECTION_CHECK}',\n payload: { \n currentUrl: window.location.href \n }\n }, appOrigin)\n }, 20)\n }\n })\n\n window.parent.postMessage({ type: '${ActionTypes.MAKESWIFT_CONNECTION_INIT}' }, appOrigin)\n}\n`\n\n return (\n <>\n <script\n id=\"makeswift-preview-mode\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: previewModeScript }}\n />\n <script\n id=\"makeswift-connection-check\"\n type=\"module\"\n dangerouslySetInnerHTML={{ __html: makeswiftConnectionCheckScript }}\n />\n </>\n )\n}\n"],"mappings":"AA4GI,mBACE,KADF;AA3GJ,SAAS,SAAS;AAClB,SAAS,mBAAmB;AAErB,MAAM,6BAA6B,EAAE,KAAK,CAAC,QAAQ,SAAS,CAAC;AAC7D,MAAM,uBAAuB,2BAA2B;AAG/D,MAAM,6BAA6B,EAAE,OAAO;AAAA,EAC1C,WAAW,EAAE,QAAQ,IAAI;AAAA,EACzB,aAAa;AACf,CAAC;AAGM,SAAS,wBAAwB,aAAuD;AAC7F,QAAM,SAAS,2BAA2B,UAAU,WAAW;AAE/D,MAAI,OAAO;AAAS,WAAO,OAAO,KAAK;AAEvC,SAAO;AACT;AAOO,SAAS,kBAAkB;AAAA,EAChC,YAAY;AAAA,EACZ,YAAY;AACd,GAAU;AACR,QAAM,oBAAoB;AAAA,oBACR,SAAS;AAAA,qBACR,UAAU,QAAQ,KAAK,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkDhD,QAAM,iCAAiC;AAAA,qBACpB,UAAU,QAAQ,KAAK,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAMrB,YAAY,yBAAyB;AAAA;AAAA;AAAA;AAAA,mBAI/C,YAAY,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uCASlB,YAAY,yBAAyB;AAAA;AAAA;AAI1E,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,MAAK;AAAA,QACL,yBAAyB,EAAE,QAAQ,kBAAkB;AAAA;AAAA,IACvD;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,MAAK;AAAA,QACL,yBAAyB,EAAE,QAAQ,+BAA+B;AAAA;AAAA,IACpE;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/preview-mode.tsx"],"sourcesContent":["import { PreviewData } from 'next'\nimport { z } from 'zod'\nimport { type MakeswiftSiteVersion, makeswiftSiteVersionSchema } from '../api/site-version'\n\nconst makeswiftPreviewDataSchema = z.object({\n makeswift: z.literal(true),\n siteVersion: makeswiftSiteVersionSchema,\n})\nexport type MakeswiftPreviewData = z.infer<typeof makeswiftPreviewDataSchema>\n\nexport function getMakeswiftSiteVersion(previewData: PreviewData): MakeswiftSiteVersion | null {\n const result = makeswiftPreviewDataSchema.safeParse(previewData)\n\n if (result.success) return result.data.siteVersion\n\n return null\n}\n"],"mappings":"AACA,SAAS,SAAS;AAClB,SAAoC,kCAAkC;AAEtE,MAAM,6BAA6B,EAAE,OAAO;AAAA,EAC1C,WAAW,EAAE,QAAQ,IAAI;AAAA,EACzB,aAAa;AACf,CAAC;AAGM,SAAS,wBAAwB,aAAuD;AAC7F,QAAM,SAAS,2BAA2B,UAAU,WAAW;AAE/D,MAAI,OAAO;AAAS,WAAO,OAAO,KAAK;AAEvC,SAAO;AACT;","names":[]}
@@ -5,8 +5,8 @@ import { cache } from "@emotion/css";
5
5
  import { useServerInsertedHTML } from "next/navigation";
6
6
  import { createContext, useContext, useState } from "react";
7
7
  const CacheContext = createContext(cache);
8
- const createRootStyleCache = () => {
9
- const cache2 = createCache({ key: "css" });
8
+ const createRootStyleCache = ({ key }) => {
9
+ const cache2 = createCache({ key });
10
10
  cache2.compat = true;
11
11
  const prevInsert = cache2.insert;
12
12
  let inserted = [];
@@ -24,8 +24,11 @@ const createRootStyleCache = () => {
24
24
  };
25
25
  return { cache: cache2, flush };
26
26
  };
27
- function RootStyleRegistry({ children }) {
28
- const [{ cache: cache2, flush }] = useState(() => createRootStyleCache());
27
+ function RootStyleRegistry({
28
+ children,
29
+ cacheKey
30
+ }) {
31
+ const [{ cache: cache2, flush }] = useState(() => createRootStyleCache({ key: cacheKey ?? "mswft" }));
29
32
  useServerInsertedHTML(() => {
30
33
  const names = flush();
31
34
  if (names.length === 0)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/root-style-registry.tsx"],"sourcesContent":["'use client'\n\nimport createCache, { EmotionCache } from '@emotion/cache'\nimport { cache } from '@emotion/css'\nimport { useServerInsertedHTML } from 'next/navigation'\nimport { ReactNode, createContext, useContext, useState } from 'react'\n\nconst CacheContext = createContext(cache)\n\nconst createRootStyleCache = () => {\n const cache = createCache({ key: 'css' })\n cache.compat = true\n\n const prevInsert = cache.insert\n let inserted: string[] = []\n\n cache.insert = (...args) => {\n const serialized = args[1]\n if (cache.inserted[serialized.name] === undefined) {\n inserted.push(serialized.name)\n }\n return prevInsert(...args)\n }\n\n const flush = () => {\n const prevInserted = inserted\n inserted = []\n return prevInserted\n }\n\n return { cache, flush }\n}\n\nexport function RootStyleRegistry({ children }: { children: ReactNode }) {\n const [{ cache, flush }] = useState(() => createRootStyleCache())\n\n useServerInsertedHTML(() => {\n const names = flush()\n if (names.length === 0) return null\n let styles = ''\n for (const name of names) {\n styles += cache.inserted[name]\n }\n\n return (\n <style\n data-emotion={`${cache.key} ${names.join(' ')}`}\n dangerouslySetInnerHTML={{\n __html: styles,\n }}\n />\n )\n })\n\n return <CacheContext.Provider value={cache}>{children}</CacheContext.Provider>\n}\n\nexport function useCache(): EmotionCache {\n return useContext(CacheContext)\n}\n"],"mappings":";AA6CM;AA3CN,OAAO,iBAAmC;AAC1C,SAAS,aAAa;AACtB,SAAS,6BAA6B;AACtC,SAAoB,eAAe,YAAY,gBAAgB;AAE/D,MAAM,eAAe,cAAc,KAAK;AAExC,MAAM,uBAAuB,MAAM;AACjC,QAAMA,SAAQ,YAAY,EAAE,KAAK,MAAM,CAAC;AACxC,EAAAA,OAAM,SAAS;AAEf,QAAM,aAAaA,OAAM;AACzB,MAAI,WAAqB,CAAC;AAE1B,EAAAA,OAAM,SAAS,IAAI,SAAS;AAC1B,UAAM,aAAa,KAAK,CAAC;AACzB,QAAIA,OAAM,SAAS,WAAW,IAAI,MAAM,QAAW;AACjD,eAAS,KAAK,WAAW,IAAI;AAAA,IAC/B;AACA,WAAO,WAAW,GAAG,IAAI;AAAA,EAC3B;AAEA,QAAM,QAAQ,MAAM;AAClB,UAAM,eAAe;AACrB,eAAW,CAAC;AACZ,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,OAAAA,QAAO,MAAM;AACxB;AAEO,SAAS,kBAAkB,EAAE,SAAS,GAA4B;AACvE,QAAM,CAAC,EAAE,OAAAA,QAAO,MAAM,CAAC,IAAI,SAAS,MAAM,qBAAqB,CAAC;AAEhE,wBAAsB,MAAM;AAC1B,UAAM,QAAQ,MAAM;AACpB,QAAI,MAAM,WAAW;AAAG,aAAO;AAC/B,QAAI,SAAS;AACb,eAAW,QAAQ,OAAO;AACxB,gBAAUA,OAAM,SAAS,IAAI;AAAA,IAC/B;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,gBAAc,GAAGA,OAAM,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;AAAA,QAC7C,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA;AAAA,IACF;AAAA,EAEJ,CAAC;AAED,SAAO,oBAAC,aAAa,UAAb,EAAsB,OAAOA,QAAQ,UAAS;AACxD;AAEO,SAAS,WAAyB;AACvC,SAAO,WAAW,YAAY;AAChC;","names":["cache"]}
1
+ {"version":3,"sources":["../../../src/next/root-style-registry.tsx"],"sourcesContent":["'use client'\n\nimport createCache, { EmotionCache } from '@emotion/cache'\nimport { cache } from '@emotion/css'\nimport { useServerInsertedHTML } from 'next/navigation'\nimport { ReactNode, createContext, useContext, useState } from 'react'\n\nconst CacheContext = createContext(cache)\n\nconst createRootStyleCache = ({ key }: { key: string }) => {\n const cache = createCache({ key })\n cache.compat = true\n\n const prevInsert = cache.insert\n let inserted: string[] = []\n\n cache.insert = (...args) => {\n const serialized = args[1]\n if (cache.inserted[serialized.name] === undefined) {\n inserted.push(serialized.name)\n }\n return prevInsert(...args)\n }\n\n const flush = () => {\n const prevInserted = inserted\n inserted = []\n return prevInserted\n }\n\n return { cache, flush }\n}\n\nexport function RootStyleRegistry({\n children,\n cacheKey,\n}: {\n children: ReactNode\n cacheKey?: string\n}) {\n const [{ cache, flush }] = useState(() => createRootStyleCache({ key: cacheKey ?? 'mswft' }))\n\n useServerInsertedHTML(() => {\n const names = flush()\n if (names.length === 0) return null\n let styles = ''\n for (const name of names) {\n styles += cache.inserted[name]\n }\n\n return (\n <style\n data-emotion={`${cache.key} ${names.join(' ')}`}\n dangerouslySetInnerHTML={{\n __html: styles,\n }}\n />\n )\n })\n\n return <CacheContext.Provider value={cache}>{children}</CacheContext.Provider>\n}\n\nexport function useCache(): EmotionCache {\n return useContext(CacheContext)\n}\n"],"mappings":";AAmDM;AAjDN,OAAO,iBAAmC;AAC1C,SAAS,aAAa;AACtB,SAAS,6BAA6B;AACtC,SAAoB,eAAe,YAAY,gBAAgB;AAE/D,MAAM,eAAe,cAAc,KAAK;AAExC,MAAM,uBAAuB,CAAC,EAAE,IAAI,MAAuB;AACzD,QAAMA,SAAQ,YAAY,EAAE,IAAI,CAAC;AACjC,EAAAA,OAAM,SAAS;AAEf,QAAM,aAAaA,OAAM;AACzB,MAAI,WAAqB,CAAC;AAE1B,EAAAA,OAAM,SAAS,IAAI,SAAS;AAC1B,UAAM,aAAa,KAAK,CAAC;AACzB,QAAIA,OAAM,SAAS,WAAW,IAAI,MAAM,QAAW;AACjD,eAAS,KAAK,WAAW,IAAI;AAAA,IAC/B;AACA,WAAO,WAAW,GAAG,IAAI;AAAA,EAC3B;AAEA,QAAM,QAAQ,MAAM;AAClB,UAAM,eAAe;AACrB,eAAW,CAAC;AACZ,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,OAAAA,QAAO,MAAM;AACxB;AAEO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AACF,GAGG;AACD,QAAM,CAAC,EAAE,OAAAA,QAAO,MAAM,CAAC,IAAI,SAAS,MAAM,qBAAqB,EAAE,KAAK,YAAY,QAAQ,CAAC,CAAC;AAE5F,wBAAsB,MAAM;AAC1B,UAAM,QAAQ,MAAM;AACpB,QAAI,MAAM,WAAW;AAAG,aAAO;AAC/B,QAAI,SAAS;AACb,eAAW,QAAQ,OAAO;AACxB,gBAAUA,OAAM,SAAS,IAAI;AAAA,IAC/B;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,gBAAc,GAAGA,OAAM,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;AAAA,QAC7C,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA;AAAA,IACF;AAAA,EAEJ,CAAC;AAED,SAAO,oBAAC,aAAa,UAAb,EAAsB,OAAOA,QAAQ,UAAS;AACxD;AAEO,SAAS,WAAyB;AACvC,SAAO,WAAW,YAAY;AAChC;","names":["cache"]}
@@ -1,8 +1,6 @@
1
1
  import { MakeswiftApiHandler } from "./api-handler";
2
2
  import { getSiteVersion } from "./draft-mode";
3
- import { DraftModeScript } from "./draft-mode/draft-mode-script";
4
3
  export {
5
- DraftModeScript,
6
4
  MakeswiftApiHandler,
7
5
  getSiteVersion
8
6
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/server.ts"],"sourcesContent":["export { MakeswiftApiHandler } from './api-handler'\nexport type { Manifest, Font, MakeswiftApiHandlerResponse } from './api-handler'\nexport { getSiteVersion } from './draft-mode'\nexport { DraftModeScript } from './draft-mode/draft-mode-script'\n"],"mappings":"AAAA,SAAS,2BAA2B;AAEpC,SAAS,sBAAsB;AAC/B,SAAS,uBAAuB;","names":[]}
1
+ {"version":3,"sources":["../../../src/next/server.ts"],"sourcesContent":["export { MakeswiftApiHandler } from './api-handler'\nexport type { Manifest, Font, MakeswiftApiHandlerResponse } from './api-handler'\nexport { getSiteVersion } from './draft-mode'\n"],"mappings":"AAAA,SAAS,2BAA2B;AAEpC,SAAS,sBAAsB;","names":[]}
@@ -0,0 +1,37 @@
1
+ import { createRequest } from "node-mocks-http";
2
+ function urlToQuery(url) {
3
+ const segments = url.pathname.split("/").filter(Boolean);
4
+ if (segments.length === 0)
5
+ return {};
6
+ if (segments.length === 1)
7
+ return [segments[0]];
8
+ let structure = {};
9
+ let current = structure;
10
+ for (let i = 0; i < segments.length - 2; i++) {
11
+ current[segments[i]] = {};
12
+ current = current[segments[i]];
13
+ }
14
+ current[segments[segments.length - 2]] = [segments[segments.length - 1]];
15
+ return {
16
+ ...structure,
17
+ ...Object.fromEntries(
18
+ url.searchParams.entries()
19
+ )
20
+ };
21
+ }
22
+ function createNextApiRequest({
23
+ method,
24
+ path,
25
+ body
26
+ }) {
27
+ return createRequest({
28
+ method,
29
+ url: path,
30
+ query: urlToQuery(new URL(path, "http://localhost")),
31
+ body
32
+ });
33
+ }
34
+ export {
35
+ createNextApiRequest
36
+ };
37
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/next/tests/test-utils.ts"],"sourcesContent":["import { NextApiRequest } from \"next\"\nimport { createRequest, RequestMethod } from \"node-mocks-http\"\n\ntype Query = { [key: string]: Query } | string[]\n\nfunction urlToQuery(url: URL): Query {\n const segments = url.pathname.split('/').filter(Boolean)\n\n if (segments.length === 0) return {}\n if (segments.length === 1) return [segments[0]]\n\n let structure: { [key: string]: any } = {}\n let current = structure\n\n for (let i = 0; i < segments.length - 2; i++) {\n current[segments[i]] = {}\n current = current[segments[i]]\n }\n\n current[segments[segments.length - 2]] = [segments[segments.length - 1]]\n\n return {\n ...structure,\n ...Object.fromEntries(\n url.searchParams.entries(),\n ),\n }\n}\n\nexport function createNextApiRequest({\n method,\n path,\n body\n}: {\n method: RequestMethod\n path: string\n body?: Record<string, unknown>\n}): NextApiRequest {\n return createRequest<NextApiRequest>({\n method,\n url: path,\n query: urlToQuery(new URL(path, 'http://localhost')),\n body\n })\n}\n"],"mappings":"AACA,SAAS,qBAAoC;AAI7C,SAAS,WAAW,KAAiB;AACnC,QAAM,WAAW,IAAI,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAEvD,MAAI,SAAS,WAAW;AAAG,WAAO,CAAC;AACnC,MAAI,SAAS,WAAW;AAAG,WAAO,CAAC,SAAS,CAAC,CAAC;AAE9C,MAAI,YAAoC,CAAC;AACzC,MAAI,UAAU;AAEd,WAAS,IAAI,GAAG,IAAI,SAAS,SAAS,GAAG,KAAK;AAC5C,YAAQ,SAAS,CAAC,CAAC,IAAI,CAAC;AACxB,cAAU,QAAQ,SAAS,CAAC,CAAC;AAAA,EAC/B;AAEA,UAAQ,SAAS,SAAS,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,SAAS,CAAC,CAAC;AAEvE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,OAAO;AAAA,MACR,IAAI,aAAa,QAAQ;AAAA,IAC3B;AAAA,EACF;AACF;AAEO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,GAImB;AACjB,SAAO,cAA8B;AAAA,IACnC;AAAA,IACA,KAAK;AAAA,IACL,OAAO,WAAW,IAAI,IAAI,MAAM,kBAAkB,CAAC;AAAA,IACnD;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -1,11 +1,11 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { forwardRef, memo } from "react";
3
3
  import { getRootElement } from "../../../state/react-page";
4
- import { DocumentContext } from "../hooks/use-document-context";
4
+ import { DocumentKeyContext, DocumentLocaleContext } from "../hooks/use-document-context";
5
5
  import { Element } from "./Element";
6
6
  const Document = memo(
7
7
  forwardRef(function Document2({ document }, ref) {
8
- return /* @__PURE__ */ jsx(DocumentContext.Provider, { value: document, children: /* @__PURE__ */ jsx(Element, { ref, element: getRootElement(document) }) });
8
+ return /* @__PURE__ */ jsx(DocumentKeyContext.Provider, { value: document.key, children: /* @__PURE__ */ jsx(DocumentLocaleContext.Provider, { value: document.locale, children: /* @__PURE__ */ jsx(Element, { ref, element: getRootElement(document) }) }) });
9
9
  })
10
10
  );
11
11
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/Document.tsx"],"sourcesContent":["import { Ref, forwardRef, memo } from 'react'\nimport { type Document as ReactPageDocument, getRootElement } from '../../../state/react-page'\nimport { ElementImperativeHandle } from '../element-imperative-handle'\nimport { DocumentContext } from '../hooks/use-document-context'\nimport { Element } from './Element'\n\ntype DocumentProps = {\n document: ReactPageDocument\n}\n\nexport const Document = memo(\n forwardRef(function Document(\n { document }: DocumentProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n return (\n <DocumentContext.Provider value={document}>\n <Element ref={ref} element={getRootElement(document)} />\n </DocumentContext.Provider>\n )\n }),\n)\n"],"mappings":"AAiBQ;AAjBR,SAAc,YAAY,YAAY;AACtC,SAA6C,sBAAsB;AAEnE,SAAS,uBAAuB;AAChC,SAAS,eAAe;AAMjB,MAAM,WAAW;AAAA,EACtB,WAAW,SAASA,UAClB,EAAE,SAAS,GACX,KACa;AACb,WACE,oBAAC,gBAAgB,UAAhB,EAAyB,OAAO,UAC/B,8BAAC,WAAQ,KAAU,SAAS,eAAe,QAAQ,GAAG,GACxD;AAAA,EAEJ,CAAC;AACH;","names":["Document"]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/Document.tsx"],"sourcesContent":["import { Ref, forwardRef, memo } from 'react'\nimport { type Document as ReactPageDocument, getRootElement } from '../../../state/react-page'\nimport { ElementImperativeHandle } from '../element-imperative-handle'\nimport { DocumentKeyContext, DocumentLocaleContext } from '../hooks/use-document-context'\nimport { Element } from './Element'\n\ntype DocumentProps = {\n document: ReactPageDocument\n}\n\nexport const Document = memo(\n forwardRef(function Document(\n { document }: DocumentProps,\n ref: Ref<ElementImperativeHandle>,\n ): JSX.Element {\n return (\n <DocumentKeyContext.Provider value={document.key}>\n <DocumentLocaleContext.Provider value={document.locale}>\n <Element ref={ref} element={getRootElement(document)} />\n </DocumentLocaleContext.Provider>\n </DocumentKeyContext.Provider>\n )\n }),\n)\n"],"mappings":"AAkBU;AAlBV,SAAc,YAAY,YAAY;AACtC,SAA6C,sBAAsB;AAEnE,SAAS,oBAAoB,6BAA6B;AAC1D,SAAS,eAAe;AAMjB,MAAM,WAAW;AAAA,EACtB,WAAW,SAASA,UAClB,EAAE,SAAS,GACX,KACa;AACb,WACE,oBAAC,mBAAmB,UAAnB,EAA4B,OAAO,SAAS,KAC3C,8BAAC,sBAAsB,UAAtB,EAA+B,OAAO,SAAS,QAC9C,8BAAC,WAAQ,KAAU,SAAS,eAAe,QAAQ,GAAG,GACxD,GACF;AAAA,EAEJ,CAAC;AACH;","names":["Document"]}
@@ -9,6 +9,7 @@ const ElementData = memo(
9
9
  forwardRef(function ElementData2({ elementData }, ref) {
10
10
  const Component = useComponent(elementData.type);
11
11
  if (Component == null) {
12
+ console.warn(`Unknown component '${elementData.type}'`, { elementData });
12
13
  return /* @__PURE__ */ jsx(FallbackComponent, { ref, text: "Component not found" });
13
14
  }
14
15
  const forwardRef2 = canAcceptRef(Component);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/ElementData.tsx"],"sourcesContent":["import { Ref, Suspense, forwardRef, memo } from 'react'\nimport { ElementData as ReactPageElementData } from '../../../state/react-page'\nimport { useComponent } from '../hooks/use-component'\nimport { canAcceptRef } from '../utils/can-accept-ref'\nimport { FallbackComponent } from '../../../components/shared/FallbackComponent'\nimport { ResolveProps } from '../controls'\n\ntype ElementDataProps = {\n elementData: ReactPageElementData\n}\n\nexport const ElementData = memo(\n forwardRef(function ElementData(\n { elementData }: ElementDataProps,\n ref: Ref<unknown>,\n ): JSX.Element {\n const Component = useComponent(elementData.type)\n\n if (Component == null) {\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n const forwardRef = canAcceptRef(Component)\n\n return (\n <Suspense>\n <ResolveProps element={elementData}>\n {props =>\n forwardRef ? (\n <Component {...props} key={elementData.key} ref={ref} />\n ) : (\n <Component {...props} key={elementData.key} />\n )\n }\n </ResolveProps>\n </Suspense>\n )\n }),\n)\n"],"mappings":"AAmBa;AAUC;AA7Bd,SAAc,UAAU,YAAY,YAAY;AAEhD,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAMtB,MAAM,cAAc;AAAA,EACzB,WAAW,SAASA,aAClB,EAAE,YAAY,GACd,KACa;AACb,UAAM,YAAY,aAAa,YAAY,IAAI;AAE/C,QAAI,aAAa,MAAM;AACrB,aAAO,oBAAC,qBAAkB,KAAiC,MAAK,uBAAsB;AAAA,IACxF;AAEA,UAAMC,cAAa,aAAa,SAAS;AAEzC,WACE,oBAAC,YACC,8BAAC,gBAAa,SAAS,aACpB,qBACCA,cACE,8BAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,KAAU,IAEtD,8BAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,GAGlD,GACF;AAAA,EAEJ,CAAC;AACH;","names":["ElementData","forwardRef"]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/ElementData.tsx"],"sourcesContent":["import { Ref, Suspense, forwardRef, memo } from 'react'\nimport { ElementData as ReactPageElementData } from '../../../state/react-page'\nimport { useComponent } from '../hooks/use-component'\nimport { canAcceptRef } from '../utils/can-accept-ref'\nimport { FallbackComponent } from '../../../components/shared/FallbackComponent'\nimport { ResolveProps } from '../controls'\n\ntype ElementDataProps = {\n elementData: ReactPageElementData\n}\n\nexport const ElementData = memo(\n forwardRef(function ElementData(\n { elementData }: ElementDataProps,\n ref: Ref<unknown>,\n ): JSX.Element {\n const Component = useComponent(elementData.type)\n\n if (Component == null) {\n console.warn(`Unknown component '${elementData.type}'`, { elementData })\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n const forwardRef = canAcceptRef(Component)\n\n return (\n <Suspense>\n <ResolveProps element={elementData}>\n {props =>\n forwardRef ? (\n <Component {...props} key={elementData.key} ref={ref} />\n ) : (\n <Component {...props} key={elementData.key} />\n )\n }\n </ResolveProps>\n </Suspense>\n )\n }),\n)\n"],"mappings":"AAoBa;AAUC;AA9Bd,SAAc,UAAU,YAAY,YAAY;AAEhD,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAMtB,MAAM,cAAc;AAAA,EACzB,WAAW,SAASA,aAClB,EAAE,YAAY,GACd,KACa;AACb,UAAM,YAAY,aAAa,YAAY,IAAI;AAE/C,QAAI,aAAa,MAAM;AACrB,cAAQ,KAAK,sBAAsB,YAAY,IAAI,KAAK,EAAE,YAAY,CAAC;AACvE,aAAO,oBAAC,qBAAkB,KAAiC,MAAK,uBAAsB;AAAA,IACxF;AAEA,UAAMC,cAAa,aAAa,SAAS;AAEzC,WACE,oBAAC,YACC,8BAAC,gBAAa,SAAS,aACpB,qBACCA,cACE,8BAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,KAAU,IAEtD,8BAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,GAGlD,GACF;AAAA,EAEJ,CAAC;AACH;","names":["ElementData","forwardRef"]}
@@ -1,27 +1,38 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useMemo, lazy } from "react";
4
4
  import { MakeswiftHostApiClient } from "../../../api/react";
5
5
  import { ReactRuntimeContext } from "../hooks/use-react-runtime";
6
6
  import { MakeswiftHostApiClientProvider } from "../host-api-client";
7
+ import { MakeswiftSiteVersion } from "../../../api/site-version";
8
+ import { DraftSwitcher } from "./draft-switcher/draft-switcher";
9
+ import { useBuilderHandshake } from "./hooks/use-builder-handshake";
10
+ import { useBuilderConnectionPing } from "./hooks/use-builder-connection-ping";
7
11
  const LiveProvider = lazy(() => import("./LiveProvider"));
8
12
  const PreviewProvider = lazy(() => import("./PreviewProvider"));
9
13
  function ReactRuntimeProvider({
10
14
  children,
11
15
  runtime,
12
16
  previewMode,
17
+ appOrigin = "https://app.makeswift.com",
13
18
  apiOrigin = "https://api.makeswift.com",
14
19
  locale = void 0
15
20
  }) {
16
21
  const client = useMemo(
17
22
  () => new MakeswiftHostApiClient({
18
23
  uri: new URL("graphql", apiOrigin).href,
19
- locale
24
+ locale,
25
+ siteVersion: previewMode ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live
20
26
  }),
21
- [apiOrigin, locale]
27
+ [apiOrigin, locale, previewMode]
22
28
  );
23
29
  const StoreProvider = previewMode ? PreviewProvider : LiveProvider;
24
- return /* @__PURE__ */ jsx(ReactRuntimeContext.Provider, { value: runtime, children: /* @__PURE__ */ jsx(MakeswiftHostApiClientProvider, { client, children: /* @__PURE__ */ jsx(StoreProvider, { children }) }) });
30
+ useBuilderHandshake({ appOrigin });
31
+ useBuilderConnectionPing({ appOrigin });
32
+ return /* @__PURE__ */ jsx(ReactRuntimeContext.Provider, { value: runtime, children: /* @__PURE__ */ jsx(MakeswiftHostApiClientProvider, { client, children: /* @__PURE__ */ jsxs(StoreProvider, { children: [
33
+ children,
34
+ /* @__PURE__ */ jsx(DraftSwitcher, { isDraft: previewMode })
35
+ ] }) }) });
25
36
  }
26
37
  export {
27
38
  ReactRuntimeProvider
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/RuntimeProvider.tsx"],"sourcesContent":["'use client'\n\nimport { ReactNode, useMemo, lazy } from 'react'\n\nimport { MakeswiftHostApiClient } from '../../../api/react'\nimport { ReactRuntimeContext } from '../hooks/use-react-runtime'\nimport { ReactRuntime } from '../react-runtime'\nimport { MakeswiftHostApiClientProvider } from '../host-api-client'\n\nconst LiveProvider = lazy(() => import('./LiveProvider'))\nconst PreviewProvider = lazy(() => import('./PreviewProvider'))\n\nexport function ReactRuntimeProvider({\n children,\n runtime,\n previewMode,\n apiOrigin = 'https://api.makeswift.com',\n locale = undefined,\n}: {\n children: ReactNode\n runtime: ReactRuntime\n previewMode: boolean\n apiOrigin?: string\n locale?: string\n}) {\n const client = useMemo(\n () =>\n new MakeswiftHostApiClient({\n uri: new URL('graphql', apiOrigin).href,\n locale,\n }),\n [apiOrigin, locale],\n )\n\n const StoreProvider = previewMode ? PreviewProvider : LiveProvider\n\n return (\n <ReactRuntimeContext.Provider value={runtime}>\n <MakeswiftHostApiClientProvider client={client}>\n <StoreProvider>{children}</StoreProvider>\n </MakeswiftHostApiClientProvider>\n </ReactRuntimeContext.Provider>\n )\n}\n"],"mappings":";AAuCQ;AArCR,SAAoB,SAAS,YAAY;AAEzC,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AAEpC,SAAS,sCAAsC;AAE/C,MAAM,eAAe,KAAK,MAAM,OAAO,gBAAgB,CAAC;AACxD,MAAM,kBAAkB,KAAK,MAAM,OAAO,mBAAmB,CAAC;AAEvD,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,SAAS;AACX,GAMG;AACD,QAAM,SAAS;AAAA,IACb,MACE,IAAI,uBAAuB;AAAA,MACzB,KAAK,IAAI,IAAI,WAAW,SAAS,EAAE;AAAA,MACnC;AAAA,IACF,CAAC;AAAA,IACH,CAAC,WAAW,MAAM;AAAA,EACpB;AAEA,QAAM,gBAAgB,cAAc,kBAAkB;AAEtD,SACE,oBAAC,oBAAoB,UAApB,EAA6B,OAAO,SACnC,8BAAC,kCAA+B,QAC9B,8BAAC,iBAAe,UAAS,GAC3B,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/RuntimeProvider.tsx"],"sourcesContent":["'use client'\n\nimport { ReactNode, useMemo, lazy } from 'react'\n\nimport { MakeswiftHostApiClient } from '../../../api/react'\nimport { ReactRuntimeContext } from '../hooks/use-react-runtime'\nimport { ReactRuntime } from '../react-runtime'\nimport { MakeswiftHostApiClientProvider } from '../host-api-client'\nimport { MakeswiftSiteVersion } from '../../../api/site-version'\nimport { DraftSwitcher } from './draft-switcher/draft-switcher'\nimport { useBuilderHandshake } from './hooks/use-builder-handshake'\nimport { useBuilderConnectionPing } from './hooks/use-builder-connection-ping'\n\nconst LiveProvider = lazy(() => import('./LiveProvider'))\nconst PreviewProvider = lazy(() => import('./PreviewProvider'))\n\nexport function ReactRuntimeProvider({\n children,\n runtime,\n previewMode,\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n locale = undefined,\n}: {\n children: ReactNode\n runtime: ReactRuntime\n previewMode: boolean\n apiOrigin?: string\n appOrigin?: string\n locale?: string\n}) {\n const client = useMemo(\n () =>\n new MakeswiftHostApiClient({\n uri: new URL('graphql', apiOrigin).href,\n locale,\n siteVersion: previewMode ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live,\n }),\n [apiOrigin, locale, previewMode],\n )\n\n const StoreProvider = previewMode ? PreviewProvider : LiveProvider\n\n useBuilderHandshake({ appOrigin })\n useBuilderConnectionPing({ appOrigin })\n\n return (\n <ReactRuntimeContext.Provider value={runtime}>\n <MakeswiftHostApiClientProvider client={client}>\n <StoreProvider>\n {children}\n <DraftSwitcher isDraft={previewMode} />\n </StoreProvider>\n </MakeswiftHostApiClientProvider>\n </ReactRuntimeContext.Provider>\n )\n}\n"],"mappings":";AAiDQ,SAEE,KAFF;AA/CR,SAAoB,SAAS,YAAY;AAEzC,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AAEpC,SAAS,sCAAsC;AAC/C,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAC9B,SAAS,2BAA2B;AACpC,SAAS,gCAAgC;AAEzC,MAAM,eAAe,KAAK,MAAM,OAAO,gBAAgB,CAAC;AACxD,MAAM,kBAAkB,KAAK,MAAM,OAAO,mBAAmB,CAAC;AAEvD,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,SAAS;AACX,GAOG;AACD,QAAM,SAAS;AAAA,IACb,MACE,IAAI,uBAAuB;AAAA,MACzB,KAAK,IAAI,IAAI,WAAW,SAAS,EAAE;AAAA,MACnC;AAAA,MACA,aAAa,cAAc,qBAAqB,UAAU,qBAAqB;AAAA,IACjF,CAAC;AAAA,IACH,CAAC,WAAW,QAAQ,WAAW;AAAA,EACjC;AAEA,QAAM,gBAAgB,cAAc,kBAAkB;AAEtD,sBAAoB,EAAE,UAAU,CAAC;AACjC,2BAAyB,EAAE,UAAU,CAAC;AAEtC,SACE,oBAAC,oBAAoB,UAApB,EAA6B,OAAO,SACnC,8BAAC,kCAA+B,QAC9B,+BAAC,iBACE;AAAA;AAAA,IACD,oBAAC,iBAAc,SAAS,aAAa;AAAA,KACvC,GACF,GACF;AAEJ;","names":[]}