@kywi-software/core 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/AGENT-PATTERNS.md +153 -17
  2. package/README.md +38 -12
  3. package/dist/admin/chrome.d.ts.map +1 -1
  4. package/dist/admin/chrome.js +6 -7
  5. package/dist/admin/chrome.js.map +1 -1
  6. package/dist/admin/field-components.d.ts.map +1 -1
  7. package/dist/admin/field-components.js +27 -1
  8. package/dist/admin/field-components.js.map +1 -1
  9. package/dist/admin/form-helpers.d.ts.map +1 -1
  10. package/dist/admin/form-helpers.js +6 -1
  11. package/dist/admin/form-helpers.js.map +1 -1
  12. package/dist/admin/layout-editor/chrome-env.d.ts +35 -0
  13. package/dist/admin/layout-editor/chrome-env.d.ts.map +1 -0
  14. package/dist/admin/layout-editor/chrome-env.js +13 -0
  15. package/dist/admin/layout-editor/chrome-env.js.map +1 -0
  16. package/dist/admin/layout-editor/component-actions.d.ts +58 -7
  17. package/dist/admin/layout-editor/component-actions.d.ts.map +1 -1
  18. package/dist/admin/layout-editor/component-actions.js +131 -5
  19. package/dist/admin/layout-editor/component-actions.js.map +1 -1
  20. package/dist/admin/layout-editor/component-fork.d.ts +4 -4
  21. package/dist/admin/layout-editor/component-fork.d.ts.map +1 -1
  22. package/dist/admin/layout-editor/component-fork.js +76 -10
  23. package/dist/admin/layout-editor/component-fork.js.map +1 -1
  24. package/dist/admin/layout-editor/component-picker-field.d.ts +17 -3
  25. package/dist/admin/layout-editor/component-picker-field.d.ts.map +1 -1
  26. package/dist/admin/layout-editor/component-picker-field.js +5 -2
  27. package/dist/admin/layout-editor/component-picker-field.js.map +1 -1
  28. package/dist/admin/layout-editor/drag-feedback.d.ts +25 -1
  29. package/dist/admin/layout-editor/drag-feedback.d.ts.map +1 -1
  30. package/dist/admin/layout-editor/drag-feedback.js +9 -0
  31. package/dist/admin/layout-editor/drag-feedback.js.map +1 -1
  32. package/dist/admin/layout-editor/drag-utils.d.ts +103 -5
  33. package/dist/admin/layout-editor/drag-utils.d.ts.map +1 -1
  34. package/dist/admin/layout-editor/drag-utils.js +131 -4
  35. package/dist/admin/layout-editor/drag-utils.js.map +1 -1
  36. package/dist/admin/layout-editor/editor-canvas.d.ts +11 -0
  37. package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
  38. package/dist/admin/layout-editor/editor-canvas.js +134 -20
  39. package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
  40. package/dist/admin/layout-editor/editor-dialog.d.ts +58 -3
  41. package/dist/admin/layout-editor/editor-dialog.d.ts.map +1 -1
  42. package/dist/admin/layout-editor/editor-dialog.js +71 -9
  43. package/dist/admin/layout-editor/editor-dialog.js.map +1 -1
  44. package/dist/admin/layout-editor/editor-state.d.ts +119 -0
  45. package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
  46. package/dist/admin/layout-editor/editor-state.js +188 -6
  47. package/dist/admin/layout-editor/editor-state.js.map +1 -1
  48. package/dist/admin/layout-editor/editor-toolbar.d.ts +10 -1
  49. package/dist/admin/layout-editor/editor-toolbar.d.ts.map +1 -1
  50. package/dist/admin/layout-editor/editor-toolbar.js +2 -2
  51. package/dist/admin/layout-editor/editor-toolbar.js.map +1 -1
  52. package/dist/admin/layout-editor/editor.css +216 -8
  53. package/dist/admin/layout-editor/inline-text.d.ts +15 -1
  54. package/dist/admin/layout-editor/inline-text.d.ts.map +1 -1
  55. package/dist/admin/layout-editor/inline-text.js +30 -2
  56. package/dist/admin/layout-editor/inline-text.js.map +1 -1
  57. package/dist/admin/layout-editor/layout-editor.d.ts +21 -16
  58. package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
  59. package/dist/admin/layout-editor/layout-editor.js +40 -17
  60. package/dist/admin/layout-editor/layout-editor.js.map +1 -1
  61. package/dist/admin/layout-editor/linked-component-notes.d.ts +88 -0
  62. package/dist/admin/layout-editor/linked-component-notes.d.ts.map +1 -0
  63. package/dist/admin/layout-editor/linked-component-notes.js +88 -0
  64. package/dist/admin/layout-editor/linked-component-notes.js.map +1 -0
  65. package/dist/admin/layout-editor/module-overlay.d.ts +23 -4
  66. package/dist/admin/layout-editor/module-overlay.d.ts.map +1 -1
  67. package/dist/admin/layout-editor/module-overlay.js +56 -10
  68. package/dist/admin/layout-editor/module-overlay.js.map +1 -1
  69. package/dist/admin/layout-editor/module-variant-container-config.d.ts.map +1 -1
  70. package/dist/admin/layout-editor/module-variant-container-config.js +9 -2
  71. package/dist/admin/layout-editor/module-variant-container-config.js.map +1 -1
  72. package/dist/admin/layout-editor/module-variant-container-panel.d.ts +75 -0
  73. package/dist/admin/layout-editor/module-variant-container-panel.d.ts.map +1 -0
  74. package/dist/admin/layout-editor/module-variant-container-panel.js +29 -0
  75. package/dist/admin/layout-editor/module-variant-container-panel.js.map +1 -0
  76. package/dist/admin/layout-editor/node-lookup.d.ts.map +1 -1
  77. package/dist/admin/layout-editor/node-lookup.js +33 -3
  78. package/dist/admin/layout-editor/node-lookup.js.map +1 -1
  79. package/dist/admin/layout-editor/overlay-shell.d.ts.map +1 -1
  80. package/dist/admin/layout-editor/overlay-shell.js +19 -4
  81. package/dist/admin/layout-editor/overlay-shell.js.map +1 -1
  82. package/dist/admin/layout-editor/props-panel.d.ts +28 -11
  83. package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
  84. package/dist/admin/layout-editor/props-panel.js +75 -125
  85. package/dist/admin/layout-editor/props-panel.js.map +1 -1
  86. package/dist/admin/layout-editor/section-variant-container-config.d.ts.map +1 -1
  87. package/dist/admin/layout-editor/section-variant-container-config.js +11 -2
  88. package/dist/admin/layout-editor/section-variant-container-config.js.map +1 -1
  89. package/dist/admin/layout-editor/use-chrome-flip.d.ts +99 -11
  90. package/dist/admin/layout-editor/use-chrome-flip.d.ts.map +1 -1
  91. package/dist/admin/layout-editor/use-chrome-flip.js +268 -97
  92. package/dist/admin/layout-editor/use-chrome-flip.js.map +1 -1
  93. package/dist/admin/layout-editor/use-component-connect.d.ts +13 -0
  94. package/dist/admin/layout-editor/use-component-connect.d.ts.map +1 -1
  95. package/dist/admin/layout-editor/use-component-connect.js +116 -20
  96. package/dist/admin/layout-editor/use-component-connect.js.map +1 -1
  97. package/dist/admin/layout-editor/use-component-fork.d.ts +49 -19
  98. package/dist/admin/layout-editor/use-component-fork.d.ts.map +1 -1
  99. package/dist/admin/layout-editor/use-component-fork.js +28 -19
  100. package/dist/admin/layout-editor/use-component-fork.js.map +1 -1
  101. package/dist/admin/layout-editor/use-component-library.d.ts +4 -4
  102. package/dist/admin/layout-editor/use-component-library.d.ts.map +1 -1
  103. package/dist/admin/layout-editor/use-component-library.js +1 -1
  104. package/dist/admin/layout-editor/use-component-library.js.map +1 -1
  105. package/dist/admin/layout-editor/use-editor-dnd.d.ts +10 -0
  106. package/dist/admin/layout-editor/use-editor-dnd.d.ts.map +1 -1
  107. package/dist/admin/layout-editor/use-editor-dnd.js +234 -14
  108. package/dist/admin/layout-editor/use-editor-dnd.js.map +1 -1
  109. package/dist/admin/layout-editor/variant-container-config.d.ts.map +1 -1
  110. package/dist/admin/layout-editor/variant-container-config.js +1 -1
  111. package/dist/admin/layout-editor/variant-container-config.js.map +1 -1
  112. package/dist/admin/layout-editor/variant-editor.d.ts +16 -15
  113. package/dist/admin/layout-editor/variant-editor.d.ts.map +1 -1
  114. package/dist/admin/layout-editor/variant-editor.js +16 -5
  115. package/dist/admin/layout-editor/variant-editor.js.map +1 -1
  116. package/dist/admin/primitives.d.ts.map +1 -1
  117. package/dist/admin/primitives.js +1 -1
  118. package/dist/admin/primitives.js.map +1 -1
  119. package/dist/admin/registry.d.ts +12 -0
  120. package/dist/admin/registry.d.ts.map +1 -1
  121. package/dist/admin/registry.js +12 -0
  122. package/dist/admin/registry.js.map +1 -1
  123. package/dist/admin/server.d.ts +10 -1
  124. package/dist/admin/server.d.ts.map +1 -1
  125. package/dist/admin/server.js +4 -1
  126. package/dist/admin/server.js.map +1 -1
  127. package/dist/admin/site-switcher.d.ts +16 -3
  128. package/dist/admin/site-switcher.d.ts.map +1 -1
  129. package/dist/admin/site-switcher.js +18 -3
  130. package/dist/admin/site-switcher.js.map +1 -1
  131. package/dist/admin/styles/admin.css +0 -3
  132. package/dist/admin/surface-matcher.d.ts +6 -2
  133. package/dist/admin/surface-matcher.d.ts.map +1 -1
  134. package/dist/admin/surface-matcher.js +42 -5
  135. package/dist/admin/surface-matcher.js.map +1 -1
  136. package/dist/admin/surfaces/components/components-data.d.ts +31 -11
  137. package/dist/admin/surfaces/components/components-data.d.ts.map +1 -1
  138. package/dist/admin/surfaces/components/components-data.js +17 -4
  139. package/dist/admin/surfaces/components/components-data.js.map +1 -1
  140. package/dist/admin/surfaces/components/components-list.d.ts.map +1 -1
  141. package/dist/admin/surfaces/components/components-list.js +20 -7
  142. package/dist/admin/surfaces/components/components-list.js.map +1 -1
  143. package/dist/admin/surfaces/components/definition-canvas.d.ts +11 -3
  144. package/dist/admin/surfaces/components/definition-canvas.d.ts.map +1 -1
  145. package/dist/admin/surfaces/components/definition-canvas.js +138 -17
  146. package/dist/admin/surfaces/components/definition-canvas.js.map +1 -1
  147. package/dist/admin/surfaces/dashboard/dashboard-index.d.ts.map +1 -1
  148. package/dist/admin/surfaces/dashboard/dashboard-index.js +2 -2
  149. package/dist/admin/surfaces/dashboard/dashboard-index.js.map +1 -1
  150. package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -1
  151. package/dist/admin/surfaces/layouts/layout-editor-client.js +12 -11
  152. package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -1
  153. package/dist/admin/surfaces/menus/menu-editor.d.ts.map +1 -1
  154. package/dist/admin/surfaces/menus/menu-editor.js +17 -4
  155. package/dist/admin/surfaces/menus/menu-editor.js.map +1 -1
  156. package/dist/admin/surfaces/menus/menu-tree.d.ts +18 -4
  157. package/dist/admin/surfaces/menus/menu-tree.d.ts.map +1 -1
  158. package/dist/admin/surfaces/menus/menu-tree.js +18 -3
  159. package/dist/admin/surfaces/menus/menu-tree.js.map +1 -1
  160. package/dist/admin/surfaces/menus/menus-data.d.ts +18 -0
  161. package/dist/admin/surfaces/menus/menus-data.d.ts.map +1 -1
  162. package/dist/admin/surfaces/menus/menus-data.js +4 -0
  163. package/dist/admin/surfaces/menus/menus-data.js.map +1 -1
  164. package/dist/admin/surfaces/menus/menus-list.d.ts.map +1 -1
  165. package/dist/admin/surfaces/menus/menus-list.js +2 -12
  166. package/dist/admin/surfaces/menus/menus-list.js.map +1 -1
  167. package/dist/admin/surfaces/users/users-data.d.ts +14 -0
  168. package/dist/admin/surfaces/users/users-data.d.ts.map +1 -1
  169. package/dist/admin/surfaces/users/users-data.js +19 -0
  170. package/dist/admin/surfaces/users/users-data.js.map +1 -1
  171. package/dist/admin/surfaces/users/users-detail.d.ts.map +1 -1
  172. package/dist/admin/surfaces/users/users-detail.js +40 -4
  173. package/dist/admin/surfaces/users/users-detail.js.map +1 -1
  174. package/dist/admin/surfaces/users/users-new.d.ts.map +1 -1
  175. package/dist/admin/surfaces/users/users-new.js +8 -5
  176. package/dist/admin/surfaces/users/users-new.js.map +1 -1
  177. package/dist/admin/user-form.d.ts +10 -1
  178. package/dist/admin/user-form.d.ts.map +1 -1
  179. package/dist/admin/user-form.js +2 -2
  180. package/dist/admin/user-form.js.map +1 -1
  181. package/dist/api/admin-features-routes.js +2 -2
  182. package/dist/api/admin-features-routes.js.map +1 -1
  183. package/dist/api/audience-preview-routes.d.ts +7 -0
  184. package/dist/api/audience-preview-routes.d.ts.map +1 -1
  185. package/dist/api/audience-preview-routes.js +4 -4
  186. package/dist/api/audience-preview-routes.js.map +1 -1
  187. package/dist/api/audience-routes.d.ts +7 -0
  188. package/dist/api/audience-routes.d.ts.map +1 -1
  189. package/dist/api/audience-routes.js +21 -15
  190. package/dist/api/audience-routes.js.map +1 -1
  191. package/dist/api/audience-runtime-routes.d.ts +6 -0
  192. package/dist/api/audience-runtime-routes.d.ts.map +1 -1
  193. package/dist/api/audience-runtime-routes.js +38 -3
  194. package/dist/api/audience-runtime-routes.js.map +1 -1
  195. package/dist/api/auth-routes.d.ts.map +1 -1
  196. package/dist/api/auth-routes.js +10 -4
  197. package/dist/api/auth-routes.js.map +1 -1
  198. package/dist/api/auth.d.ts +1 -0
  199. package/dist/api/auth.d.ts.map +1 -1
  200. package/dist/api/auth.js +43 -3
  201. package/dist/api/auth.js.map +1 -1
  202. package/dist/api/bulk-routes.d.ts.map +1 -1
  203. package/dist/api/bulk-routes.js +7 -7
  204. package/dist/api/bulk-routes.js.map +1 -1
  205. package/dist/api/category-routes.js +3 -3
  206. package/dist/api/category-routes.js.map +1 -1
  207. package/dist/api/comment-routes.js +8 -8
  208. package/dist/api/comment-routes.js.map +1 -1
  209. package/dist/api/component-routes.d.ts +25 -0
  210. package/dist/api/component-routes.d.ts.map +1 -1
  211. package/dist/api/component-routes.js +41 -16
  212. package/dist/api/component-routes.js.map +1 -1
  213. package/dist/api/content-routes.js +13 -13
  214. package/dist/api/content-routes.js.map +1 -1
  215. package/dist/api/dashboard-routes.js +1 -1
  216. package/dist/api/dashboard-routes.js.map +1 -1
  217. package/dist/api/experiment-routes.d.ts +7 -0
  218. package/dist/api/experiment-routes.d.ts.map +1 -1
  219. package/dist/api/experiment-routes.js +8 -8
  220. package/dist/api/experiment-routes.js.map +1 -1
  221. package/dist/api/experiment-runtime-routes.d.ts +6 -0
  222. package/dist/api/experiment-runtime-routes.d.ts.map +1 -1
  223. package/dist/api/experiment-runtime-routes.js +47 -11
  224. package/dist/api/experiment-runtime-routes.js.map +1 -1
  225. package/dist/api/feed-routes.d.ts +2 -2
  226. package/dist/api/feed-routes.js +3 -3
  227. package/dist/api/feed-routes.js.map +1 -1
  228. package/dist/api/form-routes.js +4 -4
  229. package/dist/api/form-routes.js.map +1 -1
  230. package/dist/api/graphql/resolvers.d.ts +1 -1
  231. package/dist/api/graphql/resolvers.d.ts.map +1 -1
  232. package/dist/api/graphql/resolvers.js +68 -33
  233. package/dist/api/graphql/resolvers.js.map +1 -1
  234. package/dist/api/group-routes.js +6 -6
  235. package/dist/api/group-routes.js.map +1 -1
  236. package/dist/api/index.d.ts +1 -0
  237. package/dist/api/index.d.ts.map +1 -1
  238. package/dist/api/index.js +39 -6
  239. package/dist/api/index.js.map +1 -1
  240. package/dist/api/layout-routes.d.ts.map +1 -1
  241. package/dist/api/layout-routes.js +27 -3
  242. package/dist/api/layout-routes.js.map +1 -1
  243. package/dist/api/media-routes.d.ts.map +1 -1
  244. package/dist/api/media-routes.js +50 -26
  245. package/dist/api/media-routes.js.map +1 -1
  246. package/dist/api/menu-routes.d.ts +9 -1
  247. package/dist/api/menu-routes.d.ts.map +1 -1
  248. package/dist/api/menu-routes.js +44 -10
  249. package/dist/api/menu-routes.js.map +1 -1
  250. package/dist/api/nav-routes.d.ts +6 -0
  251. package/dist/api/nav-routes.d.ts.map +1 -1
  252. package/dist/api/nav-routes.js +24 -3
  253. package/dist/api/nav-routes.js.map +1 -1
  254. package/dist/api/openapi.d.ts.map +1 -1
  255. package/dist/api/openapi.js +68 -33
  256. package/dist/api/openapi.js.map +1 -1
  257. package/dist/api/search-routes.js +2 -2
  258. package/dist/api/search-routes.js.map +1 -1
  259. package/dist/api/section-template-routes.d.ts.map +1 -1
  260. package/dist/api/section-template-routes.js +35 -18
  261. package/dist/api/section-template-routes.js.map +1 -1
  262. package/dist/api/site-admin-routes.d.ts +10 -1
  263. package/dist/api/site-admin-routes.d.ts.map +1 -1
  264. package/dist/api/site-admin-routes.js +21 -1
  265. package/dist/api/site-admin-routes.js.map +1 -1
  266. package/dist/api/site-context.d.ts +35 -5
  267. package/dist/api/site-context.d.ts.map +1 -1
  268. package/dist/api/site-context.js +21 -6
  269. package/dist/api/site-context.js.map +1 -1
  270. package/dist/api/tag-routes.js +3 -3
  271. package/dist/api/tag-routes.js.map +1 -1
  272. package/dist/api/translation-routes.js +5 -5
  273. package/dist/api/translation-routes.js.map +1 -1
  274. package/dist/api/user-routes.d.ts.map +1 -1
  275. package/dist/api/user-routes.js +134 -19
  276. package/dist/api/user-routes.js.map +1 -1
  277. package/dist/api/webhook-routes.js +5 -5
  278. package/dist/api/webhook-routes.js.map +1 -1
  279. package/dist/api/workflow-routes.js +8 -8
  280. package/dist/api/workflow-routes.js.map +1 -1
  281. package/dist/audiences/collectors/identity.d.ts +14 -1
  282. package/dist/audiences/collectors/identity.d.ts.map +1 -1
  283. package/dist/audiences/collectors/identity.js +16 -3
  284. package/dist/audiences/collectors/identity.js.map +1 -1
  285. package/dist/audiences/collectors/index.d.ts +12 -2
  286. package/dist/audiences/collectors/index.d.ts.map +1 -1
  287. package/dist/audiences/collectors/index.js +16 -5
  288. package/dist/audiences/collectors/index.js.map +1 -1
  289. package/dist/audiences/collectors/pinned-audience.d.ts +28 -2
  290. package/dist/audiences/collectors/pinned-audience.d.ts.map +1 -1
  291. package/dist/audiences/collectors/pinned-audience.js +35 -5
  292. package/dist/audiences/collectors/pinned-audience.js.map +1 -1
  293. package/dist/audiences/collectors/utm.d.ts +15 -1
  294. package/dist/audiences/collectors/utm.d.ts.map +1 -1
  295. package/dist/audiences/collectors/utm.js +16 -2
  296. package/dist/audiences/collectors/utm.js.map +1 -1
  297. package/dist/audiences/consent-config.d.ts +21 -0
  298. package/dist/audiences/consent-config.d.ts.map +1 -0
  299. package/dist/audiences/consent-config.js +15 -0
  300. package/dist/audiences/consent-config.js.map +1 -0
  301. package/dist/audiences/consent-startup.d.ts +39 -0
  302. package/dist/audiences/consent-startup.d.ts.map +1 -0
  303. package/dist/audiences/consent-startup.js +105 -0
  304. package/dist/audiences/consent-startup.js.map +1 -0
  305. package/dist/audiences/consent.d.ts +192 -0
  306. package/dist/audiences/consent.d.ts.map +1 -0
  307. package/dist/audiences/consent.js +322 -0
  308. package/dist/audiences/consent.js.map +1 -0
  309. package/dist/audiences/engine.d.ts +7 -0
  310. package/dist/audiences/engine.d.ts.map +1 -1
  311. package/dist/audiences/engine.js +6 -2
  312. package/dist/audiences/engine.js.map +1 -1
  313. package/dist/audiences/index.d.ts +3 -0
  314. package/dist/audiences/index.d.ts.map +1 -1
  315. package/dist/audiences/index.js +6 -0
  316. package/dist/audiences/index.js.map +1 -1
  317. package/dist/audiences/server-eval.d.ts +13 -1
  318. package/dist/audiences/server-eval.d.ts.map +1 -1
  319. package/dist/audiences/server-eval.js +18 -2
  320. package/dist/audiences/server-eval.js.map +1 -1
  321. package/dist/audiences/ssr.d.ts +18 -1
  322. package/dist/audiences/ssr.d.ts.map +1 -1
  323. package/dist/audiences/ssr.js +18 -1
  324. package/dist/audiences/ssr.js.map +1 -1
  325. package/dist/audiences/utm-persistence.d.ts +20 -7
  326. package/dist/audiences/utm-persistence.d.ts.map +1 -1
  327. package/dist/audiences/utm-persistence.js +20 -7
  328. package/dist/audiences/utm-persistence.js.map +1 -1
  329. package/dist/auth/roles.d.ts +11 -0
  330. package/dist/auth/roles.d.ts.map +1 -1
  331. package/dist/auth/roles.js +13 -0
  332. package/dist/auth/roles.js.map +1 -1
  333. package/dist/auth/tokens.d.ts +7 -0
  334. package/dist/auth/tokens.d.ts.map +1 -1
  335. package/dist/auth/tokens.js +24 -2
  336. package/dist/auth/tokens.js.map +1 -1
  337. package/dist/config/types.d.ts +43 -0
  338. package/dist/config/types.d.ts.map +1 -1
  339. package/dist/config/types.js.map +1 -1
  340. package/dist/config/validate.d.ts.map +1 -1
  341. package/dist/config/validate.js +3 -0
  342. package/dist/config/validate.js.map +1 -1
  343. package/dist/db/apply-snapshot.d.ts +18 -0
  344. package/dist/db/apply-snapshot.d.ts.map +1 -1
  345. package/dist/db/apply-snapshot.js +41 -16
  346. package/dist/db/apply-snapshot.js.map +1 -1
  347. package/dist/db/component-instance-queries.d.ts +79 -19
  348. package/dist/db/component-instance-queries.d.ts.map +1 -1
  349. package/dist/db/component-instance-queries.js +266 -83
  350. package/dist/db/component-instance-queries.js.map +1 -1
  351. package/dist/db/component-queries.d.ts +1 -16
  352. package/dist/db/component-queries.d.ts.map +1 -1
  353. package/dist/db/component-queries.js +7 -56
  354. package/dist/db/component-queries.js.map +1 -1
  355. package/dist/db/content-queries.d.ts.map +1 -1
  356. package/dist/db/content-queries.js +1 -2
  357. package/dist/db/content-queries.js.map +1 -1
  358. package/dist/db/extension-queries.d.ts +2 -2
  359. package/dist/db/feed-queries.d.ts +3 -3
  360. package/dist/db/index.d.ts +1 -0
  361. package/dist/db/index.d.ts.map +1 -1
  362. package/dist/db/index.js +1 -0
  363. package/dist/db/index.js.map +1 -1
  364. package/dist/db/layout-queries.d.ts +2 -1
  365. package/dist/db/layout-queries.d.ts.map +1 -1
  366. package/dist/db/layout-queries.js +3 -3
  367. package/dist/db/layout-queries.js.map +1 -1
  368. package/dist/db/menu-queries.d.ts +69 -5
  369. package/dist/db/menu-queries.d.ts.map +1 -1
  370. package/dist/db/menu-queries.js +120 -13
  371. package/dist/db/menu-queries.js.map +1 -1
  372. package/dist/db/section-template-queries.d.ts +62 -0
  373. package/dist/db/section-template-queries.d.ts.map +1 -0
  374. package/dist/db/section-template-queries.js +178 -0
  375. package/dist/db/section-template-queries.js.map +1 -0
  376. package/dist/db/site-plugin-queries.d.ts +2 -2
  377. package/dist/db/tree-queries.d.ts.map +1 -1
  378. package/dist/db/tree-queries.js +5 -0
  379. package/dist/db/tree-queries.js.map +1 -1
  380. package/dist/db/webhook-queries.d.ts +3 -3
  381. package/dist/db/workflow-queries.d.ts.map +1 -1
  382. package/dist/db/workflow-queries.js +5 -20
  383. package/dist/db/workflow-queries.js.map +1 -1
  384. package/dist/experiments/runtime.d.ts +21 -3
  385. package/dist/experiments/runtime.d.ts.map +1 -1
  386. package/dist/experiments/runtime.js +21 -3
  387. package/dist/experiments/runtime.js.map +1 -1
  388. package/dist/layout/component-refs.d.ts +90 -2
  389. package/dist/layout/component-refs.d.ts.map +1 -1
  390. package/dist/layout/component-refs.js +293 -16
  391. package/dist/layout/component-refs.js.map +1 -1
  392. package/dist/layout/index.d.ts +4 -3
  393. package/dist/layout/index.d.ts.map +1 -1
  394. package/dist/layout/index.js +3 -2
  395. package/dist/layout/index.js.map +1 -1
  396. package/dist/layout/legacy-variant-container.d.ts +123 -0
  397. package/dist/layout/legacy-variant-container.d.ts.map +1 -0
  398. package/dist/layout/legacy-variant-container.js +397 -0
  399. package/dist/layout/legacy-variant-container.js.map +1 -0
  400. package/dist/layout/module-permissions.d.ts.map +1 -1
  401. package/dist/layout/module-permissions.js +25 -1
  402. package/dist/layout/module-permissions.js.map +1 -1
  403. package/dist/layout/modules-extended.d.ts +28 -1
  404. package/dist/layout/modules-extended.d.ts.map +1 -1
  405. package/dist/layout/modules-extended.js +73 -1
  406. package/dist/layout/modules-extended.js.map +1 -1
  407. package/dist/layout/modules.d.ts.map +1 -1
  408. package/dist/layout/modules.js +9 -1
  409. package/dist/layout/modules.js.map +1 -1
  410. package/dist/layout/personalization.d.ts +83 -0
  411. package/dist/layout/personalization.d.ts.map +1 -1
  412. package/dist/layout/personalization.js +250 -4
  413. package/dist/layout/personalization.js.map +1 -1
  414. package/dist/layout/registry.d.ts.map +1 -1
  415. package/dist/layout/registry.js +20 -0
  416. package/dist/layout/registry.js.map +1 -1
  417. package/dist/layout/renderer.d.ts +29 -2
  418. package/dist/layout/renderer.d.ts.map +1 -1
  419. package/dist/layout/renderer.js +23 -6
  420. package/dist/layout/renderer.js.map +1 -1
  421. package/dist/layout/types.d.ts +17 -0
  422. package/dist/layout/types.d.ts.map +1 -1
  423. package/dist/layout/types.js +7 -0
  424. package/dist/layout/types.js.map +1 -1
  425. package/dist/media/inline-risk.d.ts +26 -0
  426. package/dist/media/inline-risk.d.ts.map +1 -0
  427. package/dist/media/inline-risk.js +142 -0
  428. package/dist/media/inline-risk.js.map +1 -0
  429. package/dist/nav/builder.d.ts.map +1 -1
  430. package/dist/nav/builder.js +15 -3
  431. package/dist/nav/builder.js.map +1 -1
  432. package/dist/nav/index.d.ts +1 -1
  433. package/dist/nav/index.d.ts.map +1 -1
  434. package/dist/nav/index.js +1 -1
  435. package/dist/nav/index.js.map +1 -1
  436. package/dist/nav/menu-resolver.d.ts +11 -0
  437. package/dist/nav/menu-resolver.d.ts.map +1 -1
  438. package/dist/nav/menu-resolver.js +49 -9
  439. package/dist/nav/menu-resolver.js.map +1 -1
  440. package/dist/nav/paths.d.ts +37 -0
  441. package/dist/nav/paths.d.ts.map +1 -0
  442. package/dist/nav/paths.js +48 -0
  443. package/dist/nav/paths.js.map +1 -0
  444. package/dist/nav/types.d.ts +6 -0
  445. package/dist/nav/types.d.ts.map +1 -1
  446. package/dist/nav/url-resolver.d.ts +1 -5
  447. package/dist/nav/url-resolver.d.ts.map +1 -1
  448. package/dist/nav/url-resolver.js +6 -12
  449. package/dist/nav/url-resolver.js.map +1 -1
  450. package/dist/schema/base.d.ts +24 -4
  451. package/dist/schema/base.d.ts.map +1 -1
  452. package/dist/schema/base.js +17 -4
  453. package/dist/schema/base.js.map +1 -1
  454. package/dist/schema/components.d.ts +90 -9
  455. package/dist/schema/components.d.ts.map +1 -1
  456. package/dist/schema/components.js +113 -22
  457. package/dist/schema/components.js.map +1 -1
  458. package/dist/schema/mysql-tables.d.ts +5758 -48
  459. package/dist/schema/mysql-tables.d.ts.map +1 -1
  460. package/dist/schema/mysql-tables.js +620 -46
  461. package/dist/schema/mysql-tables.js.map +1 -1
  462. package/dist/scope/kywi-form.d.ts +11 -0
  463. package/dist/scope/kywi-form.d.ts.map +1 -1
  464. package/dist/scope/kywi-form.js +11 -1
  465. package/dist/scope/kywi-form.js.map +1 -1
  466. package/dist/scope/kywi-wizard-form.d.ts.map +1 -1
  467. package/dist/scope/kywi-wizard-form.js +76 -2
  468. package/dist/scope/kywi-wizard-form.js.map +1 -1
  469. package/dist/scope/sticky-offset.d.ts +34 -13
  470. package/dist/scope/sticky-offset.d.ts.map +1 -1
  471. package/dist/scope/sticky-offset.js +236 -43
  472. package/dist/scope/sticky-offset.js.map +1 -1
  473. package/dist/site/styles.css +61 -15
  474. package/dist/versioning/scheduler.d.ts +28 -0
  475. package/dist/versioning/scheduler.d.ts.map +1 -1
  476. package/dist/versioning/scheduler.js +50 -3
  477. package/dist/versioning/scheduler.js.map +1 -1
  478. package/package.json +7 -2
