@makeswift/runtime 0.27.3 → 0.27.4

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 (295) hide show
  1. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  2. package/dist/cjs/client/index.js +3 -3
  3. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  4. package/dist/esm/client/index.js +3 -3
  5. package/package.json +3 -3
  6. package/dist/cjs/api/api-resources-client.js +0 -160
  7. package/dist/cjs/api/api-resources-client.js.map +0 -1
  8. package/dist/cjs/api/react.js +0 -256
  9. package/dist/cjs/api/react.js.map +0 -1
  10. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js +0 -62
  11. package/dist/cjs/api-handler/handlers/webhook/diff-projection.js.map +0 -1
  12. package/dist/cjs/box-model.js +0 -33
  13. package/dist/cjs/box-model.js.map +0 -1
  14. package/dist/cjs/builder/serialization.js +0 -78
  15. package/dist/cjs/builder/serialization.js.map +0 -1
  16. package/dist/cjs/components/builtin/index.js +0 -84
  17. package/dist/cjs/components/builtin/index.js.map +0 -1
  18. package/dist/cjs/components/index.js +0 -25
  19. package/dist/cjs/components/index.js.map +0 -1
  20. package/dist/cjs/controls/rich-text-v2/translation.js +0 -187
  21. package/dist/cjs/controls/rich-text-v2/translation.js.map +0 -1
  22. package/dist/cjs/controls/serialization/base/index.js +0 -78
  23. package/dist/cjs/controls/serialization/base/index.js.map +0 -1
  24. package/dist/cjs/controls/serialization/base/visitor.js +0 -59
  25. package/dist/cjs/controls/serialization/base/visitor.js.map +0 -1
  26. package/dist/cjs/controls/serialization/index.js +0 -55
  27. package/dist/cjs/controls/serialization/index.js.map +0 -1
  28. package/dist/cjs/controls/serialization/message-port/function-serialization.js +0 -79
  29. package/dist/cjs/controls/serialization/message-port/function-serialization.js.map +0 -1
  30. package/dist/cjs/controls/serialization/message-port/index.js +0 -25
  31. package/dist/cjs/controls/serialization/message-port/index.js.map +0 -1
  32. package/dist/cjs/controls/serialization/message-port/visitor.js +0 -48
  33. package/dist/cjs/controls/serialization/message-port/visitor.js.map +0 -1
  34. package/dist/cjs/core/index.js +0 -57
  35. package/dist/cjs/core/index.js.map +0 -1
  36. package/dist/cjs/next/fetch.js +0 -30
  37. package/dist/cjs/next/fetch.js.map +0 -1
  38. package/dist/cjs/prop-controllers/index.js +0 -48
  39. package/dist/cjs/prop-controllers/index.js.map +0 -1
  40. package/dist/cjs/prop-controllers/serialization.js +0 -355
  41. package/dist/cjs/prop-controllers/serialization.js.map +0 -1
  42. package/dist/cjs/react.js +0 -40
  43. package/dist/cjs/react.js.map +0 -1
  44. package/dist/cjs/runtimes/react/components/LiveProvider.js +0 -50
  45. package/dist/cjs/runtimes/react/components/LiveProvider.js.map +0 -1
  46. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js +0 -33
  47. package/dist/cjs/runtimes/react/components/MakeswiftFonts.js.map +0 -1
  48. package/dist/cjs/runtimes/react/components/PreviewProvider.js +0 -57
  49. package/dist/cjs/runtimes/react/components/PreviewProvider.js.map +0 -1
  50. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js +0 -67
  51. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js.map +0 -1
  52. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js +0 -39
  53. package/dist/cjs/runtimes/react/hooks/use-current-breakpoint.js.map +0 -1
  54. package/dist/cjs/runtimes/react/hooks/use-is-preview.js +0 -33
  55. package/dist/cjs/runtimes/react/hooks/use-is-preview.js.map +0 -1
  56. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js +0 -59
  57. package/dist/cjs/runtimes/react/lib/resolved-style-to-css.js.map +0 -1
  58. package/dist/cjs/runtimes/react/resource-resolver.js +0 -52
  59. package/dist/cjs/runtimes/react/resource-resolver.js.map +0 -1
  60. package/dist/cjs/state/actions/internal.js +0 -205
  61. package/dist/cjs/state/actions/internal.js.map +0 -1
  62. package/dist/cjs/state/actions.js +0 -423
  63. package/dist/cjs/state/actions.js.map +0 -1
  64. package/dist/cjs/state/api-client/client-store.js +0 -81
  65. package/dist/cjs/state/api-client/client-store.js.map +0 -1
  66. package/dist/cjs/state/api-client/fetch-api-resource.js +0 -125
  67. package/dist/cjs/state/api-client/fetch-api-resource.js.map +0 -1
  68. package/dist/cjs/state/api-client/state.js +0 -89
  69. package/dist/cjs/state/api-client/state.js.map +0 -1
  70. package/dist/cjs/state/api-client/store.js +0 -36
  71. package/dist/cjs/state/api-client/store.js.map +0 -1
  72. package/dist/cjs/state/builder-api/api.js +0 -17
  73. package/dist/cjs/state/builder-api/api.js.map +0 -1
  74. package/dist/cjs/state/builder-api/navigation-listener.js +0 -110
  75. package/dist/cjs/state/builder-api/navigation-listener.js.map +0 -1
  76. package/dist/cjs/state/mixins/breakpoint-watch.js +0 -72
  77. package/dist/cjs/state/mixins/breakpoint-watch.js.map +0 -1
  78. package/dist/cjs/state/mixins/setup-teardown.js +0 -35
  79. package/dist/cjs/state/mixins/setup-teardown.js.map +0 -1
  80. package/dist/cjs/state/modules/box-models.js +0 -127
  81. package/dist/cjs/state/modules/box-models.js.map +0 -1
  82. package/dist/cjs/state/modules/element-imperative-handles.js +0 -60
  83. package/dist/cjs/state/modules/element-imperative-handles.js.map +0 -1
  84. package/dist/cjs/state/modules/is-preview.js +0 -47
  85. package/dist/cjs/state/modules/is-preview.js.map +0 -1
  86. package/dist/cjs/state/modules/pointer.js +0 -47
  87. package/dist/cjs/state/modules/pointer.js.map +0 -1
  88. package/dist/cjs/state/modules/read-write-documents.js +0 -98
  89. package/dist/cjs/state/modules/read-write-documents.js.map +0 -1
  90. package/dist/cjs/state/react-builder-preview.js +0 -610
  91. package/dist/cjs/state/react-builder-preview.js.map +0 -1
  92. package/dist/cjs/state/react-page.js +0 -355
  93. package/dist/cjs/state/react-page.js.map +0 -1
  94. package/dist/cjs/utils/ref-counted-map.js +0 -120
  95. package/dist/cjs/utils/ref-counted-map.js.map +0 -1
  96. package/dist/esm/api/api-resources-client.js +0 -127
  97. package/dist/esm/api/api-resources-client.js.map +0 -1
  98. package/dist/esm/api/react.js +0 -223
  99. package/dist/esm/api/react.js.map +0 -1
  100. package/dist/esm/api-handler/handlers/webhook/diff-projection.js +0 -38
  101. package/dist/esm/api-handler/handlers/webhook/diff-projection.js.map +0 -1
  102. package/dist/esm/box-model.js +0 -7
  103. package/dist/esm/box-model.js.map +0 -1
  104. package/dist/esm/builder/serialization.js +0 -59
  105. package/dist/esm/builder/serialization.js.map +0 -1
  106. package/dist/esm/components/builtin/index.js +0 -34
  107. package/dist/esm/components/builtin/index.js.map +0 -1
  108. package/dist/esm/components/index.js +0 -3
  109. package/dist/esm/components/index.js.map +0 -1
  110. package/dist/esm/controls/rich-text-v2/translation.js +0 -152
  111. package/dist/esm/controls/rich-text-v2/translation.js.map +0 -1
  112. package/dist/esm/controls/serialization/base/index.js +0 -78
  113. package/dist/esm/controls/serialization/base/index.js.map +0 -1
  114. package/dist/esm/controls/serialization/base/visitor.js +0 -39
  115. package/dist/esm/controls/serialization/base/visitor.js.map +0 -1
  116. package/dist/esm/controls/serialization/index.js +0 -30
  117. package/dist/esm/controls/serialization/index.js.map +0 -1
  118. package/dist/esm/controls/serialization/message-port/function-serialization.js +0 -52
  119. package/dist/esm/controls/serialization/message-port/function-serialization.js.map +0 -1
  120. package/dist/esm/controls/serialization/message-port/index.js +0 -3
  121. package/dist/esm/controls/serialization/message-port/index.js.map +0 -1
  122. package/dist/esm/controls/serialization/message-port/visitor.js +0 -24
  123. package/dist/esm/controls/serialization/message-port/visitor.js.map +0 -1
  124. package/dist/esm/core/index.js +0 -35
  125. package/dist/esm/core/index.js.map +0 -1
  126. package/dist/esm/next/fetch.js +0 -6
  127. package/dist/esm/next/fetch.js.map +0 -1
  128. package/dist/esm/prop-controllers/index.js +0 -11
  129. package/dist/esm/prop-controllers/index.js.map +0 -1
  130. package/dist/esm/prop-controllers/serialization.js +0 -338
  131. package/dist/esm/prop-controllers/serialization.js.map +0 -1
  132. package/dist/esm/react.js +0 -11
  133. package/dist/esm/react.js.map +0 -1
  134. package/dist/esm/runtimes/react/components/LiveProvider.js +0 -20
  135. package/dist/esm/runtimes/react/components/LiveProvider.js.map +0 -1
  136. package/dist/esm/runtimes/react/components/MakeswiftFonts.js +0 -9
  137. package/dist/esm/runtimes/react/components/MakeswiftFonts.js.map +0 -1
  138. package/dist/esm/runtimes/react/components/PreviewProvider.js +0 -27
  139. package/dist/esm/runtimes/react/components/PreviewProvider.js.map +0 -1
  140. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js +0 -43
  141. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js.map +0 -1
  142. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js +0 -15
  143. package/dist/esm/runtimes/react/hooks/use-current-breakpoint.js.map +0 -1
  144. package/dist/esm/runtimes/react/hooks/use-is-preview.js +0 -9
  145. package/dist/esm/runtimes/react/hooks/use-is-preview.js.map +0 -1
  146. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js +0 -38
  147. package/dist/esm/runtimes/react/lib/resolved-style-to-css.js.map +0 -1
  148. package/dist/esm/runtimes/react/resource-resolver.js +0 -28
  149. package/dist/esm/runtimes/react/resource-resolver.js.map +0 -1
  150. package/dist/esm/state/actions/internal.js +0 -162
  151. package/dist/esm/state/actions/internal.js.map +0 -1
  152. package/dist/esm/state/actions.js +0 -349
  153. package/dist/esm/state/actions.js.map +0 -1
  154. package/dist/esm/state/api-client/client-store.js +0 -49
  155. package/dist/esm/state/api-client/client-store.js.map +0 -1
  156. package/dist/esm/state/api-client/fetch-api-resource.js +0 -93
  157. package/dist/esm/state/api-client/fetch-api-resource.js.map +0 -1
  158. package/dist/esm/state/api-client/state.js +0 -52
  159. package/dist/esm/state/api-client/state.js.map +0 -1
  160. package/dist/esm/state/api-client/store.js +0 -12
  161. package/dist/esm/state/api-client/store.js.map +0 -1
  162. package/dist/esm/state/builder-api/api.js +0 -1
  163. package/dist/esm/state/builder-api/api.js.map +0 -1
  164. package/dist/esm/state/builder-api/navigation-listener.js +0 -86
  165. package/dist/esm/state/builder-api/navigation-listener.js.map +0 -1
  166. package/dist/esm/state/mixins/breakpoint-watch.js +0 -48
  167. package/dist/esm/state/mixins/breakpoint-watch.js.map +0 -1
  168. package/dist/esm/state/mixins/setup-teardown.js +0 -11
  169. package/dist/esm/state/mixins/setup-teardown.js.map +0 -1
  170. package/dist/esm/state/modules/box-models.js +0 -98
  171. package/dist/esm/state/modules/box-models.js.map +0 -1
  172. package/dist/esm/state/modules/element-imperative-handles.js +0 -35
  173. package/dist/esm/state/modules/element-imperative-handles.js.map +0 -1
  174. package/dist/esm/state/modules/is-preview.js +0 -21
  175. package/dist/esm/state/modules/is-preview.js.map +0 -1
  176. package/dist/esm/state/modules/pointer.js +0 -22
  177. package/dist/esm/state/modules/pointer.js.map +0 -1
  178. package/dist/esm/state/modules/read-write-documents.js +0 -60
  179. package/dist/esm/state/modules/read-write-documents.js.map +0 -1
  180. package/dist/esm/state/react-builder-preview.js +0 -590
  181. package/dist/esm/state/react-builder-preview.js.map +0 -1
  182. package/dist/esm/state/react-page.js +0 -319
  183. package/dist/esm/state/react-page.js.map +0 -1
  184. package/dist/esm/utils/ref-counted-map.js +0 -96
  185. package/dist/esm/utils/ref-counted-map.js.map +0 -1
  186. package/dist/types/api/api-resources-client.d.ts +0 -57
  187. package/dist/types/api/api-resources-client.d.ts.map +0 -1
  188. package/dist/types/api/react.d.ts +0 -82
  189. package/dist/types/api/react.d.ts.map +0 -1
  190. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts +0 -201
  191. package/dist/types/api-handler/handlers/webhook/diff-projection.d.ts.map +0 -1
  192. package/dist/types/box-model.d.ts +0 -3
  193. package/dist/types/box-model.d.ts.map +0 -1
  194. package/dist/types/builder/serialization.d.ts +0 -23
  195. package/dist/types/builder/serialization.d.ts.map +0 -1
  196. package/dist/types/builder/serialization.test.d.ts +0 -2
  197. package/dist/types/builder/serialization.test.d.ts.map +0 -1
  198. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts +0 -2
  199. package/dist/types/client/tests/client.get-component-snapshots.test.d.ts.map +0 -1
  200. package/dist/types/client/tests/client.introspect-many.test.d.ts +0 -2
  201. package/dist/types/client/tests/client.introspect-many.test.d.ts.map +0 -1
  202. package/dist/types/components/builtin/index.d.ts +0 -17
  203. package/dist/types/components/builtin/index.d.ts.map +0 -1
  204. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts +0 -3
  205. package/dist/types/components/hooks/__tests__/useMediaQuery.test.d.ts.map +0 -1
  206. package/dist/types/components/index.d.ts +0 -3
  207. package/dist/types/components/index.d.ts.map +0 -1
  208. package/dist/types/controls/rich-text-v2/translation.d.ts +0 -6
  209. package/dist/types/controls/rich-text-v2/translation.d.ts.map +0 -1
  210. package/dist/types/controls/serialization/base/index.d.ts +0 -10
  211. package/dist/types/controls/serialization/base/index.d.ts.map +0 -1
  212. package/dist/types/controls/serialization/base/visitor.d.ts +0 -7
  213. package/dist/types/controls/serialization/base/visitor.d.ts.map +0 -1
  214. package/dist/types/controls/serialization/index.d.ts +0 -10
  215. package/dist/types/controls/serialization/index.d.ts.map +0 -1
  216. package/dist/types/controls/serialization/message-port/function-serialization.d.ts +0 -16
  217. package/dist/types/controls/serialization/message-port/function-serialization.d.ts.map +0 -1
  218. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts +0 -2
  219. package/dist/types/controls/serialization/message-port/function-serialization.test.d.ts.map +0 -1
  220. package/dist/types/controls/serialization/message-port/index.d.ts +0 -3
  221. package/dist/types/controls/serialization/message-port/index.d.ts.map +0 -1
  222. package/dist/types/controls/serialization/message-port/visitor.d.ts +0 -7
  223. package/dist/types/controls/serialization/message-port/visitor.d.ts.map +0 -1
  224. package/dist/types/core/index.d.ts +0 -2
  225. package/dist/types/core/index.d.ts.map +0 -1
  226. package/dist/types/next/api-handler/config/pages-router.test.d.ts +0 -2
  227. package/dist/types/next/api-handler/config/pages-router.test.d.ts.map +0 -1
  228. package/dist/types/next/components/tests/controls/code-control.test.d.ts +0 -2
  229. package/dist/types/next/components/tests/controls/code-control.test.d.ts.map +0 -1
  230. package/dist/types/next/components/tests/makeswift-component-rendering.test.d.ts +0 -3
  231. package/dist/types/next/components/tests/makeswift-component-rendering.test.d.ts.map +0 -1
  232. package/dist/types/next/fetch.d.ts +0 -3
  233. package/dist/types/next/fetch.d.ts.map +0 -1
  234. package/dist/types/prop-controllers/index.d.ts +0 -8
  235. package/dist/types/prop-controllers/index.d.ts.map +0 -1
  236. package/dist/types/prop-controllers/serialization.d.ts +0 -228
  237. package/dist/types/prop-controllers/serialization.d.ts.map +0 -1
  238. package/dist/types/react.d.ts +0 -4
  239. package/dist/types/react.d.ts.map +0 -1
  240. package/dist/types/runtimes/react/components/LiveProvider.d.ts +0 -3
  241. package/dist/types/runtimes/react/components/LiveProvider.d.ts.map +0 -1
  242. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts +0 -7
  243. package/dist/types/runtimes/react/components/MakeswiftFonts.d.ts.map +0 -1
  244. package/dist/types/runtimes/react/components/PreviewProvider.d.ts +0 -3
  245. package/dist/types/runtimes/react/components/PreviewProvider.d.ts.map +0 -1
  246. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts +0 -4
  247. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts.map +0 -1
  248. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts +0 -3
  249. package/dist/types/runtimes/react/hooks/use-current-breakpoint.d.ts.map +0 -1
  250. package/dist/types/runtimes/react/hooks/use-is-preview.d.ts +0 -2
  251. package/dist/types/runtimes/react/hooks/use-is-preview.d.ts.map +0 -1
  252. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts +0 -4
  253. package/dist/types/runtimes/react/lib/resolved-style-to-css.d.ts.map +0 -1
  254. package/dist/types/runtimes/react/resource-resolver.d.ts +0 -10
  255. package/dist/types/runtimes/react/resource-resolver.d.ts.map +0 -1
  256. package/dist/types/state/__tests__/react-page.test.d.ts +0 -2
  257. package/dist/types/state/__tests__/react-page.test.d.ts.map +0 -1
  258. package/dist/types/state/actions/internal.d.ts +0 -181
  259. package/dist/types/state/actions/internal.d.ts.map +0 -1
  260. package/dist/types/state/actions.d.ts +0 -461
  261. package/dist/types/state/actions.d.ts.map +0 -1
  262. package/dist/types/state/api-client/client-store.d.ts +0 -6
  263. package/dist/types/state/api-client/client-store.d.ts.map +0 -1
  264. package/dist/types/state/api-client/fetch-api-resource.d.ts +0 -11
  265. package/dist/types/state/api-client/fetch-api-resource.d.ts.map +0 -1
  266. package/dist/types/state/api-client/state.d.ts +0 -30
  267. package/dist/types/state/api-client/state.d.ts.map +0 -1
  268. package/dist/types/state/api-client/store.d.ts +0 -18
  269. package/dist/types/state/api-client/store.d.ts.map +0 -1
  270. package/dist/types/state/builder-api/api.d.ts +0 -9
  271. package/dist/types/state/builder-api/api.d.ts.map +0 -1
  272. package/dist/types/state/builder-api/navigation-listener.d.ts +0 -3
  273. package/dist/types/state/builder-api/navigation-listener.d.ts.map +0 -1
  274. package/dist/types/state/mixins/breakpoint-watch.d.ts +0 -11
  275. package/dist/types/state/mixins/breakpoint-watch.d.ts.map +0 -1
  276. package/dist/types/state/mixins/setup-teardown.d.ts +0 -7
  277. package/dist/types/state/mixins/setup-teardown.d.ts.map +0 -1
  278. package/dist/types/state/modules/box-models.d.ts +0 -23
  279. package/dist/types/state/modules/box-models.d.ts.map +0 -1
  280. package/dist/types/state/modules/element-imperative-handles.d.ts +0 -7
  281. package/dist/types/state/modules/element-imperative-handles.d.ts.map +0 -1
  282. package/dist/types/state/modules/is-preview.d.ts +0 -6
  283. package/dist/types/state/modules/is-preview.d.ts.map +0 -1
  284. package/dist/types/state/modules/pointer.d.ts +0 -12
  285. package/dist/types/state/modules/pointer.d.ts.map +0 -1
  286. package/dist/types/state/modules/read-write-documents.d.ts +0 -14
  287. package/dist/types/state/modules/read-write-documents.d.ts.map +0 -1
  288. package/dist/types/state/react-builder-preview.d.ts +0 -110
  289. package/dist/types/state/react-builder-preview.d.ts.map +0 -1
  290. package/dist/types/state/react-page.d.ts +0 -149
  291. package/dist/types/state/react-page.d.ts.map +0 -1
  292. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts +0 -2
  293. package/dist/types/utils/__tests__/ref-counted-map.test.d.ts.map +0 -1
  294. package/dist/types/utils/ref-counted-map.d.ts +0 -32
  295. package/dist/types/utils/ref-counted-map.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/state/react-builder-preview.ts"],"sourcesContent":["import {\n configureStore as configureReduxStore,\n combineReducers,\n type Middleware,\n type ThunkAction,\n type ThunkDispatch,\n} from '@reduxjs/toolkit'\n\nimport { ControlInstance } from '@makeswift/controls'\n\nimport deepEqual from '../utils/deepEqual'\n\nimport * as Documents from './modules/read-write-documents'\nimport * as ElementTrees from './modules/element-trees'\nimport * as ReactComponents from './modules/react-components'\nimport * as BoxModels from './modules/box-models'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Pointer from './modules/pointer'\nimport * as ElementImperativeHandles from './modules/element-imperative-handles'\nimport * as Breakpoints from './modules/breakpoints'\n\nimport { withSetupTeardown } from './mixins/setup-teardown'\n\nimport * as ReactPage from './react-page'\nimport {\n type Action,\n ActionTypes,\n changeDocumentElementSize,\n changeElementBoxModels,\n elementFromPointChange,\n handleWheel,\n handlePointerMove,\n messageBuilderPropController,\n registerBuilderComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n setBreakpoints,\n setIsInBuilder,\n unregisterBuilderComponent,\n unregisterBuilderDocument,\n unregisterMeasurable,\n unregisterPropControllers,\n registerBuilderDocument,\n} from './actions'\n\nimport { actionMiddleware, middlewareOptions, devToolsConfig } from './toolkit'\n\nimport { createPropController } from '../prop-controllers/instances'\nimport { serializeControls } from '../builder'\nimport { MakeswiftHostApiClient } from '../api/react'\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\n\nexport type { Operation } from './modules/read-write-documents'\nexport type { BoxModelHandle } from './modules/box-models'\nexport { createBox, getBox, parse } from './modules/box-models'\n\nexport const reducer = combineReducers({\n documents: Documents.reducer,\n elementTrees: ElementTrees.reducer,\n reactComponents: ReactComponents.reducer,\n boxModels: BoxModels.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n pointer: Pointer.reducer,\n elementImperativeHandles: ElementImperativeHandles.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nfunction getBoxModelsStateSlice(state: State): BoxModels.State {\n return state.boxModels\n}\n\nfunction getMeasurables(state: State): Map<string, Map<string, BoxModels.Measurable>> {\n return BoxModels.getMeasurables(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModels(state: State): Map<string, Map<string, BoxModels.BoxModel>> {\n return BoxModels.getBoxModels(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModel(\n state: State,\n documentKey: string,\n elementKey: string,\n): BoxModels.BoxModel | null {\n return BoxModels.getBoxModel(getBoxModelsStateSlice(state), documentKey, elementKey)\n}\n\nfunction getComponentsMetaStateSlice(state: State): ComponentsMeta.State {\n return state.componentsMeta\n}\n\nfunction getComponentsMeta(state: State): Map<string, ComponentsMeta.ComponentMeta> {\n return ComponentsMeta.getComponentsMeta(getComponentsMetaStateSlice(state))\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nfunction getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nfunction getPointer(state: State): Pointer.Point | null {\n return Pointer.getPointer(state.pointer)\n}\n\nfunction getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return ElementImperativeHandles.getElementImperativeHandles(state.elementImperativeHandles)\n}\n\nfunction getElementImperativeHandlesContainingElement(\n state: State,\n element: Element,\n): Map<string, Map<string, ElementImperativeHandle>> {\n const elementImperativeHandles = getElementImperativeHandles(state)\n const filteredElementImperativeHandles = new Map<string, Map<string, ElementImperativeHandle>>()\n\n for (const [documentKey, byElementKey] of elementImperativeHandles) {\n const filteredByElementKey = new Map<string, ElementImperativeHandle>()\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n const handleElement = elementImperativeHandle.getDomNode()\n\n if (handleElement?.contains(element)) {\n filteredByElementKey.set(elementKey, elementImperativeHandle)\n }\n }\n\n if (filteredByElementKey.size > 0) {\n filteredElementImperativeHandles.set(documentKey, filteredByElementKey)\n }\n }\n\n return filteredElementImperativeHandles\n}\n\nfunction measureElements(): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\n const measurables = getMeasurables(getState())\n const currentBoxModels = getBoxModels(getState())\n const measuredBoxModels = new Map<string, Map<string, BoxModels.BoxModel>>()\n\n measurables.forEach((documentMeasurables, documentKey) => {\n const measuredDocumentBoxModels = new Map<string, BoxModels.BoxModel>()\n\n documentMeasurables.forEach((measurable, elementKey) => {\n const boxModel = BoxModels.measure(measurable)\n\n if (boxModel != null) measuredDocumentBoxModels.set(elementKey, boxModel)\n })\n\n if (measuredDocumentBoxModels.size > 0) {\n measuredBoxModels.set(documentKey, measuredDocumentBoxModels)\n }\n })\n\n const changedBoxModels = new Map<string, Map<string, BoxModels.BoxModel | null>>()\n\n currentBoxModels.forEach((currentDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n currentDocumentBoxModels.forEach((_boxModel, elementKey) => {\n if (!measuredBoxModels.get(documentKey)?.has(elementKey)) {\n changedDocumentBoxModels.set(elementKey, null)\n }\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n })\n\n measuredBoxModels.forEach((measuredDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n measuredDocumentBoxModels.forEach((measuredBoxModel, elementKey) => {\n const currentBoxModel = getBoxModel(getState(), documentKey, elementKey)\n\n if (currentBoxModel == null || !deepEqual(currentBoxModel, measuredBoxModel)) {\n changedDocumentBoxModels.set(elementKey, measuredBoxModel)\n }\n })\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n\n if (changedBoxModels.size > 0) dispatch(changeElementBoxModels(changedBoxModels))\n }\n}\n\nexport function startMeasuringElements(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n dispatch(measureElements())\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nexport type Size = {\n offsetWidth: number\n offsetHeight: number\n clientWidth: number\n clientHeight: number\n scrollWidth: number\n scrollHeight: number\n scrollTop: number\n scrollLeft: number\n}\n\nfunction getElementSize(element: HTMLElement): Size {\n return {\n offsetWidth: element.offsetWidth,\n offsetHeight: element.offsetHeight,\n clientWidth: element.clientWidth,\n clientHeight: element.clientHeight,\n scrollWidth: element.scrollWidth,\n scrollHeight: element.scrollHeight,\n scrollTop: element.scrollTop,\n scrollLeft: element.scrollLeft,\n }\n}\n\nfunction lockDocumentScroll(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const lastDocumentOverflow = window.document.documentElement.style.overflow\n window.document.documentElement.style.overflow = 'hidden'\n\n window.document.documentElement.addEventListener('wheel', handleWheelEvent)\n\n return () => {\n window.document.documentElement.style.overflow = lastDocumentOverflow\n window.document.documentElement.removeEventListener('wheel', handleWheelEvent)\n }\n\n function handleWheelEvent({ deltaX, deltaY }: WheelEvent) {\n dispatch(handleWheel({ deltaX, deltaY }))\n }\n }\n}\n\nfunction startHandlingPointerMoveEvent(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n window.document.documentElement.addEventListener('pointermove', handlePointerMoveEvent)\n\n return () => {\n window.document.documentElement.removeEventListener('pointermove', handlePointerMoveEvent)\n }\n\n function handlePointerMoveEvent({ clientX, clientY }: PointerEvent) {\n dispatch(handlePointerMove({ clientX, clientY }))\n }\n }\n}\n\nfunction startHandlingFocusEvents(): ThunkAction<() => void, State, unknown, Action> {\n return (_dispatch, getState) => {\n window.addEventListener('focusin', handleFocusIn)\n window.addEventListener('focusout', handleFocusOut)\n\n return () => {\n window.removeEventListener('focusin', handleFocusIn)\n window.removeEventListener('focusout', handleFocusOut)\n }\n\n function handleFocusIn(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (!(event.target instanceof window.HTMLElement) || !event.target.isContentEditable) {\n window.parent.focus()\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (\n !(event.relatedTarget instanceof window.HTMLElement) ||\n !event.relatedTarget.isContentEditable\n ) {\n window.parent.focus()\n }\n }\n }\n}\n\nfunction startMeasuringDocumentElement(): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n let lastSize: Size\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n const nextSize = getElementSize(window.document.documentElement)\n\n if (!deepEqual(lastSize, nextSize)) {\n lastSize = nextSize\n\n dispatch(changeDocumentElementSize(nextSize))\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction elementKeysFromElementFromPoint(\n elementFromPoint: Element | null,\n): ThunkAction<{ documentKey: string; elementKey: string } | null, State, unknown, Action> {\n return (_dispatch, getState) => {\n if (elementFromPoint == null) return null\n\n const elementImperativeHandles = getElementImperativeHandlesContainingElement(\n getState(),\n elementFromPoint,\n )\n const ascendingDepthDocumentKeys = ReactPage.getDocumentKeysSortedByDepth(getState())\n const descendingDepthDocumentKeys = ascendingDepthDocumentKeys.slice().reverse()\n\n let currentElement: Element | null = elementFromPoint\n let keys = null\n\n while (currentElement != null) {\n for (const documentKey of descendingDepthDocumentKeys) {\n const byElementKey = elementImperativeHandles.get(documentKey)\n\n if (byElementKey == null) continue\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n if (elementImperativeHandle.getDomNode() === currentElement) {\n return { documentKey, elementKey }\n }\n }\n }\n\n currentElement = currentElement.parentElement\n }\n\n return keys\n }\n}\n\nfunction startPollingElementFromPoint(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n let lastElementFromPoint: Element | null = null\n let animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameRequestId)\n }\n\n function handleAnimationFrameRequest() {\n const pointer = getPointer(getState())\n const elementFromPoint =\n pointer == null ? null : document.elementFromPoint(pointer.x, pointer.y)\n\n if (elementFromPoint !== lastElementFromPoint) {\n lastElementFromPoint = elementFromPoint\n\n const keys = dispatch(elementKeysFromElementFromPoint(elementFromPoint))\n\n dispatch(elementFromPointChange(keys))\n }\n\n animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction registerBuilderComponents(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const state = getState()\n const componentsMeta = getComponentsMeta(state)\n\n componentsMeta.forEach((meta, type) => {\n const descriptors = getComponentPropControllerDescriptors(state, type)\n if (descriptors != null) {\n const [serializedControls, transferables] = serializeControls(descriptors)\n dispatch(registerBuilderComponent({ type, meta, serializedControls }, transferables))\n }\n })\n\n return () => {\n componentsMeta.forEach((_, type) => {\n dispatch(unregisterBuilderComponent({ type }))\n })\n }\n }\n}\n\nfunction registerBuilderDocuments(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const documents = Documents.getDocuments(getDocumentsStateSlice(getState()))\n\n documents.forEach(document => {\n dispatch(registerBuilderDocument(document))\n })\n\n return () => {\n documents.forEach((_document, documentKey) => {\n dispatch(unregisterBuilderDocument(documentKey))\n })\n }\n }\n}\n\nexport interface IMessageChannel {\n postMessage(message: any, transferables?: Transferable[]): void\n dispatchBuffered(): void\n}\n\nexport function initialize(\n channel: IMessageChannel,\n): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n const unregisterBuilderDocuments = dispatch(registerBuilderDocuments())\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n const stopHandlingFocusEvent = dispatch(startHandlingFocusEvents())\n const unlockDocumentScroll = dispatch(lockDocumentScroll())\n const stopHandlingPointerMoveEvent = dispatch(startHandlingPointerMoveEvent())\n const stopPollingElementFromPoint = dispatch(startPollingElementFromPoint())\n const unregisterBuilderComponents = dispatch(registerBuilderComponents())\n\n const breakpoints = ReactPage.getBreakpoints(getState())\n dispatch(setBreakpoints(breakpoints))\n dispatch(setIsInBuilder(true))\n channel.dispatchBuffered()\n\n return () => {\n unregisterBuilderDocuments()\n stopMeasuringElements()\n stopMeasuringDocumentElement()\n stopHandlingFocusEvent()\n unlockDocumentScroll()\n stopHandlingPointerMoveEvent()\n stopPollingElementFromPoint()\n unregisterBuilderComponents()\n dispatch(setIsInBuilder(false))\n }\n }\n}\n\nfunction measureBoxModelsMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n return (action: Action) => {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE: {\n if (BoxModels.isMeasurable(action.payload.componentHandle)) {\n dispatch(\n registerMeasurable(\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n }\n\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE:\n dispatch(unregisterMeasurable(action.payload.documentKey, action.payload.elementKey))\n break\n }\n\n return next(action)\n }\n })\n}\n\nexport function messageChannelMiddleware(\n channel: IMessageChannel,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch }) => next => {\n if (typeof window === 'undefined') return (action: Action) => next(action)\n\n let cleanUp = () => {}\n return (action: Action) => {\n switch (action.type) {\n case ActionTypes.CHANGE_ELEMENT_BOX_MODELS:\n case ActionTypes.MOUNT_COMPONENT:\n case ActionTypes.UNMOUNT_COMPONENT:\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n case ActionTypes.HANDLE_WHEEL:\n case ActionTypes.HANDLE_POINTER_MOVE:\n case ActionTypes.ELEMENT_FROM_POINT_CHANGE:\n case ActionTypes.SET_LOCALE:\n case ActionTypes.SET_BREAKPOINTS:\n case ActionTypes.REGISTER_BUILDER_DOCUMENT:\n case ActionTypes.UNREGISTER_BUILDER_DOCUMENT:\n channel.postMessage(action)\n break\n\n case ActionTypes.REGISTER_BUILDER_COMPONENT: {\n const { transferables, ...forwardedAction } = action\n channel.postMessage(forwardedAction, transferables)\n break\n }\n\n case ActionTypes.UNREGISTER_BUILDER_COMPONENT:\n channel.postMessage(action)\n break\n\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case ActionTypes.SCROLL_DOCUMENT_ELEMENT:\n window.document.documentElement.scrollTop += action.payload.scrollTopDelta\n break\n\n case ActionTypes.SET_BUILDER_EDIT_MODE:\n channel.postMessage(action)\n window.getSelection()?.removeAllRanges()\n break\n\n case ActionTypes.INIT:\n // dispatched by the parent window after establishing the connection\n cleanUp = dispatch(initialize(channel))\n break\n\n case ActionTypes.CLEAN_UP:\n // dispatched by the parent window on disconnect\n cleanUp()\n break\n }\n\n return next(action)\n }\n })\n}\n\nfunction createAndRegisterPropControllers(\n documentKey: string,\n elementKey: string,\n): ThunkAction<Record<string, ControlInstance> | null, State, unknown, Action> {\n return (dispatch, getState) => {\n const descriptors = ReactPage.getElementPropControllerDescriptors(\n getState(),\n documentKey,\n elementKey,\n )\n\n if (descriptors == null) return null\n\n const propControllers = Object.entries(descriptors).reduce(\n (acc, [propName, descriptor]) => {\n const propController = createPropController(descriptor, message =>\n dispatch(messageBuilderPropController(documentKey, elementKey, propName, message)),\n ) as ControlInstance\n\n return { ...acc, [propName]: propController }\n },\n {} as Record<string, ControlInstance>,\n )\n\n dispatch(registerPropControllers(documentKey, elementKey, propControllers))\n\n return propControllers\n }\n}\n\nexport function propControllerHandlesMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch, getState }) => next => {\n return (action: Action) => {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey, componentHandle } = action.payload\n const element = ReactPage.getElement(getState(), documentKey, elementKey)\n const propControllers = dispatch(\n createAndRegisterPropControllers(documentKey, elementKey),\n )\n\n if (\n element != null &&\n !ReactPage.isElementReference(element) &&\n PropControllerHandles.isPropControllersHandle(componentHandle)\n ) {\n dispatch(registerPropControllersHandle(documentKey, elementKey, componentHandle))\n componentHandle.setPropControllers(propControllers)\n }\n\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const handle = PropControllerHandles.getPropControllersHandle(\n getPropControllerHandlesStateSlice(getState()),\n documentKey,\n elementKey,\n )\n\n handle?.setPropControllers(null)\n\n dispatch(unregisterPropControllers(documentKey, elementKey))\n\n break\n }\n\n case ActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {\n const propController = PropControllerHandles.getPropController(\n getPropControllerHandlesStateSlice(getState()),\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.propName,\n )\n\n if (propController) propController.recv(action.payload.message)\n }\n }\n\n return next(action)\n }\n })\n}\n\nfunction makeswiftApiClientSyncMiddleware(\n client: MakeswiftHostApiClient,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(() => next => {\n return (action: Action) => {\n client.makeswiftApiClient.dispatch(action)\n\n return next(action)\n }\n })\n}\n\nclass MessageChannel {\n private channel: MessagePort | null = null\n private bufferedMessages: [Action, Transferable[]?][] = []\n\n public postMessage(message: any, transferables?: Transferable[]) {\n if (this.channel) {\n this.channel.postMessage(message, transferables ?? [])\n } else {\n this.bufferedMessages.push([message, transferables])\n }\n }\n\n public setup(onMessage: (event: MessageEvent<Action>) => void) {\n const channel = new window.MessageChannel()\n channel.port1.onmessage = onMessage\n\n // connect channel to the parent window, see\n // https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API\n window.parent.postMessage(channel.port2, '*', [channel.port2])\n\n this.channel = channel.port1\n }\n\n public dispatchBuffered() {\n console.assert(this.channel != null, 'channel is not setup')\n\n this.bufferedMessages.forEach(([message, transferables]) => {\n this.channel?.postMessage(message, transferables ?? [])\n })\n\n this.bufferedMessages = []\n }\n\n public teardown() {\n if (this.channel) {\n this.channel.onmessage = null\n this.channel.close()\n }\n }\n}\n\nfunction setupMessageChannel(channel: MessageChannel): ThunkAction<void, State, unknown, Action> {\n return dispatch => {\n channel.setup((event: MessageEvent<Action>) => dispatch(event.data))\n }\n}\n\nexport function configureStore({\n preloadedState,\n client,\n}: {\n preloadedState: Partial<State>\n client: MakeswiftHostApiClient\n}) {\n const initialState: Partial<State> = {\n ...preloadedState,\n isPreview: IsPreview.getInitialState(true),\n }\n\n const channel = new MessageChannel()\n const store = configureReduxStore({\n reducer,\n preloadedState: initialState,\n\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware(middlewareOptions).concat(\n ReactPage.elementTreeMiddleware(),\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(channel),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n\n enhancers: getDefaultEnhancers =>\n getDefaultEnhancers().concat(\n withSetupTeardown(\n () => {\n const dispatch = store.dispatch as Dispatch\n dispatch(setupMessageChannel(channel))\n },\n () => channel.teardown(),\n ),\n ),\n\n devTools: devToolsConfig({\n name: `Host store (${new Date().toISOString()})`,\n actionsDenylist: [\n ActionTypes.BUILDER_POINTER_MOVE,\n ActionTypes.HANDLE_POINTER_MOVE,\n ActionTypes.ELEMENT_FROM_POINT_CHANGE,\n ],\n }),\n })\n\n return store\n}\n\nexport type Store = ReturnType<typeof configureStore>\n"],"mappings":"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","names":["document"]}
@@ -1,319 +0,0 @@
1
- import {
2
- configureStore as configureReduxStore,
3
- combineReducers
4
- } from "@reduxjs/toolkit";
5
- import { createSelector } from "reselect";
6
- import {
7
- createReplacementContext,
8
- replaceResourceIfNeeded,
9
- ContextResource
10
- } from "@makeswift/controls";
11
- import * as Documents from "./modules/read-only-documents";
12
- import * as ElementTrees from "./modules/element-trees";
13
- import * as ReactComponents from "./modules/react-components";
14
- import * as ComponentsMeta from "./modules/components-meta";
15
- import * as PropControllers from "./modules/prop-controllers";
16
- import * as PropControllerHandles from "./modules/prop-controller-handles";
17
- import * as IsInBuilder from "./modules/is-in-builder";
18
- import * as IsPreview from "./modules/is-preview";
19
- import * as BuilderEditMode from "./modules/builder-edit-mode";
20
- import * as Breakpoints from "./modules/breakpoints";
21
- import {
22
- ActionTypes,
23
- changeElementTree,
24
- createElementTree,
25
- deleteElementTree
26
- } from "./actions";
27
- import {
28
- copy as copyFromControl,
29
- getTranslatableData,
30
- merge,
31
- mergeTranslatedData
32
- } from "../controls/control";
33
- import { actionMiddleware, middlewareOptions, devToolsConfig } from "./toolkit";
34
- import { withSetupTeardown } from "./mixins/setup-teardown";
35
- import {
36
- createBaseDocument,
37
- createDocumentReference,
38
- getRootElement,
39
- isElementReference
40
- } from "./modules/read-only-documents";
41
- const reducer = combineReducers({
42
- documents: Documents.reducer,
43
- elementTrees: ElementTrees.reducer,
44
- reactComponents: ReactComponents.reducer,
45
- componentsMeta: ComponentsMeta.reducer,
46
- propControllers: PropControllers.reducer,
47
- propControllerHandles: PropControllerHandles.reducer,
48
- isInBuilder: IsInBuilder.reducer,
49
- isPreview: IsPreview.reducer,
50
- builderEditMode: BuilderEditMode.reducer,
51
- breakpoints: Breakpoints.reducer
52
- });
53
- function getDocumentsStateSlice(state) {
54
- return state.documents;
55
- }
56
- function getDocument(state, documentKey) {
57
- return Documents.getDocument(getDocumentsStateSlice(state), documentKey);
58
- }
59
- function getElementTreesSlice(state) {
60
- return state.elementTrees;
61
- }
62
- function getElements(state, documentKey) {
63
- return ElementTrees.getElements(getElementTreesSlice(state), documentKey);
64
- }
65
- function getElementIds(state, documentKey) {
66
- return ElementTrees.getElementIds(getElementTreesSlice(state), documentKey);
67
- }
68
- function getReactComponentsStateSlice(state) {
69
- return state.reactComponents;
70
- }
71
- function getReactComponent(state, type) {
72
- return ReactComponents.getReactComponent(getReactComponentsStateSlice(state), type);
73
- }
74
- function getPropControllersStateSlice(state) {
75
- return state.propControllers;
76
- }
77
- function getPropControllerDescriptors(state) {
78
- return PropControllers.getPropControllerDescriptors(getPropControllersStateSlice(state));
79
- }
80
- function getComponentPropControllerDescriptors(state, componentType) {
81
- return PropControllers.getComponentPropControllerDescriptors(
82
- getPropControllersStateSlice(state),
83
- componentType
84
- );
85
- }
86
- function getPropControllerHandlesStateSlice(state) {
87
- return state.propControllerHandles;
88
- }
89
- function getPropControllers(state, documentKey, elementKey) {
90
- return PropControllerHandles.getPropControllers(
91
- getPropControllerHandlesStateSlice(state),
92
- documentKey,
93
- elementKey
94
- );
95
- }
96
- const getDocumentKeysSortedByDepth = createSelector(
97
- [getDocumentsStateSlice, getElementTreesSlice],
98
- (documents, elementTrees) => {
99
- return [...documents.keys()].sort((a, b) => elementTrees.get(a)?.elements.has(b) ? -1 : 1);
100
- }
101
- );
102
- function getElement(state, documentKey, elementKey) {
103
- return ElementTrees.getElement(getElementTreesSlice(state), documentKey, elementKey);
104
- }
105
- function getElementId(state, documentKey, elementKey) {
106
- return ElementTrees.getElementId(getElementTreesSlice(state), documentKey, elementKey);
107
- }
108
- function getElementPropControllerDescriptors(state, documentKey, elementKey) {
109
- const element = getElement(state, documentKey, elementKey);
110
- if (element == null || Documents.isElementReference(element))
111
- return null;
112
- return getComponentPropControllerDescriptors(state, element.type);
113
- }
114
- function copyElementTree(state, elementTree, replacementContext) {
115
- function copyElementTreeNode(state2, replacementContext2) {
116
- return function(node) {
117
- const context = {
118
- replacementContext: replacementContext2,
119
- copyElement: copyElementTreeNode(state2, replacementContext2)
120
- };
121
- if (Documents.isElementReference(node)) {
122
- return {
123
- ...node,
124
- value: replaceResourceIfNeeded(ContextResource.GlobalElement, node.value, context)
125
- };
126
- }
127
- const descriptors = getComponentPropControllerDescriptors(state2, node.type);
128
- if (descriptors == null)
129
- return node;
130
- for (const [propKey, descriptor] of Object.entries(descriptors)) {
131
- node.props[propKey] = copyFromControl(descriptor, node.props[propKey], context);
132
- }
133
- return node;
134
- };
135
- }
136
- const copy = JSON.parse(JSON.stringify(elementTree));
137
- return copyElementTreeNode(state, createReplacementContext(replacementContext))(copy);
138
- }
139
- function getElementTreeTranslatableData(state, elementTree) {
140
- const translatableData = {};
141
- const descriptors = getPropControllerDescriptors(state);
142
- for (const element of ElementTrees.traverseElementTree(elementTree, descriptors)) {
143
- if (Documents.isElementReference(element))
144
- continue;
145
- const elementPescriptors = descriptors.get(element.type);
146
- if (elementPescriptors == null)
147
- continue;
148
- Object.entries(elementPescriptors).forEach(([propName, descriptor]) => {
149
- const translatablePropData = getTranslatableData(descriptor, element.props[propName]);
150
- if (translatablePropData != null) {
151
- translatableData[`${element.key}:${propName}`] = translatablePropData;
152
- }
153
- });
154
- }
155
- return translatableData;
156
- }
157
- function mergeElementTreeTranslatedData(state, elementTree, translatedData) {
158
- function merge2(state2, translatedData2) {
159
- return function(node) {
160
- if (Documents.isElementReference(node))
161
- return node;
162
- const elementDescriptors = getPropControllerDescriptors(state2);
163
- const descriptors = elementDescriptors.get(node.type);
164
- if (descriptors == null) {
165
- throw new Error(`Can't merge element of type "${node.type}" because it has no descriptors`);
166
- }
167
- const context = {
168
- translatedData: translatedData2,
169
- mergeTranslatedData: merge2(state2, translatedData2)
170
- };
171
- const props = {};
172
- for (const propName of Object.keys(descriptors)) {
173
- const descriptor = descriptors[propName];
174
- props[propName] = mergeTranslatedData(
175
- descriptor,
176
- node.props[propName],
177
- translatedData2[`${node.key}:${propName}`],
178
- context
179
- );
180
- }
181
- return { ...node, props };
182
- };
183
- }
184
- return merge2(state, translatedData)(elementTree);
185
- }
186
- function mergeElement(state, baseElement, overrideElement) {
187
- if (baseElement.type !== overrideElement.type || baseElement.key !== overrideElement.key) {
188
- throw new Error(`Can't merge elements of different types or keys`);
189
- }
190
- if (Documents.isElementReference(overrideElement))
191
- return overrideElement;
192
- if (Documents.isElementReference(baseElement))
193
- return baseElement;
194
- const elementDescriptors = getPropControllerDescriptors(state);
195
- const descriptors = elementDescriptors.get(baseElement.type);
196
- if (descriptors == null) {
197
- throw new Error(
198
- `Can't merge element of type "${baseElement.type}" because it has no descriptors`
199
- );
200
- }
201
- const mergedProps = {};
202
- for (const propName of Object.keys(descriptors)) {
203
- const descriptor = descriptors[propName];
204
- const context = {
205
- mergeElement(base, override) {
206
- return mergeElement(state, base, override);
207
- }
208
- };
209
- mergedProps[propName] = merge(
210
- descriptor,
211
- baseElement.props[propName],
212
- overrideElement.props[propName],
213
- context
214
- );
215
- }
216
- return { ...baseElement, props: mergedProps };
217
- }
218
- function getIsInBuilder(state) {
219
- return state.isInBuilder;
220
- }
221
- function getIsPreview(state) {
222
- return IsPreview.getIsPreview(state.isPreview);
223
- }
224
- function getBuilderEditMode(state) {
225
- return state.builderEditMode;
226
- }
227
- function getBreakpoints(state) {
228
- return state.breakpoints;
229
- }
230
- function elementTreeMiddleware() {
231
- return actionMiddleware(({ dispatch, getState }) => (next) => {
232
- return (action) => {
233
- switch (action.type) {
234
- case ActionTypes.REGISTER_DOCUMENT:
235
- dispatch(
236
- createElementTree({
237
- document: action.payload.document,
238
- descriptors: getPropControllerDescriptors(getState())
239
- })
240
- );
241
- break;
242
- case ActionTypes.CHANGE_DOCUMENT: {
243
- const { documentKey, operation } = action.payload;
244
- const oldDocument = getDocument(getState(), documentKey);
245
- const result = next(action);
246
- const newDocument = getDocument(getState(), documentKey);
247
- if (oldDocument != null && newDocument != null && newDocument !== oldDocument) {
248
- dispatch(
249
- changeElementTree({
250
- oldDocument,
251
- newDocument,
252
- descriptors: getPropControllerDescriptors(getState()),
253
- operation
254
- })
255
- );
256
- }
257
- return result;
258
- }
259
- case ActionTypes.UNREGISTER_DOCUMENT:
260
- dispatch(deleteElementTree(action.payload));
261
- break;
262
- }
263
- return next(action);
264
- };
265
- });
266
- }
267
- function configureStore({
268
- name,
269
- preloadedState,
270
- breakpoints
271
- }) {
272
- return configureReduxStore({
273
- reducer,
274
- preloadedState: {
275
- ...preloadedState,
276
- breakpoints: Breakpoints.getInitialState(breakpoints ?? preloadedState?.breakpoints)
277
- },
278
- middleware: (getDefaultMiddleware) => getDefaultMiddleware(middlewareOptions).concat(elementTreeMiddleware()),
279
- enhancers: (getDefaultEnhancers) => getDefaultEnhancers().concat(
280
- withSetupTeardown(
281
- () => {
282
- },
283
- () => {
284
- }
285
- )
286
- ),
287
- devTools: devToolsConfig({
288
- name: `${name} (${(/* @__PURE__ */ new Date()).toISOString()})`
289
- })
290
- });
291
- }
292
- export {
293
- configureStore,
294
- copyElementTree,
295
- createBaseDocument,
296
- createDocumentReference,
297
- elementTreeMiddleware,
298
- getBreakpoints,
299
- getBuilderEditMode,
300
- getComponentPropControllerDescriptors,
301
- getDocument,
302
- getDocumentKeysSortedByDepth,
303
- getElement,
304
- getElementId,
305
- getElementIds,
306
- getElementPropControllerDescriptors,
307
- getElementTreeTranslatableData,
308
- getElements,
309
- getIsInBuilder,
310
- getIsPreview,
311
- getPropControllerDescriptors,
312
- getPropControllers,
313
- getReactComponent,
314
- getRootElement,
315
- isElementReference,
316
- mergeElement,
317
- mergeElementTreeTranslatedData
318
- };
319
- //# sourceMappingURL=react-page.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/state/react-page.ts"],"sourcesContent":["import {\n configureStore as configureReduxStore,\n combineReducers,\n type ThunkDispatch,\n type Middleware,\n} from '@reduxjs/toolkit'\n\nimport { createSelector } from 'reselect'\n\nimport {\n createReplacementContext,\n type SerializableReplacementContext,\n type ReplacementContext,\n type TranslationDto,\n type MergeTranslatableDataContext,\n type MergeContext,\n CopyContext,\n replaceResourceIfNeeded,\n ContextResource,\n} from '@makeswift/controls'\n\nimport * as Documents from './modules/read-only-documents'\nimport * as ElementTrees from './modules/element-trees'\nimport * as ReactComponents from './modules/react-components'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Breakpoints from './modules/breakpoints'\nimport {\n type Action,\n ActionTypes,\n changeElementTree,\n createElementTree,\n deleteElementTree,\n} from './actions'\nimport {\n copy as copyFromControl,\n getTranslatableData,\n merge,\n mergeTranslatedData,\n} from '../controls/control'\n\nimport { actionMiddleware, middlewareOptions, devToolsConfig } from './toolkit'\n\nimport { withSetupTeardown } from './mixins/setup-teardown'\n\nexport type {\n Data,\n Document,\n DocumentReference,\n Element,\n ElementData,\n ElementReference,\n} from './modules/read-only-documents'\n\nexport {\n createBaseDocument,\n createDocumentReference,\n getRootElement,\n isElementReference,\n} from './modules/read-only-documents'\n\nexport type { ComponentType } from './modules/react-components'\n\nconst reducer = combineReducers({\n documents: Documents.reducer,\n elementTrees: ElementTrees.reducer,\n reactComponents: ReactComponents.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction getDocumentsStateSlice(state: State): Documents.State {\n return state.documents\n}\n\nexport function getDocument(state: State, documentKey: string): Documents.Document | null {\n return Documents.getDocument(getDocumentsStateSlice(state), documentKey)\n}\n\nfunction getElementTreesSlice(state: State): ElementTrees.State {\n return state.elementTrees\n}\n\nexport function getElements(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elements'] {\n return ElementTrees.getElements(getElementTreesSlice(state), documentKey)\n}\n\nexport function getElementIds(\n state: State,\n documentKey: string,\n): ElementTrees.ElementTree['elementIds'] {\n return ElementTrees.getElementIds(getElementTreesSlice(state), documentKey)\n}\n\nfunction getReactComponentsStateSlice(state: State): ReactComponents.State {\n return state.reactComponents\n}\n\nexport function getReactComponent(\n state: State,\n type: string,\n): ReactComponents.ComponentType | null {\n return ReactComponents.getReactComponent(getReactComponentsStateSlice(state), type)\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nexport function getPropControllerDescriptors(state: State): PropControllers.State {\n return PropControllers.getPropControllerDescriptors(getPropControllersStateSlice(state))\n}\n\nexport function getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): PropControllers.DescriptorsByProp | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nexport function getPropControllers(state: State, documentKey: string, elementKey: string) {\n return PropControllerHandles.getPropControllers(\n getPropControllerHandlesStateSlice(state),\n documentKey,\n elementKey,\n )\n}\n\n/**\n * Returns all document keys sorted by depth, i.e., parent documents come before child documents.\n */\nexport const getDocumentKeysSortedByDepth: (state: State) => string[] = createSelector(\n [getDocumentsStateSlice, getElementTreesSlice],\n (documents, elementTrees) => {\n return [...documents.keys()].sort((a, b) => (elementTrees.get(a)?.elements.has(b) ? -1 : 1))\n },\n)\n\nexport function getElement(\n state: State,\n documentKey: string,\n elementKey: string,\n): Documents.Element | null {\n return ElementTrees.getElement(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementId(state: State, documentKey: string, elementKey: string): string | null {\n return ElementTrees.getElementId(getElementTreesSlice(state), documentKey, elementKey)\n}\n\nexport function getElementPropControllerDescriptors(\n state: State,\n documentKey: string,\n elementKey: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n const element = getElement(state, documentKey, elementKey)\n\n if (element == null || Documents.isElementReference(element)) return null\n\n return getComponentPropControllerDescriptors(state, element.type)\n}\n\nexport function copyElementTree(\n state: State,\n elementTree: Documents.ElementData,\n replacementContext: SerializableReplacementContext,\n) {\n /*\n * This is structured a bit weird.\n *\n * This is done so that we can pass a callable function into some of the copy functions\n * themselves, to enable mutual recursion.\n *\n * Consider the slot control. It has to iterate through its elements, and for each of them,\n * call some version of the below function.\n *\n * That is how the recursing through the tree happens.\n */\n function copyElementTreeNode(state: State, replacementContext: ReplacementContext) {\n return function (node: Documents.Element) {\n const context: CopyContext = {\n replacementContext,\n copyElement: copyElementTreeNode(state, replacementContext),\n }\n\n if (Documents.isElementReference(node)) {\n return {\n ...node,\n value: replaceResourceIfNeeded(ContextResource.GlobalElement, node.value, context),\n }\n }\n\n const descriptors = getComponentPropControllerDescriptors(state, node.type)\n\n if (descriptors == null) return node\n\n for (const [propKey, descriptor] of Object.entries(descriptors)) {\n node.props[propKey] = copyFromControl(descriptor, node.props[propKey], context)\n }\n\n return node\n }\n }\n\n const copy = JSON.parse(JSON.stringify(elementTree)) as Documents.ElementData\n\n return copyElementTreeNode(state, createReplacementContext(replacementContext))(copy)\n}\n\nexport function getElementTreeTranslatableData(\n state: State,\n elementTree: Documents.ElementData,\n): Record<string, Documents.Data> {\n const translatableData: Record<string, Documents.Data> = {}\n const descriptors = getPropControllerDescriptors(state)\n\n for (const element of ElementTrees.traverseElementTree(elementTree, descriptors)) {\n if (Documents.isElementReference(element)) continue\n\n const elementPescriptors = descriptors.get(element.type)\n if (elementPescriptors == null) continue\n\n Object.entries(elementPescriptors).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\nexport function mergeElementTreeTranslatedData(\n state: State,\n elementTree: Documents.ElementData,\n translatedData: TranslationDto,\n): Documents.Element {\n function merge(state: State, translatedData: TranslationDto) {\n return function (node: Documents.Element): Documents.Element {\n if (Documents.isElementReference(node)) return node\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(node.type)\n\n if (descriptors == 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,\n mergeTranslatedData: merge(state, translatedData),\n }\n const props = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[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(state, translatedData)(elementTree)\n}\n\nexport function mergeElement(\n state: State,\n baseElement: Documents.Element,\n overrideElement: Documents.Element,\n): Documents.Element {\n if (baseElement.type !== overrideElement.type || baseElement.key !== overrideElement.key) {\n throw new Error(`Can't merge elements of different types or keys`)\n }\n\n if (Documents.isElementReference(overrideElement)) return overrideElement\n\n if (Documents.isElementReference(baseElement)) return baseElement\n\n const elementDescriptors = getPropControllerDescriptors(state)\n const descriptors = elementDescriptors.get(baseElement.type)\n\n if (descriptors == null) {\n throw new Error(\n `Can't merge element of type \"${baseElement.type}\" because it has no descriptors`,\n )\n }\n\n const mergedProps = {} as Record<string, Documents.Data>\n\n for (const propName of Object.keys(descriptors)) {\n const descriptor = descriptors[propName]\n const context: MergeContext = {\n mergeElement(base, override) {\n return mergeElement(state, base, override)\n },\n }\n\n mergedProps[propName] = merge(\n descriptor,\n baseElement.props[propName],\n overrideElement.props[propName],\n context,\n )\n }\n\n return { ...baseElement, props: mergedProps }\n}\n\nexport function getIsInBuilder(state: State): boolean {\n return state.isInBuilder\n}\n\nexport function getIsPreview(state: State): boolean {\n return IsPreview.getIsPreview(state.isPreview)\n}\n\nexport function getBuilderEditMode(state: State): BuilderEditMode.State {\n return state.builderEditMode\n}\n\nexport function getBreakpoints(state: State): Breakpoints.State {\n return state.breakpoints\n}\n\nexport function elementTreeMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(({ dispatch, getState }) => next => {\n return action => {\n switch (action.type) {\n case ActionTypes.REGISTER_DOCUMENT:\n dispatch(\n createElementTree({\n document: action.payload.document,\n descriptors: getPropControllerDescriptors(getState()),\n }),\n )\n break\n\n case ActionTypes.CHANGE_DOCUMENT: {\n const { documentKey, operation } = action.payload\n\n const oldDocument = getDocument(getState(), documentKey)\n const result = next(action)\n const newDocument = getDocument(getState(), documentKey)\n\n if (oldDocument != null && newDocument != null && newDocument !== oldDocument) {\n dispatch(\n changeElementTree({\n oldDocument,\n newDocument,\n descriptors: getPropControllerDescriptors(getState()),\n operation,\n }),\n )\n }\n\n return result\n }\n\n case ActionTypes.UNREGISTER_DOCUMENT:\n dispatch(deleteElementTree(action.payload))\n break\n }\n\n return next(action)\n }\n })\n}\n\nexport function configureStore({\n name,\n preloadedState,\n breakpoints,\n}: {\n name: string\n preloadedState: Partial<State> | null\n breakpoints?: Breakpoints.State\n}) {\n return configureReduxStore({\n reducer,\n preloadedState: {\n ...preloadedState,\n breakpoints: Breakpoints.getInitialState(breakpoints ?? preloadedState?.breakpoints),\n },\n\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware(middlewareOptions).concat(elementTreeMiddleware()),\n\n enhancers: getDefaultEnhancers =>\n getDefaultEnhancers().concat(\n withSetupTeardown(\n () => {},\n () => {},\n ),\n ),\n\n devTools: devToolsConfig({\n name: `${name} (${new Date().toISOString()})`,\n }),\n })\n}\n\nexport type Store = ReturnType<typeof configureStore>\n"],"mappings":"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","names":["state","replacementContext","merge","translatedData"]}
@@ -1,96 +0,0 @@
1
- const TTLCheck = {
2
- ON_GET: 1 << 0,
3
- ON_RETAIN: 1 << 1,
4
- ON_RELEASE: 1 << 2
5
- };
6
- class RefCountedMap {
7
- map = /* @__PURE__ */ new Map();
8
- unownedEntryTtlMs;
9
- ttlCheck;
10
- static TTLCheck = TTLCheck;
11
- constructor({
12
- unownedEntryTtlMs,
13
- ttlCheck = TTLCheck.ON_GET | TTLCheck.ON_RETAIN | TTLCheck.ON_RELEASE
14
- }) {
15
- this.unownedEntryTtlMs = unownedEntryTtlMs;
16
- this.ttlCheck = ttlCheck;
17
- }
18
- get size() {
19
- return this.map.size;
20
- }
21
- get(key) {
22
- return this.map.get(key)?.value;
23
- }
24
- getOrCreate(key, init) {
25
- try {
26
- const existing = this.map.get(key);
27
- if (existing) {
28
- if (isUnowned(existing))
29
- existing.accessedAt = Date.now();
30
- return existing.value;
31
- }
32
- const value = init();
33
- this.map.set(key, { value, count: void 0, accessedAt: Date.now() });
34
- return value;
35
- } finally {
36
- if (this.ttlCheck & TTLCheck.ON_GET)
37
- this.removeExpired();
38
- }
39
- }
40
- /**
41
- * Returns true on transition from unowned to owned
42
- */
43
- retain(key, value) {
44
- try {
45
- const existing = this.map.get(key);
46
- if (existing == null) {
47
- this.map.set(key, { value, count: 1 });
48
- return true;
49
- }
50
- if (existing.value === value) {
51
- existing.count = (existing.count ?? 0) + 1;
52
- return existing.count === 1;
53
- }
54
- return false;
55
- } finally {
56
- if (this.ttlCheck & TTLCheck.ON_RETAIN)
57
- this.removeExpired();
58
- }
59
- }
60
- /**
61
- * Returns true on transition from owned to unowned
62
- */
63
- release(key, value) {
64
- try {
65
- const existing = this.map.get(key);
66
- if (existing == null)
67
- return false;
68
- if (isUnowned(existing))
69
- return false;
70
- if (existing.value !== value)
71
- return false;
72
- if (existing.count === 1) {
73
- this.map.delete(key);
74
- return true;
75
- }
76
- existing.count -= 1;
77
- return false;
78
- } finally {
79
- if (this.ttlCheck & TTLCheck.ON_RELEASE)
80
- this.removeExpired();
81
- }
82
- }
83
- removeExpired() {
84
- const now = Date.now();
85
- const isExpired = (entry) => isUnowned(entry) && now - entry.accessedAt > this.unownedEntryTtlMs;
86
- this.map.forEach((entry, key) => {
87
- if (isExpired(entry))
88
- this.map.delete(key);
89
- });
90
- }
91
- }
92
- const isUnowned = (entry) => entry.count === void 0;
93
- export {
94
- RefCountedMap
95
- };
96
- //# sourceMappingURL=ref-counted-map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/utils/ref-counted-map.ts"],"sourcesContent":["type RefCountedMapEntry<V> = {\n value: V\n count: number\n}\n\ntype UnownedMapEntry<V> = {\n value: V\n count: undefined\n accessedAt: number\n}\n\ntype MapEntry<V> = RefCountedMapEntry<V> | UnownedMapEntry<V>\n\nconst TTLCheck = {\n ON_GET: 1 << 0,\n ON_RETAIN: 1 << 1,\n ON_RELEASE: 1 << 2,\n} as const\n\n/**\n * Ref-counted map with explicit retention semantics. Entries are unowned by default and may be evicted after their\n * TTL unless explicitly retained. This provides TTL-based caching for unowned entries, while allowing consumers to\n * opt into stronger lifetime control via explicit retention.\n */\nexport class RefCountedMap<K, V> {\n private readonly map = new Map<K, MapEntry<V>>()\n private readonly unownedEntryTtlMs: number\n private readonly ttlCheck: number\n\n static readonly TTLCheck = TTLCheck\n\n constructor({\n unownedEntryTtlMs,\n ttlCheck = TTLCheck.ON_GET | TTLCheck.ON_RETAIN | TTLCheck.ON_RELEASE,\n }: {\n unownedEntryTtlMs: number\n ttlCheck?: number\n }) {\n this.unownedEntryTtlMs = unownedEntryTtlMs\n this.ttlCheck = ttlCheck\n }\n\n get size(): number {\n return this.map.size\n }\n\n get(key: K): V | undefined {\n return this.map.get(key)?.value\n }\n\n getOrCreate(key: K, init: () => V): V {\n try {\n const existing = this.map.get(key)\n\n if (existing) {\n if (isUnowned(existing)) existing.accessedAt = Date.now()\n return existing.value\n }\n\n const value = init()\n this.map.set(key, { value, count: undefined, accessedAt: Date.now() })\n return value\n } finally {\n if (this.ttlCheck & TTLCheck.ON_GET) this.removeExpired()\n }\n }\n\n /**\n * Returns true on transition from unowned to owned\n */\n retain(key: K, value: V): boolean {\n try {\n const existing = this.map.get(key)\n\n if (existing == null) {\n this.map.set(key, { value, count: 1 })\n return true\n }\n\n // `retain` might be called on a unowned entry that has already been evicted from the map due to TTL expiration\n // *and* possibly replaced by a new unowned entry with the same key; handle this gracefully\n if (existing.value === value) {\n existing.count = (existing.count ?? 0) + 1\n return existing.count === 1\n }\n\n return false\n } finally {\n if (this.ttlCheck & TTLCheck.ON_RETAIN) this.removeExpired()\n }\n }\n\n /**\n * Returns true on transition from owned to unowned\n */\n release(key: K, value: V): boolean {\n try {\n const existing = this.map.get(key)\n\n // `release` might be called on an entry that remained unowned due being superseded by a new entry with the same\n // key after TTL expiration of the original entry; handle this gracefully\n if (existing == null) return false\n if (isUnowned(existing)) return false\n if (existing.value !== value) return false\n\n if (existing.count === 1) {\n this.map.delete(key)\n return true\n }\n\n existing.count -= 1\n return false\n } finally {\n if (this.ttlCheck & TTLCheck.ON_RELEASE) this.removeExpired()\n }\n }\n\n private removeExpired(): void {\n const now = Date.now()\n const isExpired = (entry: MapEntry<V>): boolean =>\n isUnowned(entry) && now - entry.accessedAt > this.unownedEntryTtlMs\n\n this.map.forEach((entry, key) => {\n if (isExpired(entry)) this.map.delete(key)\n })\n }\n}\n\nconst isUnowned = <V>(entry: MapEntry<V>): entry is UnownedMapEntry<V> => entry.count === undefined\n"],"mappings":"AAaA,MAAM,WAAW;AAAA,EACf,QAAQ,KAAK;AAAA,EACb,WAAW,KAAK;AAAA,EAChB,YAAY,KAAK;AACnB;AAOO,MAAM,cAAoB;AAAA,EACd,MAAM,oBAAI,IAAoB;AAAA,EAC9B;AAAA,EACA;AAAA,EAEjB,OAAgB,WAAW;AAAA,EAE3B,YAAY;AAAA,IACV;AAAA,IACA,WAAW,SAAS,SAAS,SAAS,YAAY,SAAS;AAAA,EAC7D,GAGG;AACD,SAAK,oBAAoB;AACzB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,IAAI;AAAA,EAClB;AAAA,EAEA,IAAI,KAAuB;AACzB,WAAO,KAAK,IAAI,IAAI,GAAG,GAAG;AAAA,EAC5B;AAAA,EAEA,YAAY,KAAQ,MAAkB;AACpC,QAAI;AACF,YAAM,WAAW,KAAK,IAAI,IAAI,GAAG;AAEjC,UAAI,UAAU;AACZ,YAAI,UAAU,QAAQ;AAAG,mBAAS,aAAa,KAAK,IAAI;AACxD,eAAO,SAAS;AAAA,MAClB;AAEA,YAAM,QAAQ,KAAK;AACnB,WAAK,IAAI,IAAI,KAAK,EAAE,OAAO,OAAO,QAAW,YAAY,KAAK,IAAI,EAAE,CAAC;AACrE,aAAO;AAAA,IACT,UAAE;AACA,UAAI,KAAK,WAAW,SAAS;AAAQ,aAAK,cAAc;AAAA,IAC1D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,KAAQ,OAAmB;AAChC,QAAI;AACF,YAAM,WAAW,KAAK,IAAI,IAAI,GAAG;AAEjC,UAAI,YAAY,MAAM;AACpB,aAAK,IAAI,IAAI,KAAK,EAAE,OAAO,OAAO,EAAE,CAAC;AACrC,eAAO;AAAA,MACT;AAIA,UAAI,SAAS,UAAU,OAAO;AAC5B,iBAAS,SAAS,SAAS,SAAS,KAAK;AACzC,eAAO,SAAS,UAAU;AAAA,MAC5B;AAEA,aAAO;AAAA,IACT,UAAE;AACA,UAAI,KAAK,WAAW,SAAS;AAAW,aAAK,cAAc;AAAA,IAC7D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,KAAQ,OAAmB;AACjC,QAAI;AACF,YAAM,WAAW,KAAK,IAAI,IAAI,GAAG;AAIjC,UAAI,YAAY;AAAM,eAAO;AAC7B,UAAI,UAAU,QAAQ;AAAG,eAAO;AAChC,UAAI,SAAS,UAAU;AAAO,eAAO;AAErC,UAAI,SAAS,UAAU,GAAG;AACxB,aAAK,IAAI,OAAO,GAAG;AACnB,eAAO;AAAA,MACT;AAEA,eAAS,SAAS;AAClB,aAAO;AAAA,IACT,UAAE;AACA,UAAI,KAAK,WAAW,SAAS;AAAY,aAAK,cAAc;AAAA,IAC9D;AAAA,EACF;AAAA,EAEQ,gBAAsB;AAC5B,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,YAAY,CAAC,UACjB,UAAU,KAAK,KAAK,MAAM,MAAM,aAAa,KAAK;AAEpD,SAAK,IAAI,QAAQ,CAAC,OAAO,QAAQ;AAC/B,UAAI,UAAU,KAAK;AAAG,aAAK,IAAI,OAAO,GAAG;AAAA,IAC3C,CAAC;AAAA,EACH;AACF;AAEA,MAAM,YAAY,CAAI,UAAoD,MAAM,UAAU;","names":[]}
@@ -1,57 +0,0 @@
1
- import { type FetchableValue } from '@makeswift/controls';
2
- import { type Store as ApiClientStore } from '../state/api-client/store';
3
- import * as ApiClientState from '../state/api-client/state';
4
- import { type File, type GlobalElement, type LocalizedGlobalElement, type Page, type PagePathnameSlice, type Site, type Snippet, type Swatch, type Table, type Typography, APIResourceType } from './types';
5
- export type CacheData = ApiClientState.SerializedState;
6
- export declare const CacheData: {
7
- empty(): CacheData;
8
- };
9
- export declare abstract class ApiResourcesClient {
10
- readonly store: ApiClientStore;
11
- readonly subscribe: ApiClientStore['subscribe'];
12
- constructor({ store }: {
13
- store: ApiClientStore;
14
- });
15
- abstract fetchSwatch(swatchId: string): Promise<Swatch | null>;
16
- readSwatch(swatchId: string): Swatch | null;
17
- resolveSwatch(swatchId: string | undefined): FetchableValue<Swatch | null>;
18
- abstract fetchFile(fileId: string): Promise<File | null>;
19
- readFile(fileId: string): File | null;
20
- resolveFile(fileId: string | undefined): FetchableValue<File | null>;
21
- abstract fetchTypography(typographyId: string): Promise<Typography | null>;
22
- readTypography(typographyId: string): Typography | null;
23
- resolveTypography(typographyId: string | undefined): FetchableValue<Typography | null>;
24
- abstract fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null>;
25
- readGlobalElement(globalElementId: string): GlobalElement | null;
26
- abstract fetchLocalizedGlobalElement({ globalElementId, locale, }: {
27
- globalElementId: string;
28
- locale: string;
29
- }): Promise<LocalizedGlobalElement | null>;
30
- readLocalizedGlobalElement({ globalElementId, locale, }: {
31
- globalElementId: string;
32
- locale: string;
33
- }): LocalizedGlobalElement | null;
34
- readPagePathnameSlice({ pageId, locale, }: {
35
- pageId: string;
36
- locale: string | null;
37
- }): PagePathnameSlice | null;
38
- abstract fetchPagePathnameSlice({ pageId, locale, }: {
39
- pageId: string;
40
- locale: string | null;
41
- }): Promise<PagePathnameSlice | null>;
42
- resolvePagePathnameSlice({ pageId, locale, }: {
43
- pageId: string | undefined;
44
- locale: string | null;
45
- }): FetchableValue<PagePathnameSlice | null>;
46
- resolveResource<R>(type: APIResourceType, { id, read, fetch, }: {
47
- id: string | undefined;
48
- read: (id: string) => R | null;
49
- fetch: (id: string) => Promise<R | null>;
50
- }): FetchableValue<R | null>;
51
- abstract fetchTable(tableId: string): Promise<Table | null>;
52
- readTable(tableId: string): Table | null;
53
- readSite(siteId: string): Site | null;
54
- readPage(pageId: string): Page | null;
55
- readSnippet(snippetId: string): Snippet | null;
56
- }
57
- //# sourceMappingURL=api-resources-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-resources-client.d.ts","sourceRoot":"","sources":["../../../src/api/api-resources-client.ts"],"names":[],"mappings":"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"}