@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
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* (see `definition-canvas.ts`) and reports what the server says otherwise.
|
|
15
15
|
*/
|
|
16
16
|
import type { FetchLike } from '../../content-editor-api.js';
|
|
17
|
-
/** The
|
|
18
|
-
export type ComponentKind = 'module' | 'section' | 'variantContainer';
|
|
17
|
+
/** The four component kinds (`kywi_components.type`, kywi-cms#170). */
|
|
18
|
+
export type ComponentKind = 'module' | 'section' | 'variantContainer' | 'moduleVariantContainer';
|
|
19
19
|
/** Placement counts as `GET /components?withUsage=1` folds them into each row. */
|
|
20
20
|
export interface ComponentUsageCounts {
|
|
21
21
|
/** Placements on live (not trashed) pages. */
|
|
@@ -24,6 +24,8 @@ export interface ComponentUsageCounts {
|
|
|
24
24
|
pages: number;
|
|
25
25
|
/** Placements held by pages in the trash — see {@link ComponentUsage}. */
|
|
26
26
|
trashedInstances: number;
|
|
27
|
+
/** Distinct saved layouts holding a placement — see {@link ComponentUsage}. */
|
|
28
|
+
blueprints: number;
|
|
27
29
|
}
|
|
28
30
|
/** A `kywi_components` row as the API returns it. */
|
|
29
31
|
export interface ComponentRow {
|
|
@@ -45,11 +47,17 @@ export interface ComponentUsageItem {
|
|
|
45
47
|
title: string | null;
|
|
46
48
|
nodeIds: string[];
|
|
47
49
|
}
|
|
50
|
+
/** One saved layout holding placements of a component (kywi-cms#156). */
|
|
51
|
+
export interface ComponentUsageBlueprint {
|
|
52
|
+
blueprintId: string;
|
|
53
|
+
name: string | null;
|
|
54
|
+
}
|
|
48
55
|
/**
|
|
49
|
-
* The full usage payload. Trashed pages
|
|
50
|
-
* purpose: "used on 4 pages" has to mean four pages the
|
|
51
|
-
* trashed page still holds its link and restoring it brings
|
|
52
|
-
* the
|
|
56
|
+
* The full usage payload. Trashed pages and saved layouts are each counted
|
|
57
|
+
* separately by the API on purpose: "used on 4 pages" has to mean four pages the
|
|
58
|
+
* reader can open. A trashed page still holds its link and restoring it brings
|
|
59
|
+
* the link back; a saved layout holds its link forever and stamps it into every
|
|
60
|
+
* page made from it. So the delete confirmation has to name both.
|
|
53
61
|
*/
|
|
54
62
|
export interface ComponentUsage {
|
|
55
63
|
instances: number;
|
|
@@ -57,30 +65,42 @@ export interface ComponentUsage {
|
|
|
57
65
|
items: ComponentUsageItem[];
|
|
58
66
|
trashedInstances: number;
|
|
59
67
|
trashedPages: number;
|
|
68
|
+
blueprints: number;
|
|
69
|
+
blueprintInstances: number;
|
|
70
|
+
blueprintItems: ComponentUsageBlueprint[];
|
|
60
71
|
}
|
|
61
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* One holder `POST /detach-all` (or `DELETE ?detachAll=1`) deliberately left
|
|
74
|
+
* linked — a page, or a saved layout when `holderKind` is `'blueprint'`
|
|
75
|
+
* (kywi-cms#156). `contentId` is that holder's id, so branch on `holderKind`
|
|
76
|
+
* before building a link to it.
|
|
77
|
+
*/
|
|
62
78
|
export interface DetachSkippedPage {
|
|
63
79
|
contentId: string;
|
|
64
80
|
contentType: string;
|
|
81
|
+
holderKind?: 'content' | 'blueprint';
|
|
65
82
|
reason: string;
|
|
66
83
|
detail: string;
|
|
67
84
|
}
|
|
68
85
|
export interface DetachEverywhereResult {
|
|
69
86
|
pages: number;
|
|
87
|
+
/** Saved layouts rewritten (kywi-cms#156). */
|
|
88
|
+
blueprints: number;
|
|
70
89
|
instances: number;
|
|
71
90
|
skipped: DetachSkippedPage[];
|
|
72
91
|
}
|
|
73
92
|
/**
|
|
74
93
|
* What a component's kind is CALLED in the UI.
|
|
75
94
|
*
|
|
76
|
-
* These are the words the editors already use for the same
|
|
95
|
+
* These are the words the editors already use for the same four things, not new
|
|
77
96
|
* ones: `editor-canvas.tsx` labels a variant container "Personalized section" or
|
|
78
|
-
* "A/B tested section" depending on its mode,
|
|
79
|
-
*
|
|
97
|
+
* "A/B tested section" depending on its mode, the props rail calls a module-level
|
|
98
|
+
* one a "personalized module" / "A/B tested module", and the save dialog says the
|
|
99
|
+
* same (`use-component-connect.tsx`). A library that called any of them a
|
|
80
100
|
* "Container" would be the only place in the product using that word — and
|
|
81
101
|
* "arm"-style internal vocabulary in user copy is exactly what kywi-cms#148 was
|
|
82
102
|
* filed for. `mode` is read off the definition because that is where it lives;
|
|
83
|
-
* an unreadable definition degrades to the neutral "Personalized
|
|
103
|
+
* an unreadable definition degrades to the neutral "Personalized …".
|
|
84
104
|
*/
|
|
85
105
|
export declare function componentKindLabel(component: Pick<ComponentRow, 'type' | 'definition'>): string;
|
|
86
106
|
/** The type-filter choices, in list order. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAI5D,
|
|
1
|
+
{"version":3,"file":"components-data.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* What a component's kind is CALLED in the UI.
|
|
4
4
|
*
|
|
5
|
-
* These are the words the editors already use for the same
|
|
5
|
+
* These are the words the editors already use for the same four things, not new
|
|
6
6
|
* ones: `editor-canvas.tsx` labels a variant container "Personalized section" or
|
|
7
|
-
* "A/B tested section" depending on its mode,
|
|
8
|
-
*
|
|
7
|
+
* "A/B tested section" depending on its mode, the props rail calls a module-level
|
|
8
|
+
* one a "personalized module" / "A/B tested module", and the save dialog says the
|
|
9
|
+
* same (`use-component-connect.tsx`). A library that called any of them a
|
|
9
10
|
* "Container" would be the only place in the product using that word — and
|
|
10
11
|
* "arm"-style internal vocabulary in user copy is exactly what kywi-cms#148 was
|
|
11
12
|
* filed for. `mode` is read off the definition because that is where it lives;
|
|
12
|
-
* an unreadable definition degrades to the neutral "Personalized
|
|
13
|
+
* an unreadable definition degrades to the neutral "Personalized …".
|
|
13
14
|
*/
|
|
14
15
|
export function componentKindLabel(component) {
|
|
15
16
|
switch (component.type) {
|
|
@@ -21,6 +22,10 @@ export function componentKindLabel(component) {
|
|
|
21
22
|
const def = component.definition;
|
|
22
23
|
return def?.mode === 'ab_test' ? 'A/B tested section' : 'Personalized section';
|
|
23
24
|
}
|
|
25
|
+
case 'moduleVariantContainer': {
|
|
26
|
+
const def = component.definition;
|
|
27
|
+
return def?.mode === 'ab_test' ? 'A/B tested module' : 'Personalized module';
|
|
28
|
+
}
|
|
24
29
|
default:
|
|
25
30
|
return component.type;
|
|
26
31
|
}
|
|
@@ -30,6 +35,7 @@ export const COMPONENT_KIND_FILTERS = [
|
|
|
30
35
|
{ value: 'module', label: 'Modules' },
|
|
31
36
|
{ value: 'section', label: 'Sections' },
|
|
32
37
|
{ value: 'variantContainer', label: 'Personalized sections' },
|
|
38
|
+
{ value: 'moduleVariantContainer', label: 'Personalized modules' },
|
|
33
39
|
];
|
|
34
40
|
/**
|
|
35
41
|
* Does this component match the library's name/description search box?
|
|
@@ -65,6 +71,13 @@ export function usageSummary(usage) {
|
|
|
65
71
|
if (usage.trashedInstances > 0) {
|
|
66
72
|
parts.push(`plus ${usage.trashedInstances} in the trash`);
|
|
67
73
|
}
|
|
74
|
+
// Saved layouts are named, never folded into the page count (kywi-cms#156):
|
|
75
|
+
// a blueprint is not a page a reader can open, but it does hold the link — so
|
|
76
|
+
// a component that reads "not used on any page" can still be undeletable, and
|
|
77
|
+
// this clause is where that stops being a surprise.
|
|
78
|
+
if (usage.blueprints > 0) {
|
|
79
|
+
parts.push(`also in ${usage.blueprints} saved layout${usage.blueprints === 1 ? '' : 's'}`);
|
|
80
|
+
}
|
|
68
81
|
return parts.join(' · ');
|
|
69
82
|
}
|
|
70
83
|
// ─── Transport ────────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-data.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-data.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"components-data.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-list.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-list.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA6CrD,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"components-list.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-list.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA6CrD,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,MAAM,EAAE,YAAY,2CAofjE"}
|
|
@@ -127,7 +127,11 @@ export default function ComponentsListSurface(_props) {
|
|
|
127
127
|
// Without a usage read, assume there ARE instances: `?detachAll=1` is safe on
|
|
128
128
|
// a component with none (nothing to detach, then delete), whereas omitting it
|
|
129
129
|
// on one that has some is a 409 the user would have to answer again.
|
|
130
|
-
|
|
130
|
+
// Saved layouts count as placements (kywi-cms#156): the server refuses the
|
|
131
|
+
// delete over them, and detach-all rewrites them.
|
|
132
|
+
const placed = pendingDelete.forceDetachAll ||
|
|
133
|
+
usage === null ||
|
|
134
|
+
usage.instances + usage.trashedInstances + usage.blueprintInstances > 0;
|
|
131
135
|
setPendingDelete({ ...pendingDelete, busy: true, error: null });
|
|
132
136
|
try {
|
|
133
137
|
await deleteComponent(adminFetch, component.id, { detachAll: placed });
|
|
@@ -142,9 +146,16 @@ export default function ComponentsListSurface(_props) {
|
|
|
142
146
|
setSkipped({
|
|
143
147
|
name: component.name,
|
|
144
148
|
pages: details?.skipped ?? [],
|
|
145
|
-
titles: Object.fromEntries(
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
titles: Object.fromEntries([
|
|
150
|
+
...(usage?.items ?? [])
|
|
151
|
+
.filter(item => item.title !== null)
|
|
152
|
+
.map(item => [item.contentId, item.title]),
|
|
153
|
+
// Blueprint names come from the same read, keyed by blueprint id —
|
|
154
|
+
// the skipped payload's `contentId` IS that id (kywi-cms#156).
|
|
155
|
+
...(usage?.blueprintItems ?? [])
|
|
156
|
+
.filter(item => item.name !== null)
|
|
157
|
+
.map(item => [item.blueprintId, item.name]),
|
|
158
|
+
]),
|
|
148
159
|
});
|
|
149
160
|
await load();
|
|
150
161
|
return;
|
|
@@ -179,10 +190,12 @@ export default function ComponentsListSurface(_props) {
|
|
|
179
190
|
if (!pendingDelete)
|
|
180
191
|
return null;
|
|
181
192
|
const { component, usage, loaded, usageError, error } = pendingDelete;
|
|
182
|
-
return (_jsxs(_Fragment, { children: [!loaded ? (_jsxs("p", { children: ["Checking where \u201C", component.name, "\u201D is used\u2026"] })) : usage === null ? (_jsxs("p", { children: ["Could not read where \u201C", component.name, "\u201D is used (", usageError, "). Any instances will be detached into independent copies before it is deleted, and each page will keep rendering exactly what it renders now."] })) : usage.instances === 0 && usage.trashedInstances === 0 ? (_jsxs("p", { children: ["\u201C", component.name, "\u201D is not used on any page. Deleting it cannot change what any page renders."] })) : (_jsxs(_Fragment, { children: [_jsxs("p", { children: [_jsxs("strong", { children: [usage.instances, " instance", usage.instances === 1 ? '' : 's', " across ", usage.pages, ' ', "page", usage.pages === 1 ? '' : 's'] }), ' ', "will be detached into independent copies, then \u201C", component.name, "\u201D will be deleted. Every page keeps rendering exactly what it renders now \u2014 published pages included \u2014 but they stop following this component."] }), usage.trashedInstances > 0 && (_jsxs("p", { className: "kywi-text-muted", children: ["Plus ", usage.trashedInstances, " instance", usage.trashedInstances === 1 ? '' : 's', " on", ' ', usage.trashedPages, " page", usage.trashedPages === 1 ? '' : 's', " in the trash, which are detached too so restoring one does not bring back a broken link."] })), usage.items.length > 0 && (_jsx("ul", { className: "kywi-admin-confirm-list", children: usage.items.map(item => (_jsxs("li", { children: [item.title ?? item.contentId, item.nodeIds.length > 1 ? ` (${item.nodeIds.length} instances)` : ''] }, item.contentId))) }))] })), error && _jsx("p", { className: "kywi-admin-error-message", role: "alert", children: error })] }));
|
|
183
|
-
}, [pendingDelete]);
|
|
193
|
+
return (_jsxs(_Fragment, { children: [!loaded ? (_jsxs("p", { children: ["Checking where \u201C", component.name, "\u201D is used\u2026"] })) : usage === null ? (_jsxs("p", { children: ["Could not read where \u201C", component.name, "\u201D is used (", usageError, "). Any instances will be detached into independent copies before it is deleted, and each page will keep rendering exactly what it renders now."] })) : usage.instances === 0 && usage.trashedInstances === 0 && usage.blueprints === 0 ? (_jsxs("p", { children: ["\u201C", component.name, "\u201D is not used on any page. Deleting it cannot change what any page renders."] })) : (_jsxs(_Fragment, { children: [usage.instances > 0 ? (_jsxs("p", { children: [_jsxs("strong", { children: [usage.instances, " instance", usage.instances === 1 ? '' : 's', " across ", usage.pages, ' ', "page", usage.pages === 1 ? '' : 's'] }), ' ', "will be detached into independent copies, then \u201C", component.name, "\u201D will be deleted. Every page keeps rendering exactly what it renders now \u2014 published pages included \u2014 but they stop following this component."] })) : (_jsxs("p", { children: ["\u201C", component.name, "\u201D is not used on any page, but it is still in use. Everything below will be detached into an independent copy before it is deleted, and each holder keeps rendering exactly what it renders now."] })), usage.trashedInstances > 0 && (_jsxs("p", { className: "kywi-text-muted", children: ["Plus ", usage.trashedInstances, " instance", usage.trashedInstances === 1 ? '' : 's', " on", ' ', usage.trashedPages, " page", usage.trashedPages === 1 ? '' : 's', " in the trash, which are detached too so restoring one does not bring back a broken link."] })), usage.items.length > 0 && (_jsx("ul", { className: "kywi-admin-confirm-list", children: usage.items.map(item => (_jsxs("li", { children: [item.title ?? item.contentId, item.nodeIds.length > 1 ? ` (${item.nodeIds.length} instances)` : ''] }, item.contentId))) })), usage.blueprints > 0 && (_jsxs(_Fragment, { children: [_jsxs("p", { className: "kywi-text-muted", "data-usage-blueprints": "", children: ["Plus ", usage.blueprintInstances, " instance", usage.blueprintInstances === 1 ? '' : 's', " in ", usage.blueprints, " saved layout", usage.blueprints === 1 ? '' : 's', ", which are detached too so a page made from one later does not start out with a broken link."] }), _jsx("ul", { className: "kywi-admin-confirm-list", children: usage.blueprintItems.map(item => (_jsx("li", { children: _jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-sm", onClick: () => navigate(`/admin/layouts/${item.blueprintId}`), children: item.name ?? item.blueprintId }) }, item.blueprintId))) })] }))] })), error && _jsx("p", { className: "kywi-admin-error-message", role: "alert", children: error })] }));
|
|
194
|
+
}, [pendingDelete, navigate]);
|
|
184
195
|
// ── Render ─────────────────────────────────────────────────────────────────
|
|
185
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsxs("div", { children: [_jsx("h1", { children: "Components" }), _jsxs("p", { className: "kywi-text-muted", children: ["Reusable modules, sections and personalized sections, saved from the editors. Every page that places one ", _jsx("strong", { children: "links" }), " to it, so editing a component here updates every instance everywhere \u2014 published pages included \u2014 the moment you save."] })] }) }), skipped && (_jsxs("div", { className: "kywi-admin-error", role: "alert", children: [_jsxs("p", { className: "kywi-admin-error-message", children: ["\u201C", skipped.name, "\u201D was ", _jsx("strong", { children: "not" }), " deleted: ", skipped.pages.length, "
|
|
196
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsxs("div", { children: [_jsx("h1", { children: "Components" }), _jsxs("p", { className: "kywi-text-muted", children: ["Reusable modules, sections and personalized sections, saved from the editors. Every page that places one ", _jsx("strong", { children: "links" }), " to it, so editing a component here updates every instance everywhere \u2014 published pages included \u2014 the moment you save."] })] }) }), skipped && (_jsxs("div", { className: "kywi-admin-error", role: "alert", children: [_jsxs("p", { className: "kywi-admin-error-message", children: ["\u201C", skipped.name, "\u201D was ", _jsx("strong", { children: "not" }), " deleted: ", skipped.pages.length, " document", skipped.pages.length === 1 ? '' : 's', " could not be detached, so they still use it."] }), _jsx("ul", { className: "kywi-admin-confirm-list", children: skipped.pages.map(page => (_jsxs("li", { children: [page.holderKind === 'blueprint'
|
|
197
|
+
? `${skipped.titles[page.contentId] ?? page.contentId} (saved layout)`
|
|
198
|
+
: `${skipped.titles[page.contentId] ?? page.contentId} (${page.contentType})`, ' ', "\u2014 ", page.detail] }, page.contentId))) }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-secondary", onClick: () => setSkipped(null), children: "Dismiss" })] })), loading ? (_jsx(LoadingState, { label: "Loading components\u2026" })) : error ? (_jsx(ErrorState, { message: error, onRetry: load })) : components.length === 0 ? (_jsx("div", { className: "kywi-empty-state", children: _jsxs("p", { children: ["No components yet. Open a page in the editor, select a module or section, and choose", ' ', _jsx("strong", { children: "Save as component" }), " \u2014 components are born from real pages rather than created blank here."] }) })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-components-filters", children: [_jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "kywi-components-search", className: "kywi-field-label", children: "Search" }), _jsx("input", { id: "kywi-components-search", type: "search", className: "kywi-input", value: search, placeholder: "Name, description or module type", onChange: e => setSearch(e.target.value) })] }), _jsxs("div", { className: "kywi-field", children: [_jsx("label", { htmlFor: "kywi-components-type", className: "kywi-field-label", children: "Type" }), _jsxs("select", { id: "kywi-components-type", className: "kywi-input", value: kindFilter, onChange: e => setKindFilter(e.target.value), children: [_jsx("option", { value: "", children: "All types" }), COMPONENT_KIND_FILTERS.map(filter => (_jsx("option", { value: filter.value, children: filter.label }, filter.value)))] })] })] }), visible.length === 0 ? (_jsx("div", { className: "kywi-empty-state", children: _jsx("p", { children: "No components match that filter." }) })) : (_jsx("div", { className: "kywi-table-scroll", children: _jsxs("table", { className: "kywi-table kywi-components-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Name" }), _jsx("th", { children: "Type" }), _jsx("th", { children: "Module" }), _jsx("th", { children: "Used on" }), _jsx("th", { children: "Updated" }), _jsx("th", { className: "kywi-col-actions", children: "Actions" })] }) }), _jsx("tbody", { children: visible.map(component => {
|
|
186
199
|
const unused = component.usage?.instances === 0;
|
|
187
200
|
return (_jsxs("tr", { children: [_jsxs("td", { children: [_jsx("button", { type: "button", className: "kywi-link-button", onClick: () => navigate(`/admin/components/${component.id}`), children: component.name }), component.description && (_jsx("div", { className: "kywi-text-muted", children: component.description }))] }), _jsx("td", { children: componentKindLabel(component) }), _jsx("td", { children: component.moduleType ? _jsx("code", { children: component.moduleType }) : '—' }), _jsx("td", { className: unused ? 'kywi-component-usage kywi-component-usage--unused' : 'kywi-component-usage', children: usageSummary(component.usage) }), _jsx("td", { children: component.updatedAt ? new Date(component.updatedAt).toLocaleDateString() : '—' }), _jsxs("td", { className: "kywi-col-actions", children: [_jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-sm", onClick: () => navigate(`/admin/components/${component.id}`), children: "Edit" }), _jsx("button", { type: "button", className: "kywi-btn kywi-btn-ghost kywi-btn-sm", onClick: () => setRename({
|
|
188
201
|
component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-list.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-list.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components-list.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/components-list.tsx"],"names":[],"mappings":"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"}
|
|
@@ -19,17 +19,25 @@
|
|
|
19
19
|
* — and the honest response to "you built something this component cannot hold"
|
|
20
20
|
* is to say so, not to silently keep the first node and drop the rest.
|
|
21
21
|
*/
|
|
22
|
-
import type { LayoutDocument, LayoutSection, VariantContainer } from '../../../layout/types.js';
|
|
22
|
+
import type { LayoutDocument, LayoutSection, ModuleVariantContainer, VariantContainer } from '../../../layout/types.js';
|
|
23
23
|
import type { ComponentRow } from './components-data.js';
|
|
24
24
|
/** The single region a definition canvas document has. */
|
|
25
25
|
export declare const DEFINITION_REGION = "main";
|
|
26
26
|
export type ExtractResult = {
|
|
27
27
|
ok: true;
|
|
28
|
-
definition: LayoutSection | VariantContainer;
|
|
28
|
+
definition: LayoutSection | VariantContainer | ModuleVariantContainer;
|
|
29
29
|
} | {
|
|
30
30
|
ok: false;
|
|
31
31
|
error: string;
|
|
32
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* The stored definition of a `moduleVariantContainer` component, or null when it
|
|
35
|
+
* doesn't match the row's type.
|
|
36
|
+
*
|
|
37
|
+
* Structural, like {@link readRegionNode}: a module's `type` is a registry name a
|
|
38
|
+
* host pack chooses, so the discriminant alone is not proof of shape.
|
|
39
|
+
*/
|
|
40
|
+
export declare function readModuleVariantContainerDefinition(component: Pick<ComponentRow, 'type' | 'definition'>): ModuleVariantContainer | null;
|
|
33
41
|
/**
|
|
34
42
|
* Wrap a section/container definition as a one-node, one-region document.
|
|
35
43
|
*
|
|
@@ -41,7 +49,7 @@ export type ExtractResult = {
|
|
|
41
49
|
*/
|
|
42
50
|
export declare function seedDefinitionDocument(component: Pick<ComponentRow, 'type' | 'definition'>): LayoutDocument;
|
|
43
51
|
/** The definition as a region node, or null when it doesn't match the row's type. */
|
|
44
|
-
export declare function readRegionNode(component: Pick<ComponentRow, 'type' | 'definition'>): LayoutSection | VariantContainer | null;
|
|
52
|
+
export declare function readRegionNode(component: Pick<ComponentRow, 'type' | 'definition'>): LayoutSection | VariantContainer | ModuleVariantContainer | null;
|
|
45
53
|
/**
|
|
46
54
|
* Read the edited document back as a definition for a component of `type`, or
|
|
47
55
|
* explain why it isn't one.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition-canvas.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/definition-canvas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"definition-canvas.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/components/definition-canvas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,sBAAsB,EAEtB,gBAAgB,EACjB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,SAAS,CAAA;AAEvC,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,aAAa,GAAG,gBAAgB,GAAG,sBAAsB,CAAA;CAAE,GACnF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AA6BhC;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GACnD,sBAAsB,GAAG,IAAI,CAK/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,cAAc,CAU3G;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAC5B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GACnD,aAAa,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,IAAI,CAwBlE;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,GAC/F,aAAa,CAsHf;AAmID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAEnE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,GAC1C;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAYnE"}
|
|
@@ -2,6 +2,46 @@ import { isModuleVariantContainer } from '../../../layout/types.js';
|
|
|
2
2
|
import { validateComponentDefinition } from '../../../layout/component-refs.js';
|
|
3
3
|
/** The single region a definition canvas document has. */
|
|
4
4
|
export const DEFINITION_REGION = 'main';
|
|
5
|
+
/**
|
|
6
|
+
* The synthetic host a MODULE-level container definition is edited inside
|
|
7
|
+
* (kywi-cms#170).
|
|
8
|
+
*
|
|
9
|
+
* A module container is not a region node — it lives in a COLUMN — so unlike the
|
|
10
|
+
* other two region kinds it cannot be handed to the canvas as-is. It is wrapped
|
|
11
|
+
* in a one-section, one-column shell on the way in and unwrapped on the way out,
|
|
12
|
+
* and the shell's own ids are derived from the container's so two successive
|
|
13
|
+
* saves of an untouched component still produce identical rows.
|
|
14
|
+
*
|
|
15
|
+
* The wrapper is NOT stored: `extractDefinition` returns the container alone, so
|
|
16
|
+
* the row's `definition` stays exactly the shape `componentDetachSource` and the
|
|
17
|
+
* renderer read.
|
|
18
|
+
*/
|
|
19
|
+
const DEFINITION_WRAPPER_SUFFIX = '-definition-host';
|
|
20
|
+
function wrapModuleVariantContainer(container) {
|
|
21
|
+
return {
|
|
22
|
+
id: `${container.id}${DEFINITION_WRAPPER_SUFFIX}`,
|
|
23
|
+
type: 'section',
|
|
24
|
+
style: {},
|
|
25
|
+
columns: [
|
|
26
|
+
{ id: `${container.id}${DEFINITION_WRAPPER_SUFFIX}-column`, width: 12, nodes: [container] },
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The stored definition of a `moduleVariantContainer` component, or null when it
|
|
32
|
+
* doesn't match the row's type.
|
|
33
|
+
*
|
|
34
|
+
* Structural, like {@link readRegionNode}: a module's `type` is a registry name a
|
|
35
|
+
* host pack chooses, so the discriminant alone is not proof of shape.
|
|
36
|
+
*/
|
|
37
|
+
export function readModuleVariantContainerDefinition(component) {
|
|
38
|
+
if (component.type !== 'moduleVariantContainer')
|
|
39
|
+
return null;
|
|
40
|
+
const def = component.definition;
|
|
41
|
+
if (typeof def !== 'object' || def === null || Array.isArray(def))
|
|
42
|
+
return null;
|
|
43
|
+
return isModuleVariantContainer(def) ? def : null;
|
|
44
|
+
}
|
|
5
45
|
/**
|
|
6
46
|
* Wrap a section/container definition as a one-node, one-region document.
|
|
7
47
|
*
|
|
@@ -12,11 +52,25 @@ export const DEFINITION_REGION = 'main';
|
|
|
12
52
|
* caller surfaces the mismatch separately.
|
|
13
53
|
*/
|
|
14
54
|
export function seedDefinitionDocument(component) {
|
|
55
|
+
const moduleContainer = readModuleVariantContainerDefinition(component);
|
|
56
|
+
if (moduleContainer) {
|
|
57
|
+
return { regions: { [DEFINITION_REGION]: [wrapModuleVariantContainer(moduleContainer)] } };
|
|
58
|
+
}
|
|
15
59
|
const node = readRegionNode(component);
|
|
16
|
-
|
|
60
|
+
// `readRegionNode` also answers for the module-container kind (see its note),
|
|
61
|
+
// but that branch returned above, so what is left here really is a region node.
|
|
62
|
+
const regionNode = node && node.type !== 'moduleVariantContainer' ? node : null;
|
|
63
|
+
return { regions: { [DEFINITION_REGION]: regionNode ? [regionNode] : [] } };
|
|
17
64
|
}
|
|
18
65
|
/** The definition as a region node, or null when it doesn't match the row's type. */
|
|
19
66
|
export function readRegionNode(component) {
|
|
67
|
+
// The fourth kind is not a region node, but "does the stored definition match
|
|
68
|
+
// the row's declared type" is the question every caller is really asking —
|
|
69
|
+
// `component-edit.tsx` gates its whole error state on it — so answer it here
|
|
70
|
+
// rather than making each caller learn a second function (kywi-cms#170).
|
|
71
|
+
const moduleContainer = readModuleVariantContainerDefinition(component);
|
|
72
|
+
if (moduleContainer)
|
|
73
|
+
return moduleContainer;
|
|
20
74
|
const def = component.definition;
|
|
21
75
|
if (typeof def !== 'object' || def === null || Array.isArray(def))
|
|
22
76
|
return null;
|
|
@@ -42,11 +96,11 @@ export function readRegionNode(component) {
|
|
|
42
96
|
* a module-level container inside a section-level one, because a stored row that
|
|
43
97
|
* predates that refusal reaches here without ever having been validated.
|
|
44
98
|
*/
|
|
45
|
-
function
|
|
99
|
+
function holdsAbTestedModule(node) {
|
|
46
100
|
const sections = node.type === 'section'
|
|
47
101
|
? [node]
|
|
48
102
|
: [...(node.defaultSections ?? []), ...(node.variants ?? []).flatMap(v => v.sections ?? [])];
|
|
49
|
-
return sections.some(section => (section.columns ?? []).some(column => (column.nodes ?? []).some(isModuleVariantContainer)));
|
|
103
|
+
return sections.some(section => (section.columns ?? []).some(column => (column.nodes ?? []).some(n => isModuleVariantContainer(n) && n.mode === 'ab_test')));
|
|
50
104
|
}
|
|
51
105
|
/**
|
|
52
106
|
* Read the edited document back as a definition for a component of `type`, or
|
|
@@ -100,19 +154,47 @@ export function extractDefinition(doc, component) {
|
|
|
100
154
|
'Personalize it again, or save it as a new component.',
|
|
101
155
|
};
|
|
102
156
|
}
|
|
103
|
-
//
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
157
|
+
// The fourth kind edits inside a synthetic one-section/one-column host
|
|
158
|
+
// (kywi-cms#170). Unwrap it here, so everything below — the binding pin and the
|
|
159
|
+
// real validator — sees the container the row actually stores.
|
|
160
|
+
if (component.type === 'moduleVariantContainer') {
|
|
161
|
+
const unwrapped = unwrapModuleVariantContainer(node);
|
|
162
|
+
if (!unwrapped.ok)
|
|
163
|
+
return unwrapped;
|
|
164
|
+
const pinned = pinDefinitionBinding(unwrapped.container, readModuleVariantContainerDefinition({
|
|
165
|
+
type: 'moduleVariantContainer',
|
|
166
|
+
definition: component.definition,
|
|
167
|
+
}), 'module');
|
|
168
|
+
if (!pinned.ok)
|
|
169
|
+
return pinned;
|
|
170
|
+
const check = validateComponentDefinition({
|
|
171
|
+
type: component.type,
|
|
172
|
+
moduleType: component.moduleType,
|
|
173
|
+
definition: pinned.container,
|
|
174
|
+
});
|
|
175
|
+
if (!check.success)
|
|
176
|
+
return { ok: false, error: check.error };
|
|
177
|
+
return { ok: true, definition: pinned.container };
|
|
178
|
+
}
|
|
179
|
+
// An A/B TESTED module is the same rule one level down (kywi-cms#161 final
|
|
180
|
+
// review, narrowed in #170): an `ab_test` `moduleVariantContainer` stored in a
|
|
181
|
+
// section/container definition holds ONE `experimentId` for every page that
|
|
182
|
+
// places the component, so two placements share a single experiment's buckets
|
|
183
|
+
// and exposures. Nothing scopes it — `rekeyResolvedSection` re-keys the
|
|
184
|
+
// container and its arms per placement, never the binding.
|
|
185
|
+
//
|
|
186
|
+
// A merely PERSONALIZED module is no longer refused: its arms are audiences,
|
|
187
|
+
// and audiences are content that travels with a component perfectly well. The
|
|
188
|
+
// editor withholds promote on this canvas (`canvasKind`); this is the
|
|
189
|
+
// fail-safe for a document that arrives holding an A/B one anyway (MCP, a
|
|
190
|
+
// direct API write, a row stored before this refusal).
|
|
191
|
+
if (holdsAbTestedModule(node)) {
|
|
112
192
|
return {
|
|
113
193
|
ok: false,
|
|
114
|
-
error: 'A component cannot hold
|
|
115
|
-
'
|
|
194
|
+
error: 'A component cannot hold an A/B tested module. Remove the test before saving — every page ' +
|
|
195
|
+
'placing this component would report into that one experiment, and a winner picked on any ' +
|
|
196
|
+
'of them would decide them all. Save the module itself as a component instead, or A/B test ' +
|
|
197
|
+
'the whole section.',
|
|
116
198
|
};
|
|
117
199
|
}
|
|
118
200
|
// An experiment binding is the PLACEMENT's, never the definition's own to mint
|
|
@@ -169,7 +251,9 @@ export function extractDefinition(doc, component) {
|
|
|
169
251
|
* made elsewhere, so the rule is flat — an A/B test is built on a page and saved
|
|
170
252
|
* from there, which is also the only route that gives each placement its own run.
|
|
171
253
|
*/
|
|
172
|
-
function pinDefinitionBinding(container, stored
|
|
254
|
+
function pinDefinitionBinding(container, stored,
|
|
255
|
+
/** What the refusal calls the thing, since the rule serves both kinds now. */
|
|
256
|
+
what = 'section') {
|
|
173
257
|
const { experimentId: _canvasRun, winnerId: _canvasWinner, ...rest } = container;
|
|
174
258
|
if (container.mode !== 'ab_test') {
|
|
175
259
|
if (container.experimentId === undefined && container.winnerId === undefined) {
|
|
@@ -182,10 +266,10 @@ function pinDefinitionBinding(container, stored) {
|
|
|
182
266
|
if (stored?.mode !== 'ab_test') {
|
|
183
267
|
return {
|
|
184
268
|
ok: false,
|
|
185
|
-
error:
|
|
269
|
+
error: `This component cannot be turned into an A/B tested ${what} here. An experiment belongs to ` +
|
|
186
270
|
'one placement — every page that places this component and has no experiment of its own ' +
|
|
187
271
|
'would be pulled into a single shared run. Build the A/B test on a page, then save that ' +
|
|
188
|
-
|
|
272
|
+
`${what} as a component: each placement gets its own experiment.`,
|
|
189
273
|
};
|
|
190
274
|
}
|
|
191
275
|
const experimentId = stored.experimentId;
|
|
@@ -210,6 +294,43 @@ function pinDefinitionBinding(container, stored) {
|
|
|
210
294
|
},
|
|
211
295
|
};
|
|
212
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Read the single module container back out of the synthetic host the canvas
|
|
299
|
+
* edits it in (kywi-cms#170), or explain what the author built instead.
|
|
300
|
+
*
|
|
301
|
+
* The messages are the same shape the region kinds' own mismatches use: say what
|
|
302
|
+
* the canvas is holding and what to do about it, rather than dropping the extra
|
|
303
|
+
* content silently.
|
|
304
|
+
*/
|
|
305
|
+
function unwrapModuleVariantContainer(node) {
|
|
306
|
+
if (node.type !== 'section') {
|
|
307
|
+
return {
|
|
308
|
+
ok: false,
|
|
309
|
+
error: 'This is a personalized module component, but the canvas holds a personalized section. ' +
|
|
310
|
+
'Remove the section-level personalization, or save it as a new component.',
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
const nodes = (node.columns ?? []).flatMap(column => column.nodes ?? []);
|
|
314
|
+
if (nodes.length === 0) {
|
|
315
|
+
return { ok: false, error: 'This component is empty. Add a module before saving.' };
|
|
316
|
+
}
|
|
317
|
+
if (nodes.length > 1) {
|
|
318
|
+
return {
|
|
319
|
+
ok: false,
|
|
320
|
+
error: `A personalized module component is a single module, but the canvas holds ${nodes.length}. ` +
|
|
321
|
+
'Delete the extra modules, or save them as components of their own.',
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
const only = nodes[0];
|
|
325
|
+
if (!isModuleVariantContainer(only)) {
|
|
326
|
+
return {
|
|
327
|
+
ok: false,
|
|
328
|
+
error: 'This is a personalized module component, but the canvas holds a plain module. ' +
|
|
329
|
+
'Personalize it again, or save it as a new component.',
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
return { ok: true, container: only };
|
|
333
|
+
}
|
|
213
334
|
/**
|
|
214
335
|
* A module component's definition: exactly the `{ props, style }` pair the
|
|
215
336
|
* renderer reads (`componentDetachSource`). Nothing else is stored, so nothing
|