@makeswift/runtime 0.23.12 → 0.23.14

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 (567) hide show
  1. package/dist/cjs/api/graphql/fragments.js +40 -0
  2. package/dist/cjs/api/graphql/fragments.js.map +1 -0
  3. package/dist/cjs/api/graphql/types.js +40 -0
  4. package/dist/cjs/api/graphql/types.js.map +1 -0
  5. package/dist/cjs/api/resource-types.js +24 -0
  6. package/dist/cjs/api/resource-types.js.map +1 -0
  7. package/dist/cjs/builder/serialization/controls/combobox.js +45 -0
  8. package/dist/cjs/builder/serialization/controls/combobox.js.map +1 -0
  9. package/dist/cjs/builder/serialization/controls/list.js +50 -0
  10. package/dist/cjs/builder/serialization/controls/list.js.map +1 -0
  11. package/dist/cjs/builder/serialization/controls/rich-text-v2.js +106 -0
  12. package/dist/cjs/builder/serialization/controls/rich-text-v2.js.map +1 -0
  13. package/dist/cjs/builder/serialization/controls/shape.js +54 -0
  14. package/dist/cjs/builder/serialization/controls/shape.js.map +1 -0
  15. package/dist/cjs/builder/serialization/controls/style-v2.js +62 -0
  16. package/dist/cjs/builder/serialization/controls/style-v2.js.map +1 -0
  17. package/dist/cjs/builder/unstructured-introspection/__fixtures__/element-containing-resources.js +899 -0
  18. package/dist/cjs/builder/unstructured-introspection/__fixtures__/element-containing-resources.js.map +1 -0
  19. package/dist/cjs/builder/unstructured-introspection/__fixtures__/index.js +23 -0
  20. package/dist/cjs/builder/unstructured-introspection/__fixtures__/index.js.map +1 -0
  21. package/dist/cjs/builder/unstructured-introspection/index.js +29 -0
  22. package/dist/cjs/builder/unstructured-introspection/index.js.map +1 -0
  23. package/dist/cjs/builder/unstructured-introspection/unstructured-introspection.js +85 -0
  24. package/dist/cjs/builder/unstructured-introspection/unstructured-introspection.js.map +1 -0
  25. package/dist/cjs/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js +1 -0
  26. package/dist/cjs/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
  27. package/dist/cjs/controls/checkbox.js +41 -0
  28. package/dist/cjs/controls/checkbox.js.map +1 -0
  29. package/dist/cjs/controls/color.js +55 -0
  30. package/dist/cjs/controls/color.js.map +1 -0
  31. package/dist/cjs/controls/combobox.js +34 -0
  32. package/dist/cjs/controls/combobox.js.map +1 -0
  33. package/dist/cjs/controls/control-data-type-key.js +29 -0
  34. package/dist/cjs/controls/control-data-type-key.js.map +1 -0
  35. package/dist/cjs/controls/icon-radio-group.js +45 -0
  36. package/dist/cjs/controls/icon-radio-group.js.map +1 -0
  37. package/dist/cjs/controls/image.js +34 -0
  38. package/dist/cjs/controls/image.js.map +1 -0
  39. package/dist/cjs/controls/list.js +156 -0
  40. package/dist/cjs/controls/list.js.map +1 -0
  41. package/dist/cjs/controls/number.js +41 -0
  42. package/dist/cjs/controls/number.js.map +1 -0
  43. package/dist/cjs/controls/rich-text/copy.js +121 -0
  44. package/dist/cjs/controls/rich-text/copy.js.map +1 -0
  45. package/dist/cjs/controls/rich-text/dto-types.js +43 -0
  46. package/dist/cjs/controls/rich-text/dto-types.js.map +1 -0
  47. package/dist/cjs/controls/rich-text/dto.js +228 -0
  48. package/dist/cjs/controls/rich-text/dto.js.map +1 -0
  49. package/dist/cjs/controls/rich-text/fixtures/blockquote.js +77 -0
  50. package/dist/cjs/controls/rich-text/fixtures/blockquote.js.map +1 -0
  51. package/dist/cjs/controls/rich-text/fixtures/empty-blocks.js +176 -0
  52. package/dist/cjs/controls/rich-text/fixtures/empty-blocks.js.map +1 -0
  53. package/dist/cjs/controls/rich-text/fixtures/index.js +27 -0
  54. package/dist/cjs/controls/rich-text/fixtures/index.js.map +1 -0
  55. package/dist/cjs/controls/rich-text/fixtures/list.js +137 -0
  56. package/dist/cjs/controls/rich-text/fixtures/list.js.map +1 -0
  57. package/dist/cjs/controls/rich-text/fixtures/typography.js +926 -0
  58. package/dist/cjs/controls/rich-text/fixtures/typography.js.map +1 -0
  59. package/dist/cjs/controls/rich-text/fixtures/v2-data-types.js +114 -0
  60. package/dist/cjs/controls/rich-text/fixtures/v2-data-types.js.map +1 -0
  61. package/dist/cjs/controls/rich-text/introspection.js +104 -0
  62. package/dist/cjs/controls/rich-text/introspection.js.map +1 -0
  63. package/dist/cjs/controls/rich-text-v2/copy.js +115 -0
  64. package/dist/cjs/controls/rich-text-v2/copy.js.map +1 -0
  65. package/dist/cjs/controls/rich-text-v2/dto.js +44 -0
  66. package/dist/cjs/controls/rich-text-v2/dto.js.map +1 -0
  67. package/dist/cjs/controls/rich-text-v2/introspection.js +69 -0
  68. package/dist/cjs/controls/rich-text-v2/introspection.js.map +1 -0
  69. package/dist/cjs/controls/select.js +34 -0
  70. package/dist/cjs/controls/select.js.map +1 -0
  71. package/dist/cjs/controls/shape.js +149 -0
  72. package/dist/cjs/controls/shape.js.map +1 -0
  73. package/dist/cjs/controls/style-v2.js +74 -0
  74. package/dist/cjs/controls/style-v2.js.map +1 -0
  75. package/dist/cjs/controls/style.js +125 -0
  76. package/dist/cjs/controls/style.js.map +1 -0
  77. package/dist/cjs/controls/text-area.js +41 -0
  78. package/dist/cjs/controls/text-area.js.map +1 -0
  79. package/dist/cjs/controls/text-input.js +41 -0
  80. package/dist/cjs/controls/text-input.js.map +1 -0
  81. package/dist/cjs/controls/types.js +17 -0
  82. package/dist/cjs/controls/types.js.map +1 -0
  83. package/dist/cjs/controls/typography.js +47 -0
  84. package/dist/cjs/controls/typography.js.map +1 -0
  85. package/dist/cjs/next/api-handler/handlers/clear-draft.js +64 -0
  86. package/dist/cjs/next/api-handler/handlers/clear-draft.js.map +1 -0
  87. package/dist/cjs/next/api-handler/handlers/manifest.js +1 -1
  88. package/dist/cjs/next/api-handler/handlers/redirect-draft.js +77 -0
  89. package/dist/cjs/next/api-handler/handlers/redirect-draft.js.map +1 -0
  90. package/dist/cjs/next/api-handler/handlers/redirect-preview.js +68 -0
  91. package/dist/cjs/next/api-handler/handlers/redirect-preview.js.map +1 -0
  92. package/dist/cjs/next/api-handler/handlers/utils/draft.js +53 -0
  93. package/dist/cjs/next/api-handler/handlers/utils/draft.js.map +1 -0
  94. package/dist/cjs/next/api-handler/handlers/webhook/site-published.js +2 -4
  95. package/dist/cjs/next/api-handler/handlers/webhook/site-published.js.map +1 -1
  96. package/dist/cjs/next/cache.js +29 -0
  97. package/dist/cjs/next/cache.js.map +1 -0
  98. package/dist/cjs/next/client.js +2 -2
  99. package/dist/cjs/next/client.js.map +1 -1
  100. package/dist/cjs/next/context/makeswift-host-api-client.js +46 -0
  101. package/dist/cjs/next/context/makeswift-host-api-client.js.map +1 -0
  102. package/dist/cjs/next/context/react-runtime.js +44 -0
  103. package/dist/cjs/next/context/react-runtime.js.map +1 -0
  104. package/dist/cjs/next/hooks/use-sync-cache-data.js +41 -0
  105. package/dist/cjs/next/hooks/use-sync-cache-data.js.map +1 -0
  106. package/dist/cjs/prop-controllers/base.js +34 -0
  107. package/dist/cjs/prop-controllers/base.js.map +1 -0
  108. package/dist/cjs/prop-controllers/copy/backgrounds.js +86 -0
  109. package/dist/cjs/prop-controllers/copy/backgrounds.js.map +1 -0
  110. package/dist/cjs/prop-controllers/copy/element-id.js +36 -0
  111. package/dist/cjs/prop-controllers/copy/element-id.js.map +1 -0
  112. package/dist/cjs/prop-controllers/copy/grid.js +36 -0
  113. package/dist/cjs/prop-controllers/copy/grid.js.map +1 -0
  114. package/dist/cjs/prop-controllers/copy/image.js +35 -0
  115. package/dist/cjs/prop-controllers/copy/image.js.map +1 -0
  116. package/dist/cjs/prop-controllers/copy/images.js +49 -0
  117. package/dist/cjs/prop-controllers/copy/images.js.map +1 -0
  118. package/dist/cjs/prop-controllers/copy/navigation-links.js +58 -0
  119. package/dist/cjs/prop-controllers/copy/navigation-links.js.map +1 -0
  120. package/dist/cjs/prop-controllers/copy/rich-text.js +121 -0
  121. package/dist/cjs/prop-controllers/copy/rich-text.js.map +1 -0
  122. package/dist/cjs/prop-controllers/copy/table-form-fields.js +39 -0
  123. package/dist/cjs/prop-controllers/copy/table-form-fields.js.map +1 -0
  124. package/dist/cjs/prop-controllers/copy/table.js +33 -0
  125. package/dist/cjs/prop-controllers/copy/table.js.map +1 -0
  126. package/dist/cjs/runtimes/react/components/DocumentReference.js +42 -0
  127. package/dist/cjs/runtimes/react/components/DocumentReference.js.map +1 -0
  128. package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js +72 -0
  129. package/dist/cjs/runtimes/react/components/draft-switcher/draft-switcher.js.map +1 -0
  130. package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js +79 -0
  131. package/dist/cjs/runtimes/react/components/draft-switcher/draft-toolbar.js.map +1 -0
  132. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js +67 -0
  133. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
  134. package/dist/cjs/runtimes/react/components/hooks/use-builder-handshake.js +45 -0
  135. package/dist/cjs/runtimes/react/components/hooks/use-builder-handshake.js.map +1 -0
  136. package/dist/cjs/runtimes/react/controls/checkbox.js +34 -0
  137. package/dist/cjs/runtimes/react/controls/checkbox.js.map +1 -0
  138. package/dist/cjs/runtimes/react/controls/color.js +58 -0
  139. package/dist/cjs/runtimes/react/controls/color.js.map +1 -0
  140. package/dist/cjs/runtimes/react/controls/combobox.js +31 -0
  141. package/dist/cjs/runtimes/react/controls/combobox.js.map +1 -0
  142. package/dist/cjs/runtimes/react/controls/icon-radio-group.js +31 -0
  143. package/dist/cjs/runtimes/react/controls/icon-radio-group.js.map +1 -0
  144. package/dist/cjs/runtimes/react/controls/image.js +53 -0
  145. package/dist/cjs/runtimes/react/controls/image.js.map +1 -0
  146. package/dist/cjs/runtimes/react/controls/link.js +110 -0
  147. package/dist/cjs/runtimes/react/controls/link.js.map +1 -0
  148. package/dist/cjs/runtimes/react/controls/list.js +58 -0
  149. package/dist/cjs/runtimes/react/controls/list.js.map +1 -0
  150. package/dist/cjs/runtimes/react/controls/number.js +34 -0
  151. package/dist/cjs/runtimes/react/controls/number.js.map +1 -0
  152. package/dist/cjs/runtimes/react/controls/select.js +31 -0
  153. package/dist/cjs/runtimes/react/controls/select.js.map +1 -0
  154. package/dist/cjs/runtimes/react/controls/shape.js +44 -0
  155. package/dist/cjs/runtimes/react/controls/shape.js.map +1 -0
  156. package/dist/cjs/runtimes/react/controls/style-v2.js +92 -0
  157. package/dist/cjs/runtimes/react/controls/style-v2.js.map +1 -0
  158. package/dist/cjs/runtimes/react/controls/text-area.js +34 -0
  159. package/dist/cjs/runtimes/react/controls/text-area.js.map +1 -0
  160. package/dist/cjs/runtimes/react/controls/text-input.js +34 -0
  161. package/dist/cjs/runtimes/react/controls/text-input.js.map +1 -0
  162. package/dist/cjs/runtimes/react/hooks/use-document-key.js +36 -0
  163. package/dist/cjs/runtimes/react/hooks/use-document-key.js.map +1 -0
  164. package/dist/cjs/runtimes/react/hooks/use-head-marker.js +40 -0
  165. package/dist/cjs/runtimes/react/hooks/use-head-marker.js.map +1 -0
  166. package/dist/cjs/slate/LinkPlugin/linkPluginWithoutRenderElement.js +48 -0
  167. package/dist/cjs/slate/LinkPlugin/linkPluginWithoutRenderElement.js.map +1 -0
  168. package/dist/cjs/state/makeswift-api-client.js +2 -2
  169. package/dist/cjs/state/makeswift-api-client.js.map +1 -1
  170. package/dist/cjs/utils/coalesce.js +33 -0
  171. package/dist/cjs/utils/coalesce.js.map +1 -0
  172. package/dist/cjs/utils/index-signature-hack.js +17 -0
  173. package/dist/cjs/utils/index-signature-hack.js.map +1 -0
  174. package/dist/cjs/utils/shallowMerge.js +44 -0
  175. package/dist/cjs/utils/shallowMerge.js.map +1 -0
  176. package/dist/cjs/utils/tests/breakpoint-test-util.js +35 -0
  177. package/dist/cjs/utils/tests/breakpoint-test-util.js.map +1 -0
  178. package/dist/cjs/utils/tests/element-data-test-test.js +75 -0
  179. package/dist/cjs/utils/tests/element-data-test-test.js.map +1 -0
  180. package/dist/esm/api/graphql/fragments.js +6 -0
  181. package/dist/esm/api/graphql/fragments.js.map +1 -0
  182. package/dist/esm/api/graphql/types.js +16 -0
  183. package/dist/esm/api/graphql/types.js.map +1 -0
  184. package/dist/esm/api/resource-types.js +8 -0
  185. package/dist/esm/api/resource-types.js.map +1 -0
  186. package/dist/esm/builder/serialization/controls/combobox.js +20 -0
  187. package/dist/esm/builder/serialization/controls/combobox.js.map +1 -0
  188. package/dist/esm/builder/serialization/controls/list.js +25 -0
  189. package/dist/esm/builder/serialization/controls/list.js.map +1 -0
  190. package/dist/esm/builder/serialization/controls/rich-text-v2.js +81 -0
  191. package/dist/esm/builder/serialization/controls/rich-text-v2.js.map +1 -0
  192. package/dist/esm/builder/serialization/controls/shape.js +32 -0
  193. package/dist/esm/builder/serialization/controls/shape.js.map +1 -0
  194. package/dist/esm/builder/serialization/controls/style-v2.js +37 -0
  195. package/dist/esm/builder/serialization/controls/style-v2.js.map +1 -0
  196. package/dist/esm/builder/unstructured-introspection/__fixtures__/element-containing-resources.js +875 -0
  197. package/dist/esm/builder/unstructured-introspection/__fixtures__/element-containing-resources.js.map +1 -0
  198. package/dist/esm/builder/unstructured-introspection/__fixtures__/index.js +2 -0
  199. package/dist/esm/builder/unstructured-introspection/__fixtures__/index.js.map +1 -0
  200. package/dist/esm/builder/unstructured-introspection/index.js +5 -0
  201. package/dist/esm/builder/unstructured-introspection/index.js.map +1 -0
  202. package/dist/esm/builder/unstructured-introspection/unstructured-introspection.js +61 -0
  203. package/dist/esm/builder/unstructured-introspection/unstructured-introspection.js.map +1 -0
  204. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js +1 -0
  205. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
  206. package/dist/esm/controls/checkbox.js +14 -0
  207. package/dist/esm/controls/checkbox.js.map +1 -0
  208. package/dist/esm/controls/color.js +27 -0
  209. package/dist/esm/controls/color.js.map +1 -0
  210. package/dist/esm/controls/combobox.js +9 -0
  211. package/dist/esm/controls/combobox.js.map +1 -0
  212. package/dist/esm/controls/control-data-type-key.js +5 -0
  213. package/dist/esm/controls/control-data-type-key.js.map +1 -0
  214. package/dist/esm/controls/icon-radio-group.js +19 -0
  215. package/dist/esm/controls/icon-radio-group.js.map +1 -0
  216. package/dist/esm/controls/image.js +10 -0
  217. package/dist/esm/controls/image.js.map +1 -0
  218. package/dist/esm/controls/list.js +132 -0
  219. package/dist/esm/controls/list.js.map +1 -0
  220. package/dist/esm/controls/number.js +14 -0
  221. package/dist/esm/controls/number.js.map +1 -0
  222. package/dist/esm/controls/rich-text/copy.js +97 -0
  223. package/dist/esm/controls/rich-text/copy.js.map +1 -0
  224. package/dist/esm/controls/rich-text/dto-types.js +19 -0
  225. package/dist/esm/controls/rich-text/dto-types.js.map +1 -0
  226. package/dist/esm/controls/rich-text/dto.js +203 -0
  227. package/dist/esm/controls/rich-text/dto.js.map +1 -0
  228. package/dist/esm/controls/rich-text/fixtures/blockquote.js +53 -0
  229. package/dist/esm/controls/rich-text/fixtures/blockquote.js.map +1 -0
  230. package/dist/esm/controls/rich-text/fixtures/empty-blocks.js +151 -0
  231. package/dist/esm/controls/rich-text/fixtures/empty-blocks.js.map +1 -0
  232. package/dist/esm/controls/rich-text/fixtures/index.js +4 -0
  233. package/dist/esm/controls/rich-text/fixtures/index.js.map +1 -0
  234. package/dist/esm/controls/rich-text/fixtures/list.js +113 -0
  235. package/dist/esm/controls/rich-text/fixtures/list.js.map +1 -0
  236. package/dist/esm/controls/rich-text/fixtures/typography.js +902 -0
  237. package/dist/esm/controls/rich-text/fixtures/typography.js.map +1 -0
  238. package/dist/esm/controls/rich-text/fixtures/v2-data-types.js +90 -0
  239. package/dist/esm/controls/rich-text/fixtures/v2-data-types.js.map +1 -0
  240. package/dist/esm/controls/rich-text/introspection.js +78 -0
  241. package/dist/esm/controls/rich-text/introspection.js.map +1 -0
  242. package/dist/esm/controls/rich-text-v2/copy.js +91 -0
  243. package/dist/esm/controls/rich-text-v2/copy.js.map +1 -0
  244. package/dist/esm/controls/rich-text-v2/dto.js +19 -0
  245. package/dist/esm/controls/rich-text-v2/dto.js.map +1 -0
  246. package/dist/esm/controls/rich-text-v2/introspection.js +43 -0
  247. package/dist/esm/controls/rich-text-v2/introspection.js.map +1 -0
  248. package/dist/esm/controls/select.js +9 -0
  249. package/dist/esm/controls/select.js.map +1 -0
  250. package/dist/esm/controls/shape.js +125 -0
  251. package/dist/esm/controls/shape.js.map +1 -0
  252. package/dist/esm/controls/style-v2.js +48 -0
  253. package/dist/esm/controls/style-v2.js.map +1 -0
  254. package/dist/esm/controls/style.js +95 -0
  255. package/dist/esm/controls/style.js.map +1 -0
  256. package/dist/esm/controls/text-area.js +14 -0
  257. package/dist/esm/controls/text-area.js.map +1 -0
  258. package/dist/esm/controls/text-input.js +14 -0
  259. package/dist/esm/controls/text-input.js.map +1 -0
  260. package/dist/esm/controls/types.js +1 -0
  261. package/dist/esm/controls/types.js.map +1 -0
  262. package/dist/esm/controls/typography.js +20 -0
  263. package/dist/esm/controls/typography.js.map +1 -0
  264. package/dist/esm/next/api-handler/handlers/clear-draft.js +50 -0
  265. package/dist/esm/next/api-handler/handlers/clear-draft.js.map +1 -0
  266. package/dist/esm/next/api-handler/handlers/manifest.js +1 -1
  267. package/dist/esm/next/api-handler/handlers/redirect-draft.js +63 -0
  268. package/dist/esm/next/api-handler/handlers/redirect-draft.js.map +1 -0
  269. package/dist/esm/next/api-handler/handlers/redirect-preview.js +54 -0
  270. package/dist/esm/next/api-handler/handlers/redirect-preview.js.map +1 -0
  271. package/dist/esm/next/api-handler/handlers/utils/draft.js +24 -0
  272. package/dist/esm/next/api-handler/handlers/utils/draft.js.map +1 -0
  273. package/dist/esm/next/api-handler/handlers/webhook/site-published.js +1 -2
  274. package/dist/esm/next/api-handler/handlers/webhook/site-published.js.map +1 -1
  275. package/dist/esm/next/cache.js +5 -0
  276. package/dist/esm/next/cache.js.map +1 -0
  277. package/dist/esm/next/client.js +1 -1
  278. package/dist/esm/next/client.js.map +1 -1
  279. package/dist/esm/next/context/makeswift-host-api-client.js +21 -0
  280. package/dist/esm/next/context/makeswift-host-api-client.js.map +1 -0
  281. package/dist/esm/next/context/react-runtime.js +19 -0
  282. package/dist/esm/next/context/react-runtime.js.map +1 -0
  283. package/dist/esm/next/hooks/use-sync-cache-data.js +17 -0
  284. package/dist/esm/next/hooks/use-sync-cache-data.js.map +1 -0
  285. package/dist/esm/prop-controllers/base.js +10 -0
  286. package/dist/esm/prop-controllers/base.js.map +1 -0
  287. package/dist/esm/prop-controllers/copy/backgrounds.js +62 -0
  288. package/dist/esm/prop-controllers/copy/backgrounds.js.map +1 -0
  289. package/dist/esm/prop-controllers/copy/element-id.js +12 -0
  290. package/dist/esm/prop-controllers/copy/element-id.js.map +1 -0
  291. package/dist/esm/prop-controllers/copy/grid.js +12 -0
  292. package/dist/esm/prop-controllers/copy/grid.js.map +1 -0
  293. package/dist/esm/prop-controllers/copy/image.js +11 -0
  294. package/dist/esm/prop-controllers/copy/image.js.map +1 -0
  295. package/dist/esm/prop-controllers/copy/images.js +25 -0
  296. package/dist/esm/prop-controllers/copy/images.js.map +1 -0
  297. package/dist/esm/prop-controllers/copy/navigation-links.js +34 -0
  298. package/dist/esm/prop-controllers/copy/navigation-links.js.map +1 -0
  299. package/dist/esm/prop-controllers/copy/rich-text.js +97 -0
  300. package/dist/esm/prop-controllers/copy/rich-text.js.map +1 -0
  301. package/dist/esm/prop-controllers/copy/table-form-fields.js +15 -0
  302. package/dist/esm/prop-controllers/copy/table-form-fields.js.map +1 -0
  303. package/dist/esm/prop-controllers/copy/table.js +9 -0
  304. package/dist/esm/prop-controllers/copy/table.js.map +1 -0
  305. package/dist/esm/runtimes/react/components/DocumentReference.js +18 -0
  306. package/dist/esm/runtimes/react/components/DocumentReference.js.map +1 -0
  307. package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js +48 -0
  308. package/dist/esm/runtimes/react/components/draft-switcher/draft-switcher.js.map +1 -0
  309. package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js +55 -0
  310. package/dist/esm/runtimes/react/components/draft-switcher/draft-toolbar.js.map +1 -0
  311. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js +43 -0
  312. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -0
  313. package/dist/esm/runtimes/react/components/hooks/use-builder-handshake.js +21 -0
  314. package/dist/esm/runtimes/react/components/hooks/use-builder-handshake.js.map +1 -0
  315. package/dist/esm/runtimes/react/controls/checkbox.js +13 -0
  316. package/dist/esm/runtimes/react/controls/checkbox.js.map +1 -0
  317. package/dist/esm/runtimes/react/controls/color.js +24 -0
  318. package/dist/esm/runtimes/react/controls/color.js.map +1 -0
  319. package/dist/esm/runtimes/react/controls/combobox.js +7 -0
  320. package/dist/esm/runtimes/react/controls/combobox.js.map +1 -0
  321. package/dist/esm/runtimes/react/controls/icon-radio-group.js +7 -0
  322. package/dist/esm/runtimes/react/controls/icon-radio-group.js.map +1 -0
  323. package/dist/esm/runtimes/react/controls/image.js +29 -0
  324. package/dist/esm/runtimes/react/controls/image.js.map +1 -0
  325. package/dist/esm/runtimes/react/controls/link.js +76 -0
  326. package/dist/esm/runtimes/react/controls/link.js.map +1 -0
  327. package/dist/esm/runtimes/react/controls/list.js +34 -0
  328. package/dist/esm/runtimes/react/controls/list.js.map +1 -0
  329. package/dist/esm/runtimes/react/controls/number.js +13 -0
  330. package/dist/esm/runtimes/react/controls/number.js.map +1 -0
  331. package/dist/esm/runtimes/react/controls/select.js +7 -0
  332. package/dist/esm/runtimes/react/controls/select.js.map +1 -0
  333. package/dist/esm/runtimes/react/controls/shape.js +20 -0
  334. package/dist/esm/runtimes/react/controls/shape.js.map +1 -0
  335. package/dist/esm/runtimes/react/controls/style-v2.js +72 -0
  336. package/dist/esm/runtimes/react/controls/style-v2.js.map +1 -0
  337. package/dist/esm/runtimes/react/controls/text-area.js +13 -0
  338. package/dist/esm/runtimes/react/controls/text-area.js.map +1 -0
  339. package/dist/esm/runtimes/react/controls/text-input.js +13 -0
  340. package/dist/esm/runtimes/react/controls/text-input.js.map +1 -0
  341. package/dist/esm/runtimes/react/hooks/use-document-key.js +11 -0
  342. package/dist/esm/runtimes/react/hooks/use-document-key.js.map +1 -0
  343. package/dist/esm/runtimes/react/hooks/use-head-marker.js +16 -0
  344. package/dist/esm/runtimes/react/hooks/use-head-marker.js.map +1 -0
  345. package/dist/esm/slate/LinkPlugin/linkPluginWithoutRenderElement.js +24 -0
  346. package/dist/esm/slate/LinkPlugin/linkPluginWithoutRenderElement.js.map +1 -0
  347. package/dist/esm/state/makeswift-api-client.js +1 -1
  348. package/dist/esm/state/makeswift-api-client.js.map +1 -1
  349. package/dist/esm/utils/coalesce.js +13 -0
  350. package/dist/esm/utils/coalesce.js.map +1 -0
  351. package/dist/esm/utils/index-signature-hack.js +1 -0
  352. package/dist/esm/utils/index-signature-hack.js.map +1 -0
  353. package/dist/esm/utils/shallowMerge.js +14 -0
  354. package/dist/esm/utils/shallowMerge.js.map +1 -0
  355. package/dist/esm/utils/tests/breakpoint-test-util.js +9 -0
  356. package/dist/esm/utils/tests/breakpoint-test-util.js.map +1 -0
  357. package/dist/esm/utils/tests/element-data-test-test.js +50 -0
  358. package/dist/esm/utils/tests/element-data-test-test.js.map +1 -0
  359. package/dist/types/api/graphql/fragments.d.ts +4 -0
  360. package/dist/types/api/graphql/fragments.d.ts.map +1 -0
  361. package/dist/types/api/graphql/types.d.ts +8 -0
  362. package/dist/types/api/graphql/types.d.ts.map +1 -0
  363. package/dist/types/api/resource-types.d.ts +20 -0
  364. package/dist/types/api/resource-types.d.ts.map +1 -0
  365. package/dist/types/builder/serialization/controls/combobox.d.ts +5 -0
  366. package/dist/types/builder/serialization/controls/combobox.d.ts.map +1 -0
  367. package/dist/types/builder/serialization/controls/list.d.ts +5 -0
  368. package/dist/types/builder/serialization/controls/list.d.ts.map +1 -0
  369. package/dist/types/builder/serialization/controls/rich-text-v2.d.ts +5 -0
  370. package/dist/types/builder/serialization/controls/rich-text-v2.d.ts.map +1 -0
  371. package/dist/types/builder/serialization/controls/shape.d.ts +5 -0
  372. package/dist/types/builder/serialization/controls/shape.d.ts.map +1 -0
  373. package/dist/types/builder/serialization/controls/style-v2.d.ts +5 -0
  374. package/dist/types/builder/serialization/controls/style-v2.d.ts.map +1 -0
  375. package/dist/types/builder/unstructured-introspection/__fixtures__/element-containing-resources.d.ts +3 -0
  376. package/dist/types/builder/unstructured-introspection/__fixtures__/element-containing-resources.d.ts.map +1 -0
  377. package/dist/types/builder/unstructured-introspection/__fixtures__/index.d.ts +2 -0
  378. package/dist/types/builder/unstructured-introspection/__fixtures__/index.d.ts.map +1 -0
  379. package/dist/types/builder/unstructured-introspection/index.d.ts +2 -0
  380. package/dist/types/builder/unstructured-introspection/index.d.ts.map +1 -0
  381. package/dist/types/builder/unstructured-introspection/unstructured-introspection.d.ts +10 -0
  382. package/dist/types/builder/unstructured-introspection/unstructured-introspection.d.ts.map +1 -0
  383. package/dist/types/builder/unstructured-introspection/unstructured-introspection.test.d.ts +2 -0
  384. package/dist/types/builder/unstructured-introspection/unstructured-introspection.test.d.ts.map +1 -0
  385. package/dist/types/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
  386. package/dist/types/controls/checkbox.d.ts +21 -0
  387. package/dist/types/controls/checkbox.d.ts.map +1 -0
  388. package/dist/types/controls/color.d.ts +25 -0
  389. package/dist/types/controls/color.d.ts.map +1 -0
  390. package/dist/types/controls/combobox.d.ts +22 -0
  391. package/dist/types/controls/combobox.d.ts.map +1 -0
  392. package/dist/types/controls/control-data-type-key.d.ts +2 -0
  393. package/dist/types/controls/control-data-type-key.d.ts.map +1 -0
  394. package/dist/types/controls/icon-radio-group.d.ts +32 -0
  395. package/dist/types/controls/icon-radio-group.d.ts.map +1 -0
  396. package/dist/types/controls/image.d.ts +4 -0
  397. package/dist/types/controls/image.d.ts.map +1 -0
  398. package/dist/types/controls/image.test.d.ts +2 -0
  399. package/dist/types/controls/image.test.d.ts.map +1 -0
  400. package/dist/types/controls/link.test.d.ts +2 -0
  401. package/dist/types/controls/link.test.d.ts.map +1 -0
  402. package/dist/types/controls/list.d.ts +78 -0
  403. package/dist/types/controls/list.d.ts.map +1 -0
  404. package/dist/types/controls/number.d.ts +26 -0
  405. package/dist/types/controls/number.d.ts.map +1 -0
  406. package/dist/types/controls/rich-text/__tests__/copy.test.d.ts +2 -0
  407. package/dist/types/controls/rich-text/__tests__/copy.test.d.ts.map +1 -0
  408. package/dist/types/controls/rich-text/__tests__/dto.test.d.ts +2 -0
  409. package/dist/types/controls/rich-text/__tests__/dto.test.d.ts.map +1 -0
  410. package/dist/types/controls/rich-text/__tests__/introspection.test.d.ts +2 -0
  411. package/dist/types/controls/rich-text/__tests__/introspection.test.d.ts.map +1 -0
  412. package/dist/types/controls/rich-text/copy.d.ts +4 -0
  413. package/dist/types/controls/rich-text/copy.d.ts.map +1 -0
  414. package/dist/types/controls/rich-text/dto-types.d.ts +132 -0
  415. package/dist/types/controls/rich-text/dto-types.d.ts.map +1 -0
  416. package/dist/types/controls/rich-text/dto.d.ts +8 -0
  417. package/dist/types/controls/rich-text/dto.d.ts.map +1 -0
  418. package/dist/types/controls/rich-text/fixtures/blockquote.d.ts +3 -0
  419. package/dist/types/controls/rich-text/fixtures/blockquote.d.ts.map +1 -0
  420. package/dist/types/controls/rich-text/fixtures/empty-blocks.d.ts +4 -0
  421. package/dist/types/controls/rich-text/fixtures/empty-blocks.d.ts.map +1 -0
  422. package/dist/types/controls/rich-text/fixtures/index.d.ts +4 -0
  423. package/dist/types/controls/rich-text/fixtures/index.d.ts.map +1 -0
  424. package/dist/types/controls/rich-text/fixtures/list.d.ts +3 -0
  425. package/dist/types/controls/rich-text/fixtures/list.d.ts.map +1 -0
  426. package/dist/types/controls/rich-text/fixtures/typography.d.ts +3 -0
  427. package/dist/types/controls/rich-text/fixtures/typography.d.ts.map +1 -0
  428. package/dist/types/controls/rich-text/fixtures/v2-data-types.d.ts +3 -0
  429. package/dist/types/controls/rich-text/fixtures/v2-data-types.d.ts.map +1 -0
  430. package/dist/types/controls/rich-text/introspection.d.ts +5 -0
  431. package/dist/types/controls/rich-text/introspection.d.ts.map +1 -0
  432. package/dist/types/controls/rich-text-v2/copy.d.ts +4 -0
  433. package/dist/types/controls/rich-text-v2/copy.d.ts.map +1 -0
  434. package/dist/types/controls/rich-text-v2/dto.d.ts +5 -0
  435. package/dist/types/controls/rich-text-v2/dto.d.ts.map +1 -0
  436. package/dist/types/controls/rich-text-v2/introspection.d.ts +5 -0
  437. package/dist/types/controls/rich-text-v2/introspection.d.ts.map +1 -0
  438. package/dist/types/controls/select.d.ts +22 -0
  439. package/dist/types/controls/select.d.ts.map +1 -0
  440. package/dist/types/controls/shape.d.ts +50 -0
  441. package/dist/types/controls/shape.d.ts.map +1 -0
  442. package/dist/types/controls/style-v2.d.ts +64 -0
  443. package/dist/types/controls/style-v2.d.ts.map +1 -0
  444. package/dist/types/controls/style.d.ts +179 -0
  445. package/dist/types/controls/style.d.ts.map +1 -0
  446. package/dist/types/controls/text-area.d.ts +22 -0
  447. package/dist/types/controls/text-area.d.ts.map +1 -0
  448. package/dist/types/controls/text-input.d.ts +22 -0
  449. package/dist/types/controls/text-input.d.ts.map +1 -0
  450. package/dist/types/controls/types.d.ts +14 -0
  451. package/dist/types/controls/types.d.ts.map +1 -0
  452. package/dist/types/controls/typography.d.ts +33 -0
  453. package/dist/types/controls/typography.d.ts.map +1 -0
  454. package/dist/types/locale.d.ts +1 -1
  455. package/dist/types/next/api-handler/handlers/clear-draft.d.ts +20 -0
  456. package/dist/types/next/api-handler/handlers/clear-draft.d.ts.map +1 -0
  457. package/dist/types/next/api-handler/handlers/redirect-draft.d.ts +18 -0
  458. package/dist/types/next/api-handler/handlers/redirect-draft.d.ts.map +1 -0
  459. package/dist/types/next/api-handler/handlers/redirect-preview.d.ts +18 -0
  460. package/dist/types/next/api-handler/handlers/redirect-preview.d.ts.map +1 -0
  461. package/dist/types/next/api-handler/handlers/utils/draft.d.ts +16 -0
  462. package/dist/types/next/api-handler/handlers/utils/draft.d.ts.map +1 -0
  463. package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts +1 -2
  464. package/dist/types/next/api-handler/handlers/webhook/site-published.d.ts.map +1 -1
  465. package/dist/types/next/api-handler/handlers/webhook/types.d.ts +12 -12
  466. package/dist/types/next/cache.d.ts +2 -0
  467. package/dist/types/next/cache.d.ts.map +1 -0
  468. package/dist/types/next/client.d.ts +8 -8
  469. package/dist/types/next/components/tests/controls/color-control.test.d.ts +3 -0
  470. package/dist/types/next/components/tests/controls/color-control.test.d.ts.map +1 -0
  471. package/dist/types/next/components/tests/controls/style-control.test.d.ts +2 -0
  472. package/dist/types/next/components/tests/controls/style-control.test.d.ts.map +1 -0
  473. package/dist/types/next/context/makeswift-host-api-client.d.ts +8 -0
  474. package/dist/types/next/context/makeswift-host-api-client.d.ts.map +1 -0
  475. package/dist/types/next/context/react-runtime.d.ts +8 -0
  476. package/dist/types/next/context/react-runtime.d.ts.map +1 -0
  477. package/dist/types/next/hooks/use-sync-cache-data.d.ts +3 -0
  478. package/dist/types/next/hooks/use-sync-cache-data.d.ts.map +1 -0
  479. package/dist/types/prop-controllers/base.d.ts +7 -0
  480. package/dist/types/prop-controllers/base.d.ts.map +1 -0
  481. package/dist/types/prop-controllers/copy/backgrounds.d.ts +4 -0
  482. package/dist/types/prop-controllers/copy/backgrounds.d.ts.map +1 -0
  483. package/dist/types/prop-controllers/copy/element-id.d.ts +3 -0
  484. package/dist/types/prop-controllers/copy/element-id.d.ts.map +1 -0
  485. package/dist/types/prop-controllers/copy/grid.d.ts +4 -0
  486. package/dist/types/prop-controllers/copy/grid.d.ts.map +1 -0
  487. package/dist/types/prop-controllers/copy/image.d.ts +4 -0
  488. package/dist/types/prop-controllers/copy/image.d.ts.map +1 -0
  489. package/dist/types/prop-controllers/copy/image.test.d.ts +2 -0
  490. package/dist/types/prop-controllers/copy/image.test.d.ts.map +1 -0
  491. package/dist/types/prop-controllers/copy/images.d.ts +4 -0
  492. package/dist/types/prop-controllers/copy/images.d.ts.map +1 -0
  493. package/dist/types/prop-controllers/copy/images.test.d.ts +2 -0
  494. package/dist/types/prop-controllers/copy/images.test.d.ts.map +1 -0
  495. package/dist/types/prop-controllers/copy/navigation-links.d.ts +4 -0
  496. package/dist/types/prop-controllers/copy/navigation-links.d.ts.map +1 -0
  497. package/dist/types/prop-controllers/copy/navigation-links.test.d.ts +2 -0
  498. package/dist/types/prop-controllers/copy/navigation-links.test.d.ts.map +1 -0
  499. package/dist/types/prop-controllers/copy/rich-text.d.ts +4 -0
  500. package/dist/types/prop-controllers/copy/rich-text.d.ts.map +1 -0
  501. package/dist/types/prop-controllers/copy/rich-text.test.d.ts +2 -0
  502. package/dist/types/prop-controllers/copy/rich-text.test.d.ts.map +1 -0
  503. package/dist/types/prop-controllers/copy/table-form-fields.d.ts +4 -0
  504. package/dist/types/prop-controllers/copy/table-form-fields.d.ts.map +1 -0
  505. package/dist/types/prop-controllers/copy/table-form-fields.test.d.ts +2 -0
  506. package/dist/types/prop-controllers/copy/table-form-fields.test.d.ts.map +1 -0
  507. package/dist/types/prop-controllers/copy/table.d.ts +4 -0
  508. package/dist/types/prop-controllers/copy/table.d.ts.map +1 -0
  509. package/dist/types/prop-controllers/copy/table.test.d.ts +2 -0
  510. package/dist/types/prop-controllers/copy/table.test.d.ts.map +1 -0
  511. package/dist/types/runtimes/react/components/DocumentReference.d.ts +9 -0
  512. package/dist/types/runtimes/react/components/DocumentReference.d.ts.map +1 -0
  513. package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts +4 -0
  514. package/dist/types/runtimes/react/components/draft-switcher/draft-switcher.d.ts.map +1 -0
  515. package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts +6 -0
  516. package/dist/types/runtimes/react/components/draft-switcher/draft-toolbar.d.ts.map +1 -0
  517. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts +4 -0
  518. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts.map +1 -0
  519. package/dist/types/runtimes/react/components/hooks/use-builder-handshake.d.ts +4 -0
  520. package/dist/types/runtimes/react/components/hooks/use-builder-handshake.d.ts.map +1 -0
  521. package/dist/types/runtimes/react/controls/checkbox.d.ts +4 -0
  522. package/dist/types/runtimes/react/controls/checkbox.d.ts.map +1 -0
  523. package/dist/types/runtimes/react/controls/color.d.ts +4 -0
  524. package/dist/types/runtimes/react/controls/color.d.ts.map +1 -0
  525. package/dist/types/runtimes/react/controls/combobox.d.ts +4 -0
  526. package/dist/types/runtimes/react/controls/combobox.d.ts.map +1 -0
  527. package/dist/types/runtimes/react/controls/icon-radio-group.d.ts +4 -0
  528. package/dist/types/runtimes/react/controls/icon-radio-group.d.ts.map +1 -0
  529. package/dist/types/runtimes/react/controls/image.d.ts +4 -0
  530. package/dist/types/runtimes/react/controls/image.d.ts.map +1 -0
  531. package/dist/types/runtimes/react/controls/link.d.ts +4 -0
  532. package/dist/types/runtimes/react/controls/link.d.ts.map +1 -0
  533. package/dist/types/runtimes/react/controls/list.d.ts +12 -0
  534. package/dist/types/runtimes/react/controls/list.d.ts.map +1 -0
  535. package/dist/types/runtimes/react/controls/number.d.ts +4 -0
  536. package/dist/types/runtimes/react/controls/number.d.ts.map +1 -0
  537. package/dist/types/runtimes/react/controls/select.d.ts +4 -0
  538. package/dist/types/runtimes/react/controls/select.d.ts.map +1 -0
  539. package/dist/types/runtimes/react/controls/shape.d.ts +12 -0
  540. package/dist/types/runtimes/react/controls/shape.d.ts.map +1 -0
  541. package/dist/types/runtimes/react/controls/style-v2.d.ts +13 -0
  542. package/dist/types/runtimes/react/controls/style-v2.d.ts.map +1 -0
  543. package/dist/types/runtimes/react/controls/text-area.d.ts +4 -0
  544. package/dist/types/runtimes/react/controls/text-area.d.ts.map +1 -0
  545. package/dist/types/runtimes/react/controls/text-input.d.ts +4 -0
  546. package/dist/types/runtimes/react/controls/text-input.d.ts.map +1 -0
  547. package/dist/types/runtimes/react/hooks/use-document-key.d.ts +4 -0
  548. package/dist/types/runtimes/react/hooks/use-document-key.d.ts.map +1 -0
  549. package/dist/types/runtimes/react/hooks/use-head-marker.d.ts +3 -0
  550. package/dist/types/runtimes/react/hooks/use-head-marker.d.ts.map +1 -0
  551. package/dist/types/slate/LinkPlugin/linkPluginWithoutRenderElement.d.ts +16 -0
  552. package/dist/types/slate/LinkPlugin/linkPluginWithoutRenderElement.d.ts.map +1 -0
  553. package/dist/types/state/react-builder-preview.test.d.ts +2 -0
  554. package/dist/types/state/react-builder-preview.test.d.ts.map +1 -0
  555. package/dist/types/state/react-page.test.d.ts +2 -0
  556. package/dist/types/state/react-page.test.d.ts.map +1 -0
  557. package/dist/types/utils/coalesce.d.ts +3 -0
  558. package/dist/types/utils/coalesce.d.ts.map +1 -0
  559. package/dist/types/utils/index-signature-hack.d.ts +4 -0
  560. package/dist/types/utils/index-signature-hack.d.ts.map +1 -0
  561. package/dist/types/utils/shallowMerge.d.ts +2 -0
  562. package/dist/types/utils/shallowMerge.d.ts.map +1 -0
  563. package/dist/types/utils/tests/breakpoint-test-util.d.ts +4 -0
  564. package/dist/types/utils/tests/breakpoint-test-util.d.ts.map +1 -0
  565. package/dist/types/utils/tests/element-data-test-test.d.ts +51 -0
  566. package/dist/types/utils/tests/element-data-test-test.d.ts.map +1 -0
  567. package/package.json +3 -3
