@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.
- package/AGENT-PATTERNS.md +153 -17
- package/README.md +38 -12
- package/dist/admin/chrome.d.ts.map +1 -1
- package/dist/admin/chrome.js +6 -7
- package/dist/admin/chrome.js.map +1 -1
- package/dist/admin/field-components.d.ts.map +1 -1
- package/dist/admin/field-components.js +27 -1
- package/dist/admin/field-components.js.map +1 -1
- package/dist/admin/form-helpers.d.ts.map +1 -1
- package/dist/admin/form-helpers.js +6 -1
- package/dist/admin/form-helpers.js.map +1 -1
- package/dist/admin/layout-editor/chrome-env.d.ts +35 -0
- package/dist/admin/layout-editor/chrome-env.d.ts.map +1 -0
- package/dist/admin/layout-editor/chrome-env.js +13 -0
- package/dist/admin/layout-editor/chrome-env.js.map +1 -0
- package/dist/admin/layout-editor/component-actions.d.ts +58 -7
- package/dist/admin/layout-editor/component-actions.d.ts.map +1 -1
- package/dist/admin/layout-editor/component-actions.js +131 -5
- package/dist/admin/layout-editor/component-actions.js.map +1 -1
- package/dist/admin/layout-editor/component-fork.d.ts +4 -4
- package/dist/admin/layout-editor/component-fork.d.ts.map +1 -1
- package/dist/admin/layout-editor/component-fork.js +76 -10
- package/dist/admin/layout-editor/component-fork.js.map +1 -1
- package/dist/admin/layout-editor/component-picker-field.d.ts +17 -3
- package/dist/admin/layout-editor/component-picker-field.d.ts.map +1 -1
- package/dist/admin/layout-editor/component-picker-field.js +5 -2
- package/dist/admin/layout-editor/component-picker-field.js.map +1 -1
- package/dist/admin/layout-editor/drag-feedback.d.ts +25 -1
- package/dist/admin/layout-editor/drag-feedback.d.ts.map +1 -1
- package/dist/admin/layout-editor/drag-feedback.js +9 -0
- package/dist/admin/layout-editor/drag-feedback.js.map +1 -1
- package/dist/admin/layout-editor/drag-utils.d.ts +103 -5
- package/dist/admin/layout-editor/drag-utils.d.ts.map +1 -1
- package/dist/admin/layout-editor/drag-utils.js +131 -4
- package/dist/admin/layout-editor/drag-utils.js.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.d.ts +11 -0
- package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.js +134 -20
- package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
- package/dist/admin/layout-editor/editor-dialog.d.ts +58 -3
- package/dist/admin/layout-editor/editor-dialog.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-dialog.js +71 -9
- package/dist/admin/layout-editor/editor-dialog.js.map +1 -1
- package/dist/admin/layout-editor/editor-state.d.ts +119 -0
- package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-state.js +188 -6
- package/dist/admin/layout-editor/editor-state.js.map +1 -1
- package/dist/admin/layout-editor/editor-toolbar.d.ts +10 -1
- package/dist/admin/layout-editor/editor-toolbar.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-toolbar.js +2 -2
- package/dist/admin/layout-editor/editor-toolbar.js.map +1 -1
- package/dist/admin/layout-editor/editor.css +216 -8
- package/dist/admin/layout-editor/inline-text.d.ts +15 -1
- package/dist/admin/layout-editor/inline-text.d.ts.map +1 -1
- package/dist/admin/layout-editor/inline-text.js +30 -2
- package/dist/admin/layout-editor/inline-text.js.map +1 -1
- package/dist/admin/layout-editor/layout-editor.d.ts +21 -16
- package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
- package/dist/admin/layout-editor/layout-editor.js +40 -17
- package/dist/admin/layout-editor/layout-editor.js.map +1 -1
- package/dist/admin/layout-editor/linked-component-notes.d.ts +88 -0
- package/dist/admin/layout-editor/linked-component-notes.d.ts.map +1 -0
- package/dist/admin/layout-editor/linked-component-notes.js +88 -0
- package/dist/admin/layout-editor/linked-component-notes.js.map +1 -0
- package/dist/admin/layout-editor/module-overlay.d.ts +23 -4
- package/dist/admin/layout-editor/module-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/module-overlay.js +56 -10
- package/dist/admin/layout-editor/module-overlay.js.map +1 -1
- package/dist/admin/layout-editor/module-variant-container-config.d.ts.map +1 -1
- package/dist/admin/layout-editor/module-variant-container-config.js +9 -2
- package/dist/admin/layout-editor/module-variant-container-config.js.map +1 -1
- package/dist/admin/layout-editor/module-variant-container-panel.d.ts +75 -0
- package/dist/admin/layout-editor/module-variant-container-panel.d.ts.map +1 -0
- package/dist/admin/layout-editor/module-variant-container-panel.js +29 -0
- package/dist/admin/layout-editor/module-variant-container-panel.js.map +1 -0
- package/dist/admin/layout-editor/node-lookup.d.ts.map +1 -1
- package/dist/admin/layout-editor/node-lookup.js +33 -3
- package/dist/admin/layout-editor/node-lookup.js.map +1 -1
- package/dist/admin/layout-editor/overlay-shell.d.ts.map +1 -1
- package/dist/admin/layout-editor/overlay-shell.js +19 -4
- package/dist/admin/layout-editor/overlay-shell.js.map +1 -1
- package/dist/admin/layout-editor/props-panel.d.ts +28 -11
- package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
- package/dist/admin/layout-editor/props-panel.js +75 -125
- package/dist/admin/layout-editor/props-panel.js.map +1 -1
- package/dist/admin/layout-editor/section-variant-container-config.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-variant-container-config.js +11 -2
- package/dist/admin/layout-editor/section-variant-container-config.js.map +1 -1
- package/dist/admin/layout-editor/use-chrome-flip.d.ts +99 -11
- package/dist/admin/layout-editor/use-chrome-flip.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-chrome-flip.js +268 -97
- package/dist/admin/layout-editor/use-chrome-flip.js.map +1 -1
- package/dist/admin/layout-editor/use-component-connect.d.ts +13 -0
- package/dist/admin/layout-editor/use-component-connect.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-component-connect.js +116 -20
- package/dist/admin/layout-editor/use-component-connect.js.map +1 -1
- package/dist/admin/layout-editor/use-component-fork.d.ts +49 -19
- package/dist/admin/layout-editor/use-component-fork.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-component-fork.js +28 -19
- package/dist/admin/layout-editor/use-component-fork.js.map +1 -1
- package/dist/admin/layout-editor/use-component-library.d.ts +4 -4
- package/dist/admin/layout-editor/use-component-library.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-component-library.js +1 -1
- package/dist/admin/layout-editor/use-component-library.js.map +1 -1
- package/dist/admin/layout-editor/use-editor-dnd.d.ts +10 -0
- package/dist/admin/layout-editor/use-editor-dnd.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-editor-dnd.js +234 -14
- package/dist/admin/layout-editor/use-editor-dnd.js.map +1 -1
- package/dist/admin/layout-editor/variant-container-config.d.ts.map +1 -1
- package/dist/admin/layout-editor/variant-container-config.js +1 -1
- package/dist/admin/layout-editor/variant-container-config.js.map +1 -1
- package/dist/admin/layout-editor/variant-editor.d.ts +16 -15
- package/dist/admin/layout-editor/variant-editor.d.ts.map +1 -1
- package/dist/admin/layout-editor/variant-editor.js +16 -5
- package/dist/admin/layout-editor/variant-editor.js.map +1 -1
- package/dist/admin/primitives.d.ts.map +1 -1
- package/dist/admin/primitives.js +1 -1
- package/dist/admin/primitives.js.map +1 -1
- package/dist/admin/registry.d.ts +12 -0
- package/dist/admin/registry.d.ts.map +1 -1
- package/dist/admin/registry.js +12 -0
- package/dist/admin/registry.js.map +1 -1
- package/dist/admin/server.d.ts +10 -1
- package/dist/admin/server.d.ts.map +1 -1
- package/dist/admin/server.js +4 -1
- package/dist/admin/server.js.map +1 -1
- package/dist/admin/site-switcher.d.ts +16 -3
- package/dist/admin/site-switcher.d.ts.map +1 -1
- package/dist/admin/site-switcher.js +18 -3
- package/dist/admin/site-switcher.js.map +1 -1
- package/dist/admin/styles/admin.css +0 -3
- package/dist/admin/surface-matcher.d.ts +6 -2
- package/dist/admin/surface-matcher.d.ts.map +1 -1
- package/dist/admin/surface-matcher.js +42 -5
- package/dist/admin/surface-matcher.js.map +1 -1
- package/dist/admin/surfaces/components/components-data.d.ts +31 -11
- package/dist/admin/surfaces/components/components-data.d.ts.map +1 -1
- package/dist/admin/surfaces/components/components-data.js +17 -4
- package/dist/admin/surfaces/components/components-data.js.map +1 -1
- package/dist/admin/surfaces/components/components-list.d.ts.map +1 -1
- package/dist/admin/surfaces/components/components-list.js +20 -7
- package/dist/admin/surfaces/components/components-list.js.map +1 -1
- package/dist/admin/surfaces/components/definition-canvas.d.ts +11 -3
- package/dist/admin/surfaces/components/definition-canvas.d.ts.map +1 -1
- package/dist/admin/surfaces/components/definition-canvas.js +138 -17
- package/dist/admin/surfaces/components/definition-canvas.js.map +1 -1
- package/dist/admin/surfaces/dashboard/dashboard-index.d.ts.map +1 -1
- package/dist/admin/surfaces/dashboard/dashboard-index.js +2 -2
- package/dist/admin/surfaces/dashboard/dashboard-index.js.map +1 -1
- package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -1
- package/dist/admin/surfaces/layouts/layout-editor-client.js +12 -11
- package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -1
- package/dist/admin/surfaces/menus/menu-editor.d.ts.map +1 -1
- package/dist/admin/surfaces/menus/menu-editor.js +17 -4
- package/dist/admin/surfaces/menus/menu-editor.js.map +1 -1
- package/dist/admin/surfaces/menus/menu-tree.d.ts +18 -4
- package/dist/admin/surfaces/menus/menu-tree.d.ts.map +1 -1
- package/dist/admin/surfaces/menus/menu-tree.js +18 -3
- package/dist/admin/surfaces/menus/menu-tree.js.map +1 -1
- package/dist/admin/surfaces/menus/menus-data.d.ts +18 -0
- package/dist/admin/surfaces/menus/menus-data.d.ts.map +1 -1
- package/dist/admin/surfaces/menus/menus-data.js +4 -0
- package/dist/admin/surfaces/menus/menus-data.js.map +1 -1
- package/dist/admin/surfaces/menus/menus-list.d.ts.map +1 -1
- package/dist/admin/surfaces/menus/menus-list.js +2 -12
- package/dist/admin/surfaces/menus/menus-list.js.map +1 -1
- package/dist/admin/surfaces/users/users-data.d.ts +14 -0
- package/dist/admin/surfaces/users/users-data.d.ts.map +1 -1
- package/dist/admin/surfaces/users/users-data.js +19 -0
- package/dist/admin/surfaces/users/users-data.js.map +1 -1
- package/dist/admin/surfaces/users/users-detail.d.ts.map +1 -1
- package/dist/admin/surfaces/users/users-detail.js +40 -4
- package/dist/admin/surfaces/users/users-detail.js.map +1 -1
- package/dist/admin/surfaces/users/users-new.d.ts.map +1 -1
- package/dist/admin/surfaces/users/users-new.js +8 -5
- package/dist/admin/surfaces/users/users-new.js.map +1 -1
- package/dist/admin/user-form.d.ts +10 -1
- package/dist/admin/user-form.d.ts.map +1 -1
- package/dist/admin/user-form.js +2 -2
- package/dist/admin/user-form.js.map +1 -1
- package/dist/api/admin-features-routes.js +2 -2
- package/dist/api/admin-features-routes.js.map +1 -1
- package/dist/api/audience-preview-routes.d.ts +7 -0
- package/dist/api/audience-preview-routes.d.ts.map +1 -1
- package/dist/api/audience-preview-routes.js +4 -4
- package/dist/api/audience-preview-routes.js.map +1 -1
- package/dist/api/audience-routes.d.ts +7 -0
- package/dist/api/audience-routes.d.ts.map +1 -1
- package/dist/api/audience-routes.js +21 -15
- package/dist/api/audience-routes.js.map +1 -1
- package/dist/api/audience-runtime-routes.d.ts +6 -0
- package/dist/api/audience-runtime-routes.d.ts.map +1 -1
- package/dist/api/audience-runtime-routes.js +38 -3
- package/dist/api/audience-runtime-routes.js.map +1 -1
- package/dist/api/auth-routes.d.ts.map +1 -1
- package/dist/api/auth-routes.js +10 -4
- package/dist/api/auth-routes.js.map +1 -1
- package/dist/api/auth.d.ts +1 -0
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +43 -3
- package/dist/api/auth.js.map +1 -1
- package/dist/api/bulk-routes.d.ts.map +1 -1
- package/dist/api/bulk-routes.js +7 -7
- package/dist/api/bulk-routes.js.map +1 -1
- package/dist/api/category-routes.js +3 -3
- package/dist/api/category-routes.js.map +1 -1
- package/dist/api/comment-routes.js +8 -8
- package/dist/api/comment-routes.js.map +1 -1
- package/dist/api/component-routes.d.ts +25 -0
- package/dist/api/component-routes.d.ts.map +1 -1
- package/dist/api/component-routes.js +41 -16
- package/dist/api/component-routes.js.map +1 -1
- package/dist/api/content-routes.js +13 -13
- package/dist/api/content-routes.js.map +1 -1
- package/dist/api/dashboard-routes.js +1 -1
- package/dist/api/dashboard-routes.js.map +1 -1
- package/dist/api/experiment-routes.d.ts +7 -0
- package/dist/api/experiment-routes.d.ts.map +1 -1
- package/dist/api/experiment-routes.js +8 -8
- package/dist/api/experiment-routes.js.map +1 -1
- package/dist/api/experiment-runtime-routes.d.ts +6 -0
- package/dist/api/experiment-runtime-routes.d.ts.map +1 -1
- package/dist/api/experiment-runtime-routes.js +47 -11
- package/dist/api/experiment-runtime-routes.js.map +1 -1
- package/dist/api/feed-routes.d.ts +2 -2
- package/dist/api/feed-routes.js +3 -3
- package/dist/api/feed-routes.js.map +1 -1
- package/dist/api/form-routes.js +4 -4
- package/dist/api/form-routes.js.map +1 -1
- package/dist/api/graphql/resolvers.d.ts +1 -1
- package/dist/api/graphql/resolvers.d.ts.map +1 -1
- package/dist/api/graphql/resolvers.js +68 -33
- package/dist/api/graphql/resolvers.js.map +1 -1
- package/dist/api/group-routes.js +6 -6
- package/dist/api/group-routes.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +39 -6
- package/dist/api/index.js.map +1 -1
- package/dist/api/layout-routes.d.ts.map +1 -1
- package/dist/api/layout-routes.js +27 -3
- package/dist/api/layout-routes.js.map +1 -1
- package/dist/api/media-routes.d.ts.map +1 -1
- package/dist/api/media-routes.js +50 -26
- package/dist/api/media-routes.js.map +1 -1
- package/dist/api/menu-routes.d.ts +9 -1
- package/dist/api/menu-routes.d.ts.map +1 -1
- package/dist/api/menu-routes.js +44 -10
- package/dist/api/menu-routes.js.map +1 -1
- package/dist/api/nav-routes.d.ts +6 -0
- package/dist/api/nav-routes.d.ts.map +1 -1
- package/dist/api/nav-routes.js +24 -3
- package/dist/api/nav-routes.js.map +1 -1
- package/dist/api/openapi.d.ts.map +1 -1
- package/dist/api/openapi.js +68 -33
- package/dist/api/openapi.js.map +1 -1
- package/dist/api/search-routes.js +2 -2
- package/dist/api/search-routes.js.map +1 -1
- package/dist/api/section-template-routes.d.ts.map +1 -1
- package/dist/api/section-template-routes.js +35 -18
- package/dist/api/section-template-routes.js.map +1 -1
- package/dist/api/site-admin-routes.d.ts +10 -1
- package/dist/api/site-admin-routes.d.ts.map +1 -1
- package/dist/api/site-admin-routes.js +21 -1
- package/dist/api/site-admin-routes.js.map +1 -1
- package/dist/api/site-context.d.ts +35 -5
- package/dist/api/site-context.d.ts.map +1 -1
- package/dist/api/site-context.js +21 -6
- package/dist/api/site-context.js.map +1 -1
- package/dist/api/tag-routes.js +3 -3
- package/dist/api/tag-routes.js.map +1 -1
- package/dist/api/translation-routes.js +5 -5
- package/dist/api/translation-routes.js.map +1 -1
- package/dist/api/user-routes.d.ts.map +1 -1
- package/dist/api/user-routes.js +134 -19
- package/dist/api/user-routes.js.map +1 -1
- package/dist/api/webhook-routes.js +5 -5
- package/dist/api/webhook-routes.js.map +1 -1
- package/dist/api/workflow-routes.js +8 -8
- package/dist/api/workflow-routes.js.map +1 -1
- package/dist/audiences/collectors/identity.d.ts +14 -1
- package/dist/audiences/collectors/identity.d.ts.map +1 -1
- package/dist/audiences/collectors/identity.js +16 -3
- package/dist/audiences/collectors/identity.js.map +1 -1
- package/dist/audiences/collectors/index.d.ts +12 -2
- package/dist/audiences/collectors/index.d.ts.map +1 -1
- package/dist/audiences/collectors/index.js +16 -5
- package/dist/audiences/collectors/index.js.map +1 -1
- package/dist/audiences/collectors/pinned-audience.d.ts +28 -2
- package/dist/audiences/collectors/pinned-audience.d.ts.map +1 -1
- package/dist/audiences/collectors/pinned-audience.js +35 -5
- package/dist/audiences/collectors/pinned-audience.js.map +1 -1
- package/dist/audiences/collectors/utm.d.ts +15 -1
- package/dist/audiences/collectors/utm.d.ts.map +1 -1
- package/dist/audiences/collectors/utm.js +16 -2
- package/dist/audiences/collectors/utm.js.map +1 -1
- package/dist/audiences/consent-config.d.ts +21 -0
- package/dist/audiences/consent-config.d.ts.map +1 -0
- package/dist/audiences/consent-config.js +15 -0
- package/dist/audiences/consent-config.js.map +1 -0
- package/dist/audiences/consent-startup.d.ts +39 -0
- package/dist/audiences/consent-startup.d.ts.map +1 -0
- package/dist/audiences/consent-startup.js +105 -0
- package/dist/audiences/consent-startup.js.map +1 -0
- package/dist/audiences/consent.d.ts +192 -0
- package/dist/audiences/consent.d.ts.map +1 -0
- package/dist/audiences/consent.js +322 -0
- package/dist/audiences/consent.js.map +1 -0
- package/dist/audiences/engine.d.ts +7 -0
- package/dist/audiences/engine.d.ts.map +1 -1
- package/dist/audiences/engine.js +6 -2
- package/dist/audiences/engine.js.map +1 -1
- package/dist/audiences/index.d.ts +3 -0
- package/dist/audiences/index.d.ts.map +1 -1
- package/dist/audiences/index.js +6 -0
- package/dist/audiences/index.js.map +1 -1
- package/dist/audiences/server-eval.d.ts +13 -1
- package/dist/audiences/server-eval.d.ts.map +1 -1
- package/dist/audiences/server-eval.js +18 -2
- package/dist/audiences/server-eval.js.map +1 -1
- package/dist/audiences/ssr.d.ts +18 -1
- package/dist/audiences/ssr.d.ts.map +1 -1
- package/dist/audiences/ssr.js +18 -1
- package/dist/audiences/ssr.js.map +1 -1
- package/dist/audiences/utm-persistence.d.ts +20 -7
- package/dist/audiences/utm-persistence.d.ts.map +1 -1
- package/dist/audiences/utm-persistence.js +20 -7
- package/dist/audiences/utm-persistence.js.map +1 -1
- package/dist/auth/roles.d.ts +11 -0
- package/dist/auth/roles.d.ts.map +1 -1
- package/dist/auth/roles.js +13 -0
- package/dist/auth/roles.js.map +1 -1
- package/dist/auth/tokens.d.ts +7 -0
- package/dist/auth/tokens.d.ts.map +1 -1
- package/dist/auth/tokens.js +24 -2
- package/dist/auth/tokens.js.map +1 -1
- package/dist/config/types.d.ts +43 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validate.d.ts.map +1 -1
- package/dist/config/validate.js +3 -0
- package/dist/config/validate.js.map +1 -1
- package/dist/db/apply-snapshot.d.ts +18 -0
- package/dist/db/apply-snapshot.d.ts.map +1 -1
- package/dist/db/apply-snapshot.js +41 -16
- package/dist/db/apply-snapshot.js.map +1 -1
- package/dist/db/component-instance-queries.d.ts +79 -19
- package/dist/db/component-instance-queries.d.ts.map +1 -1
- package/dist/db/component-instance-queries.js +266 -83
- package/dist/db/component-instance-queries.js.map +1 -1
- package/dist/db/component-queries.d.ts +1 -16
- package/dist/db/component-queries.d.ts.map +1 -1
- package/dist/db/component-queries.js +7 -56
- package/dist/db/component-queries.js.map +1 -1
- package/dist/db/content-queries.d.ts.map +1 -1
- package/dist/db/content-queries.js +1 -2
- package/dist/db/content-queries.js.map +1 -1
- package/dist/db/extension-queries.d.ts +2 -2
- package/dist/db/feed-queries.d.ts +3 -3
- package/dist/db/index.d.ts +1 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +1 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/layout-queries.d.ts +2 -1
- package/dist/db/layout-queries.d.ts.map +1 -1
- package/dist/db/layout-queries.js +3 -3
- package/dist/db/layout-queries.js.map +1 -1
- package/dist/db/menu-queries.d.ts +69 -5
- package/dist/db/menu-queries.d.ts.map +1 -1
- package/dist/db/menu-queries.js +120 -13
- package/dist/db/menu-queries.js.map +1 -1
- package/dist/db/section-template-queries.d.ts +62 -0
- package/dist/db/section-template-queries.d.ts.map +1 -0
- package/dist/db/section-template-queries.js +178 -0
- package/dist/db/section-template-queries.js.map +1 -0
- package/dist/db/site-plugin-queries.d.ts +2 -2
- package/dist/db/tree-queries.d.ts.map +1 -1
- package/dist/db/tree-queries.js +5 -0
- package/dist/db/tree-queries.js.map +1 -1
- package/dist/db/webhook-queries.d.ts +3 -3
- package/dist/db/workflow-queries.d.ts.map +1 -1
- package/dist/db/workflow-queries.js +5 -20
- package/dist/db/workflow-queries.js.map +1 -1
- package/dist/experiments/runtime.d.ts +21 -3
- package/dist/experiments/runtime.d.ts.map +1 -1
- package/dist/experiments/runtime.js +21 -3
- package/dist/experiments/runtime.js.map +1 -1
- package/dist/layout/component-refs.d.ts +90 -2
- package/dist/layout/component-refs.d.ts.map +1 -1
- package/dist/layout/component-refs.js +293 -16
- package/dist/layout/component-refs.js.map +1 -1
- package/dist/layout/index.d.ts +4 -3
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +3 -2
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/legacy-variant-container.d.ts +123 -0
- package/dist/layout/legacy-variant-container.d.ts.map +1 -0
- package/dist/layout/legacy-variant-container.js +397 -0
- package/dist/layout/legacy-variant-container.js.map +1 -0
- package/dist/layout/module-permissions.d.ts.map +1 -1
- package/dist/layout/module-permissions.js +25 -1
- package/dist/layout/module-permissions.js.map +1 -1
- package/dist/layout/modules-extended.d.ts +28 -1
- package/dist/layout/modules-extended.d.ts.map +1 -1
- package/dist/layout/modules-extended.js +73 -1
- package/dist/layout/modules-extended.js.map +1 -1
- package/dist/layout/modules.d.ts.map +1 -1
- package/dist/layout/modules.js +9 -1
- package/dist/layout/modules.js.map +1 -1
- package/dist/layout/personalization.d.ts +83 -0
- package/dist/layout/personalization.d.ts.map +1 -1
- package/dist/layout/personalization.js +250 -4
- package/dist/layout/personalization.js.map +1 -1
- package/dist/layout/registry.d.ts.map +1 -1
- package/dist/layout/registry.js +20 -0
- package/dist/layout/registry.js.map +1 -1
- package/dist/layout/renderer.d.ts +29 -2
- package/dist/layout/renderer.d.ts.map +1 -1
- package/dist/layout/renderer.js +23 -6
- package/dist/layout/renderer.js.map +1 -1
- package/dist/layout/types.d.ts +17 -0
- package/dist/layout/types.d.ts.map +1 -1
- package/dist/layout/types.js +7 -0
- package/dist/layout/types.js.map +1 -1
- package/dist/media/inline-risk.d.ts +26 -0
- package/dist/media/inline-risk.d.ts.map +1 -0
- package/dist/media/inline-risk.js +142 -0
- package/dist/media/inline-risk.js.map +1 -0
- package/dist/nav/builder.d.ts.map +1 -1
- package/dist/nav/builder.js +15 -3
- package/dist/nav/builder.js.map +1 -1
- package/dist/nav/index.d.ts +1 -1
- package/dist/nav/index.d.ts.map +1 -1
- package/dist/nav/index.js +1 -1
- package/dist/nav/index.js.map +1 -1
- package/dist/nav/menu-resolver.d.ts +11 -0
- package/dist/nav/menu-resolver.d.ts.map +1 -1
- package/dist/nav/menu-resolver.js +49 -9
- package/dist/nav/menu-resolver.js.map +1 -1
- package/dist/nav/paths.d.ts +37 -0
- package/dist/nav/paths.d.ts.map +1 -0
- package/dist/nav/paths.js +48 -0
- package/dist/nav/paths.js.map +1 -0
- package/dist/nav/types.d.ts +6 -0
- package/dist/nav/types.d.ts.map +1 -1
- package/dist/nav/url-resolver.d.ts +1 -5
- package/dist/nav/url-resolver.d.ts.map +1 -1
- package/dist/nav/url-resolver.js +6 -12
- package/dist/nav/url-resolver.js.map +1 -1
- package/dist/schema/base.d.ts +24 -4
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +17 -4
- package/dist/schema/base.js.map +1 -1
- package/dist/schema/components.d.ts +90 -9
- package/dist/schema/components.d.ts.map +1 -1
- package/dist/schema/components.js +113 -22
- package/dist/schema/components.js.map +1 -1
- package/dist/schema/mysql-tables.d.ts +5758 -48
- package/dist/schema/mysql-tables.d.ts.map +1 -1
- package/dist/schema/mysql-tables.js +620 -46
- package/dist/schema/mysql-tables.js.map +1 -1
- package/dist/scope/kywi-form.d.ts +11 -0
- package/dist/scope/kywi-form.d.ts.map +1 -1
- package/dist/scope/kywi-form.js +11 -1
- package/dist/scope/kywi-form.js.map +1 -1
- package/dist/scope/kywi-wizard-form.d.ts.map +1 -1
- package/dist/scope/kywi-wizard-form.js +76 -2
- package/dist/scope/kywi-wizard-form.js.map +1 -1
- package/dist/scope/sticky-offset.d.ts +34 -13
- package/dist/scope/sticky-offset.d.ts.map +1 -1
- package/dist/scope/sticky-offset.js +236 -43
- package/dist/scope/sticky-offset.js.map +1 -1
- package/dist/site/styles.css +61 -15
- package/dist/versioning/scheduler.d.ts +28 -0
- package/dist/versioning/scheduler.d.ts.map +1 -1
- package/dist/versioning/scheduler.js +50 -3
- package/dist/versioning/scheduler.js.map +1 -1
- 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
|
-
|
|
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:
|
|
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":"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"}
|
|
@@ -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
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
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);
|