@makeswift/runtime 0.14.4 → 0.15.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 (393) hide show
  1. package/dist/cjs/api/react.js +3 -17
  2. package/dist/cjs/api/react.js.map +1 -1
  3. package/dist/cjs/api/resource-types.js +24 -0
  4. package/dist/cjs/api/resource-types.js.map +1 -0
  5. package/dist/cjs/components/builtin/Box/Box.js +1 -0
  6. package/dist/cjs/components/builtin/Box/Box.js.map +1 -1
  7. package/dist/cjs/components/builtin/Box/animations.js +1 -0
  8. package/dist/cjs/components/builtin/Box/animations.js.map +1 -1
  9. package/dist/cjs/components/builtin/Box/register.js +2 -3
  10. package/dist/cjs/components/builtin/Box/register.js.map +1 -1
  11. package/dist/cjs/components/builtin/Button/register.js +2 -3
  12. package/dist/cjs/components/builtin/Button/register.js.map +1 -1
  13. package/dist/cjs/components/builtin/Carousel/Carousel.js +1 -0
  14. package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
  15. package/dist/cjs/components/builtin/Carousel/register.js +2 -3
  16. package/dist/cjs/components/builtin/Carousel/register.js.map +1 -1
  17. package/dist/cjs/components/builtin/Countdown/Countdown.js +1 -0
  18. package/dist/cjs/components/builtin/Countdown/Countdown.js.map +1 -1
  19. package/dist/cjs/components/builtin/Countdown/register.js +2 -3
  20. package/dist/cjs/components/builtin/Countdown/register.js.map +1 -1
  21. package/dist/cjs/components/builtin/Divider/register.js +2 -3
  22. package/dist/cjs/components/builtin/Divider/register.js.map +1 -1
  23. package/dist/cjs/components/builtin/Embed/Embed.js +1 -0
  24. package/dist/cjs/components/builtin/Embed/Embed.js.map +1 -1
  25. package/dist/cjs/components/builtin/Embed/register.js +2 -3
  26. package/dist/cjs/components/builtin/Embed/register.js.map +1 -1
  27. package/dist/cjs/components/builtin/Form/Form.js +3 -2
  28. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  29. package/dist/cjs/components/builtin/Form/context/FormContext.js +1 -0
  30. package/dist/cjs/components/builtin/Form/context/FormContext.js.map +1 -1
  31. package/dist/cjs/components/builtin/Form/register.js +2 -3
  32. package/dist/cjs/components/builtin/Form/register.js.map +1 -1
  33. package/dist/cjs/components/builtin/Image/Image.js +1 -0
  34. package/dist/cjs/components/builtin/Image/Image.js.map +1 -1
  35. package/dist/cjs/components/builtin/Image/register.js +2 -3
  36. package/dist/cjs/components/builtin/Image/register.js.map +1 -1
  37. package/dist/cjs/components/builtin/Navigation/Navigation.js +1 -0
  38. package/dist/cjs/components/builtin/Navigation/Navigation.js.map +1 -1
  39. package/dist/cjs/components/builtin/Navigation/register.js +2 -3
  40. package/dist/cjs/components/builtin/Navigation/register.js.map +1 -1
  41. package/dist/cjs/components/builtin/Root/register.js +2 -3
  42. package/dist/cjs/components/builtin/Root/register.js.map +1 -1
  43. package/dist/cjs/components/builtin/SocialLinks/register.js +2 -3
  44. package/dist/cjs/components/builtin/SocialLinks/register.js.map +1 -1
  45. package/dist/cjs/components/builtin/Text/register.js +2 -3
  46. package/dist/cjs/components/builtin/Text/register.js.map +1 -1
  47. package/dist/cjs/components/builtin/Video/Video.js +1 -0
  48. package/dist/cjs/components/builtin/Video/Video.js.map +1 -1
  49. package/dist/cjs/components/builtin/Video/register.js +2 -3
  50. package/dist/cjs/components/builtin/Video/register.js.map +1 -1
  51. package/dist/cjs/components/hooks/usePageSnippets.js +93 -0
  52. package/dist/cjs/components/hooks/usePageSnippets.js.map +1 -0
  53. package/dist/cjs/components/hooks/useRouterLocaleSync.js +49 -0
  54. package/dist/cjs/components/hooks/useRouterLocaleSync.js.map +1 -0
  55. package/dist/cjs/components/page/BodySnippet.js +1 -1
  56. package/dist/cjs/components/page/BodySnippet.js.map +1 -1
  57. package/dist/cjs/components/page/HeadSnippet.js +134 -0
  58. package/dist/cjs/components/page/HeadSnippet.js.map +1 -0
  59. package/dist/cjs/components/page/Page.js +9 -178
  60. package/dist/cjs/components/page/Page.js.map +1 -1
  61. package/dist/cjs/components/page/PageHead.js +109 -0
  62. package/dist/cjs/components/page/PageHead.js.map +1 -0
  63. package/dist/cjs/components/shared/BackgroundsContainer/index.js +1 -0
  64. package/dist/cjs/components/shared/BackgroundsContainer/index.js.map +1 -1
  65. package/dist/cjs/components/shared/Link/index.js +5 -1
  66. package/dist/cjs/components/shared/Link/index.js.map +1 -1
  67. package/dist/cjs/index.js +0 -2
  68. package/dist/cjs/index.js.map +1 -1
  69. package/dist/cjs/next/api-handler/handlers/element-tree.js +17 -8
  70. package/dist/cjs/next/api-handler/handlers/element-tree.js.map +1 -1
  71. package/dist/cjs/next/api-handler/handlers/fonts.js +7 -2
  72. package/dist/cjs/next/api-handler/handlers/fonts.js.map +1 -1
  73. package/dist/cjs/next/api-handler/handlers/manifest.js +20 -8
  74. package/dist/cjs/next/api-handler/handlers/manifest.js.map +1 -1
  75. package/dist/cjs/next/api-handler/handlers/merge-translated-data.js +17 -6
  76. package/dist/cjs/next/api-handler/handlers/merge-translated-data.js.map +1 -1
  77. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js +69 -0
  78. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js.map +1 -0
  79. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js +55 -44
  80. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js.map +1 -1
  81. package/dist/cjs/next/api-handler/handlers/revalidate.js +27 -16
  82. package/dist/cjs/next/api-handler/handlers/revalidate.js.map +1 -1
  83. package/dist/cjs/next/api-handler/handlers/translatable-data.js +16 -5
  84. package/dist/cjs/next/api-handler/handlers/translatable-data.js.map +1 -1
  85. package/dist/cjs/next/api-handler/index.js +68 -34
  86. package/dist/cjs/next/api-handler/index.js.map +1 -1
  87. package/dist/cjs/next/client.js +3 -2
  88. package/dist/cjs/next/client.js.map +1 -1
  89. package/dist/cjs/next/components/head-tags.js +77 -0
  90. package/dist/cjs/next/components/head-tags.js.map +1 -0
  91. package/dist/cjs/next/components/page.js +56 -0
  92. package/dist/cjs/next/components/page.js.map +1 -0
  93. package/dist/cjs/next/context/makeswift-host-api-client.js +46 -0
  94. package/dist/cjs/next/context/makeswift-host-api-client.js.map +1 -0
  95. package/dist/cjs/next/context/react-runtime.js +44 -0
  96. package/dist/cjs/next/context/react-runtime.js.map +1 -0
  97. package/dist/cjs/next/draft-mode/draft-mode-script.js +123 -0
  98. package/dist/cjs/next/draft-mode/draft-mode-script.js.map +1 -0
  99. package/dist/cjs/next/draft-mode/index.js +56 -0
  100. package/dist/cjs/next/draft-mode/index.js.map +1 -0
  101. package/dist/cjs/next/hooks/use-is-pages-router.js +37 -0
  102. package/dist/cjs/next/hooks/use-is-pages-router.js.map +1 -0
  103. package/dist/cjs/next/index.js +10 -36
  104. package/dist/cjs/next/index.js.map +1 -1
  105. package/dist/cjs/next/preview-mode.js +4 -2
  106. package/dist/cjs/next/preview-mode.js.map +1 -1
  107. package/dist/cjs/next/root-style-registry.js +90 -0
  108. package/dist/cjs/next/root-style-registry.js.map +1 -0
  109. package/dist/cjs/next/server.js +8 -2
  110. package/dist/cjs/next/server.js.map +1 -1
  111. package/dist/cjs/runtimes/react/components/Element.js +1 -0
  112. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  113. package/dist/cjs/runtimes/react/components/LiveProvider.js +6 -13
  114. package/dist/cjs/runtimes/react/components/LiveProvider.js.map +1 -1
  115. package/dist/cjs/runtimes/react/components/PreviewProvider.js +6 -8
  116. package/dist/cjs/runtimes/react/components/PreviewProvider.js.map +1 -1
  117. package/dist/cjs/runtimes/react/components/RuntimeProvider.js +3 -3
  118. package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
  119. package/dist/cjs/runtimes/react/controls/link.js +1 -1
  120. package/dist/cjs/runtimes/react/controls/link.js.map +1 -1
  121. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js +2 -4
  122. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  123. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js +4 -11
  124. package/dist/cjs/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  125. package/dist/cjs/runtimes/react/hooks/makeswift-api.js +11 -10
  126. package/dist/cjs/runtimes/react/hooks/makeswift-api.js.map +1 -1
  127. package/dist/cjs/runtimes/react/hooks/use-document-key.js +1 -0
  128. package/dist/cjs/runtimes/react/hooks/use-document-key.js.map +1 -1
  129. package/dist/cjs/runtimes/react/hooks/use-page-id.js +1 -0
  130. package/dist/cjs/runtimes/react/hooks/use-page-id.js.map +1 -1
  131. package/dist/cjs/runtimes/react/hooks/use-store.js +1 -0
  132. package/dist/cjs/runtimes/react/hooks/use-store.js.map +1 -1
  133. package/dist/cjs/runtimes/react/use-global-style.js +15 -10
  134. package/dist/cjs/runtimes/react/use-global-style.js.map +1 -1
  135. package/dist/cjs/runtimes/react/use-style.js +7 -6
  136. package/dist/cjs/runtimes/react/use-style.js.map +1 -1
  137. package/dist/cjs/state/actions.js +0 -25
  138. package/dist/cjs/state/actions.js.map +1 -1
  139. package/dist/cjs/state/react-builder-preview.js +1 -24
  140. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  141. package/dist/esm/api/react.js +2 -14
  142. package/dist/esm/api/react.js.map +1 -1
  143. package/dist/esm/api/resource-types.js +8 -0
  144. package/dist/esm/api/resource-types.js.map +1 -0
  145. package/dist/esm/components/builtin/Box/Box.js +1 -0
  146. package/dist/esm/components/builtin/Box/Box.js.map +1 -1
  147. package/dist/esm/components/builtin/Box/animations.js +1 -0
  148. package/dist/esm/components/builtin/Box/animations.js.map +1 -1
  149. package/dist/esm/components/builtin/Box/register.js +2 -3
  150. package/dist/esm/components/builtin/Box/register.js.map +1 -1
  151. package/dist/esm/components/builtin/Button/register.js +2 -3
  152. package/dist/esm/components/builtin/Button/register.js.map +1 -1
  153. package/dist/esm/components/builtin/Carousel/Carousel.js +1 -0
  154. package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
  155. package/dist/esm/components/builtin/Carousel/register.js +2 -3
  156. package/dist/esm/components/builtin/Carousel/register.js.map +1 -1
  157. package/dist/esm/components/builtin/Countdown/Countdown.js +1 -0
  158. package/dist/esm/components/builtin/Countdown/Countdown.js.map +1 -1
  159. package/dist/esm/components/builtin/Countdown/register.js +2 -3
  160. package/dist/esm/components/builtin/Countdown/register.js.map +1 -1
  161. package/dist/esm/components/builtin/Divider/register.js +2 -3
  162. package/dist/esm/components/builtin/Divider/register.js.map +1 -1
  163. package/dist/esm/components/builtin/Embed/Embed.js +1 -0
  164. package/dist/esm/components/builtin/Embed/Embed.js.map +1 -1
  165. package/dist/esm/components/builtin/Embed/register.js +2 -3
  166. package/dist/esm/components/builtin/Embed/register.js.map +1 -1
  167. package/dist/esm/components/builtin/Form/Form.js +3 -2
  168. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  169. package/dist/esm/components/builtin/Form/context/FormContext.js +1 -0
  170. package/dist/esm/components/builtin/Form/context/FormContext.js.map +1 -1
  171. package/dist/esm/components/builtin/Form/register.js +2 -3
  172. package/dist/esm/components/builtin/Form/register.js.map +1 -1
  173. package/dist/esm/components/builtin/Image/Image.js +1 -0
  174. package/dist/esm/components/builtin/Image/Image.js.map +1 -1
  175. package/dist/esm/components/builtin/Image/register.js +2 -3
  176. package/dist/esm/components/builtin/Image/register.js.map +1 -1
  177. package/dist/esm/components/builtin/Navigation/Navigation.js +1 -0
  178. package/dist/esm/components/builtin/Navigation/Navigation.js.map +1 -1
  179. package/dist/esm/components/builtin/Navigation/register.js +2 -3
  180. package/dist/esm/components/builtin/Navigation/register.js.map +1 -1
  181. package/dist/esm/components/builtin/Root/register.js +2 -3
  182. package/dist/esm/components/builtin/Root/register.js.map +1 -1
  183. package/dist/esm/components/builtin/SocialLinks/register.js +2 -3
  184. package/dist/esm/components/builtin/SocialLinks/register.js.map +1 -1
  185. package/dist/esm/components/builtin/Text/register.js +2 -3
  186. package/dist/esm/components/builtin/Text/register.js.map +1 -1
  187. package/dist/esm/components/builtin/Video/Video.js +1 -0
  188. package/dist/esm/components/builtin/Video/Video.js.map +1 -1
  189. package/dist/esm/components/builtin/Video/register.js +2 -3
  190. package/dist/esm/components/builtin/Video/register.js.map +1 -1
  191. package/dist/esm/components/hooks/usePageSnippets.js +59 -0
  192. package/dist/esm/components/hooks/usePageSnippets.js.map +1 -0
  193. package/dist/esm/components/hooks/useRouterLocaleSync.js +25 -0
  194. package/dist/esm/components/hooks/useRouterLocaleSync.js.map +1 -0
  195. package/dist/esm/components/page/BodySnippet.js +1 -1
  196. package/dist/esm/components/page/BodySnippet.js.map +1 -1
  197. package/dist/esm/components/page/HeadSnippet.js +100 -0
  198. package/dist/esm/components/page/HeadSnippet.js.map +1 -0
  199. package/dist/esm/components/page/Page.js +7 -166
  200. package/dist/esm/components/page/Page.js.map +1 -1
  201. package/dist/esm/components/page/PageHead.js +85 -0
  202. package/dist/esm/components/page/PageHead.js.map +1 -0
  203. package/dist/esm/components/shared/BackgroundsContainer/index.js +1 -0
  204. package/dist/esm/components/shared/BackgroundsContainer/index.js.map +1 -1
  205. package/dist/esm/components/shared/Link/index.js +5 -1
  206. package/dist/esm/components/shared/Link/index.js.map +1 -1
  207. package/dist/esm/index.js +0 -2
  208. package/dist/esm/index.js.map +1 -1
  209. package/dist/esm/next/api-handler/handlers/element-tree.js +17 -8
  210. package/dist/esm/next/api-handler/handlers/element-tree.js.map +1 -1
  211. package/dist/esm/next/api-handler/handlers/fonts.js +7 -2
  212. package/dist/esm/next/api-handler/handlers/fonts.js.map +1 -1
  213. package/dist/esm/next/api-handler/handlers/manifest.js +20 -8
  214. package/dist/esm/next/api-handler/handlers/manifest.js.map +1 -1
  215. package/dist/esm/next/api-handler/handlers/merge-translated-data.js +17 -6
  216. package/dist/esm/next/api-handler/handlers/merge-translated-data.js.map +1 -1
  217. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js +49 -0
  218. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js.map +1 -0
  219. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js +55 -44
  220. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js.map +1 -1
  221. package/dist/esm/next/api-handler/handlers/revalidate.js +27 -16
  222. package/dist/esm/next/api-handler/handlers/revalidate.js.map +1 -1
  223. package/dist/esm/next/api-handler/handlers/translatable-data.js +16 -5
  224. package/dist/esm/next/api-handler/handlers/translatable-data.js.map +1 -1
  225. package/dist/esm/next/api-handler/index.js +68 -34
  226. package/dist/esm/next/api-handler/index.js.map +1 -1
  227. package/dist/esm/next/client.js +3 -2
  228. package/dist/esm/next/client.js.map +1 -1
  229. package/dist/esm/next/components/head-tags.js +40 -0
  230. package/dist/esm/next/components/head-tags.js.map +1 -0
  231. package/dist/esm/next/components/page.js +32 -0
  232. package/dist/esm/next/components/page.js.map +1 -0
  233. package/dist/esm/next/context/makeswift-host-api-client.js +21 -0
  234. package/dist/esm/next/context/makeswift-host-api-client.js.map +1 -0
  235. package/dist/esm/next/context/react-runtime.js +19 -0
  236. package/dist/esm/next/context/react-runtime.js.map +1 -0
  237. package/dist/esm/next/draft-mode/draft-mode-script.js +99 -0
  238. package/dist/esm/next/draft-mode/draft-mode-script.js.map +1 -0
  239. package/dist/esm/next/draft-mode/index.js +30 -0
  240. package/dist/esm/next/draft-mode/index.js.map +1 -0
  241. package/dist/esm/next/hooks/use-is-pages-router.js +13 -0
  242. package/dist/esm/next/hooks/use-is-pages-router.js.map +1 -0
  243. package/dist/esm/next/index.js +5 -32
  244. package/dist/esm/next/index.js.map +1 -1
  245. package/dist/esm/next/preview-mode.js +2 -1
  246. package/dist/esm/next/preview-mode.js.map +1 -1
  247. package/dist/esm/next/root-style-registry.js +55 -0
  248. package/dist/esm/next/root-style-registry.js.map +1 -0
  249. package/dist/esm/next/server.js +5 -1
  250. package/dist/esm/next/server.js.map +1 -1
  251. package/dist/esm/runtimes/react/components/Element.js +1 -0
  252. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  253. package/dist/esm/runtimes/react/components/LiveProvider.js +6 -13
  254. package/dist/esm/runtimes/react/components/LiveProvider.js.map +1 -1
  255. package/dist/esm/runtimes/react/components/PreviewProvider.js +6 -8
  256. package/dist/esm/runtimes/react/components/PreviewProvider.js.map +1 -1
  257. package/dist/esm/runtimes/react/components/RuntimeProvider.js +3 -3
  258. package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
  259. package/dist/esm/runtimes/react/controls/link.js +1 -1
  260. package/dist/esm/runtimes/react/controls/link.js.map +1 -1
  261. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js +3 -5
  262. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  263. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js +4 -11
  264. package/dist/esm/runtimes/react/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  265. package/dist/esm/runtimes/react/hooks/makeswift-api.js +11 -10
  266. package/dist/esm/runtimes/react/hooks/makeswift-api.js.map +1 -1
  267. package/dist/esm/runtimes/react/hooks/use-document-key.js +1 -0
  268. package/dist/esm/runtimes/react/hooks/use-document-key.js.map +1 -1
  269. package/dist/esm/runtimes/react/hooks/use-page-id.js +1 -0
  270. package/dist/esm/runtimes/react/hooks/use-page-id.js.map +1 -1
  271. package/dist/esm/runtimes/react/hooks/use-store.js +1 -0
  272. package/dist/esm/runtimes/react/hooks/use-store.js.map +1 -1
  273. package/dist/esm/runtimes/react/use-global-style.js +8 -3
  274. package/dist/esm/runtimes/react/use-global-style.js.map +1 -1
  275. package/dist/esm/runtimes/react/use-style.js +2 -1
  276. package/dist/esm/runtimes/react/use-style.js.map +1 -1
  277. package/dist/esm/state/actions.js +0 -22
  278. package/dist/esm/state/actions.js.map +1 -1
  279. package/dist/esm/state/react-builder-preview.js +2 -28
  280. package/dist/esm/state/react-builder-preview.js.map +1 -1
  281. package/dist/types/api/react.d.ts +1 -9
  282. package/dist/types/api/react.d.ts.map +1 -1
  283. package/dist/types/api/resource-types.d.ts +20 -0
  284. package/dist/types/api/resource-types.d.ts.map +1 -0
  285. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  286. package/dist/types/components/builtin/Box/animations.d.ts.map +1 -1
  287. package/dist/types/components/builtin/Box/register.d.ts.map +1 -1
  288. package/dist/types/components/builtin/Button/register.d.ts.map +1 -1
  289. package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
  290. package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -1
  291. package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
  292. package/dist/types/components/builtin/Countdown/register.d.ts.map +1 -1
  293. package/dist/types/components/builtin/Divider/register.d.ts.map +1 -1
  294. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  295. package/dist/types/components/builtin/Embed/register.d.ts.map +1 -1
  296. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  297. package/dist/types/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  298. package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -1
  299. package/dist/types/components/builtin/Form/register.d.ts.map +1 -1
  300. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  301. package/dist/types/components/builtin/Image/register.d.ts.map +1 -1
  302. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  303. package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -1
  304. package/dist/types/components/builtin/Root/register.d.ts.map +1 -1
  305. package/dist/types/components/builtin/SocialLinks/register.d.ts.map +1 -1
  306. package/dist/types/components/builtin/Text/register.d.ts.map +1 -1
  307. package/dist/types/components/builtin/Video/Video.d.ts.map +1 -1
  308. package/dist/types/components/builtin/Video/register.d.ts.map +1 -1
  309. package/dist/types/components/hooks/usePageSnippets.d.ts +36 -0
  310. package/dist/types/components/hooks/usePageSnippets.d.ts.map +1 -0
  311. package/dist/types/components/hooks/useRouterLocaleSync.d.ts +2 -0
  312. package/dist/types/components/hooks/useRouterLocaleSync.d.ts.map +1 -0
  313. package/dist/types/components/page/BodySnippet.d.ts.map +1 -1
  314. package/dist/types/components/page/HeadSnippet.d.ts +7 -0
  315. package/dist/types/components/page/HeadSnippet.d.ts.map +1 -0
  316. package/dist/types/components/page/Page.d.ts.map +1 -1
  317. package/dist/types/components/page/PageHead.d.ts +8 -0
  318. package/dist/types/components/page/PageHead.d.ts.map +1 -0
  319. package/dist/types/components/shared/BackgroundsContainer/index.d.ts.map +1 -1
  320. package/dist/types/components/shared/Link/index.d.ts.map +1 -1
  321. package/dist/types/index.d.ts +1 -1
  322. package/dist/types/index.d.ts.map +1 -1
  323. package/dist/types/next/api-handler/handlers/element-tree.d.ts +9 -1
  324. package/dist/types/next/api-handler/handlers/element-tree.d.ts.map +1 -1
  325. package/dist/types/next/api-handler/handlers/fonts.d.ts +10 -1
  326. package/dist/types/next/api-handler/handlers/fonts.d.ts.map +1 -1
  327. package/dist/types/next/api-handler/handlers/manifest.d.ts +9 -0
  328. package/dist/types/next/api-handler/handlers/manifest.d.ts.map +1 -1
  329. package/dist/types/next/api-handler/handlers/merge-translated-data.d.ts +7 -0
  330. package/dist/types/next/api-handler/handlers/merge-translated-data.d.ts.map +1 -1
  331. package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts +20 -0
  332. package/dist/types/next/api-handler/handlers/proxy-draft-mode.d.ts.map +1 -0
  333. package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts +14 -2
  334. package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts.map +1 -1
  335. package/dist/types/next/api-handler/handlers/revalidate.d.ts +9 -0
  336. package/dist/types/next/api-handler/handlers/revalidate.d.ts.map +1 -1
  337. package/dist/types/next/api-handler/handlers/translatable-data.d.ts +7 -0
  338. package/dist/types/next/api-handler/handlers/translatable-data.d.ts.map +1 -1
  339. package/dist/types/next/api-handler/index.d.ts +11 -3
  340. package/dist/types/next/api-handler/index.d.ts.map +1 -1
  341. package/dist/types/next/client.d.ts.map +1 -1
  342. package/dist/types/next/components/head-tags.d.ts +19 -0
  343. package/dist/types/next/components/head-tags.d.ts.map +1 -0
  344. package/dist/types/next/components/page.d.ts +7 -0
  345. package/dist/types/next/components/page.d.ts.map +1 -0
  346. package/dist/types/next/context/makeswift-host-api-client.d.ts +8 -0
  347. package/dist/types/next/context/makeswift-host-api-client.d.ts.map +1 -0
  348. package/dist/types/next/context/react-runtime.d.ts +8 -0
  349. package/dist/types/next/context/react-runtime.d.ts.map +1 -0
  350. package/dist/types/next/draft-mode/draft-mode-script.d.ts +6 -0
  351. package/dist/types/next/draft-mode/draft-mode-script.d.ts.map +1 -0
  352. package/dist/types/next/draft-mode/index.d.ts +15 -0
  353. package/dist/types/next/draft-mode/index.d.ts.map +1 -0
  354. package/dist/types/next/hooks/use-is-pages-router.d.ts +2 -0
  355. package/dist/types/next/hooks/use-is-pages-router.d.ts.map +1 -0
  356. package/dist/types/next/index.d.ts +4 -9
  357. package/dist/types/next/index.d.ts.map +1 -1
  358. package/dist/types/next/preview-mode.d.ts +1 -1
  359. package/dist/types/next/preview-mode.d.ts.map +1 -1
  360. package/dist/types/next/root-style-registry.d.ts +7 -0
  361. package/dist/types/next/root-style-registry.d.ts.map +1 -0
  362. package/dist/types/next/server.d.ts +2 -0
  363. package/dist/types/next/server.d.ts.map +1 -1
  364. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  365. package/dist/types/runtimes/react/components/LiveProvider.d.ts +3 -5
  366. package/dist/types/runtimes/react/components/LiveProvider.d.ts.map +1 -1
  367. package/dist/types/runtimes/react/components/PreviewProvider.d.ts +3 -5
  368. package/dist/types/runtimes/react/components/PreviewProvider.d.ts.map +1 -1
  369. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts +2 -2
  370. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
  371. package/dist/types/runtimes/react/controls/link.d.ts.map +1 -1
  372. package/dist/types/runtimes/react/controls/rich-text/rich-text.d.ts.map +1 -1
  373. package/dist/types/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  374. package/dist/types/runtimes/react/hooks/makeswift-api.d.ts +2 -1
  375. package/dist/types/runtimes/react/hooks/makeswift-api.d.ts.map +1 -1
  376. package/dist/types/runtimes/react/hooks/use-document-key.d.ts.map +1 -1
  377. package/dist/types/runtimes/react/hooks/use-page-id.d.ts.map +1 -1
  378. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  379. package/dist/types/runtimes/react/use-global-style.d.ts.map +1 -1
  380. package/dist/types/runtimes/react/use-style.d.ts.map +1 -1
  381. package/dist/types/state/actions.d.ts +1 -19
  382. package/dist/types/state/actions.d.ts.map +1 -1
  383. package/dist/types/state/react-builder-preview.d.ts +3 -3
  384. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  385. package/next/plugin/package.json +1 -0
  386. package/package.json +6 -10
  387. package/slate/package.json +1 -1
  388. package/dist/cjs/next/dynamic.js +0 -52
  389. package/dist/cjs/next/dynamic.js.map +0 -1
  390. package/dist/esm/next/dynamic.js +0 -31
  391. package/dist/esm/next/dynamic.js.map +0 -1
  392. package/dist/types/next/dynamic.d.ts +0 -13
  393. package/dist/types/next/dynamic.d.ts.map +0 -1
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var HeadSnippet_exports = {};
30
+ __export(HeadSnippet_exports, {
31
+ HeadSnippet: () => HeadSnippet
32
+ });
33
+ module.exports = __toCommonJS(HeadSnippet_exports);
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var import_react = require("react");
36
+ var import_navigation = require("next/navigation");
37
+ var import_html_react_parser = __toESM(require("html-react-parser"));
38
+ var import_head = __toESM(require("next/head"));
39
+ var import_use_is_pages_router = require("../../next/hooks/use-is-pages-router");
40
+ function HeadSnippet({ snippet }) {
41
+ const isPagesRouter = (0, import_use_is_pages_router.useIsPagesRouter)();
42
+ (0, import_react.useEffect)(() => {
43
+ if (isPagesRouter) {
44
+ return () => {
45
+ const snippetElements2 = getSnippetElementsFromDOM(snippet);
46
+ if (snippetElements2.length > 0)
47
+ return;
48
+ cleanUpSnippet(snippet);
49
+ };
50
+ }
51
+ const snippetElements = getSnippetElementsFromDOM(snippet);
52
+ const isAlreadyInTheDOM = snippetElements.length > 0;
53
+ if (isAlreadyInTheDOM)
54
+ return;
55
+ return renderSnippetAndExecuteScripts(snippet, document.head);
56
+ }, [isPagesRouter, snippet]);
57
+ const headSnippetElement = snippetToElement(snippet);
58
+ const insertedServerHTML = (0, import_react.useRef)(false);
59
+ (0, import_navigation.useServerInsertedHTML)(() => {
60
+ if (isPagesRouter || insertedServerHTML.current)
61
+ return;
62
+ insertedServerHTML.current = true;
63
+ return headSnippetElement;
64
+ });
65
+ if (isPagesRouter) {
66
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head.default, { children: headSnippetElement });
67
+ }
68
+ return null;
69
+ }
70
+ const SNIPPET_ID_ATRIBUTE_NAME = "data-makeswift-snippet-id";
71
+ const VALID_HEAD_ELEMENT_TYPES = [
72
+ "title",
73
+ "base",
74
+ "link",
75
+ "style",
76
+ "meta",
77
+ "script",
78
+ "noscript",
79
+ "template"
80
+ ];
81
+ function snippetToElement(snippet) {
82
+ return import_react.Children.map((0, import_html_react_parser.default)(snippet.code), (element) => {
83
+ if (typeof element === "string")
84
+ return element;
85
+ if (!VALID_HEAD_ELEMENT_TYPES.includes(element.type))
86
+ return null;
87
+ const key = element.key ? `${snippet.id}:${element.key}` : snippet.id;
88
+ return (0, import_react.createElement)(element.type, {
89
+ ...element.props,
90
+ key,
91
+ [SNIPPET_ID_ATRIBUTE_NAME]: snippet.id
92
+ });
93
+ });
94
+ }
95
+ function renderSnippetAndExecuteScripts(snippet, container) {
96
+ const virtualContainer = container.ownerDocument.createElement(container.tagName);
97
+ virtualContainer.innerHTML = snippet.code;
98
+ const elements = Array.from(virtualContainer.querySelectorAll("*"));
99
+ const scripts = elements.filter((el) => el instanceof HTMLScriptElement);
100
+ scripts.forEach((script) => {
101
+ const clone = script.ownerDocument.createElement(script.tagName);
102
+ clone.textContent = script.textContent;
103
+ Array.from(script.attributes).forEach(({ name, value }) => {
104
+ clone.setAttribute(name, value);
105
+ });
106
+ clone.setAttribute(SNIPPET_ID_ATRIBUTE_NAME, snippet.id);
107
+ script.parentNode?.replaceChild(clone, script);
108
+ });
109
+ const nodes = Array.from(virtualContainer.childNodes);
110
+ container.append(...nodes);
111
+ return () => {
112
+ nodes.forEach((node) => {
113
+ node.parentNode?.removeChild(node);
114
+ });
115
+ cleanUpSnippet(snippet);
116
+ };
117
+ }
118
+ function cleanUpSnippet(snippet) {
119
+ if (snippet.cleanup == null)
120
+ return;
121
+ try {
122
+ const cleanUp = new Function(snippet.cleanup);
123
+ cleanUp();
124
+ } catch {
125
+ }
126
+ }
127
+ function getSnippetElementsFromDOM(snippet) {
128
+ return document.head.querySelectorAll(`[${SNIPPET_ID_ATRIBUTE_NAME}="${snippet.id}"]`);
129
+ }
130
+ // Annotate the CommonJS export names for ESM import in node:
131
+ 0 && (module.exports = {
132
+ HeadSnippet
133
+ });
134
+ //# sourceMappingURL=HeadSnippet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/page/HeadSnippet.tsx"],"sourcesContent":["import { Children, createElement, useEffect, useRef } from 'react'\nimport { Snippet } from '../hooks/usePageSnippets'\nimport { useServerInsertedHTML } from 'next/navigation'\nimport parse from 'html-react-parser'\nimport Head from 'next/head'\nimport { useIsPagesRouter } from '../../next/hooks/use-is-pages-router'\n\ntype Props = {\n snippet: Snippet\n}\n\nexport function HeadSnippet({ snippet }: Props) {\n const isPagesRouter = useIsPagesRouter()\n\n useEffect(() => {\n if (isPagesRouter) {\n return () => {\n const snippetElements = getSnippetElementsFromDOM(snippet)\n if (snippetElements.length > 0) return\n cleanUpSnippet(snippet)\n }\n }\n\n const snippetElements = getSnippetElementsFromDOM(snippet)\n const isAlreadyInTheDOM = snippetElements.length > 0\n\n if (isAlreadyInTheDOM) return\n\n return renderSnippetAndExecuteScripts(snippet, document.head)\n }, [isPagesRouter, snippet])\n\n const headSnippetElement = snippetToElement(snippet)\n const insertedServerHTML = useRef(false)\n\n useServerInsertedHTML(() => {\n if (isPagesRouter || insertedServerHTML.current) return\n\n insertedServerHTML.current = true\n\n return headSnippetElement\n })\n\n if (isPagesRouter) {\n return <Head>{headSnippetElement}</Head>\n }\n\n return null\n}\n\nconst SNIPPET_ID_ATRIBUTE_NAME = 'data-makeswift-snippet-id'\n\nconst VALID_HEAD_ELEMENT_TYPES = [\n 'title',\n 'base',\n 'link',\n 'style',\n 'meta',\n 'script',\n 'noscript',\n 'template',\n]\n\nfunction snippetToElement(snippet: Pick<Snippet, 'id' | 'code'>): (string | JSX.Element)[] {\n return Children.map(parse(snippet.code), element => {\n if (typeof element === 'string') return element\n\n if (!VALID_HEAD_ELEMENT_TYPES.includes(element.type as string)) return null\n\n const key = element.key ? `${snippet.id}:${element.key}` : snippet.id\n\n return createElement(element.type, {\n ...element.props,\n key,\n [SNIPPET_ID_ATRIBUTE_NAME]: snippet.id,\n })\n })\n}\n\nfunction renderSnippetAndExecuteScripts(snippet: Snippet, container: HTMLElement): () => void {\n const virtualContainer = container.ownerDocument.createElement(container.tagName)\n\n virtualContainer.innerHTML = snippet.code\n\n const elements = Array.from(virtualContainer.querySelectorAll('*'))\n const scripts = elements.filter(el => el instanceof HTMLScriptElement)\n\n scripts.forEach(script => {\n const clone = script.ownerDocument.createElement(script.tagName)\n\n clone.textContent = script.textContent\n Array.from(script.attributes).forEach(({ name, value }) => {\n clone.setAttribute(name, value)\n })\n clone.setAttribute(SNIPPET_ID_ATRIBUTE_NAME, snippet.id)\n script.parentNode?.replaceChild(clone, script)\n })\n\n const nodes = Array.from(virtualContainer.childNodes)\n container.append(...nodes)\n\n return () => {\n nodes.forEach(node => {\n node.parentNode?.removeChild(node)\n })\n\n cleanUpSnippet(snippet)\n }\n}\n\nfunction cleanUpSnippet(snippet: Snippet): void {\n if (snippet.cleanup == null) return\n try {\n const cleanUp = new Function(snippet.cleanup)\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n}\n\nfunction getSnippetElementsFromDOM(snippet: Snippet) {\n return document.head.querySelectorAll(`[${SNIPPET_ID_ATRIBUTE_NAME}=\"${snippet.id}\"]`)\n}\n"],"mappings":"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","names":["snippetElements","Head","parse"]}
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  "use client";
3
- var __create = Object.create;
4
3
  var __defProp = Object.defineProperty;
