@makeswift/runtime 0.28.8-canary.2 → 0.28.8-canary.21

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 (508) hide show
  1. package/dist/cjs/api/graphql-api-client.js +1 -1
  2. package/dist/cjs/api/rest-api-client.js +1 -1
  3. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  4. package/dist/cjs/builder/host-to-builder-actions.js +5 -5
  5. package/dist/cjs/builder/host-to-builder-actions.js.map +1 -1
  6. package/dist/cjs/client/index.js +1 -1
  7. package/dist/cjs/components/builtin/Embed/Embed.js +2 -1
  8. package/dist/cjs/components/builtin/Embed/Embed.js.map +1 -1
  9. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  10. package/dist/cjs/components/builtin/Navigation/components/DropDownButton/index.js.map +1 -1
  11. package/dist/cjs/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
  12. package/dist/cjs/controls/index.js +4 -0
  13. package/dist/cjs/controls/index.js.map +1 -1
  14. package/dist/cjs/controls/link.js.map +1 -1
  15. package/dist/cjs/controls/rich-text/control.js +16 -3
  16. package/dist/cjs/controls/rich-text/control.js.map +1 -1
  17. package/dist/cjs/controls/rich-text/rich-text.js +2 -2
  18. package/dist/cjs/controls/rich-text/rich-text.js.map +1 -1
  19. package/dist/cjs/controls/rich-text-v2/control.js +15 -2
  20. package/dist/cjs/controls/rich-text-v2/control.js.map +1 -1
  21. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js +2 -2
  22. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  23. package/dist/cjs/controls/serialization/base/index.js +1 -0
  24. package/dist/cjs/controls/serialization/base/index.js.map +1 -1
  25. package/dist/cjs/controls/slot.js.map +1 -1
  26. package/dist/cjs/next/testing/breakpoints.js +3 -15
  27. package/dist/cjs/next/testing/breakpoints.js.map +1 -1
  28. package/dist/cjs/next/testing/element-data.js +3 -82
  29. package/dist/cjs/next/testing/element-data.js.map +1 -1
  30. package/dist/cjs/next/testing/react-runtime.js.map +1 -1
  31. package/dist/cjs/prop-controllers/instances.js +20 -4
  32. package/dist/cjs/prop-controllers/instances.js.map +1 -1
  33. package/dist/cjs/runtimes/react/components/Element.js +37 -12
  34. package/dist/cjs/runtimes/react/components/Element.js.map +1 -1
  35. package/dist/cjs/runtimes/react/components/ElementRegistration.js +32 -11
  36. package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -1
  37. package/dist/cjs/runtimes/react/components/control-instances-context.js +38 -0
  38. package/dist/cjs/runtimes/react/components/control-instances-context.js.map +1 -0
  39. package/dist/cjs/runtimes/react/components/resolve-props.js +12 -1
  40. package/dist/cjs/runtimes/react/components/resolve-props.js.map +1 -1
  41. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  42. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js +4 -2
  43. package/dist/cjs/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js.map +1 -1
  44. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js +2 -2
  45. package/dist/cjs/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  46. package/dist/cjs/{utils/is.js → runtimes/react/controls/slot/index.js} +10 -7
  47. package/dist/cjs/runtimes/react/controls/slot/index.js.map +1 -0
  48. package/dist/cjs/runtimes/react/controls/{group.js → slot/render-slot.js} +13 -21
  49. package/dist/cjs/runtimes/react/controls/slot/render-slot.js.map +1 -0
  50. package/dist/cjs/runtimes/react/controls/{slot.js → slot/slot-value.js} +24 -26
  51. package/dist/cjs/runtimes/react/controls/slot/slot-value.js.map +1 -0
  52. package/dist/cjs/runtimes/react/controls/style.js.map +1 -1
  53. package/dist/cjs/runtimes/react/element-imperative-handle.js +2 -2
  54. package/dist/cjs/runtimes/react/element-imperative-handle.js.map +1 -1
  55. package/dist/cjs/runtimes/react/hooks/use-control-instance.js +88 -0
  56. package/dist/cjs/runtimes/react/hooks/use-control-instance.js.map +1 -0
  57. package/dist/cjs/runtimes/react/hooks/use-control-instances.js +29 -0
  58. package/dist/cjs/runtimes/react/hooks/use-control-instances.js.map +1 -0
  59. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js +3 -3
  60. package/dist/cjs/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  61. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js +17 -33
  62. package/dist/cjs/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  63. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js +3 -3
  64. package/dist/cjs/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  65. package/dist/cjs/runtimes/react/react-runtime-core.js +2 -1
  66. package/dist/cjs/runtimes/react/react-runtime-core.js.map +1 -1
  67. package/dist/cjs/runtimes/react/stylesheet-factory.js +17 -0
  68. package/dist/cjs/runtimes/react/stylesheet-factory.js.map +1 -0
  69. package/dist/cjs/runtimes/react/testing/index.js +25 -0
  70. package/dist/cjs/runtimes/react/testing/index.js.map +1 -0
  71. package/dist/cjs/runtimes/react/testing/react-provider.js +38 -0
  72. package/dist/cjs/runtimes/react/testing/react-provider.js.map +1 -0
  73. package/dist/cjs/slate/TypographyPlugin/normalizeTypographyUp.js.map +1 -1
  74. package/dist/cjs/slate/selectors.js.map +1 -1
  75. package/dist/cjs/slate/utils/toText.js.map +1 -1
  76. package/dist/cjs/state/actions/index.js +4 -4
  77. package/dist/cjs/state/actions/index.js.map +1 -1
  78. package/dist/cjs/state/actions/internal/action-types.js +34 -0
  79. package/dist/cjs/state/actions/internal/action-types.js.map +1 -0
  80. package/dist/cjs/state/actions/internal/index.js +0 -17
  81. package/dist/cjs/state/actions/internal/index.js.map +1 -1
  82. package/dist/cjs/state/actions/internal/read-only-action-types.js +44 -0
  83. package/dist/cjs/state/actions/internal/read-only-action-types.js.map +1 -0
  84. package/dist/cjs/state/actions/internal/read-only-actions.js +13 -92
  85. package/dist/cjs/state/actions/internal/read-only-actions.js.map +1 -1
  86. package/dist/cjs/state/actions/internal/read-write-action-types.js +42 -0
  87. package/dist/cjs/state/actions/internal/read-write-action-types.js.map +1 -0
  88. package/dist/cjs/state/actions/internal/read-write-actions.js +119 -14
  89. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -1
  90. package/dist/cjs/state/builder-api/action-types.js +49 -0
  91. package/dist/cjs/state/builder-api/action-types.js.map +1 -0
  92. package/dist/cjs/state/builder-api/actions.js +14 -36
  93. package/dist/cjs/state/builder-api/actions.js.map +1 -1
  94. package/dist/cjs/state/builder-api/proxy.js +2 -1
  95. package/dist/cjs/state/builder-api/proxy.js.map +1 -1
  96. package/dist/cjs/state/host-api/action-types.js +43 -0
  97. package/dist/cjs/state/host-api/action-types.js.map +1 -0
  98. package/dist/cjs/state/{host-api.js → host-api/actions.js} +17 -33
  99. package/dist/cjs/state/host-api/actions.js.map +1 -0
  100. package/dist/cjs/state/host-api/index.js +25 -0
  101. package/dist/cjs/state/host-api/index.js.map +1 -0
  102. package/dist/cjs/state/middleware/read-write/builder-api/index.js +15 -15
  103. package/dist/cjs/state/middleware/read-write/builder-api/index.js.map +1 -1
  104. package/dist/cjs/state/middleware/read-write/measure-box-models.js +3 -3
  105. package/dist/cjs/state/middleware/read-write/measure-box-models.js.map +1 -1
  106. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js +10 -47
  107. package/dist/cjs/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  108. package/dist/cjs/state/modules/api-resources.js +5 -5
  109. package/dist/cjs/state/modules/api-resources.js.map +1 -1
  110. package/dist/cjs/state/modules/breakpoints.js +4 -4
  111. package/dist/cjs/state/modules/breakpoints.js.map +1 -1
  112. package/dist/cjs/state/modules/components-meta.js +3 -3
  113. package/dist/cjs/state/modules/components-meta.js.map +1 -1
  114. package/dist/cjs/state/modules/element-trees.js +53 -25
  115. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  116. package/dist/cjs/state/modules/is-in-builder.js +2 -2
  117. package/dist/cjs/state/modules/is-in-builder.js.map +1 -1
  118. package/dist/cjs/state/modules/is-read-only.js +2 -2
  119. package/dist/cjs/state/modules/is-read-only.js.map +1 -1
  120. package/dist/cjs/state/modules/locale.js +2 -2
  121. package/dist/cjs/state/modules/locale.js.map +1 -1
  122. package/dist/cjs/state/modules/localized-resources-map.js +3 -3
  123. package/dist/cjs/state/modules/localized-resources-map.js.map +1 -1
  124. package/dist/cjs/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +7 -7
  125. package/dist/cjs/state/modules/prop-controller-descriptors.js.map +1 -0
  126. package/dist/cjs/state/modules/react-components.js +3 -3
  127. package/dist/cjs/state/modules/react-components.js.map +1 -1
  128. package/dist/cjs/state/modules/read-write/box-models.js +5 -5
  129. package/dist/cjs/state/modules/read-write/box-models.js.map +1 -1
  130. package/dist/cjs/state/modules/read-write/element-imperative-handles.js +3 -3
  131. package/dist/cjs/state/modules/read-write/element-imperative-handles.js.map +1 -1
  132. package/dist/cjs/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +5 -5
  133. package/dist/cjs/state/modules/read-write/prop-controllers.js.map +1 -0
  134. package/dist/cjs/state/read-only-state.js +9 -44
  135. package/dist/cjs/state/read-only-state.js.map +1 -1
  136. package/dist/cjs/state/read-write-state.js +37 -0
  137. package/dist/cjs/state/read-write-state.js.map +1 -1
  138. package/dist/cjs/state/shared-api/action-types.js +33 -0
  139. package/dist/cjs/state/shared-api/action-types.js.map +1 -0
  140. package/dist/cjs/state/{shared-api.js → shared-api/actions.js} +8 -14
  141. package/dist/cjs/state/shared-api/actions.js.map +1 -0
  142. package/dist/cjs/state/shared-api/index.js +25 -0
  143. package/dist/cjs/state/shared-api/index.js.map +1 -0
  144. package/dist/cjs/state/store.js +5 -3
  145. package/dist/cjs/state/store.js.map +1 -1
  146. package/dist/cjs/state/translations/get.js +1 -4
  147. package/dist/cjs/state/translations/get.js.map +1 -1
  148. package/dist/cjs/state/translations/merge.js.map +1 -1
  149. package/dist/cjs/state/unified-state.js +12 -0
  150. package/dist/cjs/state/unified-state.js.map +1 -1
  151. package/dist/cjs/testing/breakpoints.js +35 -0
  152. package/dist/cjs/testing/breakpoints.js.map +1 -0
  153. package/dist/cjs/testing/element-data.js +102 -0
  154. package/dist/cjs/testing/element-data.js.map +1 -0
  155. package/dist/cjs/testing/read-write-state.js +32 -0
  156. package/dist/cjs/testing/read-write-state.js.map +1 -0
  157. package/dist/cjs/translations/index.js.map +1 -1
  158. package/dist/cjs/utils/intersection.js.map +1 -1
  159. package/dist/esm/api/graphql-api-client.js +1 -1
  160. package/dist/esm/api/rest-api-client.js +1 -1
  161. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  162. package/dist/esm/builder/host-to-builder-actions.js +2 -4
  163. package/dist/esm/builder/host-to-builder-actions.js.map +1 -1
  164. package/dist/esm/client/index.js +1 -1
  165. package/dist/esm/components/builtin/Embed/Embed.js +3 -2
  166. package/dist/esm/components/builtin/Embed/Embed.js.map +1 -1
  167. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  168. package/dist/esm/components/builtin/Navigation/components/DropDownButton/index.js +5 -1
  169. package/dist/esm/components/builtin/Navigation/components/DropDownButton/index.js.map +1 -1
  170. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js +5 -1
  171. package/dist/esm/components/shared/BackgroundsContainer/components/BackgroundVideo/index.js.map +1 -1
  172. package/dist/esm/controls/index.js +4 -0
  173. package/dist/esm/controls/index.js.map +1 -1
  174. package/dist/esm/controls/link.js.map +1 -1
  175. package/dist/esm/controls/rich-text/control.js +16 -3
  176. package/dist/esm/controls/rich-text/control.js.map +1 -1
  177. package/dist/esm/controls/rich-text/rich-text.js +2 -2
  178. package/dist/esm/controls/rich-text/rich-text.js.map +1 -1
  179. package/dist/esm/controls/rich-text-v2/control.js +15 -2
  180. package/dist/esm/controls/rich-text-v2/control.js.map +1 -1
  181. package/dist/esm/controls/rich-text-v2/rich-text-v2.js +2 -2
  182. package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  183. package/dist/esm/controls/serialization/base/index.js +2 -0
  184. package/dist/esm/controls/serialization/base/index.js.map +1 -1
  185. package/dist/esm/controls/slot.js.map +1 -1
  186. package/dist/esm/next/testing/breakpoints.js +1 -8
  187. package/dist/esm/next/testing/breakpoints.js.map +1 -1
  188. package/dist/esm/next/testing/element-data.js +1 -75
  189. package/dist/esm/next/testing/element-data.js.map +1 -1
  190. package/dist/esm/next/testing/react-runtime.js.map +1 -1
  191. package/dist/esm/prop-controllers/instances.js +20 -4
  192. package/dist/esm/prop-controllers/instances.js.map +1 -1
  193. package/dist/esm/runtimes/react/components/Element.js +35 -13
  194. package/dist/esm/runtimes/react/components/Element.js.map +1 -1
  195. package/dist/esm/runtimes/react/components/ElementRegistration.js +37 -12
  196. package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -1
  197. package/dist/esm/runtimes/react/components/control-instances-context.js +13 -0
  198. package/dist/esm/runtimes/react/components/control-instances-context.js.map +1 -0
  199. package/dist/esm/runtimes/react/components/resolve-props.js +12 -1
  200. package/dist/esm/runtimes/react/components/resolve-props.js.map +1 -1
  201. package/dist/esm/runtimes/react/controls/rich-text/EditableText/editable-text.js.map +1 -1
  202. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js +4 -2
  203. package/dist/esm/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.js.map +1 -1
  204. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js +1 -1
  205. package/dist/esm/runtimes/react/controls/rich-text/rich-text.js.map +1 -1
  206. package/dist/esm/runtimes/react/controls/slot/index.js +5 -0
  207. package/dist/esm/runtimes/react/controls/slot/index.js.map +1 -0
  208. package/dist/esm/runtimes/react/controls/slot/render-slot.js +13 -0
  209. package/dist/esm/runtimes/react/controls/slot/render-slot.js.map +1 -0
  210. package/dist/esm/runtimes/react/controls/{slot.js → slot/slot-value.js} +27 -23
  211. package/dist/esm/runtimes/react/controls/slot/slot-value.js.map +1 -0
  212. package/dist/esm/runtimes/react/controls/style.js.map +1 -1
  213. package/dist/esm/runtimes/react/element-imperative-handle.js +1 -1
  214. package/dist/esm/runtimes/react/element-imperative-handle.js.map +1 -1
  215. package/dist/esm/runtimes/react/hooks/use-control-instance.js +62 -0
  216. package/dist/esm/runtimes/react/hooks/use-control-instance.js.map +1 -0
  217. package/dist/esm/runtimes/react/hooks/use-control-instances.js +5 -0
  218. package/dist/esm/runtimes/react/hooks/use-control-instances.js.map +1 -0
  219. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js +2 -2
  220. package/dist/esm/runtimes/react/hooks/use-disable-register-element.js.map +1 -1
  221. package/dist/esm/runtimes/react/hooks/use-resolved-props.js +17 -23
  222. package/dist/esm/runtimes/react/hooks/use-resolved-props.js.map +1 -1
  223. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js +3 -3
  224. package/dist/esm/runtimes/react/hooks/use-stylesheet-factory.js.map +1 -1
  225. package/dist/esm/runtimes/react/react-runtime-core.js +2 -1
  226. package/dist/esm/runtimes/react/react-runtime-core.js.map +1 -1
  227. package/dist/esm/runtimes/react/stylesheet-factory.js +1 -0
  228. package/dist/esm/runtimes/react/stylesheet-factory.js.map +1 -0
  229. package/dist/esm/runtimes/react/testing/index.js +3 -0
  230. package/dist/esm/runtimes/react/testing/index.js.map +1 -0
  231. package/dist/esm/runtimes/react/testing/react-provider.js +14 -0
  232. package/dist/esm/runtimes/react/testing/react-provider.js.map +1 -0
  233. package/dist/esm/slate/TypographyPlugin/normalizeTypographyUp.js.map +1 -1
  234. package/dist/esm/slate/selectors.js.map +1 -1
  235. package/dist/esm/slate/utils/toText.js.map +1 -1
  236. package/dist/esm/state/actions/index.js +2 -2
  237. package/dist/esm/state/actions/index.js.map +1 -1
  238. package/dist/esm/state/actions/internal/action-types.js +10 -0
  239. package/dist/esm/state/actions/internal/action-types.js.map +1 -0
  240. package/dist/esm/state/actions/internal/index.js +0 -9
  241. package/dist/esm/state/actions/internal/index.js.map +1 -1
  242. package/dist/esm/state/actions/internal/read-only-action-types.js +20 -0
  243. package/dist/esm/state/actions/internal/read-only-action-types.js.map +1 -0
  244. package/dist/esm/state/actions/internal/read-only-actions.js +1 -73
  245. package/dist/esm/state/actions/internal/read-only-actions.js.map +1 -1
  246. package/dist/esm/state/actions/internal/read-write-action-types.js +18 -0
  247. package/dist/esm/state/actions/internal/read-write-action-types.js.map +1 -0
  248. package/dist/esm/state/actions/internal/read-write-actions.js +94 -8
  249. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -1
  250. package/dist/esm/state/builder-api/action-types.js +25 -0
  251. package/dist/esm/state/builder-api/action-types.js.map +1 -0
  252. package/dist/esm/state/builder-api/actions.js +1 -24
  253. package/dist/esm/state/builder-api/actions.js.map +1 -1
  254. package/dist/esm/state/builder-api/proxy.js +2 -1
  255. package/dist/esm/state/builder-api/proxy.js.map +1 -1
  256. package/dist/esm/state/host-api/action-types.js +19 -0
  257. package/dist/esm/state/host-api/action-types.js.map +1 -0
  258. package/dist/esm/state/{host-api.js → host-api/actions.js} +2 -17
  259. package/dist/esm/state/host-api/actions.js.map +1 -0
  260. package/dist/esm/state/host-api/index.js +3 -0
  261. package/dist/esm/state/host-api/index.js.map +1 -0
  262. package/dist/esm/state/middleware/read-write/builder-api/index.js +1 -1
  263. package/dist/esm/state/middleware/read-write/builder-api/index.js.map +1 -1
  264. package/dist/esm/state/middleware/read-write/measure-box-models.js +3 -3
  265. package/dist/esm/state/middleware/read-write/measure-box-models.js.map +1 -1
  266. package/dist/esm/state/middleware/read-write/prop-controller-handles.js +13 -47
  267. package/dist/esm/state/middleware/read-write/prop-controller-handles.js.map +1 -1
  268. package/dist/esm/state/modules/api-resources.js +2 -2
  269. package/dist/esm/state/modules/api-resources.js.map +1 -1
  270. package/dist/esm/state/modules/breakpoints.js +2 -2
  271. package/dist/esm/state/modules/breakpoints.js.map +1 -1
  272. package/dist/esm/state/modules/components-meta.js +1 -1
  273. package/dist/esm/state/modules/components-meta.js.map +1 -1
  274. package/dist/esm/state/modules/element-trees.js +50 -22
  275. package/dist/esm/state/modules/element-trees.js.map +1 -1
  276. package/dist/esm/state/modules/is-in-builder.js +1 -1
  277. package/dist/esm/state/modules/is-in-builder.js.map +1 -1
  278. package/dist/esm/state/modules/is-read-only.js +1 -1
  279. package/dist/esm/state/modules/is-read-only.js.map +1 -1
  280. package/dist/esm/state/modules/locale.js +1 -1
  281. package/dist/esm/state/modules/locale.js.map +1 -1
  282. package/dist/esm/state/modules/localized-resources-map.js +1 -1
  283. package/dist/esm/state/modules/localized-resources-map.js.map +1 -1
  284. package/dist/esm/state/modules/{prop-controllers.js → prop-controller-descriptors.js} +2 -2
  285. package/dist/esm/state/modules/prop-controller-descriptors.js.map +1 -0
  286. package/dist/esm/state/modules/react-components.js +1 -1
  287. package/dist/esm/state/modules/react-components.js.map +1 -1
  288. package/dist/esm/state/modules/read-write/box-models.js +2 -2
  289. package/dist/esm/state/modules/read-write/box-models.js.map +1 -1
  290. package/dist/esm/state/modules/read-write/element-imperative-handles.js +3 -3
  291. package/dist/esm/state/modules/read-write/element-imperative-handles.js.map +1 -1
  292. package/dist/esm/state/modules/{prop-controller-handles.js → read-write/prop-controllers.js} +2 -2
  293. package/dist/esm/state/modules/read-write/prop-controllers.js.map +1 -0
  294. package/dist/esm/state/read-only-state.js +9 -41
  295. package/dist/esm/state/read-only-state.js.map +1 -1
  296. package/dist/esm/state/read-write-state.js +34 -0
  297. package/dist/esm/state/read-write-state.js.map +1 -1
  298. package/dist/esm/state/shared-api/action-types.js +9 -0
  299. package/dist/esm/state/shared-api/action-types.js.map +1 -0
  300. package/dist/esm/state/{shared-api.js → shared-api/actions.js} +2 -7
  301. package/dist/esm/state/shared-api/actions.js.map +1 -0
  302. package/dist/esm/state/shared-api/index.js +3 -0
  303. package/dist/esm/state/shared-api/index.js.map +1 -0
  304. package/dist/esm/state/store.js +3 -1
  305. package/dist/esm/state/store.js.map +1 -1
  306. package/dist/esm/state/translations/get.js +1 -4
  307. package/dist/esm/state/translations/get.js.map +1 -1
  308. package/dist/esm/state/translations/merge.js +3 -1
  309. package/dist/esm/state/translations/merge.js.map +1 -1
  310. package/dist/esm/state/unified-state.js +4 -0
  311. package/dist/esm/state/unified-state.js.map +1 -1
  312. package/dist/esm/testing/breakpoints.js +9 -0
  313. package/dist/esm/testing/breakpoints.js.map +1 -0
  314. package/dist/esm/testing/element-data.js +76 -0
  315. package/dist/esm/testing/element-data.js.map +1 -0
  316. package/dist/esm/testing/read-write-state.js +8 -0
  317. package/dist/esm/testing/read-write-state.js.map +1 -0
  318. package/dist/esm/translations/index.js.map +1 -1
  319. package/dist/esm/utils/intersection.js.map +1 -1
  320. package/dist/types/api/schema/page-pathname-slice.d.ts +2 -2
  321. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +6 -6
  322. package/dist/types/api-handler/handlers/webhook/types.d.ts +20 -20
  323. package/dist/types/builder/host-to-builder-actions.d.ts.map +1 -1
  324. package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
  325. package/dist/types/components/builtin/Form/Form.d.ts +1 -1
  326. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  327. package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts.map +1 -1
  328. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  329. package/dist/types/components/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
  330. package/dist/types/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
  331. package/dist/types/controls/__tests__/slot.test.d.ts +3 -0
  332. package/dist/types/controls/__tests__/slot.test.d.ts.map +1 -0
  333. package/dist/types/controls/index.d.ts +1 -1
  334. package/dist/types/controls/index.d.ts.map +1 -1
  335. package/dist/types/controls/rich-text/control.d.ts +5 -1
  336. package/dist/types/controls/rich-text/control.d.ts.map +1 -1
  337. package/dist/types/controls/rich-text/rich-text.d.ts +2 -2
  338. package/dist/types/controls/rich-text/rich-text.d.ts.map +1 -1
  339. package/dist/types/controls/rich-text-v2/control.d.ts +6 -2
  340. package/dist/types/controls/rich-text-v2/control.d.ts.map +1 -1
  341. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +2 -2
  342. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  343. package/dist/types/controls/serialization/base/index.d.ts.map +1 -1
  344. package/dist/types/controls/slot.d.ts +1 -1
  345. package/dist/types/controls/slot.d.ts.map +1 -1
  346. package/dist/types/locale.d.ts +1 -1
  347. package/dist/types/next/testing/breakpoints.d.ts +1 -3
  348. package/dist/types/next/testing/breakpoints.d.ts.map +1 -1
  349. package/dist/types/next/testing/element-data.d.ts +1 -54
  350. package/dist/types/next/testing/element-data.d.ts.map +1 -1
  351. package/dist/types/next/testing/react-runtime.d.ts.map +1 -1
  352. package/dist/types/prop-controllers/instances.d.ts +9 -3
  353. package/dist/types/prop-controllers/instances.d.ts.map +1 -1
  354. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  355. package/dist/types/runtimes/react/components/ElementRegistration.d.ts +4 -4
  356. package/dist/types/runtimes/react/components/ElementRegistration.d.ts.map +1 -1
  357. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts +3 -0
  358. package/dist/types/runtimes/react/components/__tests__/element-registration.test.d.ts.map +1 -0
  359. package/dist/types/runtimes/react/components/control-instances-context.d.ts +9 -0
  360. package/dist/types/runtimes/react/components/control-instances-context.d.ts.map +1 -0
  361. package/dist/types/runtimes/react/components/resolve-props.d.ts.map +1 -1
  362. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts +1 -1
  363. package/dist/types/runtimes/react/controls/rich-text/EditableText/editable-text.d.ts.map +1 -1
  364. package/dist/types/runtimes/react/controls/rich-text/EditableText/useSyncWithBuilder.d.ts.map +1 -1
  365. package/dist/types/runtimes/react/controls/slot/index.d.ts +2 -0
  366. package/dist/types/runtimes/react/controls/slot/index.d.ts.map +1 -0
  367. package/dist/types/runtimes/react/controls/slot/render-slot.d.ts +9 -0
  368. package/dist/types/runtimes/react/controls/slot/render-slot.d.ts.map +1 -0
  369. package/dist/types/runtimes/react/controls/{slot.d.ts → slot/slot-value.d.ts} +7 -7
  370. package/dist/types/runtimes/react/controls/slot/slot-value.d.ts.map +1 -0
  371. package/dist/types/runtimes/react/element-imperative-handle.d.ts +1 -1
  372. package/dist/types/runtimes/react/element-imperative-handle.d.ts.map +1 -1
  373. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts +3 -0
  374. package/dist/types/runtimes/react/hooks/__tests__/use-control-instance.test.d.ts.map +1 -0
  375. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts +7 -0
  376. package/dist/types/runtimes/react/hooks/use-control-instance.d.ts.map +1 -0
  377. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts +2 -0
  378. package/dist/types/runtimes/react/hooks/use-control-instances.d.ts.map +1 -0
  379. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts +1 -1
  380. package/dist/types/runtimes/react/hooks/use-disable-register-element.d.ts.map +1 -1
  381. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts +9 -2
  382. package/dist/types/runtimes/react/hooks/use-resolved-props.d.ts.map +1 -1
  383. package/dist/types/runtimes/react/hooks/use-store.d.ts +2 -4
  384. package/dist/types/runtimes/react/hooks/use-store.d.ts.map +1 -1
  385. package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts +1 -5
  386. package/dist/types/runtimes/react/hooks/use-stylesheet-factory.d.ts.map +1 -1
  387. package/dist/types/runtimes/react/react-runtime-core.d.ts +9 -1
  388. package/dist/types/runtimes/react/react-runtime-core.d.ts.map +1 -1
  389. package/dist/types/runtimes/react/stylesheet-factory.d.ts +6 -0
  390. package/dist/types/runtimes/react/stylesheet-factory.d.ts.map +1 -0
  391. package/dist/types/runtimes/react/testing/index.d.ts +3 -0
  392. package/dist/types/runtimes/react/testing/index.d.ts.map +1 -0
  393. package/dist/types/runtimes/react/testing/react-provider.d.ts +8 -0
  394. package/dist/types/runtimes/react/testing/react-provider.d.ts.map +1 -0
  395. package/dist/types/slate/InlineModePlugin/index.d.ts +1 -1
  396. package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
  397. package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
  398. package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  399. package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
  400. package/dist/types/slate/selectors.d.ts +2 -2
  401. package/dist/types/slate/selectors.d.ts.map +1 -1
  402. package/dist/types/slate/utils/toText.d.ts.map +1 -1
  403. package/dist/types/state/__tests__/fixtures/serialized-descriptors-from-builder.d.ts.map +1 -1
  404. package/dist/types/state/__tests__/fixtures/translatable-content-sample.d.ts.map +1 -1
  405. package/dist/types/state/__tests__/test-store.d.ts +2 -4
  406. package/dist/types/state/__tests__/test-store.d.ts.map +1 -1
  407. package/dist/types/state/actions/index.d.ts +7 -6
  408. package/dist/types/state/actions/index.d.ts.map +1 -1
  409. package/dist/types/state/actions/internal/action-types.d.ts +27 -0
  410. package/dist/types/state/actions/internal/action-types.d.ts.map +1 -0
  411. package/dist/types/state/actions/internal/index.d.ts +0 -25
  412. package/dist/types/state/actions/internal/index.d.ts.map +1 -1
  413. package/dist/types/state/actions/internal/read-only-action-types.d.ts +15 -0
  414. package/dist/types/state/actions/internal/read-only-action-types.d.ts.map +1 -0
  415. package/dist/types/state/actions/internal/read-only-actions.d.ts +3 -76
  416. package/dist/types/state/actions/internal/read-only-actions.d.ts.map +1 -1
  417. package/dist/types/state/actions/internal/read-write-action-types.d.ts +15 -0
  418. package/dist/types/state/actions/internal/read-write-action-types.d.ts.map +1 -0
  419. package/dist/types/state/actions/internal/read-write-actions.d.ts +71 -8
  420. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -1
  421. package/dist/types/state/builder-api/action-types.d.ts +22 -0
  422. package/dist/types/state/builder-api/action-types.d.ts.map +1 -0
  423. package/dist/types/state/builder-api/actions.d.ts +1 -21
  424. package/dist/types/state/builder-api/actions.d.ts.map +1 -1
  425. package/dist/types/state/builder-api/proxy.d.ts.map +1 -1
  426. package/dist/types/state/host-api/action-types.d.ts +17 -0
  427. package/dist/types/state/host-api/action-types.d.ts.map +1 -0
  428. package/dist/types/state/{host-api.d.ts → host-api/actions.d.ts} +7 -22
  429. package/dist/types/state/host-api/actions.d.ts.map +1 -0
  430. package/dist/types/state/host-api/index.d.ts +3 -0
  431. package/dist/types/state/host-api/index.d.ts.map +1 -0
  432. package/dist/types/state/middleware/read-write/__tests__/fixtures/operations.d.ts.map +1 -0
  433. package/dist/types/state/middleware/read-write/__tests__/fixtures/root-elements.d.ts.map +1 -0
  434. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts +2 -0
  435. package/dist/types/state/middleware/read-write/__tests__/prop-controller-handles.test.d.ts.map +1 -0
  436. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts +2 -0
  437. package/dist/types/state/middleware/read-write/__tests__/update-element-tree.test.d.ts.map +1 -0
  438. package/dist/types/state/middleware/read-write/prop-controller-handles.d.ts.map +1 -1
  439. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts +737 -0
  440. package/dist/types/state/modules/__tests__/fixtures/element-trees.d.ts.map +1 -1
  441. package/dist/types/state/modules/components-meta.d.ts +3 -0
  442. package/dist/types/state/modules/components-meta.d.ts.map +1 -1
  443. package/dist/types/state/modules/element-trees.d.ts +1 -1
  444. package/dist/types/state/modules/element-trees.d.ts.map +1 -1
  445. package/dist/types/state/modules/{prop-controllers.d.ts → prop-controller-descriptors.d.ts} +1 -1
  446. package/dist/types/state/modules/prop-controller-descriptors.d.ts.map +1 -0
  447. package/dist/types/state/modules/{prop-controller-handles.d.ts → read-write/prop-controllers.d.ts} +4 -4
  448. package/dist/types/state/modules/{prop-controller-handles.d.ts.map → read-write/prop-controllers.d.ts.map} +1 -1
  449. package/dist/types/state/read-only-state.d.ts +6 -70
  450. package/dist/types/state/read-only-state.d.ts.map +1 -1
  451. package/dist/types/state/read-write-state.d.ts +67 -4
  452. package/dist/types/state/read-write-state.d.ts.map +1 -1
  453. package/dist/types/state/shared-api/action-types.d.ts +6 -0
  454. package/dist/types/state/shared-api/action-types.d.ts.map +1 -0
  455. package/dist/types/state/{shared-api.d.ts → shared-api/actions.d.ts} +3 -7
  456. package/dist/types/state/shared-api/actions.d.ts.map +1 -0
  457. package/dist/types/state/shared-api/index.d.ts +3 -0
  458. package/dist/types/state/shared-api/index.d.ts.map +1 -0
  459. package/dist/types/state/store.d.ts +4 -8
  460. package/dist/types/state/store.d.ts.map +1 -1
  461. package/dist/types/state/translations/get.d.ts +1 -1
  462. package/dist/types/state/translations/get.d.ts.map +1 -1
  463. package/dist/types/state/translations/merge.d.ts +1 -1
  464. package/dist/types/state/translations/merge.d.ts.map +1 -1
  465. package/dist/types/state/unified-state.d.ts +2 -0
  466. package/dist/types/state/unified-state.d.ts.map +1 -1
  467. package/dist/types/testing/breakpoints.d.ts +4 -0
  468. package/dist/types/testing/breakpoints.d.ts.map +1 -0
  469. package/dist/types/testing/element-data.d.ts +59 -0
  470. package/dist/types/testing/element-data.d.ts.map +1 -0
  471. package/dist/types/testing/read-write-state.d.ts +3 -0
  472. package/dist/types/testing/read-write-state.d.ts.map +1 -0
  473. package/dist/types/translations/index.d.ts +1 -1
  474. package/dist/types/translations/index.d.ts.map +1 -1
  475. package/dist/types/utils/intersection.d.ts +2 -1
  476. package/dist/types/utils/intersection.d.ts.map +1 -1
  477. package/package.json +9 -6
  478. package/react/builtins/package.json +1 -1
  479. package/dist/cjs/runtimes/react/controls/group.js.map +0 -1
  480. package/dist/cjs/runtimes/react/controls/slot.js.map +0 -1
  481. package/dist/cjs/state/host-api.js.map +0 -1
  482. package/dist/cjs/state/modules/prop-controller-handles.js.map +0 -1
  483. package/dist/cjs/state/modules/prop-controllers.js.map +0 -1
  484. package/dist/cjs/state/shared-api.js.map +0 -1
  485. package/dist/cjs/utils/is.js.map +0 -1
  486. package/dist/esm/runtimes/react/controls/group.js +0 -23
  487. package/dist/esm/runtimes/react/controls/group.js.map +0 -1
  488. package/dist/esm/runtimes/react/controls/slot.js.map +0 -1
  489. package/dist/esm/state/host-api.js.map +0 -1
  490. package/dist/esm/state/modules/prop-controller-handles.js.map +0 -1
  491. package/dist/esm/state/modules/prop-controllers.js.map +0 -1
  492. package/dist/esm/state/shared-api.js.map +0 -1
  493. package/dist/esm/utils/is.js +0 -6
  494. package/dist/esm/utils/is.js.map +0 -1
  495. package/dist/types/runtimes/react/controls/group.d.ts +0 -11
  496. package/dist/types/runtimes/react/controls/group.d.ts.map +0 -1
  497. package/dist/types/runtimes/react/controls/slot.d.ts.map +0 -1
  498. package/dist/types/state/__tests__/fixtures/operations.d.ts.map +0 -1
  499. package/dist/types/state/__tests__/fixtures/root-elements.d.ts.map +0 -1
  500. package/dist/types/state/__tests__/react-builder-preview.test.d.ts +0 -2
  501. package/dist/types/state/__tests__/react-builder-preview.test.d.ts.map +0 -1
  502. package/dist/types/state/host-api.d.ts.map +0 -1
  503. package/dist/types/state/modules/prop-controllers.d.ts.map +0 -1
  504. package/dist/types/state/shared-api.d.ts.map +0 -1
  505. package/dist/types/utils/is.d.ts +0 -3
  506. package/dist/types/utils/is.d.ts.map +0 -1
  507. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/operations.d.ts +0 -0
  508. /package/dist/types/state/{__tests__ → middleware/read-write/__tests__}/fixtures/root-elements.d.ts +0 -0