@@ -0,0 +1,48 @@
1
+ import { PropController } from "../prop-controllers/base";
2
+ import {
3
+ createPropController
4
+ } from "../prop-controllers/instances";
5
+ import { useStyle } from "../runtimes/react/use-style";
6
+ const StyleV2ControlType = "makeswift::controls::style-v2";
7
+ const unstable_useStyleV2ClassName = useStyle;
8
+ function unstable_StyleV2(config) {
9
+ return { type: StyleV2ControlType, config };
10
+ }
11
+ const StyleV2ControlMessageType = {
12
+ CHANGE_BOX_MODEL: "makeswift::controls::style::message::change-box-model",
13
+ STYLE_V2_CONTROL_CHILD_CONTROL_MESSAGE: "makeswift::controls::style-v2::message::child-control-message"
14
+ };
15
+ class StyleV2Control extends PropController {
16
+ control;
17
+ constructor(send, descriptor) {
18
+ super(send);
19
+ this.control = createPropController(descriptor.config.type, (message) => {
20
+ this.send({
21
+ type: StyleV2ControlMessageType.STYLE_V2_CONTROL_CHILD_CONTROL_MESSAGE,
22
+ payload: { message }
23
+ });
24
+ });
25
+ }
26
+ changeBoxModel(boxModel) {
27
+ this.send({ type: StyleV2ControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } });
28
+ }
29
+ recv(message) {
30
+ switch (message.type) {
31
+ case StyleV2ControlMessageType.STYLE_V2_CONTROL_CHILD_CONTROL_MESSAGE: {
32
+ const control = this.control;
33
+ if (control == null)
34
+ return;
35
+ const recv = control.recv;
36
+ recv(message.payload.message);
37
+ }
38
+ }
39
+ }
40
+ }
41
+ export {
42
+ StyleV2Control,
43
+ StyleV2ControlMessageType,
44
+ StyleV2ControlType,
45
+ unstable_StyleV2,
46
+ unstable_useStyleV2ClassName
47
+ };
48
+ //# sourceMappingURL=style-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/controls/style-v2.ts"],"sourcesContent":["import { ResponsiveValue } from '@makeswift/controls'\nimport { BoxModel } from 'css-box-model'\nimport { ControlDefinition } from './control'\nimport { PropController } from '../prop-controllers/base'\nimport {\n AnyPropController,\n PropControllerMessage,\n Send,\n createPropController,\n} from '../prop-controllers/instances'\nimport { CSSObject } from '@emotion/serialize'\nimport { useStyle } from '../runtimes/react/use-style'\nimport { ControlDefinitionValue } from '../runtimes/react/controls/control'\n\nexport const StyleV2ControlType = 'makeswift::controls::style-v2'\n\nexport type StyleV2CSSObject = CSSObject\nexport const unstable_useStyleV2ClassName = useStyle\n\ntype StyleV2ControlConfig<T extends ControlDefinition = ControlDefinition> = {\n type: T\n getStyle(item: ControlDefinitionValue<T> | undefined): CSSObject\n}\n\nexport type StyleV2ControlDefinition = {\n type: typeof StyleV2ControlType\n config: StyleV2ControlConfig\n}\n\nexport function unstable_StyleV2<C extends StyleV2ControlConfig>(\n config: C,\n): StyleV2ControlDefinition {\n return { type: StyleV2ControlType, config }\n}\n\n/**\n * TODO: Rewrite `ControlDefinitionData` as a tail recursive type.\n *\n * Explanation: Making `StyleV2ControlData` generic causes us to hit a limitation of TS conditional types for the definition of `ControlDefinitionData`.\n * We get \"Type instantiation is excessively deep and possibly infinite.\"\n *\n * Helpful links:\n * * The PR changing the limit of conditional types: https://github.com/microsoft/TypeScript/pull/45711\n * * TS 4.5 docs releasing this limitation: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-5.html#tail-recursion-elimination-on-conditional-types\n * * A SO user implementing a tail recursive type: https://stackoverflow.com/questions/72370456/tail-recursion-elimination-on-conditional-types-doesnt-work\n *\n *\n * This is what the type should be:\n * ```\n * export type StyleV2ControlData<T extends StyleV2ControlDefinition = StyleV2ControlDefinition> =\n * ResponsiveValue<ControlDefinitionData<T['config']['type']>>\n * ```\n */\nexport type StyleV2ControlData = ResponsiveValue<any>\n\nexport const StyleV2ControlMessageType = {\n CHANGE_BOX_MODEL: 'makeswift::controls::style::message::change-box-model',\n STYLE_V2_CONTROL_CHILD_CONTROL_MESSAGE:\n 'makeswift::controls::style-v2::message::child-control-message',\n} as const\n\ntype StyleV2ControlItemBoxModelChangeMessage = {\n type: typeof StyleV2ControlMessageType.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\ntype StyleV2ControlChildControlMessage = {\n type: typeof StyleV2ControlMessageType.STYLE_V2_CONTROL_CHILD_CONTROL_MESSAGE\n payload: { message: PropControllerMessage }\n}\n\nexport type StyleV2ControlMessage =\n | StyleV2ControlItemBoxModelChangeMessage\n | StyleV2ControlChildControlMessage\n\nexport class StyleV2Control<\n T extends StyleV2ControlDefinition = StyleV2ControlDefinition,\n> extends PropController<StyleV2ControlMessage> {\n control?: AnyPropController\n constructor(send: Send<StyleV2ControlMessage>, descriptor: T) {\n super(send)\n this.control = createPropController(descriptor.config.type, message => {\n this.send({\n type: StyleV2ControlMessageType.STYLE_V2_CONTROL_CHILD_CONTROL_MESSAGE,\n payload: { message },\n })\n })\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.send({ type: StyleV2ControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } })\n }\n\n recv(message: StyleV2ControlMessage) {\n switch (message.type) {\n case StyleV2ControlMessageType.STYLE_V2_CONTROL_CHILD_CONTROL_MESSAGE: {\n const control = this.control\n\n if (control == null) return\n\n const recv = control.recv as (arg0: PropControllerMessage) => void\n\n recv(message.payload.message)\n }\n }\n }\n}\n"],"mappings":"AAGA,SAAS,sBAAsB;AAC/B;AAAA,EAIE;AAAA,OACK;AAEP,SAAS,gBAAgB;AAGlB,MAAM,qBAAqB;AAG3B,MAAM,+BAA+B;AAYrC,SAAS,iBACd,QAC0B;AAC1B,SAAO,EAAE,MAAM,oBAAoB,OAAO;AAC5C;AAsBO,MAAM,4BAA4B;AAAA,EACvC,kBAAkB;AAAA,EAClB,wCACE;AACJ;AAeO,MAAM,uBAEH,eAAsC;AAAA,EAC9C;AAAA,EACA,YAAY,MAAmC,YAAe;AAC5D,UAAM,IAAI;AACV,SAAK,UAAU,qBAAqB,WAAW,OAAO,MAAM,aAAW;AACrE,WAAK,KAAK;AAAA,QACR,MAAM,0BAA0B;AAAA,QAChC,SAAS,EAAE,QAAQ;AAAA,MACrB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,eAAe,UAAiC;AAC9C,SAAK,KAAK,EAAE,MAAM,0BAA0B,kBAAkB,SAAS,EAAE,SAAS,EAAE,CAAC;AAAA,EACvF;AAAA,EAEA,KAAK,SAAgC;AACnC,YAAQ,QAAQ,MAAM;AAAA,MACpB,KAAK,0BAA0B,wCAAwC;AACrE,cAAM,UAAU,KAAK;AAErB,YAAI,WAAW;AAAM;AAErB,cAAM,OAAO,QAAQ;AAErB,aAAK,QAAQ,QAAQ,OAAO;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,95 @@
1
+ import { copyColorData } from "@makeswift/controls";
2
+ import { getBorderPropControllerDataSwatchIds } from "@makeswift/prop-controllers";
3
+ import { PropController } from "../prop-controllers/base";
4
+ const StyleControlType = "makeswift::controls::style";
5
+ const StyleControlProperty = {
6
+ Width: "makeswift::controls::style::property::width",
7
+ Margin: "makeswift::controls::style::property::margin",
8
+ Padding: "makeswift::controls::style::property::padding",
9
+ Border: "makeswift::controls::style::property::border",
10
+ BorderRadius: "makeswift::controls::style::property::border-radius",
11
+ TextStyle: "makeswift::controls::style::property::text-style"
12
+ };
13
+ const StyleControlDefaultProperties = [
14
+ StyleControlProperty.Width,
15
+ StyleControlProperty.Margin
16
+ ];
17
+ const AllStyleControlProperties = [
18
+ StyleControlProperty.Width,
19
+ StyleControlProperty.Margin,
20
+ StyleControlProperty.Padding,
21
+ StyleControlProperty.Border,
22
+ StyleControlProperty.BorderRadius,
23
+ StyleControlProperty.TextStyle
24
+ ];
25
+ function Style(params) {
26
+ return {
27
+ type: StyleControlType,
28
+ config: { properties: params?.properties ?? StyleControlDefaultProperties }
29
+ };
30
+ }
31
+ Style.Default = StyleControlDefaultProperties;
32
+ Style.All = AllStyleControlProperties;
33
+ Style.Width = StyleControlProperty.Width;
34
+ Style.Margin = StyleControlProperty.Margin;
35
+ Style.Padding = StyleControlProperty.Padding;
36
+ Style.Border = StyleControlProperty.Border;
37
+ Style.BorderRadius = StyleControlProperty.BorderRadius;
38
+ Style.TextStyle = StyleControlProperty.TextStyle;
39
+ const StyleControlMessageType = {
40
+ CHANGE_BOX_MODEL: "makeswift::controls::style::message::change-box-model"
41
+ };
42
+ class StyleControl extends PropController {
43
+ constructor(send) {
44
+ super(send);
45
+ }
46
+ changeBoxModel(boxModel) {
47
+ this.send({ type: StyleControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } });
48
+ }
49
+ recv() {
50
+ }
51
+ }
52
+ function getStyleSwatchIds(data) {
53
+ return getBorderPropControllerDataSwatchIds(data.border);
54
+ }
55
+ function copyStyleData(value, context) {
56
+ if (value == null)
57
+ return value;
58
+ function copyResponsiveBorder(responsiveBorder) {
59
+ if (responsiveBorder == null)
60
+ return void 0;
61
+ return responsiveBorder.map((deviceBorder) => ({
62
+ ...deviceBorder,
63
+ value: copyBorder(deviceBorder.value)
64
+ }));
65
+ }
66
+ function copyBorder(border) {
67
+ function copyBorderSide(side) {
68
+ if (side == null)
69
+ return null;
70
+ if (side.color == null)
71
+ return side;
72
+ return {
73
+ ...side,
74
+ color: copyColorData(side.color, context)
75
+ };
76
+ }
77
+ return {
78
+ borderTop: copyBorderSide(border.borderTop),
79
+ borderBottom: copyBorderSide(border.borderBottom),
80
+ borderRight: copyBorderSide(border.borderRight),
81
+ borderLeft: copyBorderSide(border.borderLeft)
82
+ };
83
+ }
84
+ return { ...value, border: copyResponsiveBorder(value.border) };
85
+ }
86
+ export {
87
+ Style,
88
+ StyleControl,
89
+ StyleControlMessageType,
90
+ StyleControlProperty,
91
+ StyleControlType,
92
+ copyStyleData,
93
+ getStyleSwatchIds
94
+ };
95
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/controls/style.ts"],"sourcesContent":["import { ColorData, copyColorData, ResponsiveValue } from '@makeswift/controls'\nimport { getBorderPropControllerDataSwatchIds } from '@makeswift/prop-controllers'\n\nimport { BorderRadiusPropertyData } from '../css/border-radius'\nimport type { LengthPercentageData } from '../css/length-percentage'\nimport { MarginPropertyData } from '../css/margin'\nimport { PaddingPropertyData } from '../css/padding'\nimport { CopyContext } from '../state/react-page'\nimport { Send } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\nimport { BoxModel } from '../state/modules/box-models'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/width */\nexport type WidthPropertyData = LengthPercentageData\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-style\n */\ntype BorderStyle = 'dotted' | 'dashed' | 'solid'\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-top#constituent_properties\n *\n * @todos\n * - Change `width` to be a `Length`\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderSideShorthandPropertyData = {\n width: number | null | undefined\n style: BorderStyle\n color?: ColorData | null\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderPropertyData = {\n borderTop: BorderSideShorthandPropertyData | null | undefined\n borderRight: BorderSideShorthandPropertyData | null | undefined\n borderBottom: BorderSideShorthandPropertyData | null | undefined\n borderLeft: BorderSideShorthandPropertyData | null | undefined\n}\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-family\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontFamilyPropertyData = string | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type LetterSpacingPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-size\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontSizePropertyData =\n | {\n value: number\n unit: 'px'\n }\n | null\n | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontWeightPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/text-transform\n *\n * @todos\n * - Match the type with specification\n */\nexport type TextTransformPropertyData = 'uppercase'[]\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\n *\n * @todos\n * - Match the type with specification\n */\nexport type FontStylePropertyData = 'italic'[]\n\n/**\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type TextStylePropertyData = {\n fontFamily?: FontFamilyPropertyData | null | undefined\n letterSpacing: LetterSpacingPropertyData | null | undefined\n fontSize: FontSizePropertyData | null | undefined\n fontWeight: FontWeightPropertyData | null | undefined\n textTransform: TextTransformPropertyData\n fontStyle: FontStylePropertyData\n}\n\n/**\n * Primitives like `string` and `number` are excluded from the style data because the relevant\n * panels from the Makeswift builder were originally implemented only to support object values, and\n * not CSS strings. For example, 100 pixels would be `{ value: 100, unit: 'px' }` but never `100` or\n * `'100px'`.\n */\nexport type StyleControlData = {\n width?: ResponsiveValue<Exclude<WidthPropertyData, string | number>>\n margin?: ResponsiveValue<{\n [K in keyof MarginPropertyData]: Exclude<MarginPropertyData[K], string | number> | 'auto'\n }>\n padding?: ResponsiveValue<{\n [K in keyof PaddingPropertyData]: Exclude<PaddingPropertyData[K], string | number>\n }>\n border?: ResponsiveValue<BorderPropertyData>\n borderRadius?: ResponsiveValue<{\n [K in keyof BorderRadiusPropertyData]: Exclude<BorderRadiusPropertyData[K], string | number>\n }>\n textStyle?: ResponsiveValue<TextStylePropertyData>\n}\n\nexport const StyleControlType = 'makeswift::controls::style'\n\nexport const StyleControlProperty = {\n Width: 'makeswift::controls::style::property::width',\n Margin: 'makeswift::controls::style::property::margin',\n Padding: 'makeswift::controls::style::property::padding',\n Border: 'makeswift::controls::style::property::border',\n BorderRadius: 'makeswift::controls::style::property::border-radius',\n TextStyle: 'makeswift::controls::style::property::text-style',\n} as const\n\nexport type StyleControlProperty = typeof StyleControlProperty[keyof typeof StyleControlProperty]\n\ntype StyleControlParams = { properties?: StyleControlProperty[] }\n\nexport type StyleControlConfig = { properties: StyleControlProperty[] }\n\nconst StyleControlDefaultProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n]\n\nconst AllStyleControlProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n StyleControlProperty.Padding,\n StyleControlProperty.Border,\n StyleControlProperty.BorderRadius,\n StyleControlProperty.TextStyle,\n]\n\nexport type StyleControlDefinition = {\n type: typeof StyleControlType\n config: StyleControlConfig\n}\n\n/**\n * @todos\n * - Add support for custom panel labels.\n * - Add support for default values. Internally, default values must be represented with the same\n * format as the underlying data so that controls can show these values.\n */\nexport function Style(params?: StyleControlParams): StyleControlDefinition {\n return {\n type: StyleControlType,\n config: { properties: params?.properties ?? StyleControlDefaultProperties },\n }\n}\n\nStyle.Default = StyleControlDefaultProperties\nStyle.All = AllStyleControlProperties\n\nStyle.Width = StyleControlProperty.Width\nStyle.Margin = StyleControlProperty.Margin\nStyle.Padding = StyleControlProperty.Padding\nStyle.Border = StyleControlProperty.Border\nStyle.BorderRadius = StyleControlProperty.BorderRadius\nStyle.TextStyle = StyleControlProperty.TextStyle\n\nexport const StyleControlMessageType = {\n CHANGE_BOX_MODEL: 'makeswift::controls::style::message::change-box-model',\n} as const\n\ntype StyleControlItemBoxModelChangeMessage = {\n type: typeof StyleControlMessageType.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\n\nexport type StyleControlMessage = StyleControlItemBoxModelChangeMessage\n\nexport class StyleControl extends PropController<StyleControlMessage> {\n constructor(send: Send<StyleControlMessage>) {\n super(send)\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.send({ type: StyleControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } })\n }\n\n recv() {}\n}\n\nexport function getStyleSwatchIds(data: StyleControlData): string[] {\n return getBorderPropControllerDataSwatchIds(data.border)\n}\n\nexport function copyStyleData(\n value: StyleControlData | undefined,\n context: CopyContext,\n): StyleControlData | undefined {\n if (value == null) return value\n\n function copyResponsiveBorder(\n responsiveBorder: ResponsiveValue<BorderPropertyData> | undefined,\n ): ResponsiveValue<BorderPropertyData> | undefined {\n if (responsiveBorder == null) return undefined\n return responsiveBorder.map(deviceBorder => ({\n ...deviceBorder,\n value: copyBorder(deviceBorder.value),\n }))\n }\n\n function copyBorder(border: BorderPropertyData): BorderPropertyData {\n function copyBorderSide(side: BorderSideShorthandPropertyData | null | undefined) {\n if (side == null) return null\n\n if (side.color == null) return side\n\n return {\n ...side,\n color: copyColorData(side.color, context),\n }\n }\n\n return {\n borderTop: copyBorderSide(border.borderTop),\n borderBottom: copyBorderSide(border.borderBottom),\n borderRight: copyBorderSide(border.borderRight),\n borderLeft: copyBorderSide(border.borderLeft),\n }\n }\n\n return { ...value, border: copyResponsiveBorder(value.border) }\n}\n"],"mappings":"AAAA,SAAoB,qBAAsC;AAC1D,SAAS,4CAA4C;AAQrD,SAAS,sBAAsB;AAoIxB,MAAM,mBAAmB;AAEzB,MAAM,uBAAuB;AAAA,EAClC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,WAAW;AACb;AAQA,MAAM,gCAAwD;AAAA,EAC5D,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAEA,MAAM,4BAAoD;AAAA,EACxD,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAaO,SAAS,MAAM,QAAqD;AACzE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,YAAY,QAAQ,cAAc,8BAA8B;AAAA,EAC5E;AACF;AAEA,MAAM,UAAU;AAChB,MAAM,MAAM;AAEZ,MAAM,QAAQ,qBAAqB;AACnC,MAAM,SAAS,qBAAqB;AACpC,MAAM,UAAU,qBAAqB;AACrC,MAAM,SAAS,qBAAqB;AACpC,MAAM,eAAe,qBAAqB;AAC1C,MAAM,YAAY,qBAAqB;AAEhC,MAAM,0BAA0B;AAAA,EACrC,kBAAkB;AACpB;AASO,MAAM,qBAAqB,eAAoC;AAAA,EACpE,YAAY,MAAiC;AAC3C,UAAM,IAAI;AAAA,EACZ;AAAA,EAEA,eAAe,UAAiC;AAC9C,SAAK,KAAK,EAAE,MAAM,wBAAwB,kBAAkB,SAAS,EAAE,SAAS,EAAE,CAAC;AAAA,EACrF;AAAA,EAEA,OAAO;AAAA,EAAC;AACV;AAEO,SAAS,kBAAkB,MAAkC;AAClE,SAAO,qCAAqC,KAAK,MAAM;AACzD;AAEO,SAAS,cACd,OACA,SAC8B;AAC9B,MAAI,SAAS;AAAM,WAAO;AAE1B,WAAS,qBACP,kBACiD;AACjD,QAAI,oBAAoB;AAAM,aAAO;AACrC,WAAO,iBAAiB,IAAI,mBAAiB;AAAA,MAC3C,GAAG;AAAA,MACH,OAAO,WAAW,aAAa,KAAK;AAAA,IACtC,EAAE;AAAA,EACJ;AAEA,WAAS,WAAW,QAAgD;AAClE,aAAS,eAAe,MAA0D;AAChF,UAAI,QAAQ;AAAM,eAAO;AAEzB,UAAI,KAAK,SAAS;AAAM,eAAO;AAE/B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,OAAO,cAAc,KAAK,OAAO,OAAO;AAAA,MAC1C;AAAA,IACF;AAEA,WAAO;AAAA,MACL,WAAW,eAAe,OAAO,SAAS;AAAA,MAC1C,cAAc,eAAe,OAAO,YAAY;AAAA,MAChD,aAAa,eAAe,OAAO,WAAW;AAAA,MAC9C,YAAY,eAAe,OAAO,UAAU;AAAA,IAC9C;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,OAAO,QAAQ,qBAAqB,MAAM,MAAM,EAAE;AAChE;","names":[]}
@@ -0,0 +1,14 @@
1
+ import { ControlDataTypeKey } from "./control-data-type-key";
2
+ const TextAreaControlDataTypeKey = ControlDataTypeKey;
3
+ const TextAreaControlDataTypeValueV1 = "text-area::v1";
4
+ const TextAreaControlType = "makeswift::controls::text-area";
5
+ function TextArea(config = {}) {
6
+ return { type: TextAreaControlType, config, version: 1 };
7
+ }
8
+ export {
9
+ TextArea,
10
+ TextAreaControlDataTypeKey,
11
+ TextAreaControlDataTypeValueV1,
12
+ TextAreaControlType
13
+ };
14
+ //# sourceMappingURL=text-area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/controls/text-area.ts"],"sourcesContent":["import { ControlDataTypeKey } from \"./control-data-type-key\"\n\nexport const TextAreaControlDataTypeKey = ControlDataTypeKey\n\nexport const TextAreaControlDataTypeValueV1 = 'text-area::v1'\n\nexport type TextAreaControlDataV0 = string\n\nexport type TextAreaControlDataV1 = {\n [TextAreaControlDataTypeKey]: typeof TextAreaControlDataTypeValueV1\n value: string,\n}\n\nexport type TextAreaControlData = TextAreaControlDataV0 | TextAreaControlDataV1\n\nexport const TextAreaControlType = 'makeswift::controls::text-area'\n\ntype TextAreaControlConfig = {\n label?: string\n defaultValue?: string\n rows?: number\n}\n\nexport type TextAreaControlDefinition<C extends TextAreaControlConfig = TextAreaControlConfig> = {\n type: typeof TextAreaControlType\n config: C\n version?: 1\n}\n\nexport function TextArea<C extends TextAreaControlConfig>(\n config: C = {} as C,\n): TextAreaControlDefinition<C> {\n return { type: TextAreaControlType, config, version: 1 }\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAE5B,MAAM,6BAA6B;AAEnC,MAAM,iCAAiC;AAWvC,MAAM,sBAAsB;AAc5B,SAAS,SACd,SAAY,CAAC,GACiB;AAC9B,SAAO,EAAE,MAAM,qBAAqB,QAAQ,SAAS,EAAE;AACzD;","names":[]}
@@ -0,0 +1,14 @@
1
+ import { ControlDataTypeKey } from "./control-data-type-key";
2
+ const TextInputControlDataTypeKey = ControlDataTypeKey;
3
+ const TextInputControlDataTypeValueV1 = "text-input::v1";
4
+ const TextInputControlType = "makeswift::controls::text-input";
5
+ function TextInput(config = {}) {
6
+ return { type: TextInputControlType, config, version: 1 };
7
+ }
8
+ export {
9
+ TextInput,
10
+ TextInputControlDataTypeKey,
11
+ TextInputControlDataTypeValueV1,
12
+ TextInputControlType
13
+ };
14
+ //# sourceMappingURL=text-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/controls/text-input.ts"],"sourcesContent":["import { ControlDataTypeKey } from \"./control-data-type-key\"\n\nexport const TextInputControlDataTypeKey = ControlDataTypeKey\n\nexport const TextInputControlDataTypeValueV1 = 'text-input::v1'\n\nexport type TextInputControlDataV0 = string\n\nexport type TextInputControlDataV1 = {\n [ControlDataTypeKey]: typeof TextInputControlDataTypeValueV1\n value: string,\n}\n\nexport type TextInputControlData = TextInputControlDataV0 | TextInputControlDataV1\n\nexport const TextInputControlType = 'makeswift::controls::text-input'\n\ntype TextInputControlConfig = {\n label?: string\n defaultValue?: string\n}\n\nexport type TextInputControlDefinition<C extends TextInputControlConfig = TextInputControlConfig> =\n {\n type: typeof TextInputControlType\n config: C\n version?: 1\n }\n\nexport function TextInput<C extends TextInputControlConfig>(\n config: C = {} as C,\n): TextInputControlDefinition<C> {\n return { type: TextInputControlType, config, version: 1 }\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAE5B,MAAM,8BAA8B;AAEpC,MAAM,kCAAkC;AAWxC,MAAM,uBAAuB;AAc7B,SAAS,UACd,SAAY,CAAC,GACkB;AAC/B,SAAO,EAAE,MAAM,sBAAsB,QAAQ,SAAS,EAAE;AAC1D;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,20 @@
1
+ import { isNonNullable } from "../utils/isNonNullable";
2
+ const TypographyControlType = "makeswift::controls::typography";
3
+ function unstable_Typography() {
4
+ return {
5
+ type: TypographyControlType
6
+ };
7
+ }
8
+ function getTypographySwatchIds(value) {
9
+ return value?.style.flatMap((style) => style.value.color?.swatchId ?? []).filter(isNonNullable) ?? [];
10
+ }
11
+ function getTypographyTypographyIds(value) {
12
+ return [value?.id].filter(isNonNullable);
13
+ }
14
+ export {
15
+ TypographyControlType,
16
+ getTypographySwatchIds,
17
+ getTypographyTypographyIds,
18
+ unstable_Typography
19
+ };
20
+ //# sourceMappingURL=typography.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/controls/typography.ts"],"sourcesContent":["import { isNonNullable } from '../utils/isNonNullable'\n\nexport type TypographyControlData = (\n | {\n id?: string\n style: Array<{\n deviceId: string\n value: {\n fontFamily?: string | null\n lineHeight?: number | null\n letterSpacing?: number | null\n fontWeight?: number | null\n textAlign?: string | null\n uppercase?: boolean | null\n underline?: boolean | null\n strikethrough?: boolean | null\n italic?: boolean | null\n fontSize?: { value: number | null; unit: string | null } | null\n color?: { swatchId: string | null; alpha: number | null } | null\n }\n }>\n }\n | undefined\n)[]\n\nexport const TypographyControlType = 'makeswift::controls::typography'\n\nexport type TypographyControlDefinition = {\n type: typeof TypographyControlType\n}\n\nexport function unstable_Typography(): TypographyControlDefinition {\n return {\n type: TypographyControlType,\n }\n}\n\nexport function getTypographySwatchIds(value: TypographyControlData[number]) {\n return (\n value?.style.flatMap(style => style.value.color?.swatchId ?? []).filter(isNonNullable) ?? []\n )\n}\n\nexport function getTypographyTypographyIds(value: TypographyControlData[number]) {\n return [value?.id].filter(isNonNullable)\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAyBvB,MAAM,wBAAwB;AAM9B,SAAS,sBAAmD;AACjE,SAAO;AAAA,IACL,MAAM;AAAA,EACR;AACF;AAEO,SAAS,uBAAuB,OAAsC;AAC3E,SACE,OAAO,MAAM,QAAQ,WAAS,MAAM,MAAM,OAAO,YAAY,CAAC,CAAC,EAAE,OAAO,aAAa,KAAK,CAAC;AAE/F;AAEO,SAAS,2BAA2B,OAAsC;AAC/E,SAAO,CAAC,OAAO,EAAE,EAAE,OAAO,aAAa;AACzC;","names":[]}
@@ -0,0 +1,50 @@
1
+ import { NextResponse } from "next/server";
2
+ import { P, match } from "ts-pattern";
3
+ import {
4
+ MAKESWIFT_DRAFT_DATA_COOKIE,
5
+ PRERENDER_BYPASS_COOKIE,
6
+ PREVIEW_DATA_COOKIE,
7
+ SET_COOKIE_HEADER,
8
+ cookieSettingOptions
9
+ } from "./utils/draft";
10
+ import { serialize as serializeCookie } from "cookie";
11
+ function clearCookiesHeader(cookieNames) {
12
+ const headers = new Headers();
13
+ cookieNames.forEach((name) => {
14
+ headers.append(
15
+ SET_COOKIE_HEADER,
16
+ serializeCookie(name, "", { ...cookieSettingOptions, expires: /* @__PURE__ */ new Date(0) })
17
+ );
18
+ });
19
+ const setCookieHeader = headers.get(SET_COOKIE_HEADER);
20
+ if (setCookieHeader == null) {
21
+ throw new Error(
22
+ `Could not generate set-cookie header to clear cookies: ${cookieNames.join(", ")}`
23
+ );
24
+ }
25
+ return setCookieHeader;
26
+ }
27
+ const routeHandlerPattern = [P.instanceOf(Request), P.any, P.any];
28
+ const apiRoutePattern = [P.any, P.any, P.any];
29
+ async function clearDraftHandler(...args) {
30
+ return match(args).with(routeHandlerPattern, (args2) => clearDraftRouteHandler(...args2)).with(apiRoutePattern, (args2) => clearDraftApiRouteHandler(...args2)).exhaustive();
31
+ }
32
+ async function clearDraftRouteHandler(_request, _context, {}) {
33
+ const headers = new Headers();
34
+ headers.append(
35
+ SET_COOKIE_HEADER,
36
+ clearCookiesHeader([PRERENDER_BYPASS_COOKIE, MAKESWIFT_DRAFT_DATA_COOKIE])
37
+ );
38
+ return NextResponse.json({ __brand: "ClearDraftResponse" }, { headers });
39
+ }
40
+ async function clearDraftApiRouteHandler(_req, res, {}) {
41
+ res.setHeader(
42
+ SET_COOKIE_HEADER,
43
+ clearCookiesHeader([PRERENDER_BYPASS_COOKIE, PREVIEW_DATA_COOKIE])
44
+ );
45
+ return res.json({ __brand: "ClearDraftResponse" });
46
+ }
47
+ export {
48
+ clearDraftHandler as default
49
+ };
50
+ //# sourceMappingURL=clear-draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/clear-draft.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\nimport {\n MAKESWIFT_DRAFT_DATA_COOKIE,\n PRERENDER_BYPASS_COOKIE,\n PREVIEW_DATA_COOKIE,\n SET_COOKIE_HEADER,\n cookieSettingOptions,\n} from './utils/draft'\nimport { serialize as serializeCookie } from 'cookie'\n\nfunction clearCookiesHeader(cookieNames: string[]): string {\n const headers = new Headers()\n\n cookieNames.forEach(name => {\n headers.append(\n SET_COOKIE_HEADER,\n serializeCookie(name, '', { ...cookieSettingOptions, expires: new Date(0) }),\n )\n })\n\n const setCookieHeader = headers.get(SET_COOKIE_HEADER)\n\n if (setCookieHeader == null) {\n throw new Error(\n `Could not generate set-cookie header to clear cookies: ${cookieNames.join(', ')}`,\n )\n }\n\n return setCookieHeader\n}\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype ClearDraftError = string\n\ntype Response = { __brand: 'ClearDraftResponse' }\n\nexport type ClearDraftResponse = ClearDraftError | Response\n\ntype ClearDraftHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<ClearDraftResponse>, params: { apiKey: string }]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nexport default async function clearDraftHandler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<ClearDraftResponse>>\nexport default async function clearDraftHandler(\n req: NextApiRequest,\n res: NextApiResponse<ClearDraftResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function clearDraftHandler(\n ...args: ClearDraftHandlerArgs\n): Promise<NextResponse<ClearDraftResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => clearDraftRouteHandler(...args))\n .with(apiRoutePattern, args => clearDraftApiRouteHandler(...args))\n .exhaustive()\n}\n\nasync function clearDraftRouteHandler(\n _request: NextRequest,\n _context: Context,\n {}: { apiKey: string },\n): Promise<NextResponse<ClearDraftResponse>> {\n const headers = new Headers()\n\n headers.append(\n SET_COOKIE_HEADER,\n clearCookiesHeader([PRERENDER_BYPASS_COOKIE, MAKESWIFT_DRAFT_DATA_COOKIE]),\n )\n\n return NextResponse.json({ __brand: 'ClearDraftResponse' }, { headers })\n}\n\nasync function clearDraftApiRouteHandler(\n _req: NextApiRequest,\n res: NextApiResponse<ClearDraftResponse>,\n {}: { apiKey: string },\n): Promise<void> {\n res.setHeader(\n SET_COOKIE_HEADER,\n clearCookiesHeader([PRERENDER_BYPASS_COOKIE, PREVIEW_DATA_COOKIE]),\n )\n\n return res.json({ __brand: 'ClearDraftResponse' })\n}\n"],"mappings":"AACA,SAAsB,oBAAoB;AAC1C,SAAS,GAAG,aAAa;AACzB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,aAAa,uBAAuB;AAE7C,SAAS,mBAAmB,aAA+B;AACzD,QAAM,UAAU,IAAI,QAAQ;AAE5B,cAAY,QAAQ,UAAQ;AAC1B,YAAQ;AAAA,MACN;AAAA,MACA,gBAAgB,MAAM,IAAI,EAAE,GAAG,sBAAsB,SAAS,oBAAI,KAAK,CAAC,EAAE,CAAC;AAAA,IAC7E;AAAA,EACF,CAAC;AAED,QAAM,kBAAkB,QAAQ,IAAI,iBAAiB;AAErD,MAAI,mBAAmB,MAAM;AAC3B,UAAM,IAAI;AAAA,MACR,0DAA0D,YAAY,KAAK,IAAI,CAAC;AAAA,IAClF;AAAA,EACF;AAEA,SAAO;AACT;AAcA,MAAM,sBAAsB,CAAC,EAAE,WAAW,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;AAY5C,eAAO,qBACF,MAC+C;AAClD,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,UAAQ,uBAAuB,GAAGA,KAAI,CAAC,EACjE,KAAK,iBAAiB,CAAAA,UAAQ,0BAA0B,GAAGA,KAAI,CAAC,EAChE,WAAW;AAChB;AAEA,eAAe,uBACb,UACA,UACA,CAAC,GAC0C;AAC3C,QAAM,UAAU,IAAI,QAAQ;AAE5B,UAAQ;AAAA,IACN;AAAA,IACA,mBAAmB,CAAC,yBAAyB,2BAA2B,CAAC;AAAA,EAC3E;AAEA,SAAO,aAAa,KAAK,EAAE,SAAS,qBAAqB,GAAG,EAAE,QAAQ,CAAC;AACzE;AAEA,eAAe,0BACb,MACA,KACA,CAAC,GACc;AACf,MAAI;AAAA,IACF;AAAA,IACA,mBAAmB,CAAC,yBAAyB,mBAAmB,CAAC;AAAA,EACnE;AAEA,SAAO,IAAI,KAAK,EAAE,SAAS,qBAAqB,CAAC;AACnD;","names":["args"]}
@@ -14,7 +14,7 @@ async function handler(...args) {
14
14
  const supportsDraftMode = match(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
15
15
  const supportsWebhook = match(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
16
16
  const body = {
17
- version: "0.23.12",
17
+ version: "0.23.14",
18
18
  previewMode: supportsPreviewMode,
19
19
  draftMode: supportsDraftMode,
20
20
  interactionMode: true,
@@ -0,0 +1,63 @@
1
+ import { NextResponse } from "next/server";
2
+ import { P, match } from "ts-pattern";
3
+ import { cookies, draftMode } from "next/headers";
4
+ import { serialize as serializeCookie } from "cookie";
5
+ import { MakeswiftSiteVersion } from "../../../api/site-version";
6
+ import {
7
+ cookieSettingOptions,
8
+ MAKESWIFT_DRAFT_DATA_COOKIE,
9
+ PRERENDER_BYPASS_COOKIE,
10
+ SearchParams,
11
+ SET_COOKIE_HEADER
12
+ } from "./utils/draft";
13
+ const routeHandlerPattern = [P.instanceOf(Request), P.any, P.any];
14
+ const apiRoutePattern = [P.any, P.any, P.any];
15
+ async function redirectDraftHandler(...args) {
16
+ return match(args).with(routeHandlerPattern, (args2) => redirectDraftRouteHandler(...args2)).with(apiRoutePattern, (args2) => redirectDraftApiRouteHandler(...args2)).exhaustive();
17
+ }
18
+ async function redirectDraftRouteHandler(request, _context, { apiKey }) {
19
+ const secret = request.nextUrl.searchParams.get(SearchParams.DraftMode);
20
+ if (secret == null) {
21
+ return new NextResponse("Unauthorized to enable draft mode: no secret provided", {
22
+ status: 401
23
+ });
24
+ }
25
+ if (secret !== apiKey) {
26
+ return new NextResponse("Unauthorized to enable draft mode: incorrect secret", { status: 401 });
27
+ }
28
+ const draft = await draftMode();
29
+ const cookieStore = await cookies();
30
+ draft.enable();
31
+ const prerenderBypassCookie = cookieStore.get(PRERENDER_BYPASS_COOKIE);
32
+ if (prerenderBypassCookie?.value == null) {
33
+ return new NextResponse("Could not retrieve draft mode bypass cookie", { status: 500 });
34
+ }
35
+ const draftCookies = [
36
+ prerenderBypassCookie,
37
+ {
38
+ name: MAKESWIFT_DRAFT_DATA_COOKIE,
39
+ // Eventually, we can make this value dynamic using the request
40
+ value: JSON.stringify({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working })
41
+ }
42
+ ];
43
+ const redirectProtocol = request.headers.get("x-forwarded-proto") ?? request.nextUrl.protocol.replace(":", "");
44
+ const redirectHost = request.headers.get("x-forwarded-host") ?? request.headers.get("host") ?? request.nextUrl.host;
45
+ const redirectUrl = new URL(
46
+ `${redirectProtocol}://${redirectHost}${request.nextUrl.pathname}${request.nextUrl.search}`
47
+ );
48
+ redirectUrl.searchParams.delete(SearchParams.DraftMode);
49
+ const headers = new Headers();
50
+ draftCookies.forEach(({ name, value }) => {
51
+ headers.append(SET_COOKIE_HEADER, serializeCookie(name, value, { ...cookieSettingOptions }));
52
+ });
53
+ return NextResponse.redirect(redirectUrl, { headers });
54
+ }
55
+ async function redirectDraftApiRouteHandler(_req, res, {}) {
56
+ const message = "Cannot request draft endpoint from an API handler registered in `pages`. Move your Makeswift API handler to the `app` directory";
57
+ console.error(message);
58
+ return res.status(500).send(message);
59
+ }
60
+ export {
61
+ redirectDraftHandler as default
62
+ };
63
+ //# sourceMappingURL=redirect-draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/redirect-draft.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\nimport { cookies, draftMode } from 'next/headers'\n\nimport { serialize as serializeCookie } from 'cookie'\n\nimport { MakeswiftSiteVersion } from '../../../api/site-version'\nimport {\n cookieSettingOptions,\n MAKESWIFT_DRAFT_DATA_COOKIE,\n PRERENDER_BYPASS_COOKIE,\n SearchParams,\n SET_COOKIE_HEADER,\n} from './utils/draft'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype RedirectDraftError = string\n\ntype Response = unknown\n\nexport type RedirectDraftResponse = RedirectDraftError | Response\n\ntype RedirectDraftHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<RedirectDraftResponse>, params: { apiKey: string }]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nexport default async function redirectDraftHandler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>>\nexport default async function redirectDraftHandler(\n req: NextApiRequest,\n res: NextApiResponse<RedirectDraftResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function redirectDraftHandler(\n ...args: RedirectDraftHandlerArgs\n): Promise<NextResponse<RedirectDraftResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraftRouteHandler(...args))\n .with(apiRoutePattern, args => redirectDraftApiRouteHandler(...args))\n .exhaustive()\n}\n\nasync function redirectDraftRouteHandler(\n request: NextRequest,\n _context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectDraftResponse>> {\n const secret = request.nextUrl.searchParams.get(SearchParams.DraftMode)\n\n if (secret == null) {\n return new NextResponse('Unauthorized to enable draft mode: no secret provided', {\n status: 401,\n })\n }\n if (secret !== apiKey) {\n return new NextResponse('Unauthorized to enable draft mode: incorrect secret', { status: 401 })\n }\n\n const draft = await draftMode()\n const cookieStore = await cookies()\n\n draft.enable()\n\n const prerenderBypassCookie = cookieStore.get(PRERENDER_BYPASS_COOKIE)\n\n if (prerenderBypassCookie?.value == null) {\n return new NextResponse('Could not retrieve draft mode bypass cookie', { status: 500 })\n }\n\n const draftCookies: { name: string; value: string }[] = [\n prerenderBypassCookie,\n {\n name: MAKESWIFT_DRAFT_DATA_COOKIE,\n // Eventually, we can make this value dynamic using the request\n value: JSON.stringify({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working }),\n },\n ]\n\n const redirectProtocol =\n request.headers.get('x-forwarded-proto') ?? request.nextUrl.protocol.replace(':', '')\n\n const redirectHost =\n request.headers.get('x-forwarded-host') ?? request.headers.get('host') ?? request.nextUrl.host\n\n const redirectUrl = new URL(\n `${redirectProtocol}://${redirectHost}${request.nextUrl.pathname}${request.nextUrl.search}`,\n )\n\n redirectUrl.searchParams.delete(SearchParams.DraftMode)\n\n const headers = new Headers()\n draftCookies.forEach(({ name, value }) => {\n headers.append(SET_COOKIE_HEADER, serializeCookie(name, value, { ...cookieSettingOptions }))\n })\n\n return NextResponse.redirect(redirectUrl, { headers })\n}\n\nasync function redirectDraftApiRouteHandler(\n _req: NextApiRequest,\n res: NextApiResponse<RedirectDraftResponse>,\n {}: { apiKey: string },\n): Promise<void> {\n const message =\n 'Cannot request draft endpoint from an API handler registered in `pages`. Move your Makeswift API handler to the `app` directory'\n console.error(message)\n return res.status(500).send(message)\n}\n"],"mappings":"AACA,SAAsB,oBAAoB;AAC1C,SAAS,GAAG,aAAa;AACzB,SAAS,SAAS,iBAAiB;AAEnC,SAAS,aAAa,uBAAuB;AAE7C,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,MAAM,sBAAsB,CAAC,EAAE,WAAW,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;AAY5C,eAAO,wBACF,MACkD;AACrD,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,UAAQ,0BAA0B,GAAGA,KAAI,CAAC,EACpE,KAAK,iBAAiB,CAAAA,UAAQ,6BAA6B,GAAGA,KAAI,CAAC,EACnE,WAAW;AAChB;AAEA,eAAe,0BACb,SACA,UACA,EAAE,OAAO,GACqC;AAC9C,QAAM,SAAS,QAAQ,QAAQ,aAAa,IAAI,aAAa,SAAS;AAEtE,MAAI,UAAU,MAAM;AAClB,WAAO,IAAI,aAAa,yDAAyD;AAAA,MAC/E,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AACA,MAAI,WAAW,QAAQ;AACrB,WAAO,IAAI,aAAa,uDAAuD,EAAE,QAAQ,IAAI,CAAC;AAAA,EAChG;AAEA,QAAM,QAAQ,MAAM,UAAU;AAC9B,QAAM,cAAc,MAAM,QAAQ;AAElC,QAAM,OAAO;AAEb,QAAM,wBAAwB,YAAY,IAAI,uBAAuB;AAErE,MAAI,uBAAuB,SAAS,MAAM;AACxC,WAAO,IAAI,aAAa,+CAA+C,EAAE,QAAQ,IAAI,CAAC;AAAA,EACxF;AAEA,QAAM,eAAkD;AAAA,IACtD;AAAA,IACA;AAAA,MACE,MAAM;AAAA;AAAA,MAEN,OAAO,KAAK,UAAU,EAAE,WAAW,MAAM,aAAa,qBAAqB,QAAQ,CAAC;AAAA,IACtF;AAAA,EACF;AAEA,QAAM,mBACJ,QAAQ,QAAQ,IAAI,mBAAmB,KAAK,QAAQ,QAAQ,SAAS,QAAQ,KAAK,EAAE;AAEtF,QAAM,eACJ,QAAQ,QAAQ,IAAI,kBAAkB,KAAK,QAAQ,QAAQ,IAAI,MAAM,KAAK,QAAQ,QAAQ;AAE5F,QAAM,cAAc,IAAI;AAAA,IACtB,GAAG,gBAAgB,MAAM,YAAY,GAAG,QAAQ,QAAQ,QAAQ,GAAG,QAAQ,QAAQ,MAAM;AAAA,EAC3F;AAEA,cAAY,aAAa,OAAO,aAAa,SAAS;AAEtD,QAAM,UAAU,IAAI,QAAQ;AAC5B,eAAa,QAAQ,CAAC,EAAE,MAAM,MAAM,MAAM;AACxC,YAAQ,OAAO,mBAAmB,gBAAgB,MAAM,OAAO,EAAE,GAAG,qBAAqB,CAAC,CAAC;AAAA,EAC7F,CAAC;AAED,SAAO,aAAa,SAAS,aAAa,EAAE,QAAQ,CAAC;AACvD;AAEA,eAAe,6BACb,MACA,KACA,CAAC,GACc;AACf,QAAM,UACJ;AACF,UAAQ,MAAM,OAAO;AACrB,SAAO,IAAI,OAAO,GAAG,EAAE,KAAK,OAAO;AACrC;","names":["args"]}
@@ -0,0 +1,54 @@
1
+ import { NextResponse } from "next/server";
2
+ import { P, match } from "ts-pattern";
3
+ import { parse as parseSetCookie } from "set-cookie-parser";
4
+ import { serialize as serializeCookie } from "cookie";
5
+ import { MakeswiftSiteVersion } from "../../../api/site-version";
6
+ import {
7
+ cookieSettingOptions,
8
+ PRERENDER_BYPASS_COOKIE,
9
+ PREVIEW_DATA_COOKIE,
10
+ SearchParams,
11
+ SET_COOKIE_HEADER
12
+ } from "./utils/draft";
13
+ const routeHandlerPattern = [P.instanceOf(Request), P.any, P.any];
14
+ const apiRoutePattern = [P.any, P.any, P.any];
15
+ async function redirectPreviewHandler(...args) {
16
+ return match(args).with(routeHandlerPattern, (args2) => redirectPreviewRouteHandler(...args2)).with(apiRoutePattern, (args2) => redirectPreviewApiRouteHandler(...args2)).exhaustive();
17
+ }
18
+ async function redirectPreviewRouteHandler(_request, _context, {}) {
19
+ const message = "Cannot request preview endpoint from an API handler registered in `app`. Move your Makeswift API handler to the `pages/api` directory";
20
+ console.error(message);
21
+ return NextResponse.json(message, { status: 500 });
22
+ }
23
+ async function redirectPreviewApiRouteHandler(req, res, { apiKey }) {
24
+ const secret = req.query[SearchParams.PreviewMode];
25
+ const pathname = req.query.path;
26
+ if (secret == null) {
27
+ return res.status(401).send("Unauthorized to enable preview mode: no secret provided");
28
+ }
29
+ if (secret !== apiKey) {
30
+ return res.status(401).send("Unauthorized to enable preview mode: secret is incorrect");
31
+ }
32
+ if (pathname == null) {
33
+ return res.status(400).send("Bad request: incoming request does not have an associated pathname");
34
+ }
35
+ const setCookie = res.setPreviewData({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working }).getHeader(SET_COOKIE_HEADER);
36
+ res.removeHeader(SET_COOKIE_HEADER);
37
+ const parsedCookies = parseSetCookie(Array.isArray(setCookie) ? setCookie : "");
38
+ const prerenderBypassCookie = parsedCookies.find((c) => c.name === PRERENDER_BYPASS_COOKIE);
39
+ const previewDataCookie = parsedCookies.find((c) => c.name === PREVIEW_DATA_COOKIE);
40
+ if (prerenderBypassCookie?.value == null || previewDataCookie?.value == null) {
41
+ return res.status(500).send("Could not retrieve preview mode cookies");
42
+ }
43
+ const patchedCookies = [prerenderBypassCookie, previewDataCookie].map(({ name, value }) => {
44
+ return serializeCookie(name, value, { ...cookieSettingOptions });
45
+ });
46
+ res.setHeader(SET_COOKIE_HEADER, patchedCookies);
47
+ const destinationUrl = new URL(pathname, "http://test.com");
48
+ destinationUrl.searchParams.delete(SearchParams.PreviewMode);
49
+ res.redirect(`${destinationUrl.pathname}?${destinationUrl.searchParams.toString()}`);
50
+ }
51
+ export {
52
+ redirectPreviewHandler as default
53
+ };
54
+ //# sourceMappingURL=redirect-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/next/api-handler/handlers/redirect-preview.ts"],"sourcesContent":["import { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { P, match } from 'ts-pattern'\n\nimport { parse as parseSetCookie } from 'set-cookie-parser'\nimport { serialize as serializeCookie } from 'cookie'\n\nimport { MakeswiftSiteVersion } from '../../../api/site-version'\nimport {\n cookieSettingOptions,\n PRERENDER_BYPASS_COOKIE,\n PREVIEW_DATA_COOKIE,\n SearchParams,\n SET_COOKIE_HEADER,\n} from './utils/draft'\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype RedirectPreviewError = string\n\ntype Response = unknown\n\nexport type RedirectPreviewResponse = RedirectPreviewError | Response\n\ntype RedirectPreviewHandlerArgs =\n | [request: NextRequest, context: Context, params: { apiKey: string }]\n | [req: NextApiRequest, res: NextApiResponse<RedirectPreviewResponse>, params: { apiKey: string }]\n\nconst routeHandlerPattern = [P.instanceOf(Request), P.any, P.any] as const\nconst apiRoutePattern = [P.any, P.any, P.any] as const\n\nexport default async function redirectPreviewHandler(\n request: NextRequest,\n context: Context,\n { apiKey }: { apiKey: string },\n): Promise<NextResponse<RedirectPreviewResponse>>\nexport default async function redirectPreviewHandler(\n req: NextApiRequest,\n res: NextApiResponse<RedirectPreviewResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void>\nexport default async function redirectPreviewHandler(\n ...args: RedirectPreviewHandlerArgs\n): Promise<NextResponse<RedirectPreviewResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, args => redirectPreviewRouteHandler(...args))\n .with(apiRoutePattern, args => redirectPreviewApiRouteHandler(...args))\n .exhaustive()\n}\n\nasync function redirectPreviewRouteHandler(\n _request: NextRequest,\n _context: Context,\n { }: { apiKey: string },\n): Promise<NextResponse<RedirectPreviewResponse>> {\n const message =\n 'Cannot request preview endpoint from an API handler registered in `app`. Move your Makeswift API handler to the `pages/api` directory'\n console.error(message)\n return NextResponse.json(message, { status: 500 })\n}\n\n\nasync function redirectPreviewApiRouteHandler(\n req: NextApiRequest,\n res: NextApiResponse<RedirectPreviewResponse>,\n { apiKey }: { apiKey: string },\n): Promise<void> {\n const secret = req.query[SearchParams.PreviewMode]\n // Next.js automatically strips the locale prefix from rewritten request's URL, even when the\n // rewrite's `locale` option is set to `false`: https://github.com/vercel/next.js/discussions/21798.\n // At the same time, it also maps rewrite's URL segments (e.g. `:path`) to query parameters\n // on the rewritten request, so we use `query.path` to recover the original request path.\n const pathname = req.query.path as string | undefined\n\n if (secret == null) {\n return res.status(401).send('Unauthorized to enable preview mode: no secret provided')\n }\n\n if (secret !== apiKey) {\n return res.status(401).send('Unauthorized to enable preview mode: secret is incorrect')\n }\n\n if (pathname == null) {\n return res.status(400).send('Bad request: incoming request does not have an associated pathname')\n }\n\n const setCookie = res\n // Eventually, we can make the preview data value dynamic using the request\n .setPreviewData({ makeswift: true, siteVersion: MakeswiftSiteVersion.Working })\n .getHeader(SET_COOKIE_HEADER)\n\n res.removeHeader(SET_COOKIE_HEADER)\n\n const parsedCookies = parseSetCookie(Array.isArray(setCookie) ? setCookie : '')\n\n const prerenderBypassCookie = parsedCookies.find(c => c.name === PRERENDER_BYPASS_COOKIE)\n const previewDataCookie = parsedCookies.find(c => c.name === PREVIEW_DATA_COOKIE)\n\n if (prerenderBypassCookie?.value == null || previewDataCookie?.value == null) {\n return res.status(500).send('Could not retrieve preview mode cookies')\n }\n\n const patchedCookies = [prerenderBypassCookie, previewDataCookie].map(({ name, value }) => {\n return serializeCookie(name, value, { ...cookieSettingOptions })\n })\n\n res.setHeader(SET_COOKIE_HEADER, patchedCookies)\n\n const destinationUrl = new URL(pathname, 'http://test.com')\n destinationUrl.searchParams.delete(SearchParams.PreviewMode)\n\n res.redirect(`${destinationUrl.pathname}?${destinationUrl.searchParams.toString()}`)\n}\n"],"mappings":"AACA,SAAsB,oBAAoB;AAC1C,SAAS,GAAG,aAAa;AAEzB,SAAS,SAAS,sBAAsB;AACxC,SAAS,aAAa,uBAAuB;AAE7C,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP,MAAM,sBAAsB,CAAC,EAAE,WAAW,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG;AAChE,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG;AAY5C,eAAO,0BACF,MACoD;AACvD,SAAO,MAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,UAAQ,4BAA4B,GAAGA,KAAI,CAAC,EACtE,KAAK,iBAAiB,CAAAA,UAAQ,+BAA+B,GAAGA,KAAI,CAAC,EACrE,WAAW;AAChB;AAEA,eAAe,4BACb,UACA,UACA,CAAE,GAC8C;AAChD,QAAM,UACJ;AACF,UAAQ,MAAM,OAAO;AACrB,SAAO,aAAa,KAAK,SAAS,EAAE,QAAQ,IAAI,CAAC;AACnD;AAGA,eAAe,+BACb,KACA,KACA,EAAE,OAAO,GACM;AACf,QAAM,SAAS,IAAI,MAAM,aAAa,WAAW;AAKjD,QAAM,WAAW,IAAI,MAAM;AAE3B,MAAI,UAAU,MAAM;AAClB,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,yDAAyD;AAAA,EACvF;AAEA,MAAI,WAAW,QAAQ;AACrB,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,0DAA0D;AAAA,EACxF;AAEA,MAAI,YAAY,MAAM;AACpB,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,oEAAoE;AAAA,EAClG;AAEA,QAAM,YAAY,IAEf,eAAe,EAAE,WAAW,MAAM,aAAa,qBAAqB,QAAQ,CAAC,EAC7E,UAAU,iBAAiB;AAE9B,MAAI,aAAa,iBAAiB;AAElC,QAAM,gBAAgB,eAAe,MAAM,QAAQ,SAAS,IAAI,YAAY,EAAE;AAE9E,QAAM,wBAAwB,cAAc,KAAK,OAAK,EAAE,SAAS,uBAAuB;AACxF,QAAM,oBAAoB,cAAc,KAAK,OAAK,EAAE,SAAS,mBAAmB;AAEhF,MAAI,uBAAuB,SAAS,QAAQ,mBAAmB,SAAS,MAAM;AAC5E,WAAO,IAAI,OAAO,GAAG,EAAE,KAAK,yCAAyC;AAAA,EACvE;AAEA,QAAM,iBAAiB,CAAC,uBAAuB,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM;AACzF,WAAO,gBAAgB,MAAM,OAAO,EAAE,GAAG,qBAAqB,CAAC;AAAA,EACjE,CAAC;AAED,MAAI,UAAU,mBAAmB,cAAc;AAE/C,QAAM,iBAAiB,IAAI,IAAI,UAAU,iBAAiB;AAC1D,iBAAe,aAAa,OAAO,aAAa,WAAW;AAE3D,MAAI,SAAS,GAAG,eAAe,QAAQ,IAAI,eAAe,aAAa,SAAS,CAAC,EAAE;AACrF;","names":["args"]}
@@ -0,0 +1,24 @@
1
+ const PRERENDER_BYPASS_COOKIE = "__prerender_bypass";
2
+ const PREVIEW_DATA_COOKIE = "__next_preview_data";
3
+ const MAKESWIFT_DRAFT_DATA_COOKIE = "x-makeswift-draft-data";
4
+ const SET_COOKIE_HEADER = "set-cookie";
5
+ const SearchParams = {
6
+ DraftMode: "x-makeswift-draft-mode",
7
+ PreviewMode: "x-makeswift-preview-mode"
8
+ };
9
+ const cookieSettingOptions = {
10
+ path: "/",
11
+ sameSite: "none",
12
+ secure: true,
13
+ httpOnly: true,
14
+ partitioned: true
15
+ };
16
+ export {
17
+ MAKESWIFT_DRAFT_DATA_COOKIE,
18
+ PRERENDER_BYPASS_COOKIE,
19
+ PREVIEW_DATA_COOKIE,
20
+ SET_COOKIE_HEADER,
21
+ SearchParams,
22
+ cookieSettingOptions
23
+ };
24
+ //# sourceMappingURL=draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/utils/draft.ts"],"sourcesContent":["export const PRERENDER_BYPASS_COOKIE = '__prerender_bypass'\nexport const PREVIEW_DATA_COOKIE = '__next_preview_data'\n\nexport const MAKESWIFT_DRAFT_DATA_COOKIE = 'x-makeswift-draft-data'\nexport const SET_COOKIE_HEADER = 'set-cookie'\n\nexport const SearchParams = {\n DraftMode: 'x-makeswift-draft-mode',\n PreviewMode: 'x-makeswift-preview-mode',\n} as const\n\nexport const cookieSettingOptions = {\n path: '/',\n sameSite: 'none',\n secure: true,\n httpOnly: true,\n partitioned: true,\n} as const\n"],"mappings":"AAAO,MAAM,0BAA0B;AAChC,MAAM,sBAAsB;AAE5B,MAAM,8BAA8B;AACpC,MAAM,oBAAoB;AAE1B,MAAM,eAAe;AAAA,EAC1B,WAAW;AAAA,EACX,aAAa;AACf;AAEO,MAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,aAAa;AACf;","names":[]}
@@ -1,4 +1,5 @@
1
1
  import { revalidateTag } from "next/cache";
2
+ import { MAKESWIFT_CACHE_TAG } from "../../../cache";
2
3
  async function handleSitePublished(_payload, { onPublish }) {
3
4
  revalidateTag(MAKESWIFT_CACHE_TAG);
4
5
  try {
@@ -8,9 +9,7 @@ async function handleSitePublished(_payload, { onPublish }) {
8
9
  }
9
10
  return { body: { success: true }, status: 200 };
10
11
  }
11
- const MAKESWIFT_CACHE_TAG = "@@makeswift";
12
12
  export {
13
- MAKESWIFT_CACHE_TAG,
14
13
  handleSitePublished
15
14
  };
16
15
  //# sourceMappingURL=site-published.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/webhook/site-published.ts"],"sourcesContent":["import { revalidateTag } from 'next/cache'\nimport { OnPublish, SitePublishedWebhookPayload, WebhookHandlerResult } from './types'\n\ntype SitePublishedParams = {\n onPublish?: OnPublish\n}\n\nexport async function handleSitePublished(\n _payload: SitePublishedWebhookPayload,\n { onPublish }: SitePublishedParams\n): Promise<WebhookHandlerResult> {\n revalidateTag(MAKESWIFT_CACHE_TAG)\n\n try {\n await onPublish?.()\n } catch (error) {\n // log and ignore any error in user-provided onPublish\n console.error(\"Unhandled exception in the 'onPublish' callback:\", error)\n }\n\n return { body: { success: true }, status: 200 }\n}\n\nexport const MAKESWIFT_CACHE_TAG = '@@makeswift'\n"],"mappings":"AAAA,SAAS,qBAAqB;AAO9B,eAAsB,oBACpB,UACA,EAAE,UAAU,GACmB;AAC/B,gBAAc,mBAAmB;AAEjC,MAAI;AACF,UAAM,YAAY;AAAA,EACpB,SAAS,OAAO;AAEd,YAAQ,MAAM,oDAAoD,KAAK;AAAA,EACzE;AAEA,SAAO,EAAE,MAAM,EAAE,SAAS,KAAK,GAAG,QAAQ,IAAI;AAChD;AAEO,MAAM,sBAAsB;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/next/api-handler/handlers/webhook/site-published.ts"],"sourcesContent":["import { revalidateTag } from 'next/cache'\nimport {\n type OnPublish,\n type SitePublishedWebhookPayload,\n type WebhookHandlerResult,\n} from './types'\n\nimport { MAKESWIFT_CACHE_TAG } from '../../../cache'\n\ntype SitePublishedParams = {\n onPublish?: OnPublish\n}\n\nexport async function handleSitePublished(\n _payload: SitePublishedWebhookPayload,\n { onPublish }: SitePublishedParams,\n): Promise<WebhookHandlerResult> {\n revalidateTag(MAKESWIFT_CACHE_TAG)\n\n try {\n await onPublish?.()\n } catch (error) {\n // log and ignore any error in user-provided onPublish\n console.error(\"Unhandled exception in the 'onPublish' callback:\", error)\n }\n\n return { body: { success: true }, status: 200 }\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAO9B,SAAS,2BAA2B;AAMpC,eAAsB,oBACpB,UACA,EAAE,UAAU,GACmB;AAC/B,gBAAc,mBAAmB;AAEjC,MAAI;AACF,UAAM,YAAY;AAAA,EACpB,SAAS,OAAO;AAEd,YAAQ,MAAM,oDAAoD,KAAK;AAAA,EACzE;AAEA,SAAO,EAAE,MAAM,EAAE,SAAS,KAAK,GAAG,QAAQ,IAAI;AAChD;","names":[]}
@@ -0,0 +1,5 @@
1
+ const MAKESWIFT_CACHE_TAG = "@@makeswift";
2
+ export {
3
+ MAKESWIFT_CACHE_TAG
4
+ };
5
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/next/cache.ts"],"sourcesContent":["export const MAKESWIFT_CACHE_TAG = '@@makeswift'\n"],"mappings":"AAAO,MAAM,sBAAsB;","names":[]}
@@ -23,7 +23,7 @@ import { toIterablePaginationResult } from "./utils/pagination";
23
23
  import { deterministicUUID } from "../utils/deterministic-uuid";
24
24
  import { Schema } from "@makeswift/controls";
25
25
  import { EMBEDDED_DOCUMENT_TYPE } from "../state/modules/read-only-documents";
26
- import { MAKESWIFT_CACHE_TAG } from "./api-handler/handlers/webhook/site-published";
26
+ import { MAKESWIFT_CACHE_TAG } from "./cache";
27
27
  const makeswiftPageResultSchema = z.object({
28
28
  id: z.string(),
29
29
  path: z.string(),