5
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
7
  var __export = (target, all) => {
10
8
  for (var name in all)
@@ -18,14 +16,6 @@ var __copyProps = (to, from, except, desc) => {
18
16
  }
19
17
  return to;
20
18
  };
21
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
- // If the importer is in node compatibility mode or this is not an ESM
23
- // file that has been converted to a CommonJS file using a Babel-
24
- // compatible transform (i.e. "__esModule" has not been set), then set
25
- // "default" to the CommonJS "module.exports" for node compatibility.
26
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
- mod
28
- ));
29
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
20
  var Page_exports = {};
31
21
  __export(Page_exports, {
@@ -33,182 +23,23 @@ __export(Page_exports, {
33
23
  });
34
24
  module.exports = __toCommonJS(Page_exports);
35
25
  var import_jsx_runtime = require("react/jsx-runtime");
36
- var import_react = require("react");
37
- var import_shim = require("use-sync-external-store/shim");
38
- var import_html_react_parser = __toESM(require("html-react-parser"));
39
- var import_head = __toESM(require("next/head"));
40
26
  var import_BodySnippet = require("./BodySnippet");
41
- var import_react2 = require("../../runtimes/react");
27
+ var import_react = require("../../runtimes/react");
42
28
  var import_react_page = require("../../state/react-page");
43
- var import_react3 = require("../../api/react");
44
- var import_react4 = require("../../react");
45
- var import_deepEqual = __toESM(require("../../utils/deepEqual"));
46
- const SnippetLocation = {
47
- Body: "BODY",
48
- Head: "HEAD"
49
- };
50
- const defaultFavicon = {
51
- mimetype: "image/png",
52
- publicUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC"
53
- };
54
- const VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\-\d]*$/;
55
- const VALID_HEAD_ELEMENT_TYPES = [
56
- "title",
57
- "base",
58
- "link",
59
- "style",
60
- "meta",
61
- "script",
62
- "noscript",
63
- "template"
64
- ];
65
- function snippetToElement(snippet) {
66
- return import_react.Children.map((0, import_html_react_parser.default)(snippet.code), (element) => {
67
- if (typeof element === "string")
68
- return element;
69
- if (!VALID_TAG_REGEX.test(element.type))
70
- return null;
71
- const key = element.key ? `${snippet.id}:${element.key}` : snippet.id;
72
- return (0, import_react.createElement)(element.type, { ...element.props, key });
73
- });
74
- }
75
- const filterUsedSnippetProperties = ({
76
- code,
77
- builderEnabled,
78
- liveEnabled,
79
- location,
80
- cleanup
81
- }) => ({
82
- code,
83
- builderEnabled,
84
- liveEnabled,
85
- location,
86
- cleanup
87
- });
29
+ var import_useRouterLocaleSync = require("../hooks/useRouterLocaleSync");
30
+ var import_usePageSnippets = require("../hooks/usePageSnippets");
31
+ var import_PageHead = require("./PageHead");
88
32
  function Page({ document: page }) {
89
- const isInBuilder = (0, import_react4.useIsInBuilder)();
90
- const [snippets, setSnippets] = (0, import_react.useState)(page.snippets);
91
- const cachedPage = useCachedPage(isInBuilder ? page.id : null);
92
- (0, import_react.useEffect)(() => {
93
- if (cachedPage == null)
94
- return;
95
- const oldSnippets = snippets.map(filterUsedSnippetProperties);
96
- const newSnippets = cachedPage.snippets.map(filterUsedSnippetProperties);
97
- if ((0, import_deepEqual.default)(newSnippets, oldSnippets))
98
- return;
99
- setSnippets(cachedPage.snippets);
100
- }, [cachedPage]);
101
- const site = useCachedSite(isInBuilder ? page.site.id : null);
33
+ const { bodySnippets } = (0, import_usePageSnippets.usePageSnippets)({ page });
102
34
  const baseLocalizedPage = page.localizedPages.find(({ parentId }) => parentId == null);
103
- const favicon = page.meta.favicon ?? defaultFavicon;
104
- const title = baseLocalizedPage?.meta.title ?? page.meta.title;
105
- const description = baseLocalizedPage?.meta.description ?? page.meta.description;
106
- const keywords = baseLocalizedPage?.meta.keywords ?? page.meta.keywords;
107
- const socialImage = baseLocalizedPage?.meta.socialImage ?? page.meta.socialImage;
108
- const canonicalUrl = baseLocalizedPage?.seo.canonicalUrl ?? page.seo.canonicalUrl;
109
- const isIndexingBlocked = baseLocalizedPage?.seo.isIndexingBlocked ?? page.seo.isIndexingBlocked;
110
- const fontFamilyParamValue = (0, import_react.useMemo)(() => {
111
- if (site == null) {
112
- return page.fonts.map(({ family, variants }) => {
113
- return `${family.replace(/ /g, "+")}:${variants.join()}`;
114
- }).join("|");
115
- }
116
- return site.googleFonts.edges.filter((edge) => edge != null).map(({ activeVariants, node: { family, variants } }) => {
117
- const activeVariantSpecifiers = variants.filter(
118
- (variant) => activeVariants.some((activeVariant) => activeVariant.specifier === variant.specifier)
119
- ).map((variant) => variant.specifier).join();
120
- return `${family.replace(/ /g, "+")}:${activeVariantSpecifiers}`;
121
- }).join("|");
122
- }, [site, page]);
123
- const filteredSnippets = (0, import_react.useMemo)(
124
- () => snippets.filter((snippet) => isInBuilder ? snippet.builderEnabled : snippet.liveEnabled),
125
- [snippets, isInBuilder]
126
- );
127
- const headSnippets = (0, import_react.useMemo)(
128
- () => filteredSnippets.filter((snippet) => snippet.location === SnippetLocation.Head),
129
- [filteredSnippets]
130
- );
131
- const previousHeadSnippets = (0, import_react.useRef)(null);
132
- (0, import_react.useEffect)(() => {
133
- const headSnippetsToCleanUp = (previousHeadSnippets.current ?? []).filter((previousSnippet) => previousSnippet.cleanup != null).filter((previousSnippet) => !headSnippets.some((snippet) => previousSnippet.id === snippet.id));
134
- headSnippetsToCleanUp.forEach((snippetToCleanUp) => {
135
- if (snippetToCleanUp.cleanup == null)
136
- return;
137
- const cleanUp = new Function(snippetToCleanUp.cleanup);
138
- try {
139
- cleanUp();
140
- } catch {
141
- }
142
- });
143
- previousHeadSnippets.current = headSnippets;
144
- }, [headSnippets]);
145
35
  const documentId = baseLocalizedPage?.elementTreeId ?? page.id;
36
+ (0, import_useRouterLocaleSync.useRouterLocaleSync)();
146
37
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
147
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_head.default, { children: [
148
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { children: `
149
- html {
150
- font-family: sans-serif;
151
- }
152
- div#__next {
153
- overflow: hidden;
154
- }
155
- ` }),
156
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("link", { rel: "icon", type: favicon.mimetype, href: favicon.publicUrl }),
157
- canonicalUrl && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("link", { rel: "canonical", href: canonicalUrl }),
158
- isIndexingBlocked && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { name: "robots", content: "noindex" }),
159
- title && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
160
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: title }),
161
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { property: "og:title", content: title }),
162
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { name: "twitter:title", content: title }),
163
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { itemProp: "name", content: title })
164
- ] }),
165
- description && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
166
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { name: "description", content: description }),
167
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { property: "og:description", content: description }),
168
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { name: "twitter:description", content: description }),
169
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { itemProp: "description", content: description })
170
- ] }),
171
- keywords && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { name: "keywords", content: keywords }),
172
- socialImage && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
173
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { property: "og:image", content: socialImage.publicUrl }),
174
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { property: "og:image:type", content: socialImage.mimetype }),
175
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { name: "twitter:image", content: socialImage.publicUrl }),
176
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { name: "twitter:card", content: "summary_large_image" }),
177
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("meta", { itemProp: "image", content: socialImage.publicUrl })
178
- ] }),
179
- fontFamilyParamValue !== "" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
180
- "link",
181
- {
182
- rel: "stylesheet",
183
- href: `https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`
184
- }
185
- ) }),
186
- headSnippets.map(snippetToElement).map(
187
- (children) => import_react.Children.map(children, (child) => {
188
- if (typeof child === "string")
189
- return child;
190
- if (VALID_HEAD_ELEMENT_TYPES.includes(child.type))
191
- return child;
192
- return null;
193
- })
194
- )
195
- ] }),
196
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react2.DocumentReference, { documentReference: (0, import_react_page.createDocumentReference)(documentId) }),
197
- filteredSnippets.filter((snippet) => snippet.location === SnippetLocation.Body).map((snippet) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_BodySnippet.BodySnippet, { code: snippet.code, cleanup: snippet.cleanup }, snippet.id))
38
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_PageHead.PageHead, { document: page }),
39
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.DocumentReference, { documentReference: (0, import_react_page.createDocumentReference)(documentId) }),
40
+ bodySnippets.map((snippet) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_BodySnippet.BodySnippet, { code: snippet.code, cleanup: snippet.cleanup }, snippet.id))
198
41
  ] });