@@ -35,12 +35,13 @@ __export(store_exports, {
35
35
  module.exports = __toCommonJS(store_exports);
36
36
  var import_toolkit = require("@reduxjs/toolkit");
37
37
  var import_toolkit2 = require("./toolkit");
38
- var import_actions = require("./builder-api/actions");
38
+ var import_action_types = require("./builder-api/action-types");
39
39
  var import_host_api = require("./host-api");
40
40
  var Breakpoints = __toESM(require("./modules/breakpoints"));
41
41
  var import_read_only_element_tree = require("./middleware/read-only-element-tree");
42
42
  var import_makeswift_api_client_sync = require("./middleware/makeswift-api-client-sync");
43
43
  var import_breakpoint_watch = require("./mixins/breakpoint-watch");
44
+ var import_read_write_actions = require("./actions/internal/read-write-actions");
44
45
  var ReadOnlyState = __toESM(require("./read-only-state"));
45
46
  const configureStore = ({
46
47
  name,
@@ -60,8 +61,8 @@ const configureStore = ({
60
61
  name: `${name} (${(/* @__PURE__ */ new Date()).toISOString()})`,
61
62
  actionsDenylist: [
62
63
  import_host_api.HostActionTypes.BUILDER_POINTER_MOVE,
63
- import_actions.BuilderActionTypes.HANDLE_POINTER_MOVE,
64
- import_actions.BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE
64
+ import_action_types.BuilderActionTypes.HANDLE_POINTER_MOVE,
65
+ import_action_types.BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE
65
66
  ]
66
67
  })
67
68
  });
@@ -153,6 +154,7 @@ function configureReadWriteStore({
153
154
  readWriteMiddlewareRef.current = createReadWriteMiddleware({ builderProxy });
154
155
  const dispatch = store.dispatch;
155
156
  const builderProxyCleanup = dispatch(setupBuilderProxy(builderProxy));
157
+ dispatch((0, import_read_write_actions.flushActionBuffer)());
156
158
  readWriteCleanup = () => {
157
159
  readWriteMiddlewareRef.current = null;
158
160
  builderProxyCleanup();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/state/store.ts"],"sourcesContent":["import {\n type Middleware,\n type StoreEnhancer,\n type MiddlewareAPI,\n Tuple,\n configureStore as configureReduxStore,\n combineReducers,\n compose,\n} from '@reduxjs/toolkit'\n\nimport { ApiResourcesClient } from '../api/api-resources-client'\n\nimport { actionMiddleware, middlewareOptions, devToolsConfig } from './toolkit'\nimport { BuilderActionTypes } from './builder-api/actions'\nimport { HostActionTypes } from './host-api'\n\nimport * as Breakpoints from './modules/breakpoints'\n\nimport { readOnlyElementTreeMiddleware } from './middleware/read-only-element-tree'\nimport { makeswiftApiClientSyncMiddleware } from './middleware/makeswift-api-client-sync'\nimport { type BreakpointWatch, breakpointWatchMixin } from './mixins/breakpoint-watch'\n\nimport { type Action } from './actions'\n\nimport { type State as ReadWriteState } from './read-write-state'\nimport * as ReadOnlyState from './read-only-state'\nimport {\n type State,\n type Dispatch,\n type ReadOnlyReducer,\n type ReadWriteDispatch,\n} from './unified-state'\n\nexport { type State } from './unified-state'\n\nconst configureStore = <Items extends readonly StoreEnhancer[] = []>({\n name,\n preloadedState,\n enhancers,\n middleware,\n}: {\n name: string\n preloadedState: Partial<State>\n enhancers: () => Tuple<Items>\n middleware?: () => Middleware[]\n}) => {\n const store = configureReduxStore({\n reducer: combineReducers(ReadOnlyState.reducers),\n preloadedState,\n\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware(middlewareOptions).concat([\n readOnlyElementTreeMiddleware(),\n ...(middleware ? middleware() : []),\n ]),\n\n enhancers: getDefaultEnhancers => getDefaultEnhancers().concat(enhancers()),\n\n devTools: devToolsConfig({\n name: `${name} (${new Date().toISOString()})`,\n actionsDenylist: [\n HostActionTypes.BUILDER_POINTER_MOVE,\n BuilderActionTypes.HANDLE_POINTER_MOVE,\n BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE,\n ],\n }),\n })\n\n return store\n}\n\nexport function configureProtoStore({\n name,\n breakpoints,\n}: {\n name: string\n breakpoints: Breakpoints.Breakpoints | undefined\n}) {\n return configureStore({\n name,\n preloadedState: {\n breakpoints: Breakpoints.getInitialState(breakpoints),\n },\n enhancers: () => new Tuple(),\n })\n}\n\nexport type ProtoStore = ReturnType<typeof configureProtoStore>\n\ntype ReadWriteMiddleware = ReturnType<\n typeof import('./middleware/read-write').createReadWriteMiddleware\n>\n\ntype ReadWriteMiddlewareRef = {\n current: ReadWriteMiddleware | null\n}\n\nexport function conditionalReadWriteMiddleware(\n middlewareRef: ReadWriteMiddlewareRef,\n): Middleware<Dispatch, State, Dispatch> {\n let readWriteActionBuffer: Action[] = []\n let middlewares: ReadWriteMiddleware | null = null\n let enhancedDispatch: Dispatch | null = null\n\n return actionMiddleware(({ dispatch, getState }) => next => {\n return (action: Action) => {\n const state = getState()\n\n if (middlewareRef.current == null) {\n if (!state.isReadOnly) {\n // because switching to the read-write state is an asynchronous operation,\n // we need to buffer all actions dispatched after the isReadOnly state is\n // set to false but before the read-write middleware is installed\n readWriteActionBuffer.push(action)\n }\n\n return next(action)\n }\n\n if (state.isReadOnly) {\n console.error('Read-write state mismatch', {\n isReadOnly: state.isReadOnly,\n middlewareRef: middlewareRef.current,\n siteVersion: state.siteVersion,\n })\n }\n\n // build and cache the enhanced dispatch chain when read-write middleware is installed\n if (enhancedDispatch == null || middlewares !== middlewareRef.current) {\n middlewares = middlewareRef.current\n\n const middlewareApi = { dispatch, getState } as MiddlewareAPI<\n ReadWriteDispatch,\n ReadWriteState\n >\n\n enhancedDispatch = compose<Dispatch>(...middlewares.map(mw => mw(middlewareApi)))(next)\n }\n\n // dispatch buffered actions, if any\n if (readWriteActionBuffer.length > 0) {\n const readWriteActions = [...readWriteActionBuffer]\n readWriteActionBuffer = []\n\n // Note that we're rerunning the actions through the entire middleware chain,\n // including the read-only middleware and the reducers, some of which have\n // already processed these actions once. This is safe to do because actions that\n // are run as part of page initialization are idempotent.\n for (const bufferedAction of readWriteActions) {\n enhancedDispatch(bufferedAction)\n }\n }\n\n return enhancedDispatch(action)\n }\n })\n}\n\nexport interface ReadWriteStateMixin {\n readonly apiResourcesClient: ApiResourcesClient\n\n loadReadWriteStateIfNeeded(): Promise<() => void>\n}\n\nfunction withMixin<M extends {}>(mixin: M): StoreEnhancer<M> {\n return next => (reducer, preloadedState?) => ({\n ...next(reducer, preloadedState),\n ...mixin,\n })\n}\n\nexport function configureReadWriteStore({\n name,\n appOrigin,\n apiResourcesClient,\n preloadedState,\n}: {\n name: string\n appOrigin: string\n apiResourcesClient: ApiResourcesClient\n preloadedState: Partial<State>\n}) {\n const readWriteMiddlewareRef: ReadWriteMiddlewareRef = {\n current: null,\n }\n\n let refCount = 0\n let readWriteCleanup: (() => void) | null = null\n let readWriteSetupPromise: Promise<void> | null = null\n\n const loadReadWriteState = async (): Promise<void> => {\n if (readWriteCleanup != null) {\n return\n }\n\n if (readWriteSetupPromise != null) {\n await readWriteSetupPromise\n return\n }\n\n readWriteSetupPromise = (async () => {\n // import all the modules needed for read-write mode before proceeding with\n // the setup to avoid race conditions when `setup` is called concurrently\n // in two different page regions\n const { BuilderAPIProxy } = await import('./builder-api/proxy')\n const { createRootReducer, setupBuilderProxy } = await import('./read-write-state')\n const { createReadWriteMiddleware } = await import('./middleware/read-write')\n\n // IMPORTANT: only synchronous code after this point\n\n // with all modules imported, check if another concurrent setup already\n // initialized the read-write middleware\n if (readWriteMiddlewareRef.current != null) {\n return\n }\n\n store.replaceReducer(createRootReducer() as ReadOnlyReducer)\n\n const builderProxy = new BuilderAPIProxy({ appOrigin })\n readWriteMiddlewareRef.current = createReadWriteMiddleware({ builderProxy })\n\n const dispatch = store.dispatch as ReadWriteDispatch\n const builderProxyCleanup = dispatch(setupBuilderProxy(builderProxy))\n\n readWriteCleanup = () => {\n readWriteMiddlewareRef.current = null\n builderProxyCleanup()\n }\n })()\n\n try {\n await readWriteSetupPromise\n } finally {\n readWriteSetupPromise = null\n }\n }\n\n const store = configureStore({\n name,\n preloadedState,\n\n middleware: () => [\n makeswiftApiClientSyncMiddleware(apiResourcesClient),\n conditionalReadWriteMiddleware(readWriteMiddlewareRef),\n ],\n\n enhancers: () =>\n new Tuple(\n withMixin<BreakpointWatch>(\n breakpointWatchMixin({\n dispatch: (...args: Parameters<Dispatch>) => store.dispatch(...args),\n getState: (): State => store.getState(),\n subscribe: (listener): VoidFunction => store.subscribe(listener),\n }),\n ),\n\n withMixin<ReadWriteStateMixin>({\n apiResourcesClient,\n loadReadWriteStateIfNeeded: async () => {\n const { isReadOnly } = store.getState()\n\n if (isReadOnly) {\n if (refCount > 0) {\n console.error('Read-write state mismatch', { isReadOnly, refCount })\n }\n\n return () => {}\n }\n\n await loadReadWriteState()\n refCount += 1\n\n let didCleanup = false\n return () => {\n if (didCleanup) {\n return\n }\n\n didCleanup = true\n refCount -= 1\n if (refCount === 0 && readWriteCleanup != null) {\n readWriteCleanup()\n readWriteCleanup = null\n }\n }\n },\n }),\n ),\n })\n\n return store\n}\n\nexport type Store = ReturnType<typeof configureReadWriteStore>\n"],"mappings":"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","names":["import_toolkit","configureReduxStore"]}
1
+ {"version":3,"sources":["../../../src/state/store.ts"],"sourcesContent":["import {\n type Middleware,\n type StoreEnhancer,\n type MiddlewareAPI,\n Tuple,\n configureStore as configureReduxStore,\n combineReducers,\n compose,\n} from '@reduxjs/toolkit'\n\nimport { ApiResourcesClient } from '../api/api-resources-client'\n\nimport { actionMiddleware, middlewareOptions, devToolsConfig } from './toolkit'\nimport { BuilderActionTypes } from './builder-api/action-types'\nimport { HostActionTypes } from './host-api'\n\nimport * as Breakpoints from './modules/breakpoints'\n\nimport { readOnlyElementTreeMiddleware } from './middleware/read-only-element-tree'\nimport { makeswiftApiClientSyncMiddleware } from './middleware/makeswift-api-client-sync'\nimport { type BreakpointWatch, breakpointWatchMixin } from './mixins/breakpoint-watch'\n\nimport { flushActionBuffer } from './actions/internal/read-write-actions'\nimport { type Action } from './actions'\n\nimport { type State as ReadWriteState } from './read-write-state'\nimport * as ReadOnlyState from './read-only-state'\nimport {\n type State,\n type Dispatch,\n type ReadOnlyReducer,\n type ReadWriteDispatch,\n} from './unified-state'\n\nexport { type State } from './unified-state'\n\nconst configureStore = <Items extends readonly StoreEnhancer[] = []>({\n name,\n preloadedState,\n enhancers,\n middleware,\n}: {\n name: string\n preloadedState: Partial<State>\n enhancers: () => Tuple<Items>\n middleware?: () => Middleware[]\n}) => {\n const store = configureReduxStore({\n reducer: combineReducers(ReadOnlyState.reducers),\n preloadedState,\n\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware(middlewareOptions).concat([\n readOnlyElementTreeMiddleware(),\n ...(middleware ? middleware() : []),\n ]),\n\n enhancers: getDefaultEnhancers => getDefaultEnhancers().concat(enhancers()),\n\n devTools: devToolsConfig({\n name: `${name} (${new Date().toISOString()})`,\n actionsDenylist: [\n HostActionTypes.BUILDER_POINTER_MOVE,\n BuilderActionTypes.HANDLE_POINTER_MOVE,\n BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE,\n ],\n }),\n })\n\n return store\n}\n\nexport function configureProtoStore({\n name,\n breakpoints,\n}: {\n name: string\n breakpoints: Breakpoints.Breakpoints | undefined\n}) {\n return configureStore({\n name,\n preloadedState: {\n breakpoints: Breakpoints.getInitialState(breakpoints),\n },\n enhancers: () => new Tuple(),\n })\n}\n\nexport type ProtoStore = ReturnType<typeof configureProtoStore>\n\ntype ReadWriteMiddleware = ReturnType<\n typeof import('./middleware/read-write').createReadWriteMiddleware\n>\n\ntype ReadWriteMiddlewareRef = {\n current: ReadWriteMiddleware | null\n}\n\nexport function conditionalReadWriteMiddleware(\n middlewareRef: ReadWriteMiddlewareRef,\n): Middleware<Dispatch, State, Dispatch> {\n let readWriteActionBuffer: Action[] = []\n let middlewares: ReadWriteMiddleware | null = null\n let enhancedDispatch: Dispatch | null = null\n\n return actionMiddleware(({ dispatch, getState }) => next => {\n return (action: Action) => {\n const state = getState()\n\n if (middlewareRef.current == null) {\n if (!state.isReadOnly) {\n // because switching to the read-write state is an asynchronous operation,\n // we need to buffer all actions dispatched after the isReadOnly state is\n // set to false but before the read-write middleware is installed\n readWriteActionBuffer.push(action)\n }\n\n return next(action)\n }\n\n if (state.isReadOnly) {\n // `middlewareRef` is set, but we're still somehow in a read-only state\n console.error('Read-write state mismatch', {\n isReadOnly: state.isReadOnly,\n middlewareRef: middlewareRef.current,\n siteVersion: state.siteVersion,\n })\n }\n\n // build and cache the enhanced dispatch chain when read-write middleware is installed\n if (enhancedDispatch == null || middlewares !== middlewareRef.current) {\n middlewares = middlewareRef.current\n\n const middlewareApi = { dispatch, getState } as MiddlewareAPI<\n ReadWriteDispatch,\n ReadWriteState\n >\n\n enhancedDispatch = compose<Dispatch>(...middlewares.map(mw => mw(middlewareApi)))(next)\n }\n\n // dispatch buffered actions, if any\n if (readWriteActionBuffer.length > 0) {\n const readWriteActions = [...readWriteActionBuffer]\n readWriteActionBuffer = []\n\n // Note that we're rerunning the actions through the entire middleware chain,\n // including the read-only middleware and the reducers, some of which have\n // already processed these actions once. This is safe to do because actions that\n // are run as part of page initialization are idempotent.\n for (const bufferedAction of readWriteActions) {\n enhancedDispatch(bufferedAction)\n }\n }\n\n return enhancedDispatch(action)\n }\n })\n}\n\nexport interface ReadWriteStateMixin {\n readonly apiResourcesClient: ApiResourcesClient\n\n loadReadWriteStateIfNeeded(): Promise<() => void>\n}\n\nfunction withMixin<M extends object>(mixin: M): StoreEnhancer<M> {\n return next => (reducer, preloadedState?) => ({\n ...next(reducer, preloadedState),\n ...mixin,\n })\n}\n\nexport function configureReadWriteStore({\n name,\n appOrigin,\n apiResourcesClient,\n preloadedState,\n}: {\n name: string\n appOrigin: string\n apiResourcesClient: ApiResourcesClient\n preloadedState: Partial<State>\n}) {\n const readWriteMiddlewareRef: ReadWriteMiddlewareRef = {\n current: null,\n }\n\n let refCount = 0\n let readWriteCleanup: (() => void) | null = null\n let readWriteSetupPromise: Promise<void> | null = null\n\n const loadReadWriteState = async (): Promise<void> => {\n if (readWriteCleanup != null) {\n return\n }\n\n if (readWriteSetupPromise != null) {\n await readWriteSetupPromise\n return\n }\n\n readWriteSetupPromise = (async () => {\n // import all the modules needed for read-write mode before proceeding with\n // the setup to avoid race conditions when `setup` is called concurrently\n // in two different page regions\n const { BuilderAPIProxy } = await import('./builder-api/proxy')\n const { createRootReducer, setupBuilderProxy } = await import('./read-write-state')\n const { createReadWriteMiddleware } = await import('./middleware/read-write')\n\n // IMPORTANT: only synchronous code after this point\n\n // with all modules imported, check if another concurrent setup already\n // initialized the read-write middleware\n if (readWriteMiddlewareRef.current != null) {\n return\n }\n\n store.replaceReducer(createRootReducer() as ReadOnlyReducer)\n\n const builderProxy = new BuilderAPIProxy({ appOrigin })\n readWriteMiddlewareRef.current = createReadWriteMiddleware({ builderProxy })\n\n const dispatch = store.dispatch as ReadWriteDispatch\n const builderProxyCleanup = dispatch(setupBuilderProxy(builderProxy))\n\n // trigger a flush of buffered actions in `conditionalReadWriteMiddleware`;\n // the `dispatch(setupBuilderProxy(builderProxy))` call above is not sufficient\n // as it dispatches a thunk action, which is intercepted and handled by the\n // default thunk middleware and never reaches `conditionalReadWriteMiddleware`\n dispatch(flushActionBuffer())\n\n readWriteCleanup = () => {\n readWriteMiddlewareRef.current = null\n builderProxyCleanup()\n }\n })()\n\n try {\n await readWriteSetupPromise\n } finally {\n readWriteSetupPromise = null\n }\n }\n\n const store = configureStore({\n name,\n preloadedState,\n\n middleware: () => [\n makeswiftApiClientSyncMiddleware(apiResourcesClient),\n conditionalReadWriteMiddleware(readWriteMiddlewareRef),\n ],\n\n enhancers: () =>\n new Tuple(\n withMixin<BreakpointWatch>(\n breakpointWatchMixin({\n dispatch: (...args: Parameters<Dispatch>) => store.dispatch(...args),\n getState: (): State => store.getState(),\n subscribe: (listener): VoidFunction => store.subscribe(listener),\n }),\n ),\n\n withMixin<ReadWriteStateMixin>({\n apiResourcesClient,\n loadReadWriteStateIfNeeded: async () => {\n const { isReadOnly } = store.getState()\n\n if (isReadOnly) {\n if (refCount > 0) {\n console.error('Read-write state mismatch', { isReadOnly, refCount })\n }\n\n return () => {}\n }\n\n await loadReadWriteState()\n refCount += 1\n\n let didCleanup = false\n return () => {\n if (didCleanup) {\n return\n }\n\n didCleanup = true\n refCount -= 1\n if (refCount === 0 && readWriteCleanup != null) {\n readWriteCleanup()\n readWriteCleanup = null\n }\n }\n },\n }),\n ),\n })\n\n return store\n}\n\nexport type Store = ReturnType<typeof configureReadWriteStore>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQO;AAIP,IAAAA,kBAAoE;AACpE,0BAAmC;AACnC,sBAAgC;AAEhC,kBAA6B;AAE7B,oCAA8C;AAC9C,uCAAiD;AACjD,8BAA2D;AAE3D,gCAAkC;AAIlC,oBAA+B;AAU/B,MAAM,iBAAiB,CAA8C;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKM;AACJ,QAAM,YAAQ,eAAAC,gBAAoB;AAAA,IAChC,aAAS,gCAAgB,cAAc,QAAQ;AAAA,IAC/C;AAAA,IAEA,YAAY,0BACV,qBAAqB,iCAAiB,EAAE,OAAO;AAAA,UAC7C,6DAA8B;AAAA,MAC9B,GAAI,aAAa,WAAW,IAAI,CAAC;AAAA,IACnC,CAAC;AAAA,IAEH,WAAW,yBAAuB,oBAAoB,EAAE,OAAO,UAAU,CAAC;AAAA,IAE1E,cAAU,gCAAe;AAAA,MACvB,MAAM,GAAG,IAAI,MAAK,oBAAI,KAAK,GAAE,YAAY,CAAC;AAAA,MAC1C,iBAAiB;AAAA,QACf,gCAAgB;AAAA,QAChB,uCAAmB;AAAA,QACnB,uCAAmB;AAAA,MACrB;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,SAAO;AACT;AAEO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AACF,GAGG;AACD,SAAO,eAAe;AAAA,IACpB;AAAA,IACA,gBAAgB;AAAA,MACd,aAAa,YAAY,gBAAgB,WAAW;AAAA,IACtD;AAAA,IACA,WAAW,MAAM,IAAI,qBAAM;AAAA,EAC7B,CAAC;AACH;AAYO,SAAS,+BACd,eACuC;AACvC,MAAI,wBAAkC,CAAC;AACvC,MAAI,cAA0C;AAC9C,MAAI,mBAAoC;AAExC,aAAO,kCAAiB,CAAC,EAAE,UAAU,SAAS,MAAM,UAAQ;AAC1D,WAAO,CAAC,WAAmB;AACzB,YAAM,QAAQ,SAAS;AAEvB,UAAI,cAAc,WAAW,MAAM;AACjC,YAAI,CAAC,MAAM,YAAY;AAIrB,gCAAsB,KAAK,MAAM;AAAA,QACnC;AAEA,eAAO,KAAK,MAAM;AAAA,MACpB;AAEA,UAAI,MAAM,YAAY;AAEpB,gBAAQ,MAAM,6BAA6B;AAAA,UACzC,YAAY,MAAM;AAAA,UAClB,eAAe,cAAc;AAAA,UAC7B,aAAa,MAAM;AAAA,QACrB,CAAC;AAAA,MACH;AAGA,UAAI,oBAAoB,QAAQ,gBAAgB,cAAc,SAAS;AACrE,sBAAc,cAAc;AAE5B,cAAM,gBAAgB,EAAE,UAAU,SAAS;AAK3C,+BAAmB,wBAAkB,GAAG,YAAY,IAAI,QAAM,GAAG,aAAa,CAAC,CAAC,EAAE,IAAI;AAAA,MACxF;AAGA,UAAI,sBAAsB,SAAS,GAAG;AACpC,cAAM,mBAAmB,CAAC,GAAG,qBAAqB;AAClD,gCAAwB,CAAC;AAMzB,mBAAW,kBAAkB,kBAAkB;AAC7C,2BAAiB,cAAc;AAAA,QACjC;AAAA,MACF;AAEA,aAAO,iBAAiB,MAAM;AAAA,IAChC;AAAA,EACF,CAAC;AACH;AAQA,SAAS,UAA4B,OAA4B;AAC/D,SAAO,UAAQ,CAAC,SAAS,oBAAqB;AAAA,IAC5C,GAAG,KAAK,SAAS,cAAc;AAAA,IAC/B,GAAG;AAAA,EACL;AACF;AAEO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,QAAM,yBAAiD;AAAA,IACrD,SAAS;AAAA,EACX;AAEA,MAAI,WAAW;AACf,MAAI,mBAAwC;AAC5C,MAAI,wBAA8C;AAElD,QAAM,qBAAqB,YAA2B;AACpD,QAAI,oBAAoB,MAAM;AAC5B;AAAA,IACF;AAEA,QAAI,yBAAyB,MAAM;AACjC,YAAM;AACN;AAAA,IACF;AAEA,6BAAyB,YAAY;AAInC,YAAM,EAAE,gBAAgB,IAAI,MAAM,6CAAO,qBAAqB;AAC9D,YAAM,EAAE,mBAAmB,kBAAkB,IAAI,MAAM,6CAAO,oBAAoB;AAClF,YAAM,EAAE,0BAA0B,IAAI,MAAM,6CAAO,yBAAyB;AAM5E,UAAI,uBAAuB,WAAW,MAAM;AAC1C;AAAA,MACF;AAEA,YAAM,eAAe,kBAAkB,CAAoB;AAE3D,YAAM,eAAe,IAAI,gBAAgB,EAAE,UAAU,CAAC;AACtD,6BAAuB,UAAU,0BAA0B,EAAE,aAAa,CAAC;AAE3E,YAAM,WAAW,MAAM;AACvB,YAAM,sBAAsB,SAAS,kBAAkB,YAAY,CAAC;AAMpE,mBAAS,6CAAkB,CAAC;AAE5B,yBAAmB,MAAM;AACvB,+BAAuB,UAAU;AACjC,4BAAoB;AAAA,MACtB;AAAA,IACF,GAAG;AAEH,QAAI;AACF,YAAM;AAAA,IACR,UAAE;AACA,8BAAwB;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,QAAQ,eAAe;AAAA,IAC3B;AAAA,IACA;AAAA,IAEA,YAAY,MAAM;AAAA,UAChB,mEAAiC,kBAAkB;AAAA,MACnD,+BAA+B,sBAAsB;AAAA,IACvD;AAAA,IAEA,WAAW,MACT,IAAI;AAAA,MACF;AAAA,YACE,8CAAqB;AAAA,UACnB,UAAU,IAAI,SAA+B,MAAM,SAAS,GAAG,IAAI;AAAA,UACnE,UAAU,MAAa,MAAM,SAAS;AAAA,UACtC,WAAW,CAAC,aAA2B,MAAM,UAAU,QAAQ;AAAA,QACjE,CAAC;AAAA,MACH;AAAA,MAEA,UAA+B;AAAA,QAC7B;AAAA,QACA,4BAA4B,YAAY;AACtC,gBAAM,EAAE,WAAW,IAAI,MAAM,SAAS;AAEtC,cAAI,YAAY;AACd,gBAAI,WAAW,GAAG;AAChB,sBAAQ,MAAM,6BAA6B,EAAE,YAAY,SAAS,CAAC;AAAA,YACrE;AAEA,mBAAO,MAAM;AAAA,YAAC;AAAA,UAChB;AAEA,gBAAM,mBAAmB;AACzB,sBAAY;AAEZ,cAAI,aAAa;AACjB,iBAAO,MAAM;AACX,gBAAI,YAAY;AACd;AAAA,YACF;AAEA,yBAAa;AACb,wBAAY;AACZ,gBAAI,aAAa,KAAK,oBAAoB,MAAM;AAC9C,+BAAiB;AACjB,iCAAmB;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACJ,CAAC;AAED,SAAO;AACT;","names":["import_toolkit","configureReduxStore"]}
@@ -36,10 +36,7 @@ var ElementTrees = __toESM(require("../modules/element-trees"));
36
36
  var import_control = require("../../controls/control");
37
37
  function getTranslatableContent(descriptors, elementTree) {
38
38
  const translatableData = {};
39
- for (const element of ElementTrees.traverseElementTree(
40
- elementTree,
41
- descriptors
42
- )) {
39
+ for (const element of ElementTrees.traverseElementTree(elementTree, descriptors)) {
43
40
  if (Documents.isElementReference(element))
44
41
  continue;
45
42
  const elementDescriptors = descriptors.get(element.type);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/translations/get.ts"],"sourcesContent":["import * as Documents from '../modules/read-only-documents'\nimport * as ElementTrees from '../modules/element-trees'\nimport { getTranslatableData } from '../../controls/control'\nimport type {DescriptorsByComponentType} from '../modules/prop-controllers'\n\nexport function getTranslatableContent(\n descriptors: DescriptorsByComponentType,\n elementTree: Documents.ElementData,\n): Record<string, Documents.Data> {\n const translatableData: Record<string, Documents.Data> = {}\n\n for (const element of ElementTrees.traverseElementTree(\n elementTree,\n descriptors,\n )) {\n if (Documents.isElementReference(element)) continue\n\n const elementDescriptors = descriptors.get(element.type)\n if (elementDescriptors == null) continue\n\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n const translatablePropData = getTranslatableData(descriptor, element.props[propName])\n\n if (translatablePropData != null) {\n translatableData[`${element.key}:${propName}`] = translatablePropData\n }\n })\n }\n\n return translatableData\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA2B;AAC3B,mBAA8B;AAC9B,qBAAoC;AAG7B,SAAS,uBACd,aACA,aACgC;AAChC,QAAM,mBAAmD,CAAC;AAE1D,aAAW,WAAW,aAAa;AAAA,IACjC;AAAA,IACA;AAAA,EACF,GAAG;AACD,QAAI,UAAU,mBAAmB,OAAO;AAAG;AAE3C,UAAM,qBAAqB,YAAY,IAAI,QAAQ,IAAI;AACvD,QAAI,sBAAsB;AAAM;AAEhC,WAAO,QAAQ,kBAAkB,EAAE,QAAQ,CAAC,CAAC,UAAU,UAAU,MAAM;AACrE,YAAM,2BAAuB,oCAAoB,YAAY,QAAQ,MAAM,QAAQ,CAAC;AAEpF,UAAI,wBAAwB,MAAM;AAChC,yBAAiB,GAAG,QAAQ,GAAG,IAAI,QAAQ,EAAE,IAAI;AAAA,MACnD;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../src/state/translations/get.ts"],"sourcesContent":["import * as Documents from '../modules/read-only-documents'\nimport * as ElementTrees from '../modules/element-trees'\nimport { getTranslatableData } from '../../controls/control'\nimport type { DescriptorsByComponentType } from '../modules/prop-controller-descriptors'\n\nexport function getTranslatableContent(\n descriptors: DescriptorsByComponentType,\n elementTree: Documents.ElementData,\n): Record<string, Documents.Data> {\n const translatableData: Record<string, Documents.Data> = {}\n\n for (const element of ElementTrees.traverseElementTree(elementTree, descriptors)) {\n if (Documents.isElementReference(element)) continue\n\n const elementDescriptors = descriptors.get(element.type)\n if (elementDescriptors == null) continue\n\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n const translatablePropData = getTranslatableData(descriptor, element.props[propName])\n\n if (translatablePropData != null) {\n translatableData[`${element.key}:${propName}`] = translatablePropData\n }\n })\n }\n\n return translatableData\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA2B;AAC3B,mBAA8B;AAC9B,qBAAoC;AAG7B,SAAS,uBACd,aACA,aACgC;AAChC,QAAM,mBAAmD,CAAC;AAE1D,aAAW,WAAW,aAAa,oBAAoB,aAAa,WAAW,GAAG;AAChF,QAAI,UAAU,mBAAmB,OAAO;AAAG;AAE3C,UAAM,qBAAqB,YAAY,IAAI,QAAQ,IAAI;AACvD,QAAI,sBAAsB;AAAM;AAEhC,WAAO,QAAQ,kBAAkB,EAAE,QAAQ,CAAC,CAAC,UAAU,UAAU,MAAM;AACrE,YAAM,2BAAuB,oCAAoB,YAAY,QAAQ,MAAM,QAAQ,CAAC;AAEpF,UAAI,wBAAwB,MAAM;AAChC,yBAAiB,GAAG,QAAQ,GAAG,IAAI,QAAQ,EAAE,IAAI;AAAA,MACnD;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/translations/merge.ts"],"sourcesContent":["import { MergeTranslatableDataContext, type TranslationDto, type Data } from '@makeswift/controls'\nimport * as Documents from '../modules/read-only-documents'\nimport {\n GridPropControllerData,\n mergeGridPropControllerTranslatedData,\n Types as PropControllerTypes,\n} from '@makeswift/prop-controllers'\nimport { ReactMergeTranslationsVisitor } from '../../controls/visitors/merge-translations-visitor'\nimport { isLegacyDescriptor } from '../../prop-controllers/descriptors'\nimport { Descriptor as PropControllerDescriptor } from '../../prop-controllers/descriptors'\nimport type { DescriptorsByComponentType } from '../modules/prop-controllers'\n\nexport function mergeTranslatedContent(\n descriptors: DescriptorsByComponentType,\n elementTree: Documents.ElementData,\n translatedData: TranslationDto,\n): Documents.Element {\n function merge(descriptorsByType: DescriptorsByComponentType, translatedData: TranslationDto) {\n return function (node: Documents.Element): Documents.Element {\n if (Documents.isElementReference(node)) return node\n\n const elementDescriptors = descriptorsByType.get(node.type)\n\n if (elementDescriptors == null) {\n throw new Error(`Can't merge element of type \"${node.type}\" because it has no descriptors`)\n }\n\n const context: MergeTranslatableDataContext = {\n translatedData: translatedData,\n mergeTranslatedData: merge(descriptorsByType, translatedData),\n }\n const props = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(elementDescriptors)) {\n const descriptor = elementDescriptors[propName]\n\n props[propName] = mergeTranslatedData(\n descriptor,\n node.props[propName],\n translatedData[`${node.key}:${propName}`],\n context,\n )\n }\n\n return { ...node, props }\n }\n }\n return merge(descriptors, translatedData)(elementTree)\n}\n\nexport function mergeTranslatedData(\n definition: PropControllerDescriptor,\n data: Data,\n translatedData: Data,\n context: MergeTranslatableDataContext,\n): Data {\n if (data == null) return data\n if (!isLegacyDescriptor(definition)) {\n const mergeTranslationsVisitor = new ReactMergeTranslationsVisitor(context)\n return definition.accept(mergeTranslationsVisitor, data, translatedData)\n }\n\n switch (definition.type) {\n case PropControllerTypes.TextInput:\n case PropControllerTypes.TextArea:\n if (translatedData == null) return data\n return translatedData\n\n case PropControllerTypes.Grid:\n return mergeGridPropControllerTranslatedData(data as GridPropControllerData, context)\n\n default:\n return data\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAA2B;AAC3B,8BAIO;AACP,wCAA8C;AAC9C,yBAAmC;AAI5B,SAAS,uBACd,aACA,aACA,gBACmB;AACnB,WAAS,MAAM,mBAA+CA,iBAAgC;AAC5F,WAAO,SAAU,MAA4C;AAC3D,UAAI,UAAU,mBAAmB,IAAI;AAAG,eAAO;AAE/C,YAAM,qBAAqB,kBAAkB,IAAI,KAAK,IAAI;AAE1D,UAAI,sBAAsB,MAAM;AAC9B,cAAM,IAAI,MAAM,gCAAgC,KAAK,IAAI,iCAAiC;AAAA,MAC5F;AAEA,YAAM,UAAwC;AAAA,QAC5C,gBAAgBA;AAAA,QAChB,qBAAqB,MAAM,mBAAmBA,eAAc;AAAA,MAC9D;AACA,YAAM,QAAQ,CAAC;AAEf,iBAAW,YAAY,OAAO,KAAK,kBAAkB,GAAG;AACtD,cAAM,aAAa,mBAAmB,QAAQ;AAE9C,cAAM,QAAQ,IAAI;AAAA,UAChB;AAAA,UACA,KAAK,MAAM,QAAQ;AAAA,UACnBA,gBAAe,GAAG,KAAK,GAAG,IAAI,QAAQ,EAAE;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,GAAG,MAAM,MAAM;AAAA,IAC1B;AAAA,EACF;AACA,SAAO,MAAM,aAAa,cAAc,EAAE,WAAW;AACvD;AAEO,SAAS,oBACd,YACA,MACA,gBACA,SACM;AACN,MAAI,QAAQ;AAAM,WAAO;AACzB,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,UAAM,2BAA2B,IAAI,gEAA8B,OAAO;AAC1E,WAAO,WAAW,OAAO,0BAA0B,MAAM,cAAc;AAAA,EACzE;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAC,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,UAAI,kBAAkB;AAAM,eAAO;AACnC,aAAO;AAAA,IAET,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,+DAAsC,MAAgC,OAAO;AAAA,IAEtF;AACE,aAAO;AAAA,EACX;AACF;","names":["translatedData","PropControllerTypes"]}
1
+ {"version":3,"sources":["../../../../src/state/translations/merge.ts"],"sourcesContent":["import { MergeTranslatableDataContext, type TranslationDto, type Data } from '@makeswift/controls'\nimport * as Documents from '../modules/read-only-documents'\nimport {\n GridPropControllerData,\n mergeGridPropControllerTranslatedData,\n Types as PropControllerTypes,\n} from '@makeswift/prop-controllers'\nimport { ReactMergeTranslationsVisitor } from '../../controls/visitors/merge-translations-visitor'\nimport {\n isLegacyDescriptor,\n Descriptor as PropControllerDescriptor,\n} from '../../prop-controllers/descriptors'\nimport type { DescriptorsByComponentType } from '../modules/prop-controller-descriptors'\n\nexport function mergeTranslatedContent(\n descriptors: DescriptorsByComponentType,\n elementTree: Documents.ElementData,\n translatedData: TranslationDto,\n): Documents.Element {\n function merge(descriptorsByType: DescriptorsByComponentType, translatedData: TranslationDto) {\n return function (node: Documents.Element): Documents.Element {\n if (Documents.isElementReference(node)) return node\n\n const elementDescriptors = descriptorsByType.get(node.type)\n\n if (elementDescriptors == null) {\n throw new Error(`Can't merge element of type \"${node.type}\" because it has no descriptors`)\n }\n\n const context: MergeTranslatableDataContext = {\n translatedData: translatedData,\n mergeTranslatedData: merge(descriptorsByType, translatedData),\n }\n const props = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(elementDescriptors)) {\n const descriptor = elementDescriptors[propName]\n\n props[propName] = mergeTranslatedData(\n descriptor,\n node.props[propName],\n translatedData[`${node.key}:${propName}`],\n context,\n )\n }\n\n return { ...node, props }\n }\n }\n return merge(descriptors, translatedData)(elementTree)\n}\n\nexport function mergeTranslatedData(\n definition: PropControllerDescriptor,\n data: Data,\n translatedData: Data,\n context: MergeTranslatableDataContext,\n): Data {\n if (data == null) return data\n if (!isLegacyDescriptor(definition)) {\n const mergeTranslationsVisitor = new ReactMergeTranslationsVisitor(context)\n return definition.accept(mergeTranslationsVisitor, data, translatedData)\n }\n\n switch (definition.type) {\n case PropControllerTypes.TextInput:\n case PropControllerTypes.TextArea:\n if (translatedData == null) return data\n return translatedData\n\n case PropControllerTypes.Grid:\n return mergeGridPropControllerTranslatedData(data as GridPropControllerData, context)\n\n default:\n return data\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAA2B;AAC3B,8BAIO;AACP,wCAA8C;AAC9C,yBAGO;AAGA,SAAS,uBACd,aACA,aACA,gBACmB;AACnB,WAAS,MAAM,mBAA+CA,iBAAgC;AAC5F,WAAO,SAAU,MAA4C;AAC3D,UAAI,UAAU,mBAAmB,IAAI;AAAG,eAAO;AAE/C,YAAM,qBAAqB,kBAAkB,IAAI,KAAK,IAAI;AAE1D,UAAI,sBAAsB,MAAM;AAC9B,cAAM,IAAI,MAAM,gCAAgC,KAAK,IAAI,iCAAiC;AAAA,MAC5F;AAEA,YAAM,UAAwC;AAAA,QAC5C,gBAAgBA;AAAA,QAChB,qBAAqB,MAAM,mBAAmBA,eAAc;AAAA,MAC9D;AACA,YAAM,QAAQ,CAAC;AAEf,iBAAW,YAAY,OAAO,KAAK,kBAAkB,GAAG;AACtD,cAAM,aAAa,mBAAmB,QAAQ;AAE9C,cAAM,QAAQ,IAAI;AAAA,UAChB;AAAA,UACA,KAAK,MAAM,QAAQ;AAAA,UACnBA,gBAAe,GAAG,KAAK,GAAG,IAAI,QAAQ,EAAE;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAEA,aAAO,EAAE,GAAG,MAAM,MAAM;AAAA,IAC1B;AAAA,EACF;AACA,SAAO,MAAM,aAAa,cAAc,EAAE,WAAW;AACvD;AAEO,SAAS,oBACd,YACA,MACA,gBACA,SACM;AACN,MAAI,QAAQ;AAAM,WAAO;AACzB,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,UAAM,2BAA2B,IAAI,gEAA8B,OAAO;AAC1E,WAAO,WAAW,OAAO,0BAA0B,MAAM,cAAc;AAAA,EACzE;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAC,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,UAAI,kBAAkB;AAAM,eAAO;AACnC,aAAO;AAAA,IAET,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,+DAAsC,MAAgC,OAAO;AAAA,IAEtF;AACE,aAAO;AAAA,EACX;AACF;","names":["translatedData","PropControllerTypes"]}
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
6
10
  var __copyProps = (to, from, except, desc) => {
7
11
  if (from && typeof from === "object" || typeof from === "function") {
8
12
  for (let key of __getOwnPropNames(from))
@@ -13,5 +17,13 @@ var __copyProps = (to, from, except, desc) => {
13
17
  };
14
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
19
  var unified_state_exports = {};
20
+ __export(unified_state_exports, {
21
+ isReadWriteState: () => isReadWriteState
22
+ });
16
23
  module.exports = __toCommonJS(unified_state_exports);
24
+ const isReadWriteState = (state) => "boxModels" in state;
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ isReadWriteState
28
+ });
17
29
  //# sourceMappingURL=unified-state.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/state/unified-state.ts"],"sourcesContent":["import { type ThunkDispatch, type Reducer } from '@reduxjs/toolkit'\n\nimport { type State as ReadOnlyState } from './read-only-state'\nimport { type State as ReadWriteState } from './read-write-state'\nimport { type Action } from './actions'\n\nexport type State = ReadOnlyState | ReadWriteState\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\nexport type ReadOnlyReducer = Reducer<ReadOnlyState>\nexport type ReadWriteDispatch = ThunkDispatch<ReadWriteState, unknown, Action>\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../../src/state/unified-state.ts"],"sourcesContent":["import { type ThunkDispatch, type Reducer } from '@reduxjs/toolkit'\n\nimport { type State as ReadOnlyState } from './read-only-state'\nimport { type State as ReadWriteState } from './read-write-state'\nimport { type Action } from './actions'\n\nexport type State = ReadOnlyState | ReadWriteState\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\nexport type ReadOnlyReducer = Reducer<ReadOnlyState>\nexport type ReadWriteDispatch = ThunkDispatch<ReadWriteState, unknown, Action>\n\nexport { type ReadWriteState }\nexport const isReadWriteState = (state: State): state is ReadWriteState => 'boxModels' in state\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,mBAAmB,CAAC,UAA0C,eAAe;","names":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var breakpoints_exports = {};
20
+ __export(breakpoints_exports, {
21
+ DESKTOP_MEDIA_QUERY: () => DESKTOP_MEDIA_QUERY,
22
+ MOBILE_MEDIA_QUERY: () => MOBILE_MEDIA_QUERY,
23
+ TABLET_MEDIA_QUERY: () => TABLET_MEDIA_QUERY
24
+ });
25
+ module.exports = __toCommonJS(breakpoints_exports);
26
+ const DESKTOP_MEDIA_QUERY = "only screen and (min-width: 769px)";
27
+ const TABLET_MEDIA_QUERY = "only screen and (min-width: 769px)";
28
+ const MOBILE_MEDIA_QUERY = "only screen and (min-width: 769px)";
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ DESKTOP_MEDIA_QUERY,
32
+ MOBILE_MEDIA_QUERY,
33
+ TABLET_MEDIA_QUERY
34
+ });
35
+ //# sourceMappingURL=breakpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/testing/breakpoints.ts"],"sourcesContent":["export const DESKTOP_MEDIA_QUERY = 'only screen and (min-width: 769px)'\nexport const TABLET_MEDIA_QUERY = 'only screen and (min-width: 769px)'\nexport const MOBILE_MEDIA_QUERY = 'only screen and (min-width: 769px)'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAC3B,MAAM,qBAAqB;","names":[]}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var element_data_exports = {};
20
+ __export(element_data_exports, {
21
+ createMakeswiftComponentSnapshot: () => createMakeswiftComponentSnapshot,
22
+ createMakeswiftPageSnapshot: () => createMakeswiftPageSnapshot,
23
+ createRootComponent: () => createRootComponent
24
+ });
25
+ module.exports = __toCommonJS(element_data_exports);
26
+ var import_uuid = require("uuid");
27
+ var import_api_resources_client = require("../api/api-resources-client");
28
+ var import_constants = require("../components/builtin/constants");
29
+ function createRootComponent(elements, rootId) {
30
+ return {
31
+ key: rootId ?? (0, import_uuid.v4)(),
32
+ type: import_constants.MakeswiftComponentType.Root,
33
+ props: {
34
+ children: {
35
+ columns: [
36
+ {
37
+ deviceId: "desktop",
38
+ value: {
39
+ count: 12,
40
+ spans: elements?.map(() => [12])
41
+ }
42
+ }
43
+ ],
44
+ elements
45
+ }
46
+ }
47
+ };
48
+ }
49
+ const isDocument = (elementOrDocument) => "snippets" in elementOrDocument || "fonts" in elementOrDocument || "meta" in elementOrDocument || "seo" in elementOrDocument;
50
+ function createMakeswiftPageSnapshot(elementOrDocument, {
51
+ cacheData = {},
52
+ locale = null
53
+ } = {}) {
54
+ return {
55
+ document: isDocument(elementOrDocument) ? elementOrDocument : {
56
+ id: "test-page-id",
57
+ site: { id: "test-site-id" },
58
+ data: elementOrDocument,
59
+ snippets: [],
60
+ fonts: [],
61
+ meta: {},
62
+ seo: {},
63
+ localizedPages: [],
64
+ locale
65
+ },
66
+ cacheData: {
67
+ ...import_api_resources_client.CacheData.empty(),
68
+ ...cacheData
69
+ }
70
+ };
71
+ }
72
+ function createMakeswiftComponentSnapshot(elementData, {
73
+ cacheData = {},
74
+ locale = null
75
+ } = {}) {
76
+ return {
77
+ key: (0, import_uuid.v4)(),
78
+ document: {
79
+ id: "test-component-id",
80
+ name: "Test Component Document",
81
+ siteId: "test-site-id",
82
+ data: elementData,
83
+ inheritsFromParent: false,
84
+ locale
85
+ },
86
+ meta: {
87
+ allowLocaleFallback: false,
88
+ requestedLocale: locale
89
+ },
90
+ cacheData: {
91
+ ...import_api_resources_client.CacheData.empty(),
92
+ ...cacheData
93
+ }
94
+ };
95
+ }
96
+ // Annotate the CommonJS export names for ESM import in node:
97
+ 0 && (module.exports = {
98
+ createMakeswiftComponentSnapshot,
99
+ createMakeswiftPageSnapshot,
100
+ createRootComponent
101
+ });
102
+ //# sourceMappingURL=element-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/testing/element-data.ts"],"sourcesContent":["import { v4 as uuid } from 'uuid'\n\nimport {\n type MakeswiftPageSnapshot,\n type MakeswiftPageDocument,\n type MakeswiftComponentSnapshot,\n} from '../client'\nimport { CacheData } from '../api/api-resources-client'\nimport { type Element, type ElementData } from '../state/read-only-state'\nimport { MakeswiftComponentType } from '../components/builtin/constants'\n\nexport function createRootComponent(elements: Element[], rootId?: string) {\n return {\n key: rootId ?? uuid(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nconst isDocument = (\n elementOrDocument: Element | MakeswiftPageDocument,\n): elementOrDocument is MakeswiftPageDocument =>\n 'snippets' in elementOrDocument ||\n 'fonts' in elementOrDocument ||\n 'meta' in elementOrDocument ||\n 'seo' in elementOrDocument\n\nexport function createMakeswiftPageSnapshot(\n elementOrDocument: Element | MakeswiftPageDocument,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftPageSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftPageSnapshot {\n return {\n document: isDocument(elementOrDocument)\n ? elementOrDocument\n : {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementOrDocument,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n\nexport function createMakeswiftComponentSnapshot(\n elementData: ElementData | null,\n {\n cacheData = {},\n locale = null,\n }: { cacheData?: Partial<MakeswiftComponentSnapshot['cacheData']>; locale?: string | null } = {},\n): MakeswiftComponentSnapshot {\n return {\n key: uuid(),\n document: {\n id: 'test-component-id',\n name: 'Test Component Document',\n siteId: 'test-site-id',\n data: elementData,\n inheritsFromParent: false,\n locale,\n },\n meta: {\n allowLocaleFallback: false,\n requestedLocale: locale,\n },\n cacheData: {\n ...CacheData.empty(),\n ...cacheData,\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA2B;AAO3B,kCAA0B;AAE1B,uBAAuC;AAEhC,SAAS,oBAAoB,UAAqB,QAAiB;AACxE,SAAO;AAAA,IACL,KAAK,cAAU,YAAAA,IAAK;AAAA,IACpB,MAAM,wCAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,aAAa,CACjB,sBAEA,cAAc,qBACd,WAAW,qBACX,UAAU,qBACV,SAAS;AAEJ,SAAS,4BACd,mBACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAAyF,CAAC,GACnE;AACvB,SAAO;AAAA,IACL,UAAU,WAAW,iBAAiB,IAClC,oBACA;AAAA,MACE,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB;AAAA,IACF;AAAA,IACJ,WAAW;AAAA,MACT,GAAG,sCAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,iCACd,aACA;AAAA,EACE,YAAY,CAAC;AAAA,EACb,SAAS;AACX,IAA8F,CAAC,GACnE;AAC5B,SAAO;AAAA,IACL,SAAK,YAAAA,IAAK;AAAA,IACV,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,oBAAoB;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,IACnB;AAAA,IACA,WAAW;AAAA,MACT,GAAG,sCAAU,MAAM;AAAA,MACnB,GAAG;AAAA,IACL;AAAA,EACF;AACF;","names":["uuid"]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var read_write_state_exports = {};
20
+ __export(read_write_state_exports, {
21
+ expectReadWriteState: () => expectReadWriteState
22
+ });
23
+ module.exports = __toCommonJS(read_write_state_exports);
24
+ var import_unified_state = require("../state/unified-state");
25
+ function expectReadWriteState(state) {
26
+ expect((0, import_unified_state.isReadWriteState)(state)).toBe(true);
27
+ }
28
+ // Annotate the CommonJS export names for ESM import in node:
29
+ 0 && (module.exports = {
30
+ expectReadWriteState
31
+ });
32
+ //# sourceMappingURL=read-write-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/testing/read-write-state.ts"],"sourcesContent":["import { type State, type ReadWriteState, isReadWriteState } from '../state/unified-state'\n\nexport function expectReadWriteState(state: State): asserts state is ReadWriteState {\n expect(isReadWriteState(state)).toBe(true)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAkE;AAE3D,SAAS,qBAAqB,OAA+C;AAClF,aAAO,uCAAiB,KAAK,CAAC,EAAE,KAAK,IAAI;AAC3C;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/translations/index.ts"],"sourcesContent":["export { getTranslatableContent } from '../state/translations/get'\nexport { mergeTranslatedContent } from '../state/translations/merge'\nexport type { DescriptorsByComponentType, DescriptorsByProp } from '../state/modules/prop-controllers'\nexport type { ElementData, Data, Element } from '../state/read-only-state'\nexport type { TranslationDto } from '@makeswift/controls'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAuC;AACvC,mBAAuC;","names":[]}
1
+ {"version":3,"sources":["../../../src/translations/index.ts"],"sourcesContent":["export { getTranslatableContent } from '../state/translations/get'\nexport { mergeTranslatedContent } from '../state/translations/merge'\nexport type {\n DescriptorsByComponentType,\n DescriptorsByProp,\n} from '../state/modules/prop-controller-descriptors'\nexport type { ElementData, Data, Element } from '../state/read-only-state'\nexport type { TranslationDto } from '@makeswift/controls'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAuC;AACvC,mBAAuC;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/intersection.ts"],"sourcesContent":["import deepEqual from './deepEqual'\nimport keys from './keys'\n\nexport default function intersection<A extends Record<string, unknown>, B extends A>(\n a: A,\n b: B,\n isEqual: (a: unknown, b: unknown) => boolean = deepEqual,\n): { [K in keyof A]: A[K] | null } {\n const allKeys = [...new Set([...keys(a), ...keys(b)])] as (keyof A)[]\n\n return allKeys.reduce(\n (acc, k) => {\n if (isEqual(a[k], b[k])) acc[k] = a[k]\n else acc[k] = null\n\n return acc\n },\n {} as { [K in keyof A]: A[K] | null },\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB;AACtB,kBAAiB;AAEF,SAAR,aACL,GACA,GACA,UAA+C,iBAAAA,SACd;AACjC,QAAM,UAAU,CAAC,GAAG,oBAAI,IAAI,CAAC,OAAG,YAAAC,SAAK,CAAC,GAAG,OAAG,YAAAA,SAAK,CAAC,CAAC,CAAC,CAAC;AAErD,SAAO,QAAQ;AAAA,IACb,CAAC,KAAK,MAAM;AACV,UAAI,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAG,YAAI,CAAC,IAAI,EAAE,CAAC;AAAA;AAChC,YAAI,CAAC,IAAI;AAEd,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;","names":["deepEqual","keys"]}
1
+ {"version":3,"sources":["../../../src/utils/intersection.ts"],"sourcesContent":["import { type Data } from '@makeswift/controls'\n\nimport deepEqual from './deepEqual'\nimport keys from './keys'\n\nexport default function intersection<A extends Record<string, Data>, B extends A>(\n a: A,\n b: B,\n isEqual: (a: Data, b: Data) => boolean = deepEqual,\n): { [K in keyof A]: A[K] | null } {\n const allKeys = [...new Set([...keys(a), ...keys(b)])] as (keyof A)[]\n\n return allKeys.reduce(\n (acc, k) => {\n if (isEqual(a[k], b[k])) acc[k] = a[k]\n else acc[k] = null\n\n return acc\n },\n {} as { [K in keyof A]: A[K] | null },\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,uBAAsB;AACtB,kBAAiB;AAEF,SAAR,aACL,GACA,GACA,UAAyC,iBAAAA,SACR;AACjC,QAAM,UAAU,CAAC,GAAG,oBAAI,IAAI,CAAC,OAAG,YAAAC,SAAK,CAAC,GAAG,OAAG,YAAAA,SAAK,CAAC,CAAC,CAAC,CAAC;AAErD,SAAO,QAAQ;AAAA,IACb,CAAC,KAAK,MAAM;AACV,UAAI,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAG,YAAI,CAAC,IAAI,EAAE,CAAC;AAAA;AAChC,YAAI,CAAC,IAAI;AAEd,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;","names":["deepEqual","keys"]}
@@ -9,7 +9,7 @@ class MakeswiftGraphQLApiClient {
9
9
  graphqlClient;
10
10
  constructor({ endpoint }) {
11
11
  this.graphqlClient = new GraphQLClient(endpoint, {
12
- "makeswift-runtime-version": "0.28.8-canary.2"
12
+ "makeswift-runtime-version": "0.28.8-canary.21"
13
13
  });
14
14
  }
15
15
  async createTableRecord(tableId, columns) {
@@ -113,7 +113,7 @@ class MakeswiftRestAPIClient {
113
113
  const requestHeaders = new Headers({
114
114
  "x-api-key": this.apiKey,
115
115
  "makeswift-site-api-key": this.apiKey,
116
- "makeswift-runtime-version": "0.28.8-canary.2"
116
+ "makeswift-runtime-version": "0.28.8-canary.21"
117
117
  });
118
118
  if (siteVersion?.token) {
119
119
  requestUrl.searchParams.set("version", siteVersion.version);
@@ -8,7 +8,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
8
8
  return ApiResponse.json({ message: "Unauthorized" }, { status: 401 });
9
9
  }
10
10
  return ApiResponse.json({
11
- version: "0.28.8-canary.2",
11
+ version: "0.28.8-canary.21",
12
12
  interactionMode: true,
13
13
  clientSideNavigation: false,
14
14
  elementFromPoint: false,
@@ -1,8 +1,6 @@
1
1
  import { isAction } from "@reduxjs/toolkit";
2
- import {
3
- ReadOnlyActionTypes
4
- } from "../state/actions/internal/read-only-actions";
5
- import { BuilderActionTypes } from "../state/builder-api/actions";
2
+ import { ReadOnlyActionTypes } from "../state/actions/internal/read-only-action-types";
3
+ import { BuilderActionTypes } from "../state/builder-api/action-types";
6
4
  const HostToBuilderActionTypes = {
7
5
  ...BuilderActionTypes,
8
6
  REGISTER_COMPONENT: ReadOnlyActionTypes.REGISTER_COMPONENT,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/builder/host-to-builder-actions.ts"],"sourcesContent":["import { isAction } from '@reduxjs/toolkit'\n\n// in the past, we reused the same action type for registering components both internally\n// and in the builder; they have been since split into two separate action types,\n// REGISTER_COMPONENT and REGISTER_BUILDER_COMPONENT, but we still have to expose what\n// are now internal actions to the builder for backward compatibility with the older runtimes\nimport {\n type RegisterComponentAction,\n type UnregisterComponentAction,\n ReadOnlyActionTypes,\n} from '../state/actions/internal/read-only-actions'\n\nimport { type BuilderAction, BuilderActionTypes } from '../state/builder-api/actions'\n\nexport const HostToBuilderActionTypes = {\n ...BuilderActionTypes,\n REGISTER_COMPONENT: ReadOnlyActionTypes.REGISTER_COMPONENT,\n UNREGISTER_COMPONENT: ReadOnlyActionTypes.UNREGISTER_COMPONENT,\n} as const\n\nexport type HostToBuilderAction =\n | BuilderAction\n | RegisterComponentAction\n | UnregisterComponentAction\n\nexport function isHostToBuilderAction(action: unknown): action is HostToBuilderAction {\n return isAction(action) && Object.hasOwn(HostToBuilderActionTypes, action.type)\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AAMzB;AAAA,EAGE;AAAA,OACK;AAEP,SAA6B,0BAA0B;AAEhD,MAAM,2BAA2B;AAAA,EACtC,GAAG;AAAA,EACH,oBAAoB,oBAAoB;AAAA,EACxC,sBAAsB,oBAAoB;AAC5C;AAOO,SAAS,sBAAsB,QAAgD;AACpF,SAAO,SAAS,MAAM,KAAK,OAAO,OAAO,0BAA0B,OAAO,IAAI;AAChF;","names":[]}
1
+ {"version":3,"sources":["../../../src/builder/host-to-builder-actions.ts"],"sourcesContent":["import { isAction } from '@reduxjs/toolkit'\n\n// in the past, we reused the same action type for registering components both internally\n// and in the builder; they have been since split into two separate action types,\n// REGISTER_COMPONENT and REGISTER_BUILDER_COMPONENT, but we still have to expose what\n// are now internal actions to the builder for backward compatibility with the older runtimes\nimport { ReadOnlyActionTypes } from '../state/actions/internal/read-only-action-types'\nimport {\n type RegisterComponentAction,\n type UnregisterComponentAction,\n} from '../state/actions/internal/read-only-actions'\n\nimport { BuilderActionTypes } from '../state/builder-api/action-types'\nimport { type BuilderAction } from '../state/builder-api/actions'\n\nexport const HostToBuilderActionTypes = {\n ...BuilderActionTypes,\n REGISTER_COMPONENT: ReadOnlyActionTypes.REGISTER_COMPONENT,\n UNREGISTER_COMPONENT: ReadOnlyActionTypes.UNREGISTER_COMPONENT,\n} as const\n\nexport type HostToBuilderAction =\n | BuilderAction\n | RegisterComponentAction\n | UnregisterComponentAction\n\nexport function isHostToBuilderAction(action: unknown): action is HostToBuilderAction {\n return isAction(action) && Object.hasOwn(HostToBuilderActionTypes, action.type)\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AAMzB,SAAS,2BAA2B;AAMpC,SAAS,0BAA0B;AAG5B,MAAM,2BAA2B;AAAA,EACtC,GAAG;AAAA,EACH,oBAAoB,oBAAoB;AAAA,EACxC,sBAAsB,oBAAoB;AAC5C;AAOO,SAAS,sBAAsB,QAAgD;AACpF,SAAO,SAAS,MAAM,KAAK,OAAO,OAAO,0BAA0B,OAAO,IAAI;AAChF;","names":[]}
@@ -669,7 +669,7 @@ Received "${apiKey}" instead.`
669
669
  headers: {
670
670
  "x-api-key": this.apiKey,
671
671
  "makeswift-site-api-key": this.apiKey,
672
- "makeswift-runtime-version": "0.28.8-canary.2",
672
+ "makeswift-runtime-version": "0.28.8-canary.21",
673
673
  "content-type": "application/json"
674
674
  },
675
675
  body: JSON.stringify({ token }),
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { useState, useEffect, forwardRef, useImperativeHandle } from "react";
3
+ import { useState, useEffect, useMemo, forwardRef, useImperativeHandle } from "react";
4
4
  import { useIsomorphicLayoutEffect } from "../../hooks/useIsomorphicLayoutEffect";
5
5
  import { useStyle } from "../../../runtimes/react/use-style";
6
6
  import { cx } from "@emotion/css";
@@ -71,6 +71,7 @@ const Embed = forwardRef(function Embed2({ id, width, margin, html = defaultHtml
71
71
  });
72
72
  }, [container, html]);
73
73
  const className = useStyle({ minHeight: 15 });
74
+ const dangerouslySetInnerHTML = useMemo(() => ({ __html: html }), [html]);
74
75
  if (shouldRender === false)
75
76
  return null;
76
77
  return /* @__PURE__ */ jsx(
@@ -79,7 +80,7 @@ const Embed = forwardRef(function Embed2({ id, width, margin, html = defaultHtml
79
80
  ref: setContainer,
80
81
  id,
81
82
  className: cx(className, width, margin),
82
- dangerouslySetInnerHTML: { __html: html }
83
+ dangerouslySetInnerHTML
83
84
  }
84
85
  );
85
86
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/builtin/Embed/Embed.tsx"],"sourcesContent":["'use client'\n\n/* eslint-env browser */\n\nimport { useState, useEffect, forwardRef, Ref, useImperativeHandle } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../../hooks/useIsomorphicLayoutEffect'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\n\ntype Props = {\n id?: string\n html?: string\n width?: string\n margin?: string\n}\n\nconst defaultHtml = `<div style=\"padding: 24px; background-color: rgba(161, 168, 194, 0.18); overflow: hidden;\">\n<svg width=\"316\" height=\"168\" viewBox=\"0 0 316 168\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"70\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"78\" width=\"30\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"116\" width=\"78\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect y=\"20\" width=\"120\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"128\" y=\"20\" width=\"30\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"166\" y=\"20\" width=\"78\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect y=\"60\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"20\" y=\"80\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"40\" y=\"100\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"88\" y=\"100\" width=\"110\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"206\" y=\"100\" width=\"24\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"238\" y=\"100\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"40\" y=\"120\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"88\" y=\"120\" width=\"50\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"146\" y=\"120\" width=\"24\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"178\" y=\"120\" width=\"90\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"276\" y=\"120\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"20\" y=\"140\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect y=\"160\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n</svg>\n</div>`\nconst SCRIPT_TAG = 'script'\n\nconst Embed = forwardRef(function Embed(\n { id, width, margin, html = defaultHtml }: Props,\n ref: Ref<HTMLDivElement | null>,\n) {\n const [container, setContainer] = useState<HTMLDivElement | null>(null)\n const [shouldRender, setShouldRender] = useState(false)\n\n useIsomorphicLayoutEffect(() => {\n setShouldRender(true)\n }, [])\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(ref, () => container, [\n container,\n ])\n\n useEffect(() => {\n // TODO: When we SSR the editor, we can remove the editor check\n // and not run this effect on the first render.\n if (!container) return\n\n const walker = container.ownerDocument.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Element) {\n return node.tagName.toLowerCase() === SCRIPT_TAG\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT\n },\n })\n\n const nodes: Element[] = []\n\n while (walker.nextNode()) nodes.push(walker.currentNode as Element)\n\n // By default scripts appended dynamically will execute asyncrhonously. Here we ensure that\n // scripts are loaded synchronously since that's what a user usually expects with scripts in\n // embedded in HTML which usually comes from the server.\n //\n // See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#notes\n async function executeScriptsInOrder() {\n for (let i = 0; i < nodes.length; i++) {\n await new Promise<void>(resolve => {\n const node = nodes[i]\n const script = node.ownerDocument.createElement(SCRIPT_TAG)\n\n script.textContent = node.textContent\n Array.from(node.attributes).forEach(({ name, value }) => {\n script.setAttribute(name, value)\n })\n\n script.onload = () => resolve()\n script.onerror = () => resolve()\n\n node.parentNode?.insertBefore(script, node)\n node.parentNode?.removeChild(node)\n\n if (!script.hasAttribute('src')) resolve()\n })\n }\n }\n\n executeScriptsInOrder().catch(error => {\n // Ignore errors from user-provided code\n console.error(error)\n })\n }, [container, html])\n\n const className = useStyle({ minHeight: 15 })\n\n if (shouldRender === false) return null\n\n return (\n <div\n ref={setContainer}\n id={id}\n className={cx(className, width, margin)}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n )\n})\n\nexport default Embed\n"],"mappings":";AAgHI;AA5GJ,SAAS,UAAU,WAAW,YAAiB,2BAA2B;AAE1E,SAAS,iCAAiC;AAC1C,SAAS,gBAAgB;AACzB,SAAS,UAAU;AASnB,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBpB,MAAM,aAAa;AAEnB,MAAM,QAAQ,WAAW,SAASA,OAChC,EAAE,IAAI,OAAO,QAAQ,OAAO,YAAY,GACxC,KACA;AACA,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgC,IAAI;AACtE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AAEtD,4BAA0B,MAAM;AAC9B,oBAAgB,IAAI;AAAA,EACtB,GAAG,CAAC,CAAC;AAEL,sBAAkE,KAAK,MAAM,WAAW;AAAA,IACtF;AAAA,EACF,CAAC;AAED,YAAU,MAAM;AAGd,QAAI,CAAC;AAAW;AAEhB,UAAM,SAAS,UAAU,cAAc,iBAAiB,WAAW,WAAW,cAAc;AAAA,MAC1F,WAAW,MAAe;AACxB,eAAO,KAAK,QAAQ,YAAY,MAAM,aAClC,WAAW,gBACX,WAAW;AAAA,MACjB;AAAA,IACF,CAAC;AAED,UAAM,QAAmB,CAAC;AAE1B,WAAO,OAAO,SAAS;AAAG,YAAM,KAAK,OAAO,WAAsB;AAOlE,mBAAe,wBAAwB;AACrC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAM,IAAI,QAAc,aAAW;AACjC,gBAAM,OAAO,MAAM,CAAC;AACpB,gBAAM,SAAS,KAAK,cAAc,cAAc,UAAU;AAE1D,iBAAO,cAAc,KAAK;AAC1B,gBAAM,KAAK,KAAK,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,MAAM,MAAM;AACvD,mBAAO,aAAa,MAAM,KAAK;AAAA,UACjC,CAAC;AAED,iBAAO,SAAS,MAAM,QAAQ;AAC9B,iBAAO,UAAU,MAAM,QAAQ;AAE/B,eAAK,YAAY,aAAa,QAAQ,IAAI;AAC1C,eAAK,YAAY,YAAY,IAAI;AAEjC,cAAI,CAAC,OAAO,aAAa,KAAK;AAAG,oBAAQ;AAAA,QAC3C,CAAC;AAAA,MACH;AAAA,IACF;AAEA,0BAAsB,EAAE,MAAM,WAAS;AAErC,cAAQ,MAAM,KAAK;AAAA,IACrB,CAAC;AAAA,EACH,GAAG,CAAC,WAAW,IAAI,CAAC;AAEpB,QAAM,YAAY,SAAS,EAAE,WAAW,GAAG,CAAC;AAE5C,MAAI,iBAAiB;AAAO,WAAO;AAEnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA,WAAW,GAAG,WAAW,OAAO,MAAM;AAAA,MACtC,yBAAyB,EAAE,QAAQ,KAAK;AAAA;AAAA,EAC1C;AAEJ,CAAC;AAED,IAAO,gBAAQ;","names":["Embed"]}
1
+ {"version":3,"sources":["../../../../../src/components/builtin/Embed/Embed.tsx"],"sourcesContent":["'use client'\n\n/* eslint-env browser */\n\nimport { useState, useEffect, useMemo, forwardRef, Ref, useImperativeHandle } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../../hooks/useIsomorphicLayoutEffect'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\n\ntype Props = {\n id?: string\n html?: string\n width?: string\n margin?: string\n}\n\nconst defaultHtml = `<div style=\"padding: 24px; background-color: rgba(161, 168, 194, 0.18); overflow: hidden;\">\n<svg width=\"316\" height=\"168\" viewBox=\"0 0 316 168\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<rect width=\"70\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"78\" width=\"30\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"116\" width=\"78\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect y=\"20\" width=\"120\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"128\" y=\"20\" width=\"30\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"166\" y=\"20\" width=\"78\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect y=\"60\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"20\" y=\"80\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"40\" y=\"100\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"88\" y=\"100\" width=\"110\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"206\" y=\"100\" width=\"24\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"238\" y=\"100\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"40\" y=\"120\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"88\" y=\"120\" width=\"50\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"146\" y=\"120\" width=\"24\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"178\" y=\"120\" width=\"90\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.25\"/>\n<rect x=\"276\" y=\"120\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect x=\"20\" y=\"140\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n<rect y=\"160\" width=\"40\" height=\"8\" rx=\"2\" fill=\"#A1A8C2\" fill-opacity=\"0.5\"/>\n</svg>\n</div>`\nconst SCRIPT_TAG = 'script'\n\nconst Embed = forwardRef(function Embed(\n { id, width, margin, html = defaultHtml }: Props,\n ref: Ref<HTMLDivElement | null>,\n) {\n const [container, setContainer] = useState<HTMLDivElement | null>(null)\n const [shouldRender, setShouldRender] = useState(false)\n\n useIsomorphicLayoutEffect(() => {\n setShouldRender(true)\n }, [])\n\n useImperativeHandle<HTMLDivElement | null, HTMLDivElement | null>(ref, () => container, [\n container,\n ])\n\n useEffect(() => {\n // TODO: When we SSR the editor, we can remove the editor check\n // and not run this effect on the first render.\n if (!container) return\n\n const walker = container.ownerDocument.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Element) {\n return node.tagName.toLowerCase() === SCRIPT_TAG\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT\n },\n })\n\n const nodes: Element[] = []\n\n while (walker.nextNode()) nodes.push(walker.currentNode as Element)\n\n // By default scripts appended dynamically will execute asyncrhonously. Here we ensure that\n // scripts are loaded synchronously since that's what a user usually expects with scripts in\n // embedded in HTML which usually comes from the server.\n //\n // See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#notes\n async function executeScriptsInOrder() {\n for (let i = 0; i < nodes.length; i++) {\n await new Promise<void>(resolve => {\n const node = nodes[i]\n const script = node.ownerDocument.createElement(SCRIPT_TAG)\n\n script.textContent = node.textContent\n Array.from(node.attributes).forEach(({ name, value }) => {\n script.setAttribute(name, value)\n })\n\n script.onload = () => resolve()\n script.onerror = () => resolve()\n\n node.parentNode?.insertBefore(script, node)\n node.parentNode?.removeChild(node)\n\n if (!script.hasAttribute('src')) resolve()\n })\n }\n }\n\n executeScriptsInOrder().catch(error => {\n // Ignore errors from user-provided code\n console.error(error)\n })\n }, [container, html])\n\n const className = useStyle({ minHeight: 15 })\n\n // React 19+ resets `innerHTML` whenever the `dangerouslySetInnerHTML`\n // object's identity changes, even if `__html` is the same string. Memoize\n // the object so unrelated re-renders don't wipe out DOM produced by the\n // executed scripts above. See https://github.com/facebook/react/issues/31660\n // and https://github.com/react/react/issues/31600\n const dangerouslySetInnerHTML = useMemo(() => ({ __html: html }), [html])\n\n if (shouldRender === false) return null\n\n return (\n <div\n ref={setContainer}\n id={id}\n className={cx(className, width, margin)}\n dangerouslySetInnerHTML={dangerouslySetInnerHTML}\n />\n )\n})\n\nexport default Embed\n"],"mappings":";AAuHI;AAnHJ,SAAS,UAAU,WAAW,SAAS,YAAiB,2BAA2B;AAEnF,SAAS,iCAAiC;AAC1C,SAAS,gBAAgB;AACzB,SAAS,UAAU;AASnB,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBpB,MAAM,aAAa;AAEnB,MAAM,QAAQ,WAAW,SAASA,OAChC,EAAE,IAAI,OAAO,QAAQ,OAAO,YAAY,GACxC,KACA;AACA,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgC,IAAI;AACtE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AAEtD,4BAA0B,MAAM;AAC9B,oBAAgB,IAAI;AAAA,EACtB,GAAG,CAAC,CAAC;AAEL,sBAAkE,KAAK,MAAM,WAAW;AAAA,IACtF;AAAA,EACF,CAAC;AAED,YAAU,MAAM;AAGd,QAAI,CAAC;AAAW;AAEhB,UAAM,SAAS,UAAU,cAAc,iBAAiB,WAAW,WAAW,cAAc;AAAA,MAC1F,WAAW,MAAe;AACxB,eAAO,KAAK,QAAQ,YAAY,MAAM,aAClC,WAAW,gBACX,WAAW;AAAA,MACjB;AAAA,IACF,CAAC;AAED,UAAM,QAAmB,CAAC;AAE1B,WAAO,OAAO,SAAS;AAAG,YAAM,KAAK,OAAO,WAAsB;AAOlE,mBAAe,wBAAwB;AACrC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAM,IAAI,QAAc,aAAW;AACjC,gBAAM,OAAO,MAAM,CAAC;AACpB,gBAAM,SAAS,KAAK,cAAc,cAAc,UAAU;AAE1D,iBAAO,cAAc,KAAK;AAC1B,gBAAM,KAAK,KAAK,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,MAAM,MAAM;AACvD,mBAAO,aAAa,MAAM,KAAK;AAAA,UACjC,CAAC;AAED,iBAAO,SAAS,MAAM,QAAQ;AAC9B,iBAAO,UAAU,MAAM,QAAQ;AAE/B,eAAK,YAAY,aAAa,QAAQ,IAAI;AAC1C,eAAK,YAAY,YAAY,IAAI;AAEjC,cAAI,CAAC,OAAO,aAAa,KAAK;AAAG,oBAAQ;AAAA,QAC3C,CAAC;AAAA,MACH;AAAA,IACF;AAEA,0BAAsB,EAAE,MAAM,WAAS;AAErC,cAAQ,MAAM,KAAK;AAAA,IACrB,CAAC;AAAA,EACH,GAAG,CAAC,WAAW,IAAI,CAAC;AAEpB,QAAM,YAAY,SAAS,EAAE,WAAW,GAAG,CAAC;AAO5C,QAAM,0BAA0B,QAAQ,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC;AAExE,MAAI,iBAAiB;AAAO,WAAO;AAEnC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA,WAAW,GAAG,WAAW,OAAO,MAAM;AAAA,MACtC;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,IAAO,gBAAQ;","names":["Embed"]}