@@ -80,6 +80,7 @@ const KIND_NOUN = {
80
80
  module: 'module',
81
81
  section: 'section',
82
82
  variantContainer: 'section and its variants',
83
+ moduleVariantContainer: 'module and its variants',
83
84
  };
84
85
  /**
85
86
  * Name (and optionally describe) a new component.
@@ -125,22 +126,45 @@ export function ComponentSaveDialog({ kind, subject, notice, defaultName = '', b
125
126
  * render time, so a published page shows the new definition on its next request
126
127
  * with nothing to re-publish — which is precisely the consequence an owner cannot
127
128
  * discover by looking at this page.
129
+ *
130
+ * `holderNoun` is what the document on the canvas is called (kywi-cms#156). Only
131
+ * one branch reads it, and that branch is the one that would otherwise lie: on a
132
+ * blueprint canvas with no counted saved layouts — a blueprint saved a moment
133
+ * ago, whose index rows the usage read has not seen yet — "so only this page
134
+ * changes" names a page the owner is not looking at.
128
135
  */
129
- export function blastRadiusSentence(radius) {
136
+ export function blastRadiusSentence(radius, holderNoun = 'page') {
130
137
  if (radius.state === 'pending')
131
138
  return 'Checking where this component is used…';
132
139
  if (radius.state === 'unknown') {
133
140
  return 'This updates every instance of this component, wherever it appears — including published pages, which change immediately.';
134
141
  }
135
- const { instances, pages, trashedInstances } = radius;
142
+ const { instances, pages, trashedInstances, blueprints } = radius;
136
143
  const trash = trashedInstances > 0
137
144
  ? ` (+${trashedInstances} in the trash)`
138
145
  : '';
139
- if (instances <= 1) {
140
- return `This is the only instance right now${trash}, so only this page changes — but the component itself is updated, so anything you place later shows the change.`;
141
- }
142
146
  const plural = (n, word) => `${n} ${word}${n === 1 ? '' : 's'}`;
143
- return `Updates ${plural(instances, 'instance')} across ${plural(pages, 'page')}${trash}, including published pages they change immediately, with nothing to re-publish.`;
147
+ // Saved layouts are NAMED, never folded into the page count (kywi-cms#156,
148
+ // owner decision D2). A blueprint is not a page — but the definition it links
149
+ // is what every page stamped out of it will render, so an owner deciding
150
+ // "update everywhere" has to see it. This is also what makes the fork usable
151
+ // on the blueprint canvas at all: the number it would have quoted there was
152
+ // zero, and a zero is why the fork used to run inert.
153
+ const layouts = blueprints > 0
154
+ ? ` It is also in ${plural(blueprints, 'saved layout')}, so every page made from ${blueprints === 1 ? 'it' : 'them'} shows the change too.`
155
+ : '';
156
+ if (instances > 1) {
157
+ return `Updates ${plural(instances, 'instance')} across ${plural(pages, 'page')}${trash}, including published pages — they change immediately, with nothing to re-publish.${layouts}`;
158
+ }
159
+ if (blueprints === 0) {
160
+ return `This is the only instance right now${trash}, so only this ${holderNoun} changes — but the component itself is updated, so anything you place later shows the change.`;
161
+ }
162
+ // With a saved layout in the picture, "so only this page changes" would be
163
+ // false — that layout changes too, and so does everything made from it.
164
+ const pagePart = instances === 1
165
+ ? `One page uses this component right now${trash}.`
166
+ : `No page uses this component right now${trash}.`;
167
+ return `${pagePart}${layouts} The component itself is updated, so anything you place later shows the change.`;
144
168
  }
145
169
  /**
146
170
  * What has to be said FIRST when the button the owner pressed promises that
@@ -173,12 +197,12 @@ const SAVE_MODE_NOTICE = {
173
197
  * far-reaching one, which takes the primary weight because it is the answer the
174
198
  * feature exists for.
175
199
  */
176
- export function ComponentForkDialog({ componentName, blastRadius, saveMode = 'save', step, stepCount, updateAllUnavailable, busy = false, error = null, onUpdateAll, onThisPageOnly, onCancel, }) {
200
+ export function ComponentForkDialog({ componentName, blastRadius, saveMode = 'save', step, stepCount, updateAllUnavailable, holderNoun = 'page', busy = false, error = null, onUpdateAll, onThisPageOnly, onCancel, }) {
177
201
  const name = componentName ?? null;
178
202
  const modeNotice = SAVE_MODE_NOTICE[saveMode];
179
- return (_jsxs(EditorDialog, { title: name ? `Save changes to “${name}”?` : 'Save changes to this component?', intro: modeNotice ? (_jsxs(_Fragment, { children: [_jsx("strong", { "data-fork-mode-notice": "", children: modeNotice }), ' ', blastRadiusSentence(blastRadius)] })) : (blastRadiusSentence(blastRadius)), error: error, onCancel: onCancel, actions: [
203
+ return (_jsxs(EditorDialog, { title: name ? `Save changes to “${name}”?` : 'Save changes to this component?', intro: modeNotice ? (_jsxs(_Fragment, { children: [_jsx("strong", { "data-fork-mode-notice": "", children: modeNotice }), ' ', blastRadiusSentence(blastRadius, holderNoun)] })) : (blastRadiusSentence(blastRadius, holderNoun)), error: error, onCancel: onCancel, actions: [
180
204
  {
181
- label: 'Save to this page only',
205
+ label: `Save to this ${holderNoun} only`,
182
206
  action: 'fork-detach',
183
207
  variant: 'secondary',
184
208
  disabled: busy,
@@ -192,4 +216,42 @@ export function ComponentForkDialog({ componentName, blastRadius, saveMode = 'sa
192
216
  },
193
217
  ], children: [stepCount > 1 && (_jsxs("p", { className: "kywi-editor-dialog-step", "data-fork-step": `${step}/${stepCount}`, children: ["Component ", step, " of ", stepCount] })), _jsxs("p", { className: "kywi-editor-dialog-intro", "data-fork-explainer": "", children: ["You edited ", name ? _jsx("strong", { children: name }) : 'a linked component', " on this page. Either the edit becomes the component \u2014 every instance follows it \u2014 or this one keeps the edit and stops following the component."] }), updateAllUnavailable ? (_jsx("p", { className: "kywi-editor-dialog-notice", "data-fork-unavailable": "", children: updateAllUnavailable })) : null] }));
194
218
  }
219
+ export function ArmDropDialog({ kind, armName, containerNoun, isDefaultArm, droppedLabel, onChoose, onConfirm, onCancel, }) {
220
+ if (kind === 'replace') {
221
+ return (_jsx(EditorDialog, { title: "Replace this variant's content?", intro: _jsxs(_Fragment, { children: ["Dropping ", droppedLabel ? _jsx("strong", { children: droppedLabel }) : 'this module', " into the ", _jsx("strong", { children: armName }), " variant of the ", containerNoun, " replaces what that variant shows. The module it holds now is discarded, and it leaves the column it came from."] }), actions: [
222
+ {
223
+ label: 'Replace variant content',
224
+ variant: 'danger',
225
+ action: 'arm-drop-replace',
226
+ onClick: () => onConfirm?.(),
227
+ },
228
+ ], onCancel: onCancel, children: _jsx("p", { className: "kywi-editor-dialog-notice", "data-arm-drop-undo": "", children: "One Undo puts everything back." }) }));
229
+ }
230
+ // The Default arm is the container's baseline, so moving it out leaves nothing
231
+ // to personalize: the container goes with it, exactly as "Remove
232
+ // personalization" does. Say so, rather than let an author discover it.
233
+ const moveLabel = isDefaultArm
234
+ ? 'Move onto page and remove personalization'
235
+ : 'Move onto page and remove this variant';
236
+ return (_jsxs(EditorDialog, { title: "Move this variant's content onto the page?", intro: _jsxs(_Fragment, { children: ["You dragged the ", _jsx("strong", { children: armName }), " variant's content out of the", ' ', containerNoun, ". A variant always holds exactly one module, so what happens to the variant itself is the question."] }), actions: [
237
+ {
238
+ label: 'Copy onto page',
239
+ variant: 'primary',
240
+ action: 'arm-drag-out-copy',
241
+ onClick: () => onChoose?.('copy'),
242
+ },
243
+ {
244
+ label: moveLabel,
245
+ variant: 'danger',
246
+ action: 'arm-drag-out-move',
247
+ onClick: () => onChoose?.('move'),
248
+ },
249
+ ], onCancel: onCancel, children: [_jsxs("ul", { className: "kywi-editor-dialog-choices", "data-arm-drag-out-choices": "", children: [_jsxs("li", { children: [_jsx("strong", { children: "Copy onto page" }), " \u2014 the variant keeps its module, and the page gets its own copy."] }), _jsxs("li", { children: [_jsx("strong", { children: moveLabel }), " \u2014", ' ', isDefaultArm
250
+ ? 'this content moves onto the page and the ' +
251
+ containerNoun +
252
+ ' is removed, discarding its other variants.'
253
+ : 'this content moves onto the page and the variant is removed from the ' +
254
+ containerNoun +
255
+ '.'] })] }), _jsx("p", { className: "kywi-editor-dialog-notice", "data-arm-drop-undo": "", children: "Either way it is one Undo away." })] }));
256
+ }
195
257
  //# sourceMappingURL=editor-dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-dialog.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/editor-dialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor-dialog.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/editor-dialog.tsx"],"names":[],"mappings":"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"}
@@ -256,6 +256,125 @@ export type EditorAction = {
256
256
  type: 'REMOVE_MODULE_VARIANT_ARM';
257
257
  containerId: string;
258
258
  armId: string;
259
+ }
260
+ /**
261
+ * Replace ONE arm's module with a fresh module of another type (kywi-cms#171)
262
+ * — the palette-drop-onto-an-arm gesture.
263
+ *
264
+ * The ARM is the durable thing and its module is content: `id`, `label`,
265
+ * `audienceId` and `weight` are untouched, so an arm keeps serving exactly the
266
+ * audience (or carrying exactly the experiment weight) it did before. Only
267
+ * `module` changes, and it changes wholesale — a fresh node with registry-seeded
268
+ * props, exactly as ADD_MODULE builds one, rather than the old node's props
269
+ * dragged into a type that has never heard of them.
270
+ *
271
+ * Arms may legitimately differ in type, the Default arm included: an arm is
272
+ * this container's content for one audience, not a variation on one shape.
273
+ *
274
+ * A LINKED arm module simply stops being linked — the new node carries no
275
+ * `componentId`, which the instance index reconciles on the next save.
276
+ */
277
+ | {
278
+ type: 'SWAP_MODULE_VARIANT_ARM_TYPE';
279
+ containerId: string;
280
+ armId: string;
281
+ moduleType: string;
282
+ /** Caller-minted, so the drop can select the new module (as ADD_MODULE does). */
283
+ moduleId?: string;
284
+ /** Registry-seeded defaults, so the swapped-in module renders visibly. */
285
+ props?: Record<string, unknown>;
286
+ }
287
+ /**
288
+ * Promote one arm's content onto the page, KEEPING the variant (kywi-cms#171).
289
+ *
290
+ * The column gets a clone with fresh ids; the arm keeps the module it had, so
291
+ * no arm can ever be left empty — `ModuleVariantEntry.module` is non-optional
292
+ * and every walker dereferences it, so an empty arm would ship a blank slot to
293
+ * live traffic. `cloneModule` semantics, matching every other duplicate in the
294
+ * editor: a linked arm module clones into a second PLACEMENT of the same
295
+ * component rather than a copy that has quietly stopped following it.
296
+ */
297
+ | {
298
+ type: 'COPY_ARM_MODULE_TO_COLUMN';
299
+ containerId: string;
300
+ armId: string;
301
+ toColumnId: string;
302
+ toIndex: number;
303
+ /** Caller-minted, so the drop can select the copy it just made. */
304
+ moduleId?: string;
305
+ }
306
+ /**
307
+ * Move one arm's content onto the page, REMOVING the variant (kywi-cms#171).
308
+ *
309
+ * Two shapes, because an arm is not a uniform thing:
310
+ * - a CHALLENGER arm: the arm is dropped from `variants` and its module is
311
+ * spliced into the column. The container stays, still personalizing its
312
+ * Default content;
313
+ * - the DEFAULT arm: there is no container left to personalize once its
314
+ * baseline walks off, so the container is unwrapped — removed from the
315
+ * column, challengers discarded, exactly the semantic
316
+ * UNWRAP_MODULE_VARIANT_CONTAINER already carries (and, like it, undo
317
+ * restores them).
318
+ *
319
+ * `toIndex` is the position in the destination column AFTER the source has
320
+ * been taken out, matching MOVE_MODULE's own convention.
321
+ */
322
+ | {
323
+ type: 'MOVE_ARM_MODULE_TO_COLUMN';
324
+ containerId: string;
325
+ armId: string;
326
+ toColumnId: string;
327
+ toIndex: number;
328
+ }
329
+ /**
330
+ * Move a plain module off the page and INTO one arm (kywi-cms#171), replacing
331
+ * whatever that arm held. The displaced module is discarded — undo restores
332
+ * it — matching how UNWRAP_* discards challengers.
333
+ *
334
+ * Refused when the source is not a plain module in a column: a module already
335
+ * inside a module-level container is an ARM's content (the arm is the unit,
336
+ * and D2 rules out arm-to-arm this pass), and a whole container moving into an
337
+ * arm is the nesting containers never do.
338
+ */
339
+ | {
340
+ type: 'MOVE_MODULE_INTO_ARM';
341
+ moduleId: string;
342
+ containerId: string;
343
+ armId: string;
344
+ }
345
+ /**
346
+ * Swap a module-level variant container in place (kywi-cms#170) — the fourth
347
+ * member of the REPLACE_* family, used to connect a container to a saved
348
+ * `moduleVariantContainer` component (stamps `componentId`) and to detach it
349
+ * back into an independent copy. The replacement is built by the caller, which
350
+ * holds the definition and the pure helpers; the reducer only positions it.
351
+ *
352
+ * POSITIONAL, exactly like UNWRAP_MODULE_VARIANT_CONTAINER: the lookup has
353
+ * already resolved which node this is, so no id predicate can mistake a
354
+ * sibling for it — and the replacement may legitimately carry a DIFFERENT id
355
+ * from the one addressed here.
356
+ */
357
+ | {
358
+ type: 'REPLACE_MODULE_VARIANT_CONTAINER';
359
+ containerId: string;
360
+ container: ModuleVariantContainer;
361
+ }
362
+ /**
363
+ * Place a saved module-container component into a column (kywi-cms#170, owner
364
+ * decision D2): the rail/palette "Insert component" flow. Fresh ids for the
365
+ * container, its arms and every arm module (`cloneModuleVariantContainer`,
366
+ * which preserves `componentId` — a placement stays a placement — and detaches
367
+ * every VARIANT arm's link so two placements can never share one).
368
+ *
369
+ * Column + index rather than append, matching ADD_MODULE: a module-level
370
+ * container goes where a module goes, and "at the end of some column" is not
371
+ * a position anyone asked for.
372
+ */
373
+ | {
374
+ type: 'ADD_MODULE_VARIANT_CONTAINER';
375
+ columnId: string;
376
+ index: number;
377
+ container: ModuleVariantContainer;
259
378
  } | {
260
379
  type: 'UNDO';
261
380
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"editor-state.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/editor-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor-state.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/editor-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAEV,cAAc,EACd,aAAa,EACb,UAAU,EACV,sBAAsB,EAItB,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAiB9B,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,kBAAkB,GAClB,wBAAwB,GACxB,IAAI,CAAA;AAER;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,IAAI,CAAC,EAAE,eAAe,EAAE,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,IAAI,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,IAAI,CAAC,EAAE,qBAAqB,EAAE,CAAA;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,OAAO,CAAA;IACnB,UAAU,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAA;IACvC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,cAAc,CAAA;IACtB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,EAAE,aAAa,CAAA;IAC3B,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/D;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC,GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAEhD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,0BAA0B,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,0BAA0B,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAC3D;;;;;;;GAOG;GACD;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAA;CAAE;AACzF;;;;;GAKG;GACD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE;AACpF;;;;;;GAMG;GACD;IAAE,IAAI,EAAE,mCAAmC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAAE;AAC5H;;;;;GAKG;GACD;IAAE,IAAI,EAAE,0BAA0B,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AAE3D;;;;;;;;GAQG;GACD;IAAE,IAAI,EAAE,kCAAkC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAAE;AAC1H,qHAAqH;GACnH;IAAE,IAAI,EAAE,iCAAiC,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,iCAAiC,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,2BAA2B,CAAA;CAAE;AACtG,mGAAmG;GACjG;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAC3E;;;;;;;;;;;;;;;;GAgBG;GACD;IACE,IAAI,EAAE,8BAA8B,CAAA;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AACH;;;;;;;;;GASG;GACD;IACE,IAAI,EAAE,2BAA2B,CAAA;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AACH;;;;;;;;;;;;;;;GAeG;GACD;IACE,IAAI,EAAE,2BAA2B,CAAA;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AACH;;;;;;;;;GASG;GACD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACxF;;;;;;;;;;;GAWG;GACD;IACE,IAAI,EAAE,kCAAkC,CAAA;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,sBAAsB,CAAA;CAClC;AACH;;;;;;;;;;GAUG;GACD;IACE,IAAI,EAAE,8BAA8B,CAAA;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,sBAAsB,CAAA;CAClC,GACD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;AAClB;;;;;;;;;;;;;;;;GAgBG;GACD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE;AAChD;;;;;;;;;;;;;;;;;;;;;;GAsBG;GACD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE;AAC1D;;;;;;;;;;;;;;;;;;;;GAoBG;GACD;IAAE,IAAI,EAAE,0BAA0B,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE;AAC9D;;;;;;;;GAQG;GACD;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAA;AA2M9B,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,WAAW,CAatE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,CA02BnF"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { isLayoutSection, isModuleNode, mapColumnNode } from '../../layout/types.js';
7
7
  import { generateId } from './generate-id.js';
8
- import { cloneModuleDetached, cloneSection, cloneVariantContainer } from './component-actions.js';
8
+ import { cloneModule, cloneModuleDetached, cloneModuleVariantContainer, cloneSection, cloneVariantContainer } from './component-actions.js';
9
9
  import { DEFAULT_ARM_ID, armSections, findColumnIn, findModuleIn, findModuleVariantContainerIn, findSectionIn, findVariantContainerIn, } from './node-lookup.js';
10
10
  // ── Helpers (internal) ───────────────────────────────────────────
11
11
  /**
@@ -149,6 +149,21 @@ function writeModuleAt(found, next) {
149
149
  if (arm)
150
150
  arm.module = next;
151
151
  }
152
+ function armModuleSlot(container, armId) {
153
+ if (armId === DEFAULT_ARM_ID) {
154
+ return {
155
+ get: () => container.defaultModule,
156
+ set: (next) => { container.defaultModule = next; },
157
+ };
158
+ }
159
+ const arm = container.variants.find(v => v.id === armId);
160
+ if (!arm)
161
+ return null;
162
+ return {
163
+ get: () => arm.module,
164
+ set: (next) => { arm.module = next; },
165
+ };
166
+ }
152
167
  // ── Public API ───────────────────────────────────────────────────
153
168
  export function createInitialState(layout) {
154
169
  return {
@@ -204,6 +219,17 @@ export function editorReducer(state, action) {
204
219
  historyIndex: newIndex,
205
220
  selectedId: null,
206
221
  selectedType: null,
222
+ // kywi-cms#158: UNDO/REDO used to leave `isDirty` untouched, so undoing
223
+ // straight back to the exact document that was last saved left the
224
+ // toolbar Save button disabled and the document falsely reported as
225
+ // dirty. `originalLayout` IS the last-saved snapshot by reference —
226
+ // MARK_SAVED/REFRESH_COMPONENT_COPIES/RESET_TO_SAVED all set it to the
227
+ // very object that was persisted — so a reference-equality recompute is
228
+ // exact ("dirty iff current state differs from the last-saved
229
+ // snapshot") and needs no separate saved-history-index bookkeeping: it
230
+ // stays correct even if that history entry is later truncated away by
231
+ // an edit made after undoing further back.
232
+ isDirty: layout !== state.originalLayout,
207
233
  };
208
234
  }
209
235
  case 'REDO': {
@@ -219,6 +245,8 @@ export function editorReducer(state, action) {
219
245
  historyIndex: newIndex,
220
246
  selectedId: null,
221
247
  selectedType: null,
248
+ // See UNDO's comment above — same fix, same reasoning.
249
+ isDirty: layout !== state.originalLayout,
222
250
  };
223
251
  }
224
252
  case 'MARK_SAVED':
@@ -490,11 +518,14 @@ export function editorReducer(state, action) {
490
518
  case 'REMOVE_MODULE': {
491
519
  const regions = cloneRegions(getActiveRegions(state));
492
520
  const found = findModule(regions, action.moduleId);
493
- if (!found) {
494
- const layout = setActiveRegions(state, regions);
495
- const hist = commitToHistory(state, layout);
496
- return { ...state, layout, ...hist, isDirty: true };
497
- }
521
+ // A missing target is a true no-op — don't dirty the doc or push history
522
+ // for an edit that changed nothing (kywi-cms#169, matching REPLACE_SECTION's
523
+ // own `!found` contract). Unreachable via the shipped delete path (the rail
524
+ // only offers the button for a module it just found), but a host dispatching
525
+ // REMOVE_MODULE directly with a stale or container id used to phantom-dirty
526
+ // the document and push an unauthored history entry.
527
+ if (!found)
528
+ return state;
498
529
  // A module inside a module-level container is not independently
499
530
  // removable: the ARM is the unit (remove it from the container's rail),
500
531
  // and the Default arm cannot go at all without the container going with
@@ -715,6 +746,41 @@ export function editorReducer(state, action) {
715
746
  const hist = commitToHistory(state, layout);
716
747
  return { ...state, layout, ...hist, isDirty: true };
717
748
  }
749
+ case 'REPLACE_MODULE_VARIANT_CONTAINER': {
750
+ // Mirrors REPLACE_VARIANT_CONTAINER, including the no-op on a missing
751
+ // target: an edit that changed nothing must not dirty the document or push
752
+ // history.
753
+ const regions = cloneRegions(getActiveRegions(state));
754
+ const found = findModuleVariantContainerIn(regions, action.containerId);
755
+ if (!found)
756
+ return state;
757
+ found.column.nodes[found.index] = action.container;
758
+ const layout = setActiveRegions(state, regions);
759
+ const hist = commitToHistory(state, layout);
760
+ return { ...state, layout, ...hist, isDirty: true };
761
+ }
762
+ case 'ADD_MODULE_VARIANT_CONTAINER': {
763
+ const regions = cloneRegions(getActiveRegions(state));
764
+ const found = findColumn(regions, action.columnId);
765
+ if (!found)
766
+ return state;
767
+ const placed = cloneModuleVariantContainer(action.container);
768
+ // A placement of an `ab_test` component gets its OWN run, never the
769
+ // definition's — the same rule `buildConnectedVariantContainerNode` follows
770
+ // one level up. `cloneModuleVariantContainer` copies the binding verbatim
771
+ // (the honest duplicate semantic), so the mint happens here, where the act
772
+ // is "place a new one" rather than "duplicate this one".
773
+ if (placed.mode === 'ab_test') {
774
+ placed.experimentId = generateId();
775
+ delete placed.winnerId;
776
+ }
777
+ const nodes = [...found.column.nodes];
778
+ nodes.splice(action.index, 0, placed);
779
+ found.column.nodes = nodes;
780
+ const layout = setActiveRegions(state, regions);
781
+ const hist = commitToHistory(state, layout);
782
+ return { ...state, layout, ...hist, isDirty: true };
783
+ }
718
784
  case 'ADD_MODULE_VARIANT_ARM': {
719
785
  const regions = cloneRegions(getActiveRegions(state));
720
786
  const found = findModuleVariantContainerIn(regions, action.containerId);
@@ -752,6 +818,122 @@ export function editorReducer(state, action) {
752
818
  const hist = commitToHistory(state, layout);
753
819
  return { ...state, layout, ...hist, isDirty: true };
754
820
  }
821
+ case 'SWAP_MODULE_VARIANT_ARM_TYPE': {
822
+ const regions = cloneRegions(getActiveRegions(state));
823
+ // Located through the CONTAINER, never by an id predicate over the
824
+ // column — the same rule UNWRAP_MODULE_VARIANT_CONTAINER follows, so a
825
+ // sibling container can never be mistaken for this one.
826
+ const found = findModuleVariantContainerIn(regions, action.containerId);
827
+ if (!found)
828
+ return state;
829
+ const slot = armModuleSlot(found.container, action.armId);
830
+ // Refused loudly-in-code rather than falling back to the Default arm: an
831
+ // arm id that names nothing is a bug in the caller, and swapping the
832
+ // baseline instead would be a silent, undoable-but-invisible edit.
833
+ if (!slot)
834
+ return state;
835
+ slot.set({
836
+ id: action.moduleId ?? generateId(),
837
+ type: action.moduleType,
838
+ instanceId: generateId(),
839
+ props: action.props ? { ...action.props } : {},
840
+ style: {},
841
+ });
842
+ const layout = setActiveRegions(state, regions);
843
+ const hist = commitToHistory(state, layout);
844
+ return { ...state, layout, ...hist, isDirty: true };
845
+ }
846
+ case 'COPY_ARM_MODULE_TO_COLUMN': {
847
+ const regions = cloneRegions(getActiveRegions(state));
848
+ const found = findModuleVariantContainerIn(regions, action.containerId);
849
+ if (!found)
850
+ return state;
851
+ const slot = armModuleSlot(found.container, action.armId);
852
+ if (!slot)
853
+ return state;
854
+ const toLoc = findColumn(regions, action.toColumnId);
855
+ if (!toLoc)
856
+ return state;
857
+ // Fresh ids throughout (`cloneModule`), then the caller's id on the root
858
+ // so the drop can select what it just made — the same bargain ADD_MODULE
859
+ // strikes with `moduleId`.
860
+ const copy = cloneModule(slot.get());
861
+ if (action.moduleId)
862
+ copy.id = action.moduleId;
863
+ const nodes = [...toLoc.column.nodes];
864
+ nodes.splice(action.toIndex, 0, copy);
865
+ toLoc.column.nodes = nodes;
866
+ const layout = setActiveRegions(state, regions);
867
+ const hist = commitToHistory(state, layout);
868
+ return { ...state, layout, ...hist, isDirty: true };
869
+ }
870
+ case 'MOVE_ARM_MODULE_TO_COLUMN': {
871
+ const regions = cloneRegions(getActiveRegions(state));
872
+ const found = findModuleVariantContainerIn(regions, action.containerId);
873
+ if (!found)
874
+ return state;
875
+ const slot = armModuleSlot(found.container, action.armId);
876
+ if (!slot)
877
+ return state;
878
+ const toLoc = findColumn(regions, action.toColumnId);
879
+ if (!toLoc)
880
+ return state;
881
+ const moved = slot.get();
882
+ if (action.armId === DEFAULT_ARM_ID) {
883
+ // Unwrap: the container goes, taking its challengers with it. POSITIONAL
884
+ // (`found.index`), like UNWRAP_MODULE_VARIANT_CONTAINER — the lookup has
885
+ // already resolved which node this is, so no id predicate can mistake a
886
+ // sibling for it.
887
+ found.column.nodes.splice(found.index, 1);
888
+ }
889
+ else {
890
+ found.container.variants = found.container.variants.filter(v => v.id !== action.armId);
891
+ }
892
+ // Spliced IN PLACE, into the very array the removal above mutated: when
893
+ // the destination is the container's own column those are the same array,
894
+ // and rebuilding it from a copy taken before the removal would put the
895
+ // container straight back. Same shape as MOVE_MODULE's own splice pair.
896
+ toLoc.column.nodes.splice(action.toIndex, 0, moved);
897
+ const layout = setActiveRegions(state, regions);
898
+ const hist = commitToHistory(state, layout);
899
+ return { ...state, layout, ...hist, isDirty: true };
900
+ }
901
+ case 'MOVE_MODULE_INTO_ARM': {
902
+ const regions = cloneRegions(getActiveRegions(state));
903
+ const source = findModule(regions, action.moduleId);
904
+ if (!source)
905
+ return state;
906
+ // Containers never nest, and an arm module belongs to its arm: only a
907
+ // plain module sitting directly in a column may move into an arm. A
908
+ // container id never reaches here at all — `findModuleIn` finds modules.
909
+ if (source.moduleContainer !== null)
910
+ return state;
911
+ const found = findModuleVariantContainerIn(regions, action.containerId);
912
+ if (!found)
913
+ return state;
914
+ const slot = armModuleSlot(found.container, action.armId);
915
+ if (!slot)
916
+ return state;
917
+ // DETACHED on the way in, exactly as `cloneModuleDetached` seeds a new arm
918
+ // (kywi-cms#171 review). An arm is never independently linkable
919
+ // (kywi-cms#170 D1): editing a linked arm would rewrite the shared
920
+ // component through a node the fork cannot even see it in — `withoutIdentity`
921
+ // strips a container's own `componentId`, not one buried on an arm's module
922
+ // — so a link that rode in here would be invisible to every reconciliation
923
+ // that exists. The one grandfathered case (`use-component-connect.tsx`)
924
+ // predates the rule; nothing may create a new one.
925
+ const { componentId: _linkDropped, ...moved } = source.module;
926
+ // Module-only, for the same reason as `writeModuleAt`: an action that only
927
+ // knows how to take a plain module out of a column must not be able to
928
+ // remove a container on an id match alone.
929
+ source.column.nodes = source.column.nodes.filter(n => !(isModuleNode(n) && n.id === action.moduleId));
930
+ // The displaced module is discarded, not parked anywhere: an arm holds
931
+ // exactly one module, and undo is the way back.
932
+ slot.set(moved);
933
+ const layout = setActiveRegions(state, regions);
934
+ const hist = commitToHistory(state, layout);
935
+ return { ...state, layout, ...hist, isDirty: true };
936
+ }
755
937
  case 'UPDATE_MODULE_VARIANT_CONTAINER': {
756
938
  const regions = cloneRegions(getActiveRegions(state));
757
939
  const found = findModuleVariantContainerIn(regions, action.containerId);