199
42
  }
200
- function useCachedPage(pageId) {
201
- const client = (0, import_react3.useMakeswiftClient)();
202
- const getSnapshot = () => pageId == null ? null : client.readPage(pageId);
203
- const page = (0, import_shim.useSyncExternalStore)(client.subscribe, getSnapshot, getSnapshot);
204
- return page;
205
- }
206
- function useCachedSite(siteId) {
207
- const client = (0, import_react3.useMakeswiftClient)();
208
- const getSnapshot = () => siteId == null ? null : client.readSite(siteId);
209
- const site = (0, import_shim.useSyncExternalStore)(client.subscribe, getSnapshot, getSnapshot);
210
- return site;
211
- }
212
43
  // Annotate the CommonJS export names for ESM import in node:
213
44
  0 && (module.exports = {
214
45
  Page
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/page/Page.tsx"],"sourcesContent":["'use client'\n\nimport { ReactElement, Children, createElement, useMemo, useEffect, useRef, useState } from 'react'\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport parse from 'html-react-parser'\nimport Head from 'next/head'\n\nimport { BodySnippet } from './BodySnippet'\nimport { DocumentReference } from '../../runtimes/react'\nimport { createDocumentReference } from '../../state/react-page'\nimport { useMakeswiftClient } from '../../api/react'\nimport { useIsInBuilder } from '../../react'\nimport deepEqual from '../../utils/deepEqual'\nimport { MakeswiftPageDocument } from '../../next'\nimport { Page as PageType, Site } from '../../api'\n\nconst SnippetLocation = {\n Body: 'BODY',\n Head: 'HEAD',\n} as const\n\ntype SnippetLocation = typeof SnippetLocation[keyof typeof SnippetLocation]\n\ntype Snippet = {\n builderEnabled: boolean\n cleanup: string | null\n code: string\n id: string\n liveEnabled: boolean\n location: SnippetLocation\n}\n\nconst defaultFavicon = {\n mimetype: 'image/png',\n publicUrl:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC',\n}\n\n// Taken from https://github.com/facebook/react/blob/14bac6193a334eda42e727336e8967419f08f5df/packages/react-dom/src/server/ReactPartialRenderer.js#L208\nconst VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\\-\\d]*$/\n\nconst VALID_HEAD_ELEMENT_TYPES = [\n 'title',\n 'base',\n 'link',\n 'style',\n 'meta',\n 'script',\n 'noscript',\n 'template',\n]\n\nfunction snippetToElement(snippet: Pick<Snippet, 'id' | 'code'>): (string | ReactElement)[] {\n return Children.map(parse(snippet.code), element => {\n if (typeof element === 'string') return element\n\n if (!VALID_TAG_REGEX.test(element.type)) return null\n\n const key = element.key ? `${snippet.id}:${element.key}` : snippet.id\n\n return createElement(element.type, { ...element.props, key })\n })\n}\n\nconst filterUsedSnippetProperties = ({\n code,\n builderEnabled,\n liveEnabled,\n location,\n cleanup,\n}: Snippet) => ({\n code,\n builderEnabled,\n liveEnabled,\n location,\n cleanup,\n})\n\ntype Props = {\n document: MakeswiftPageDocument\n}\n\nexport function Page({ document: page }: Props): JSX.Element {\n const isInBuilder = useIsInBuilder()\n const [snippets, setSnippets] = useState(page.snippets)\n // We're using cached results here for page snippets and site fonts so that anytime the user\n // changes the snippets or fonts on the builder, the change would be reflected here.\n // See this PR for discussions and things we can do to improve it in the future:\n // https://github.com/makeswift/makeswift/pull/77\n const cachedPage = useCachedPage(isInBuilder ? page.id : null)\n useEffect(() => {\n if (cachedPage == null) return\n\n const oldSnippets = snippets.map(filterUsedSnippetProperties)\n const newSnippets = cachedPage.snippets.map(filterUsedSnippetProperties)\n\n if (deepEqual(newSnippets, oldSnippets)) return\n\n setSnippets(cachedPage.snippets)\n }, [cachedPage])\n const site = useCachedSite(isInBuilder ? page.site.id : null)\n\n const baseLocalizedPage = page.localizedPages.find(({ parentId }) => parentId == null)\n const favicon = page.meta.favicon ?? defaultFavicon\n const title = baseLocalizedPage?.meta.title ?? page.meta.title\n const description = baseLocalizedPage?.meta.description ?? page.meta.description\n const keywords = baseLocalizedPage?.meta.keywords ?? page.meta.keywords\n const socialImage = baseLocalizedPage?.meta.socialImage ?? page.meta.socialImage\n const canonicalUrl = baseLocalizedPage?.seo.canonicalUrl ?? page.seo.canonicalUrl\n const isIndexingBlocked = baseLocalizedPage?.seo.isIndexingBlocked ?? page.seo.isIndexingBlocked\n\n const fontFamilyParamValue = useMemo(() => {\n if (site == null) {\n return page.fonts\n .map(({ family, variants }) => {\n return `${family.replace(/ /g, '+')}:${variants.join()}`\n })\n .join('|')\n }\n\n return site.googleFonts.edges\n .filter((edge): edge is NonNullable<typeof edge> => edge != null)\n .map(({ activeVariants, node: { family, variants } }) => {\n const activeVariantSpecifiers = variants\n .filter(variant =>\n activeVariants.some(activeVariant => activeVariant.specifier === variant.specifier),\n )\n .map(variant => variant.specifier)\n .join()\n\n return `${family.replace(/ /g, '+')}:${activeVariantSpecifiers}`\n })\n .join('|')\n }, [site, page])\n\n const filteredSnippets = useMemo(\n () => snippets.filter(snippet => (isInBuilder ? snippet.builderEnabled : snippet.liveEnabled)),\n [snippets, isInBuilder],\n )\n const headSnippets = useMemo(\n () => filteredSnippets.filter(snippet => snippet.location === SnippetLocation.Head),\n [filteredSnippets],\n )\n\n const previousHeadSnippets = useRef<MakeswiftPageDocument['snippets'] | null>(null)\n useEffect(() => {\n const headSnippetsToCleanUp = (previousHeadSnippets.current ?? [])\n .filter(previousSnippet => previousSnippet.cleanup != null)\n .filter(previousSnippet => !headSnippets.some(snippet => previousSnippet.id === snippet.id))\n\n headSnippetsToCleanUp.forEach(snippetToCleanUp => {\n if (snippetToCleanUp.cleanup == null) return\n\n const cleanUp = new Function(snippetToCleanUp.cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n })\n\n previousHeadSnippets.current = headSnippets\n }, [headSnippets])\n\n const documentId = baseLocalizedPage?.elementTreeId ?? page.id\n\n return (\n <>\n <Head>\n <style>\n {`\n html {\n font-family: sans-serif;\n }\n div#__next {\n overflow: hidden;\n }\n `}\n </style>\n\n <link rel=\"icon\" type={favicon.mimetype} href={favicon.publicUrl} />\n\n {canonicalUrl && <link rel=\"canonical\" href={canonicalUrl} />}\n\n {isIndexingBlocked && <meta name=\"robots\" content=\"noindex\" />}\n\n {title && (\n <>\n <title>{title}</title>\n <meta property=\"og:title\" content={title} />\n <meta name=\"twitter:title\" content={title} />\n <meta itemProp=\"name\" content={title} />\n </>\n )}\n\n {description && (\n <>\n <meta name=\"description\" content={description} />\n <meta property=\"og:description\" content={description} />\n <meta name=\"twitter:description\" content={description} />\n <meta itemProp=\"description\" content={description} />\n </>\n )}\n\n {keywords && <meta name=\"keywords\" content={keywords} />}\n\n {socialImage && (\n <>\n <meta property=\"og:image\" content={socialImage.publicUrl} />\n <meta property=\"og:image:type\" content={socialImage.mimetype} />\n <meta name=\"twitter:image\" content={socialImage.publicUrl} />\n <meta name=\"twitter:card\" content=\"summary_large_image\" />\n <meta itemProp=\"image\" content={socialImage.publicUrl} />\n </>\n )}\n\n {fontFamilyParamValue !== '' && (\n <>\n <link\n rel=\"stylesheet\"\n href={`https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`}\n />\n </>\n )}\n\n {headSnippets.map(snippetToElement).map(children =>\n Children.map(children, child => {\n if (typeof child === 'string') return child\n\n if (VALID_HEAD_ELEMENT_TYPES.includes(child.type as string)) return child\n\n return null\n }),\n )}\n </Head>\n\n <DocumentReference documentReference={createDocumentReference(documentId)} />\n\n {filteredSnippets\n .filter(snippet => snippet.location === SnippetLocation.Body)\n .map(snippet => (\n <BodySnippet key={snippet.id} code={snippet.code} cleanup={snippet.cleanup} />\n ))}\n </>\n )\n}\n\nfunction useCachedPage(pageId: string | null): PageType | null {\n const client = useMakeswiftClient()\n const getSnapshot = () => (pageId == null ? null : client.readPage(pageId))\n\n const page = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n return page\n}\n\nfunction useCachedSite(siteId: string | null): Site | null {\n const client = useMakeswiftClient()\n const getSnapshot = () => (siteId == null ? null : client.readSite(siteId))\n\n const site = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n return site\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0KQ;AAxKR,mBAA4F;AAC5F,kBAAqC;AACrC,+BAAkB;AAClB,kBAAiB;AAEjB,yBAA4B;AAC5B,IAAAA,gBAAkC;AAClC,wBAAwC;AACxC,IAAAA,gBAAmC;AACnC,IAAAA,gBAA+B;AAC/B,uBAAsB;AAItB,MAAM,kBAAkB;AAAA,EACtB,MAAM;AAAA,EACN,MAAM;AACR;AAaA,MAAM,iBAAiB;AAAA,EACrB,UAAU;AAAA,EACV,WACE;AACJ;AAGA,MAAM,kBAAkB;AAExB,MAAM,2BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,iBAAiB,SAAkE;AAC1F,SAAO,sBAAS,QAAI,yBAAAC,SAAM,QAAQ,IAAI,GAAG,aAAW;AAClD,QAAI,OAAO,YAAY;AAAU,aAAO;AAExC,QAAI,CAAC,gBAAgB,KAAK,QAAQ,IAAI;AAAG,aAAO;AAEhD,UAAM,MAAM,QAAQ,MAAM,GAAG,QAAQ,EAAE,IAAI,QAAQ,GAAG,KAAK,QAAQ;AAEnE,eAAO,4BAAc,QAAQ,MAAM,EAAE,GAAG,QAAQ,OAAO,IAAI,CAAC;AAAA,EAC9D,CAAC;AACH;AAEA,MAAM,8BAA8B,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,OAAgB;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMO,SAAS,KAAK,EAAE,UAAU,KAAK,GAAuB;AAC3D,QAAM,kBAAc,8BAAe;AACnC,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK,QAAQ;AAKtD,QAAM,aAAa,cAAc,cAAc,KAAK,KAAK,IAAI;AAC7D,8BAAU,MAAM;AACd,QAAI,cAAc;AAAM;AAExB,UAAM,cAAc,SAAS,IAAI,2BAA2B;AAC5D,UAAM,cAAc,WAAW,SAAS,IAAI,2BAA2B;AAEvE,YAAI,iBAAAC,SAAU,aAAa,WAAW;AAAG;AAEzC,gBAAY,WAAW,QAAQ;AAAA,EACjC,GAAG,CAAC,UAAU,CAAC;AACf,QAAM,OAAO,cAAc,cAAc,KAAK,KAAK,KAAK,IAAI;AAE5D,QAAM,oBAAoB,KAAK,eAAe,KAAK,CAAC,EAAE,SAAS,MAAM,YAAY,IAAI;AACrF,QAAM,UAAU,KAAK,KAAK,WAAW;AACrC,QAAM,QAAQ,mBAAmB,KAAK,SAAS,KAAK,KAAK;AACzD,QAAM,cAAc,mBAAmB,KAAK,eAAe,KAAK,KAAK;AACrE,QAAM,WAAW,mBAAmB,KAAK,YAAY,KAAK,KAAK;AAC/D,QAAM,cAAc,mBAAmB,KAAK,eAAe,KAAK,KAAK;AACrE,QAAM,eAAe,mBAAmB,IAAI,gBAAgB,KAAK,IAAI;AACrE,QAAM,oBAAoB,mBAAmB,IAAI,qBAAqB,KAAK,IAAI;AAE/E,QAAM,2BAAuB,sBAAQ,MAAM;AACzC,QAAI,QAAQ,MAAM;AAChB,aAAO,KAAK,MACT,IAAI,CAAC,EAAE,QAAQ,SAAS,MAAM;AAC7B,eAAO,GAAG,OAAO,QAAQ,MAAM,GAAG,CAAC,IAAI,SAAS,KAAK,CAAC;AAAA,MACxD,CAAC,EACA,KAAK,GAAG;AAAA,IACb;AAEA,WAAO,KAAK,YAAY,MACrB,OAAO,CAAC,SAA2C,QAAQ,IAAI,EAC/D,IAAI,CAAC,EAAE,gBAAgB,MAAM,EAAE,QAAQ,SAAS,EAAE,MAAM;AACvD,YAAM,0BAA0B,SAC7B;AAAA,QAAO,aACN,eAAe,KAAK,mBAAiB,cAAc,cAAc,QAAQ,SAAS;AAAA,MACpF,EACC,IAAI,aAAW,QAAQ,SAAS,EAChC,KAAK;AAER,aAAO,GAAG,OAAO,QAAQ,MAAM,GAAG,CAAC,IAAI,uBAAuB;AAAA,IAChE,CAAC,EACA,KAAK,GAAG;AAAA,EACb,GAAG,CAAC,MAAM,IAAI,CAAC;AAEf,QAAM,uBAAmB;AAAA,IACvB,MAAM,SAAS,OAAO,aAAY,cAAc,QAAQ,iBAAiB,QAAQ,WAAY;AAAA,IAC7F,CAAC,UAAU,WAAW;AAAA,EACxB;AACA,QAAM,mBAAe;AAAA,IACnB,MAAM,iBAAiB,OAAO,aAAW,QAAQ,aAAa,gBAAgB,IAAI;AAAA,IAClF,CAAC,gBAAgB;AAAA,EACnB;AAEA,QAAM,2BAAuB,qBAAiD,IAAI;AAClF,8BAAU,MAAM;AACd,UAAM,yBAAyB,qBAAqB,WAAW,CAAC,GAC7D,OAAO,qBAAmB,gBAAgB,WAAW,IAAI,EACzD,OAAO,qBAAmB,CAAC,aAAa,KAAK,aAAW,gBAAgB,OAAO,QAAQ,EAAE,CAAC;AAE7F,0BAAsB,QAAQ,sBAAoB;AAChD,UAAI,iBAAiB,WAAW;AAAM;AAEtC,YAAM,UAAU,IAAI,SAAS,iBAAiB,OAAO;AAErD,UAAI;AACF,gBAAQ;AAAA,MACV,QAAQ;AAAA,MAER;AAAA,IACF,CAAC;AAED,yBAAqB,UAAU;AAAA,EACjC,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,aAAa,mBAAmB,iBAAiB,KAAK;AAE5D,SACE,4EACE;AAAA,iDAAC,YAAAC,SAAA,EACC;AAAA,kDAAC,WACE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAQH;AAAA,MAEA,4CAAC,UAAK,KAAI,QAAO,MAAM,QAAQ,UAAU,MAAM,QAAQ,WAAW;AAAA,MAEjE,gBAAgB,4CAAC,UAAK,KAAI,aAAY,MAAM,cAAc;AAAA,MAE1D,qBAAqB,4CAAC,UAAK,MAAK,UAAS,SAAQ,WAAU;AAAA,MAE3D,SACC,4EACE;AAAA,oDAAC,WAAO,iBAAM;AAAA,QACd,4CAAC,UAAK,UAAS,YAAW,SAAS,OAAO;AAAA,QAC1C,4CAAC,UAAK,MAAK,iBAAgB,SAAS,OAAO;AAAA,QAC3C,4CAAC,UAAK,UAAS,QAAO,SAAS,OAAO;AAAA,SACxC;AAAA,MAGD,eACC,4EACE;AAAA,oDAAC,UAAK,MAAK,eAAc,SAAS,aAAa;AAAA,QAC/C,4CAAC,UAAK,UAAS,kBAAiB,SAAS,aAAa;AAAA,QACtD,4CAAC,UAAK,MAAK,uBAAsB,SAAS,aAAa;AAAA,QACvD,4CAAC,UAAK,UAAS,eAAc,SAAS,aAAa;AAAA,SACrD;AAAA,MAGD,YAAY,4CAAC,UAAK,MAAK,YAAW,SAAS,UAAU;AAAA,MAErD,eACC,4EACE;AAAA,oDAAC,UAAK,UAAS,YAAW,SAAS,YAAY,WAAW;AAAA,QAC1D,4CAAC,UAAK,UAAS,iBAAgB,SAAS,YAAY,UAAU;AAAA,QAC9D,4CAAC,UAAK,MAAK,iBAAgB,SAAS,YAAY,WAAW;AAAA,QAC3D,4CAAC,UAAK,MAAK,gBAAe,SAAQ,uBAAsB;AAAA,QACxD,4CAAC,UAAK,UAAS,SAAQ,SAAS,YAAY,WAAW;AAAA,SACzD;AAAA,MAGD,yBAAyB,MACxB,2EACE;AAAA,QAAC;AAAA;AAAA,UACC,KAAI;AAAA,UACJ,MAAM,2CAA2C,oBAAoB;AAAA;AAAA,MACvE,GACF;AAAA,MAGD,aAAa,IAAI,gBAAgB,EAAE;AAAA,QAAI,cACtC,sBAAS,IAAI,UAAU,WAAS;AAC9B,cAAI,OAAO,UAAU;AAAU,mBAAO;AAEtC,cAAI,yBAAyB,SAAS,MAAM,IAAc;AAAG,mBAAO;AAEpE,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,OACF;AAAA,IAEA,4CAAC,mCAAkB,uBAAmB,2CAAwB,UAAU,GAAG;AAAA,IAE1E,iBACE,OAAO,aAAW,QAAQ,aAAa,gBAAgB,IAAI,EAC3D,IAAI,aACH,4CAAC,kCAA6B,MAAM,QAAQ,MAAM,SAAS,QAAQ,WAAjD,QAAQ,EAAkD,CAC7E;AAAA,KACL;AAEJ;AAEA,SAAS,cAAc,QAAwC;AAC7D,QAAM,aAAS,kCAAmB;AAClC,QAAM,cAAc,MAAO,UAAU,OAAO,OAAO,OAAO,SAAS,MAAM;AAEzE,QAAM,WAAO,kCAAqB,OAAO,WAAW,aAAa,WAAW;AAE5E,SAAO;AACT;AAEA,SAAS,cAAc,QAAoC;AACzD,QAAM,aAAS,kCAAmB;AAClC,QAAM,cAAc,MAAO,UAAU,OAAO,OAAO,OAAO,SAAS,MAAM;AAEzE,QAAM,WAAO,kCAAqB,OAAO,WAAW,aAAa,WAAW;AAE5E,SAAO;AACT;","names":["import_react","parse","deepEqual","Head"]}
1
+ {"version":3,"sources":["../../../../src/components/page/Page.tsx"],"sourcesContent":["'use client'\n\nimport { BodySnippet } from './BodySnippet'\nimport { DocumentReference } from '../../runtimes/react'\nimport { createDocumentReference } from '../../state/react-page'\nimport { MakeswiftPageDocument } from '../../next'\nimport { useRouterLocaleSync } from '../hooks/useRouterLocaleSync'\nimport { usePageSnippets } from '../hooks/usePageSnippets'\nimport { PageHead } from './PageHead'\n\ntype Props = {\n document: MakeswiftPageDocument\n}\n\nexport function Page({ document: page }: Props): JSX.Element {\n const { bodySnippets } = usePageSnippets({ page })\n\n const baseLocalizedPage = page.localizedPages.find(({ parentId }) => parentId == null)\n const documentId = baseLocalizedPage?.elementTreeId ?? page.id\n\n useRouterLocaleSync()\n\n return (\n <>\n <PageHead document={page} />\n\n <DocumentReference documentReference={createDocumentReference(documentId)} />\n\n {bodySnippets.map(snippet => (\n <BodySnippet key={snippet.id} code={snippet.code} cleanup={snippet.cleanup} />\n ))}\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBI;AArBJ,yBAA4B;AAC5B,mBAAkC;AAClC,wBAAwC;AAExC,iCAAoC;AACpC,6BAAgC;AAChC,sBAAyB;AAMlB,SAAS,KAAK,EAAE,UAAU,KAAK,GAAuB;AAC3D,QAAM,EAAE,aAAa,QAAI,wCAAgB,EAAE,KAAK,CAAC;AAEjD,QAAM,oBAAoB,KAAK,eAAe,KAAK,CAAC,EAAE,SAAS,MAAM,YAAY,IAAI;AACrF,QAAM,aAAa,mBAAmB,iBAAiB,KAAK;AAE5D,sDAAoB;AAEpB,SACE,4EACE;AAAA,gDAAC,4BAAS,UAAU,MAAM;AAAA,IAE1B,4CAAC,kCAAkB,uBAAmB,2CAAwB,UAAU,GAAG;AAAA,IAE1E,aAAa,IAAI,aAChB,4CAAC,kCAA6B,MAAM,QAAQ,MAAM,SAAS,QAAQ,WAAjD,QAAQ,EAAkD,CAC7E;AAAA,KACH;AAEJ;","names":[]}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var PageHead_exports = {};
21
+ __export(PageHead_exports, {
22
+ PageHead: () => PageHead
23
+ });
24
+ module.exports = __toCommonJS(PageHead_exports);
25
+ var import_jsx_runtime = require("react/jsx-runtime");
26
+ var import_react = require("react");
27
+ var import_usePageSnippets = require("../hooks/usePageSnippets");
28
+ var import_react2 = require("../../react");
29
+ var import_makeswift_host_api_client = require("../../next/context/makeswift-host-api-client");
30
+ var import_shim = require("use-sync-external-store/shim");
31
+ var import_head_tags = require("../../next/components/head-tags");
32
+ var import_HeadSnippet = require("./HeadSnippet");
33
+ const defaultFavicon = {
34
+ id: "default-favicon",
35
+ mimetype: "image/png",
36
+ publicUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC"
37
+ };
38
+ function PageHead({ document: page }) {
39
+ const { headSnippets } = (0, import_usePageSnippets.usePageSnippets)({ page });
40
+ const isInBuilder = (0, import_react2.useIsInBuilder)();
41
+ const site = useCachedSite(isInBuilder ? page.site.id : null);
42
+ const baseLocalizedPage = page.localizedPages.find(({ parentId }) => parentId == null);
43
+ const favicon = page.meta.favicon ?? defaultFavicon;
44
+ const title = baseLocalizedPage?.meta.title ?? page.meta.title;
45
+ const description = baseLocalizedPage?.meta.description ?? page.meta.description;
46
+ const keywords = baseLocalizedPage?.meta.keywords ?? page.meta.keywords;
47
+ const socialImage = baseLocalizedPage?.meta.socialImage ?? page.meta.socialImage;
48
+ const canonicalUrl = baseLocalizedPage?.seo.canonicalUrl ?? page.seo.canonicalUrl;
49
+ const isIndexingBlocked = baseLocalizedPage?.seo.isIndexingBlocked ?? page.seo.isIndexingBlocked;
50
+ const fontFamilyParamValue = (0, import_react.useMemo)(() => {
51
+ if (site == null) {
52
+ return page.fonts.map(({ family, variants }) => {
53
+ return `${family.replace(/ /g, "+")}:${variants.join()}`;
54
+ }).join("|");
55
+ }
56
+ return site.googleFonts.edges.filter((edge) => edge != null).map(({ activeVariants, node: { family, variants } }) => {
57
+ const activeVariantSpecifiers = variants.filter(
58
+ (variant) => activeVariants.some((activeVariant) => activeVariant.specifier === variant.specifier)
59
+ ).map((variant) => variant.specifier).join();
60
+ return `${family.replace(/ /g, "+")}:${activeVariantSpecifiers}`;
61
+ }).join("|");
62
+ }, [site, page]);
63
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageStyle, { precedence: "high", href: "makeswift-base-styles", children: `
65
+ html {
66
+ font-family: sans-serif;
67
+ }
68
+ div#__next {
69
+ overflow: hidden;
70
+ }
71
+ ` }),
72
+ title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageTitle, { children: title }),
73
+ favicon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageLink, { rel: "icon", type: favicon.mimetype, href: favicon.publicUrl }),
74
+ canonicalUrl && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageLink, { rel: "canonical", href: canonicalUrl }),
75
+ isIndexingBlocked && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageMeta, { name: "robots", content: "noindex" }),
76
+ description && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
77
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageMeta, { name: "description", content: description }),
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageMeta, { property: "og:description", content: description }),
79
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageMeta, { name: "twitter:description", content: description })
80
+ ] }),
81
+ keywords && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageMeta, { name: "keywords", content: keywords }),
82
+ socialImage && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
83
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageMeta, { property: "og:image", content: socialImage.publicUrl }),
84
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageMeta, { property: "og:image:type", content: socialImage.mimetype }),
85
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageMeta, { name: "twitter:image", content: socialImage.publicUrl }),
86
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head_tags.PageMeta, { name: "twitter:card", content: "summary_large_image" })
87
+ ] }),
88
+ fontFamilyParamValue !== "" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
89
+ import_head_tags.PageLink,
90
+ {
91
+ precedence: "medium",
92
+ rel: "stylesheet",
93
+ href: `https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`
94
+ }
95
+ ),
96
+ headSnippets.map((snippet) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_HeadSnippet.HeadSnippet, { snippet }, snippet.id))
97
+ ] });
98
+ }
99
+ function useCachedSite(siteId) {
100
+ const client = (0, import_makeswift_host_api_client.useMakeswiftHostApiClient)();
101
+ const getSnapshot = () => siteId == null ? null : client.readSite(siteId);
102
+ const site = (0, import_shim.useSyncExternalStore)(client.subscribe, getSnapshot, getSnapshot);
103
+ return site;
104
+ }
105
+ // Annotate the CommonJS export names for ESM import in node:
106
+ 0 && (module.exports = {
107
+ PageHead
108
+ });
109
+ //# sourceMappingURL=PageHead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/page/PageHead.tsx"],"sourcesContent":["'use client'\n\nimport { useMemo } from 'react'\nimport { MakeswiftPageDocument } from '../../next'\nimport { usePageSnippets } from '../hooks/usePageSnippets'\nimport { useIsInBuilder } from '../../react'\nimport { useMakeswiftHostApiClient } from '../../next/context/makeswift-host-api-client'\nimport { useSyncExternalStore } from 'use-sync-external-store/shim'\nimport { Site } from '../../api'\nimport { PageTitle, PageMeta, PageLink, PageStyle } from '../../next/components/head-tags'\nimport { HeadSnippet } from './HeadSnippet'\n\nconst defaultFavicon = {\n id: 'default-favicon',\n mimetype: 'image/png',\n publicUrl:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC',\n}\n\ntype Props = {\n document: MakeswiftPageDocument\n}\n\nexport function PageHead({ document: page }: Props): JSX.Element {\n const { headSnippets } = usePageSnippets({ page })\n\n const isInBuilder = useIsInBuilder()\n\n const site = useCachedSite(isInBuilder ? page.site.id : null)\n const baseLocalizedPage = page.localizedPages.find(({ parentId }) => parentId == null)\n\n const favicon = page.meta.favicon ?? defaultFavicon\n const title = baseLocalizedPage?.meta.title ?? page.meta.title\n const description = baseLocalizedPage?.meta.description ?? page.meta.description\n const keywords = baseLocalizedPage?.meta.keywords ?? page.meta.keywords\n const socialImage = baseLocalizedPage?.meta.socialImage ?? page.meta.socialImage\n const canonicalUrl = baseLocalizedPage?.seo.canonicalUrl ?? page.seo.canonicalUrl\n const isIndexingBlocked = baseLocalizedPage?.seo.isIndexingBlocked ?? page.seo.isIndexingBlocked\n\n const fontFamilyParamValue = useMemo(() => {\n if (site == null) {\n return page.fonts\n .map(({ family, variants }) => {\n return `${family.replace(/ /g, '+')}:${variants.join()}`\n })\n .join('|')\n }\n\n return site.googleFonts.edges\n .filter((edge): edge is NonNullable<typeof edge> => edge != null)\n .map(({ activeVariants, node: { family, variants } }) => {\n const activeVariantSpecifiers = variants\n .filter(variant =>\n activeVariants.some(activeVariant => activeVariant.specifier === variant.specifier),\n )\n .map(variant => variant.specifier)\n .join()\n\n return `${family.replace(/ /g, '+')}:${activeVariantSpecifiers}`\n })\n .join('|')\n }, [site, page])\n\n return (\n <>\n <PageStyle precedence=\"high\" href=\"makeswift-base-styles\">\n {`\n html {\n font-family: sans-serif;\n }\n div#__next {\n overflow: hidden;\n }\n `}\n </PageStyle>\n {title && <PageTitle>{title}</PageTitle>}\n {favicon && <PageLink rel=\"icon\" type={favicon.mimetype} href={favicon.publicUrl} />}\n {canonicalUrl && <PageLink rel=\"canonical\" href={canonicalUrl} />}\n {isIndexingBlocked && <PageMeta name=\"robots\" content=\"noindex\" />}\n {description && (\n <>\n <PageMeta name=\"description\" content={description} />\n <PageMeta property=\"og:description\" content={description} />\n <PageMeta name=\"twitter:description\" content={description} />\n </>\n )}\n {keywords && <PageMeta name=\"keywords\" content={keywords} />}\n {socialImage && (\n <>\n <PageMeta property=\"og:image\" content={socialImage.publicUrl} />\n <PageMeta property=\"og:image:type\" content={socialImage.mimetype} />\n <PageMeta name=\"twitter:image\" content={socialImage.publicUrl} />\n <PageMeta name=\"twitter:card\" content=\"summary_large_image\" />\n </>\n )}\n {fontFamilyParamValue !== '' && (\n <PageLink\n precedence=\"medium\"\n rel=\"stylesheet\"\n href={`https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`}\n />\n )}\n {headSnippets.map(snippet => (\n <HeadSnippet key={snippet.id} snippet={snippet} />\n ))}\n </>\n )\n}\n\nfunction useCachedSite(siteId: string | null): Site | null {\n const client = useMakeswiftHostApiClient()\n const getSnapshot = () => (siteId == null ? null : client.readSite(siteId))\n\n const site = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot)\n\n return site\n}\n"],"mappings":"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","names":["import_react"]}
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ "use client";
2
3
  var __create = Object.create;
3
4
  var __defProp = Object.defineProperty;
4
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/shared/BackgroundsContainer/index.tsx"],"sourcesContent":["import { cx } from '@emotion/css'\nimport {\n Children,\n ComponentPropsWithoutRef,\n ElementType,\n forwardRef,\n ReactElement,\n Ref,\n} from 'react'\nimport { BackgroundsValue as BackgroundsPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useBackgrounds } from '../../hooks'\nimport Backgrounds from './components/Backgrounds'\n\ntype BaseProps = {\n backgrounds: BackgroundsPropControllerValue | null | undefined\n children: ReactElement<ElementType>\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof BaseProps>\n\nexport default forwardRef<HTMLDivElement | null, Props>(function BackgroundsContainer(\n { backgrounds, children, className, ...restOfProps }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n return (\n <div\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({\n position: 'relative',\n width: '100%',\n margin: '0 auto',\n '> *': {\n borderRadius: 'inherit',\n height: 'inherit',\n },\n '> :last-child': {\n position: 'relative',\n },\n }),\n className,\n )}\n >\n <Backgrounds backgrounds={useBackgrounds(backgrounds)} />\n {Children.only(children)}\n </div>\n )\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BI;AA1BJ,iBAAmB;AACnB,mBAOO;AAEP,uBAAyB;AACzB,mBAA+B;AAC/B,yBAAwB;AASxB,IAAO,mCAAQ,yBAAyC,SAAS,qBAC/D,EAAE,aAAa,UAAU,WAAW,GAAG,YAAY,GACnD,KACA;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,eAAW;AAAA,YACT,2BAAS;AAAA,UACP,UAAU;AAAA,UACV,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,OAAO;AAAA,YACL,cAAc;AAAA,YACd,QAAQ;AAAA,UACV;AAAA,UACA,iBAAiB;AAAA,YACf,UAAU;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MAEA;AAAA,oDAAC,mBAAAA,SAAA,EAAY,iBAAa,6BAAe,WAAW,GAAG;AAAA,QACtD,sBAAS,KAAK,QAAQ;AAAA;AAAA;AAAA,EACzB;AAEJ,CAAC;","names":["Backgrounds"]}
1
+ {"version":3,"sources":["../../../../../src/components/shared/BackgroundsContainer/index.tsx"],"sourcesContent":["'use client'\n\nimport { cx } from '@emotion/css'\nimport {\n Children,\n ComponentPropsWithoutRef,\n ElementType,\n forwardRef,\n ReactElement,\n Ref,\n} from 'react'\nimport { BackgroundsValue as BackgroundsPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useBackgrounds } from '../../hooks'\nimport Backgrounds from './components/Backgrounds'\n\ntype BaseProps = {\n backgrounds: BackgroundsPropControllerValue | null | undefined\n children: ReactElement<ElementType>\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof BaseProps>\n\nexport default forwardRef<HTMLDivElement | null, Props>(function BackgroundsContainer(\n { backgrounds, children, className, ...restOfProps }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n return (\n <div\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({\n position: 'relative',\n width: '100%',\n margin: '0 auto',\n '> *': {\n borderRadius: 'inherit',\n height: 'inherit',\n },\n '> :last-child': {\n position: 'relative',\n },\n }),\n className,\n )}\n >\n <Backgrounds backgrounds={useBackgrounds(backgrounds)} />\n {Children.only(children)}\n </div>\n )\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BI;AA1BJ,iBAAmB;AACnB,mBAOO;AAEP,uBAAyB;AACzB,mBAA+B;AAC/B,yBAAwB;AASxB,IAAO,mCAAQ,yBAAyC,SAAS,qBAC/D,EAAE,aAAa,UAAU,WAAW,GAAG,YAAY,GACnD,KACA;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,eAAW;AAAA,YACT,2BAAS;AAAA,UACP,UAAU;AAAA,UACV,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,OAAO;AAAA,YACL,cAAc;AAAA,YACd,QAAQ;AAAA,UACV;AAAA,UACA,iBAAiB;AAAA,YACf,UAAU;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MAEA;AAAA,oDAAC,mBAAAA,SAAA,EAAY,iBAAa,6BAAe,WAAW,GAAG;AAAA,QACtD,sBAAS,KAAK,QAAQ;AAAA;AAAA;AAAA,EACzB;AAEJ,CAAC;","names":["Backgrounds"]}
@@ -41,6 +41,7 @@ const Link = (0, import_react.forwardRef)(function Link2({ link, onClick = () =>
41
41
  }, ...restOfProps }, ref) {
42
42
  const pageId = link && link.type === "OPEN_PAGE" ? link.payload.pageId : null;
43
43
  const page = (0, import_makeswift_api.usePagePathnameSlice)(pageId ?? null);
44
+ const hasLocalizedPathname = page?.localizedPathname != null;
44
45
  const elementKey = link?.type === "SCROLL_TO_ELEMENT" ? link.payload.elementIdConfig?.elementKey : null;
45
46
  const elementId = (0, import_react2.useElementId)(elementKey);
46
47
  let useNextLink;
@@ -52,7 +53,7 @@ const Link = (0, import_react.forwardRef)(function Link2({ link, onClick = () =>
52
53
  case "OPEN_PAGE": {
53
54
  if (page) {
54
55
  useNextLink = true;
55
- href = `/${page.pathname}`;
56
+ href = `/${page.localizedPathname ?? page.pathname}`;
56
57
  }
57
58
  target = link.payload.openInNewTab ? "_blank" : "_self";
58
59
  break;
@@ -120,6 +121,9 @@ const Link = (0, import_react.forwardRef)(function Link2({ link, onClick = () =>
120
121
  target,
121
122
  onClick: handleClick,
122
123
  href,
124
+ ...hasLocalizedPathname && {
125
+ locale: false
126
+ },
123
127
  legacyBehavior: false
124
128
  }
125
129
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/shared/Link/index.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, MouseEvent } from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport NextLink from 'next/link'\n\nimport { LinkValue as LinkPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { useElementId } from '../../../runtimes/react'\nimport { usePagePathnameSlice } from '../../../runtimes/react/hooks/makeswift-api'\n\ntype BaseProps = {\n link?: LinkPropControllerValue\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'a'>, keyof BaseProps>\n\nexport const Link = forwardRef<HTMLAnchorElement, Props>(function Link(\n { link, onClick = () => {}, ...restOfProps }: Props,\n ref,\n) {\n const pageId = link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null\n const page = usePagePathnameSlice(pageId ?? null)\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n // We don't want to use `next/link` with relative paths because Next.js will attempt to normalize\n // it and mess up the path.\n let useNextLink: boolean | undefined\n let href: string | undefined\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) {\n useNextLink = true\n\n href = `/${page.pathname}`\n }\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n useNextLink = true\n\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n useNextLink = false\n\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n useNextLink = false\n\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n useNextLink = false\n\n href = `#${elementId ?? ''}`\n\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n onClick(event)\n\n if (event.defaultPrevented) return\n\n /**\n * When we introduced `next/link` instead of just `a` element slate no longer prevented link from navigating within\n * content mode. This is a hack to compensate for what would be expected as slate's default behavior.\n * On upgrade of slate this can be reevaluated.\n */\n if (event.currentTarget.isContentEditable) return event.preventDefault()\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n if (href != null) hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && hash != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n }\n\n if (useNextLink && href != null) {\n return (\n <NextLink\n {...restOfProps}\n ref={ref}\n target={target}\n onClick={handleClick}\n href={href}\n // Next.js v12 has legacyBehavior set to true by default\n legacyBehavior={false}\n />\n )\n }\n\n // eslint-disable-next-line\n return <a {...restOfProps} ref={ref} href={href} target={target} onClick={handleClick} />\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8HM;AA9HN,mBAAiE;AACjE,wCAA2B;AAC3B,kBAAqB;AAGrB,IAAAA,gBAA6B;AAC7B,2BAAqC;AAS9B,MAAM,WAAO,yBAAqC,SAASC,MAChE,EAAE,MAAM,UAAU,MAAM;AAAC,GAAG,GAAG,YAAY,GAC3C,KACA;AACA,QAAM,SAAS,QAAQ,KAAK,SAAS,cAAc,KAAK,QAAQ,SAAS;AACzE,QAAM,WAAO,2CAAqB,UAAU,IAAI;AAChD,QAAM,aACJ,MAAM,SAAS,sBAAsB,KAAK,QAAQ,iBAAiB,aAAa;AAClF,QAAM,gBAAY,4BAAa,UAAU;AAIzC,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,MAAI,MAAM;AACR,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK,aAAa;AAChB,YAAI,MAAM;AACR,wBAAc;AAEd,iBAAO,IAAI,KAAK,QAAQ;AAAA,QAC1B;AAEA,iBAAS,KAAK,QAAQ,eAAe,WAAW;AAEhD;AAAA,MACF;AAAA,MAEA,KAAK,YAAY;AACf,sBAAc;AAEd,eAAO,KAAK,QAAQ;AAEpB,iBAAS,KAAK,QAAQ,eAAe,WAAW;AAEhD;AAAA,MACF;AAAA,MAEA,KAAK,cAAc;AACjB,sBAAc;AAEd,cAAM,EAAE,IAAI,UAAU,IAAI,OAAO,GAAG,IAAI,KAAK;AAE7C,YAAI,MAAM;AAAM,iBAAO,UAAU,EAAE,YAAY,OAAO,SAAS,IAAI;AAEnE;AAAA,MACF;AAAA,MAEA,KAAK,cAAc;AACjB,sBAAc;AAEd,eAAO,OAAO,KAAK,QAAQ,WAAW;AAEtC;AAAA,MACF;AAAA,MAEA,KAAK,qBAAqB;AACxB,sBAAc;AAEd,eAAO,IAAI,aAAa,EAAE;AAE1B,gBAAQ,KAAK,QAAQ;AAErB;AAAA,MACF;AAAA,MAEA;AACE,cAAM,IAAI,WAAW,sBAAuB,KAAa,IAAI,IAAI;AAAA,IACrE;AAAA,EACF;AAEA,WAAS,YAAY,OAAsC;AACzD,YAAQ,KAAK;AAEb,QAAI,MAAM;AAAkB;AAO5B,QAAI,MAAM,cAAc;AAAmB,aAAO,MAAM,eAAe;AAEvE,QAAI,QAAQ,KAAK,SAAS,qBAAqB;AAC7C,UAAI;AAEJ,UAAI;AACF,YAAI,QAAQ;AAAM,iBAAO,IAAI,IAAI,0BAA0B,IAAI,EAAE,EAAE;AAAA,MACrE,SAAS,OAAO;AACd,gBAAQ,MAAM,+BAA+B,IAAI,IAAI,KAAK;AAAA,MAC5D;AAEA,UAAI,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,MAAM;AACjD,cAAM,eAAe;AACrB,cAAM,OAAO,MAAM;AAEnB,8CAAAC,SAAe,KAAK,SAAS,cAAc,IAAI,GAAI;AAAA,UACjD,UAAU;AAAA,UACV;AAAA,QACF,CAAC;AAED,YAAI,KAAK,SAAS,SAAS;AAAM,eAAK,QAAQ,UAAU,CAAC,GAAG,IAAI,IAAI;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAEA,MAAI,eAAe,QAAQ,MAAM;AAC/B,WACE;AAAA,MAAC,YAAAC;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QAEA,gBAAgB;AAAA;AAAA,IAClB;AAAA,EAEJ;AAGA,SAAO,4CAAC,OAAG,GAAG,aAAa,KAAU,MAAY,QAAgB,SAAS,aAAa;AACzF,CAAC;","names":["import_react","Link","scrollIntoView","NextLink"]}
1
+ {"version":3,"sources":["../../../../../src/components/shared/Link/index.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, MouseEvent } from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport NextLink from 'next/link'\n\nimport { LinkValue as LinkPropControllerValue } from '../../../prop-controllers/descriptors'\nimport { useElementId } from '../../../runtimes/react'\nimport { usePagePathnameSlice } from '../../../runtimes/react/hooks/makeswift-api'\n\ntype BaseProps = {\n link?: LinkPropControllerValue\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => unknown\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'a'>, keyof BaseProps>\n\nexport const Link = forwardRef<HTMLAnchorElement, Props>(function Link(\n { link, onClick = () => {}, ...restOfProps }: Props,\n ref,\n) {\n const pageId = link && link.type === 'OPEN_PAGE' ? link.payload.pageId : null\n const page = usePagePathnameSlice(pageId ?? null)\n const hasLocalizedPathname = page?.localizedPathname != null\n\n const elementKey =\n link?.type === 'SCROLL_TO_ELEMENT' ? link.payload.elementIdConfig?.elementKey : null\n const elementId = useElementId(elementKey)\n\n // We don't want to use `next/link` with relative paths because Next.js will attempt to normalize\n // it and mess up the path.\n let useNextLink: boolean | undefined\n let href: string | undefined\n let target: '_blank' | '_self' | undefined\n let block: 'start' | 'center' | 'end' | undefined\n\n if (link) {\n switch (link.type) {\n case 'OPEN_PAGE': {\n if (page) {\n useNextLink = true\n\n href = `/${page.localizedPathname ?? page.pathname}`\n }\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'OPEN_URL': {\n useNextLink = true\n\n href = link.payload.url\n\n target = link.payload.openInNewTab ? '_blank' : '_self'\n\n break\n }\n\n case 'SEND_EMAIL': {\n useNextLink = false\n\n const { to, subject = '', body = '' } = link.payload\n\n if (to != null) href = `mailto:${to}?subject=${subject}&body=${body}`\n\n break\n }\n\n case 'CALL_PHONE': {\n useNextLink = false\n\n href = `tel:${link.payload.phoneNumber}`\n\n break\n }\n\n case 'SCROLL_TO_ELEMENT': {\n useNextLink = false\n\n href = `#${elementId ?? ''}`\n\n block = link.payload.block\n\n break\n }\n\n default:\n throw new RangeError(`Invalid link type \"${(link as any).type}.\"`)\n }\n }\n\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n onClick(event)\n\n if (event.defaultPrevented) return\n\n /**\n * When we introduced `next/link` instead of just `a` element slate no longer prevented link from navigating within\n * content mode. This is a hack to compensate for what would be expected as slate's default behavior.\n * On upgrade of slate this can be reevaluated.\n */\n if (event.currentTarget.isContentEditable) return event.preventDefault()\n\n if (link && link.type === 'SCROLL_TO_ELEMENT') {\n let hash: string | undefined\n\n try {\n if (href != null) hash = new URL(`http://www.example.com/${href}`).hash\n } catch (error) {\n console.error(`Link received invalid href: ${href}`, error)\n }\n\n if (href != null && hash != null && href === hash) {\n event.preventDefault()\n const view = event.view as unknown as Window\n\n scrollIntoView(view.document.querySelector(hash)!, {\n behavior: 'smooth',\n block,\n })\n\n if (view.location.hash !== hash) view.history.pushState({}, '', hash)\n }\n }\n }\n\n if (useNextLink && href != null) {\n return (\n <NextLink\n {...restOfProps}\n ref={ref}\n target={target}\n onClick={handleClick}\n href={href}\n {...(hasLocalizedPathname && {\n locale: false,\n })}\n // Next.js v12 has legacyBehavior set to true by default\n legacyBehavior={false}\n />\n )\n }\n\n // eslint-disable-next-line\n return <a {...restOfProps} ref={ref} href={href} target={target} onClick={handleClick} />\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgIM;AAhIN,mBAAiE;AACjE,wCAA2B;AAC3B,kBAAqB;AAGrB,IAAAA,gBAA6B;AAC7B,2BAAqC;AAS9B,MAAM,WAAO,yBAAqC,SAASC,MAChE,EAAE,MAAM,UAAU,MAAM;AAAC,GAAG,GAAG,YAAY,GAC3C,KACA;AACA,QAAM,SAAS,QAAQ,KAAK,SAAS,cAAc,KAAK,QAAQ,SAAS;AACzE,QAAM,WAAO,2CAAqB,UAAU,IAAI;AAChD,QAAM,uBAAuB,MAAM,qBAAqB;AAExD,QAAM,aACJ,MAAM,SAAS,sBAAsB,KAAK,QAAQ,iBAAiB,aAAa;AAClF,QAAM,gBAAY,4BAAa,UAAU;AAIzC,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,MAAI,MAAM;AACR,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK,aAAa;AAChB,YAAI,MAAM;AACR,wBAAc;AAEd,iBAAO,IAAI,KAAK,qBAAqB,KAAK,QAAQ;AAAA,QACpD;AAEA,iBAAS,KAAK,QAAQ,eAAe,WAAW;AAEhD;AAAA,MACF;AAAA,MAEA,KAAK,YAAY;AACf,sBAAc;AAEd,eAAO,KAAK,QAAQ;AAEpB,iBAAS,KAAK,QAAQ,eAAe,WAAW;AAEhD;AAAA,MACF;AAAA,MAEA,KAAK,cAAc;AACjB,sBAAc;AAEd,cAAM,EAAE,IAAI,UAAU,IAAI,OAAO,GAAG,IAAI,KAAK;AAE7C,YAAI,MAAM;AAAM,iBAAO,UAAU,EAAE,YAAY,OAAO,SAAS,IAAI;AAEnE;AAAA,MACF;AAAA,MAEA,KAAK,cAAc;AACjB,sBAAc;AAEd,eAAO,OAAO,KAAK,QAAQ,WAAW;AAEtC;AAAA,MACF;AAAA,MAEA,KAAK,qBAAqB;AACxB,sBAAc;AAEd,eAAO,IAAI,aAAa,EAAE;AAE1B,gBAAQ,KAAK,QAAQ;AAErB;AAAA,MACF;AAAA,MAEA;AACE,cAAM,IAAI,WAAW,sBAAuB,KAAa,IAAI,IAAI;AAAA,IACrE;AAAA,EACF;AAEA,WAAS,YAAY,OAAsC;AACzD,YAAQ,KAAK;AAEb,QAAI,MAAM;AAAkB;AAO5B,QAAI,MAAM,cAAc;AAAmB,aAAO,MAAM,eAAe;AAEvE,QAAI,QAAQ,KAAK,SAAS,qBAAqB;AAC7C,UAAI;AAEJ,UAAI;AACF,YAAI,QAAQ;AAAM,iBAAO,IAAI,IAAI,0BAA0B,IAAI,EAAE,EAAE;AAAA,MACrE,SAAS,OAAO;AACd,gBAAQ,MAAM,+BAA+B,IAAI,IAAI,KAAK;AAAA,MAC5D;AAEA,UAAI,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,MAAM;AACjD,cAAM,eAAe;AACrB,cAAM,OAAO,MAAM;AAEnB,8CAAAC,SAAe,KAAK,SAAS,cAAc,IAAI,GAAI;AAAA,UACjD,UAAU;AAAA,UACV;AAAA,QACF,CAAC;AAED,YAAI,KAAK,SAAS,SAAS;AAAM,eAAK,QAAQ,UAAU,CAAC,GAAG,IAAI,IAAI;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAEA,MAAI,eAAe,QAAQ,MAAM;AAC/B,WACE;AAAA,MAAC,YAAAC;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACC,GAAI,wBAAwB;AAAA,UAC3B,QAAQ;AAAA,QACV;AAAA,QAEA,gBAAgB;AAAA;AAAA,IAClB;AAAA,EAEJ;AAGA,SAAO,4CAAC,OAAG,GAAG,aAAa,KAAU,MAAY,QAAgB,SAAS,aAAa;AACzF,CAAC;","names":["import_react","Link","scrollIntoView","NextLink"]}
package/dist/cjs/index.js CHANGED
@@ -25,7 +25,6 @@ __export(src_exports, {
25
25
  changeApiResource: () => import_actions.changeApiResource,
26
26
  changeDocument: () => import_actions.changeDocument,
27
27
  changeDocumentElementScrollTop: () => import_actions.changeDocumentElementScrollTop,
28
- changePathname: () => import_actions.changePathname,
29
28
  cleanUp: () => import_actions.cleanUp,
30
29
  createDocument: () => import_react_page.createDocument,
31
30
  evictApiResource: () => import_actions.evictApiResource,
@@ -53,7 +52,6 @@ var import_constants = require("./components/builtin/constants");
53
52
  changeApiResource,
54
53
  changeDocument,
55
54
  changeDocumentElementScrollTop,
56
- changePathname,
57
55
  cleanUp,
58
56
  createDocument,
59
57
  evictApiResource,