@kywi-software/core 0.10.0 → 0.12.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 +111 -23
- package/README.md +67 -0
- package/dist/admin/content-form.d.ts.map +1 -1
- package/dist/admin/content-form.js +97 -10
- package/dist/admin/content-form.js.map +1 -1
- package/dist/admin/layout-editor/component-actions.d.ts +219 -22
- package/dist/admin/layout-editor/component-actions.d.ts.map +1 -1
- package/dist/admin/layout-editor/component-actions.js +356 -36
- package/dist/admin/layout-editor/component-actions.js.map +1 -1
- package/dist/admin/layout-editor/component-fork.d.ts +224 -0
- package/dist/admin/layout-editor/component-fork.d.ts.map +1 -0
- package/dist/admin/layout-editor/component-fork.js +342 -0
- package/dist/admin/layout-editor/component-fork.js.map +1 -0
- package/dist/admin/layout-editor/editor-canvas.d.ts +28 -7
- package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.js +145 -32
- package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
- package/dist/admin/layout-editor/editor-dialog.d.ts +164 -0
- package/dist/admin/layout-editor/editor-dialog.d.ts.map +1 -0
- package/dist/admin/layout-editor/editor-dialog.js +195 -0
- package/dist/admin/layout-editor/editor-dialog.js.map +1 -0
- package/dist/admin/layout-editor/editor-state.d.ts +76 -0
- package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-state.js +47 -1
- package/dist/admin/layout-editor/editor-state.js.map +1 -1
- package/dist/admin/layout-editor/editor.css +366 -4
- package/dist/admin/layout-editor/index.d.ts +10 -1
- package/dist/admin/layout-editor/index.d.ts.map +1 -1
- package/dist/admin/layout-editor/index.js +11 -1
- package/dist/admin/layout-editor/index.js.map +1 -1
- package/dist/admin/layout-editor/inline-text.d.ts +56 -4
- package/dist/admin/layout-editor/inline-text.d.ts.map +1 -1
- package/dist/admin/layout-editor/inline-text.js +134 -11
- package/dist/admin/layout-editor/inline-text.js.map +1 -1
- package/dist/admin/layout-editor/layout-editor.d.ts +58 -1
- package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
- package/dist/admin/layout-editor/layout-editor.js +160 -190
- package/dist/admin/layout-editor/layout-editor.js.map +1 -1
- package/dist/admin/layout-editor/linked-component.d.ts +39 -0
- package/dist/admin/layout-editor/linked-component.d.ts.map +1 -0
- package/dist/admin/layout-editor/linked-component.js +42 -0
- package/dist/admin/layout-editor/linked-component.js.map +1 -0
- package/dist/admin/layout-editor/module-overlay.d.ts +36 -14
- package/dist/admin/layout-editor/module-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/module-overlay.js +233 -25
- package/dist/admin/layout-editor/module-overlay.js.map +1 -1
- package/dist/admin/layout-editor/node-lookup.d.ts +35 -0
- package/dist/admin/layout-editor/node-lookup.d.ts.map +1 -1
- package/dist/admin/layout-editor/node-lookup.js +91 -0
- 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 +150 -32
- package/dist/admin/layout-editor/overlay-shell.js.map +1 -1
- package/dist/admin/layout-editor/props-panel.d.ts +54 -1
- package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
- package/dist/admin/layout-editor/props-panel.js +119 -10
- package/dist/admin/layout-editor/props-panel.js.map +1 -1
- package/dist/admin/layout-editor/section-overlay.d.ts +16 -1
- package/dist/admin/layout-editor/section-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-overlay.js +21 -11
- package/dist/admin/layout-editor/section-overlay.js.map +1 -1
- package/dist/admin/layout-editor/section-template-picker.d.ts +27 -1
- package/dist/admin/layout-editor/section-template-picker.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-template-picker.js +71 -17
- package/dist/admin/layout-editor/section-template-picker.js.map +1 -1
- package/dist/admin/layout-editor/section-variant-container-config.js +5 -5
- package/dist/admin/layout-editor/section-variant-container-config.js.map +1 -1
- package/dist/admin/layout-editor/use-chrome-flip.d.ts +111 -11
- package/dist/admin/layout-editor/use-chrome-flip.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-chrome-flip.js +233 -33
- package/dist/admin/layout-editor/use-chrome-flip.js.map +1 -1
- package/dist/admin/layout-editor/use-component-connect.d.ts +61 -0
- package/dist/admin/layout-editor/use-component-connect.d.ts.map +1 -0
- package/dist/admin/layout-editor/use-component-connect.js +292 -0
- package/dist/admin/layout-editor/use-component-connect.js.map +1 -0
- package/dist/admin/layout-editor/use-component-fork.d.ts +123 -0
- package/dist/admin/layout-editor/use-component-fork.d.ts.map +1 -0
- package/dist/admin/layout-editor/use-component-fork.js +346 -0
- package/dist/admin/layout-editor/use-component-fork.js.map +1 -0
- package/dist/admin/layout-editor/use-component-library.d.ts +94 -0
- package/dist/admin/layout-editor/use-component-library.d.ts.map +1 -0
- package/dist/admin/layout-editor/use-component-library.js +55 -0
- package/dist/admin/layout-editor/use-component-library.js.map +1 -0
- package/dist/admin/registry.d.ts +11 -2
- package/dist/admin/registry.d.ts.map +1 -1
- package/dist/admin/registry.js +40 -4
- package/dist/admin/registry.js.map +1 -1
- package/dist/admin/server.d.ts +1 -0
- package/dist/admin/server.d.ts.map +1 -1
- package/dist/admin/server.js +5 -0
- package/dist/admin/server.js.map +1 -1
- package/dist/admin/styles/admin.css +57 -1
- package/dist/admin/surfaces/components/component-edit.d.ts +3 -0
- package/dist/admin/surfaces/components/component-edit.d.ts.map +1 -0
- package/dist/admin/surfaces/components/component-edit.js +235 -0
- package/dist/admin/surfaces/components/component-edit.js.map +1 -0
- package/dist/admin/surfaces/components/components-data.d.ts +153 -0
- package/dist/admin/surfaces/components/components-data.d.ts.map +1 -0
- package/dist/admin/surfaces/components/components-data.js +154 -0
- package/dist/admin/surfaces/components/components-data.js.map +1 -0
- package/dist/admin/surfaces/components/components-list.d.ts +3 -0
- package/dist/admin/surfaces/components/components-list.d.ts.map +1 -0
- package/dist/admin/surfaces/components/components-list.js +196 -0
- package/dist/admin/surfaces/components/components-list.js.map +1 -0
- package/dist/admin/surfaces/components/definition-canvas.d.ts +73 -0
- package/dist/admin/surfaces/components/definition-canvas.d.ts.map +1 -0
- package/dist/admin/surfaces/components/definition-canvas.js +207 -0
- package/dist/admin/surfaces/components/definition-canvas.js.map +1 -0
- package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -1
- package/dist/admin/surfaces/layouts/layout-editor-client.js +14 -2
- package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -1
- package/dist/admin/surfaces/layouts/layouts-data.d.ts +3 -14
- package/dist/admin/surfaces/layouts/layouts-data.d.ts.map +1 -1
- package/dist/admin/surfaces/layouts/layouts-data.js +4 -7
- package/dist/admin/surfaces/layouts/layouts-data.js.map +1 -1
- package/dist/admin/surfaces/layouts/layouts-list.d.ts.map +1 -1
- package/dist/admin/surfaces/layouts/layouts-list.js +16 -22
- package/dist/admin/surfaces/layouts/layouts-list.js.map +1 -1
- package/dist/admin/surfaces/settings/admin-features.d.ts.map +1 -1
- package/dist/admin/surfaces/settings/admin-features.js +1 -0
- package/dist/admin/surfaces/settings/admin-features.js.map +1 -1
- package/dist/api/bulk-routes.d.ts.map +1 -1
- package/dist/api/bulk-routes.js +25 -0
- package/dist/api/bulk-routes.js.map +1 -1
- package/dist/api/changeset-routes.d.ts.map +1 -1
- package/dist/api/changeset-routes.js +17 -3
- package/dist/api/changeset-routes.js.map +1 -1
- package/dist/api/component-routes.d.ts.map +1 -1
- package/dist/api/component-routes.js +228 -8
- package/dist/api/component-routes.js.map +1 -1
- package/dist/api/content-routes.d.ts.map +1 -1
- package/dist/api/content-routes.js +64 -0
- package/dist/api/content-routes.js.map +1 -1
- package/dist/api/feed-routes.d.ts +6 -6
- package/dist/api/graphql/resolvers.d.ts +4 -4
- package/dist/api/layout-routes.d.ts.map +1 -1
- package/dist/api/layout-routes.js +4 -17
- package/dist/api/layout-routes.js.map +1 -1
- package/dist/api/layout-write-guard.d.ts +80 -0
- package/dist/api/layout-write-guard.d.ts.map +1 -0
- package/dist/api/layout-write-guard.js +88 -0
- package/dist/api/layout-write-guard.js.map +1 -0
- package/dist/api/section-template-routes.d.ts.map +1 -1
- package/dist/api/section-template-routes.js +11 -0
- package/dist/api/section-template-routes.js.map +1 -1
- package/dist/api/translation-routes.d.ts.map +1 -1
- package/dist/api/translation-routes.js +8 -0
- package/dist/api/translation-routes.js.map +1 -1
- package/dist/api/version-routes.d.ts.map +1 -1
- package/dist/api/version-routes.js +20 -8
- package/dist/api/version-routes.js.map +1 -1
- package/dist/api/workflow-routes.d.ts.map +1 -1
- package/dist/api/workflow-routes.js +53 -8
- package/dist/api/workflow-routes.js.map +1 -1
- package/dist/db/analytics-queries.d.ts +3 -3
- package/dist/db/apply-snapshot.d.ts +75 -8
- package/dist/db/apply-snapshot.d.ts.map +1 -1
- package/dist/db/apply-snapshot.js +104 -8
- package/dist/db/apply-snapshot.js.map +1 -1
- package/dist/db/audit-queries.d.ts +12 -12
- package/dist/db/category-queries.d.ts +3 -3
- package/dist/db/changeset-audit-queries.d.ts +4 -4
- package/dist/db/changeset-queries.d.ts +7 -7
- package/dist/db/comment-queries.d.ts +8 -8
- package/dist/db/comment-subscription-queries.d.ts +2 -2
- package/dist/db/component-instance-queries.d.ts +197 -0
- package/dist/db/component-instance-queries.d.ts.map +1 -0
- package/dist/db/component-instance-queries.js +405 -0
- package/dist/db/component-instance-queries.js.map +1 -0
- package/dist/db/content-queries.d.ts.map +1 -1
- package/dist/db/content-queries.js +39 -2
- package/dist/db/content-queries.js.map +1 -1
- package/dist/db/extension-queries.d.ts +7 -7
- 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 +13 -1
- package/dist/db/layout-queries.d.ts.map +1 -1
- package/dist/db/layout-queries.js +52 -7
- package/dist/db/layout-queries.js.map +1 -1
- package/dist/db/locale-queries.d.ts.map +1 -1
- package/dist/db/locale-queries.js +0 -0
- package/dist/db/locale-queries.js.map +1 -1
- package/dist/db/media-queries.d.ts +12 -12
- package/dist/db/revision-queries.d.ts +3 -3
- package/dist/db/site-admin-queries.d.ts +2 -2
- package/dist/db/site-membership-queries.d.ts +3 -3
- package/dist/db/site-plugin-queries.d.ts +2 -2
- package/dist/db/site-queries.d.ts +6 -6
- package/dist/db/version-queries.d.ts +12 -12
- package/dist/db/webhook-queries.d.ts +11 -11
- package/dist/db/workflow-queries.d.ts +6 -6
- package/dist/db/workflow-queries.d.ts.map +1 -1
- package/dist/db/workflow-queries.js +11 -2
- package/dist/db/workflow-queries.js.map +1 -1
- package/dist/layout/comments-module.d.ts.map +1 -1
- package/dist/layout/comments-module.js +6 -2
- package/dist/layout/comments-module.js.map +1 -1
- package/dist/layout/component-refs.d.ts +465 -0
- package/dist/layout/component-refs.d.ts.map +1 -0
- package/dist/layout/component-refs.js +848 -0
- package/dist/layout/component-refs.js.map +1 -0
- package/dist/layout/index.d.ts +2 -1
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +1 -0
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/module-permissions.d.ts +49 -1
- package/dist/layout/module-permissions.d.ts.map +1 -1
- package/dist/layout/module-permissions.js +117 -6
- package/dist/layout/module-permissions.js.map +1 -1
- package/dist/layout/module-render-context.d.ts +32 -0
- package/dist/layout/module-render-context.d.ts.map +1 -1
- package/dist/layout/module-render-context.js +32 -1
- package/dist/layout/module-render-context.js.map +1 -1
- package/dist/layout/modules-extended.d.ts.map +1 -1
- package/dist/layout/modules-extended.js +21 -11
- package/dist/layout/modules-extended.js.map +1 -1
- package/dist/layout/modules.d.ts.map +1 -1
- package/dist/layout/modules.js +15 -10
- package/dist/layout/modules.js.map +1 -1
- package/dist/layout/renderer.d.ts +51 -4
- package/dist/layout/renderer.d.ts.map +1 -1
- package/dist/layout/renderer.js +36 -38
- package/dist/layout/renderer.js.map +1 -1
- package/dist/layout/types.d.ts +42 -0
- package/dist/layout/types.d.ts.map +1 -1
- package/dist/layout/types.js +54 -11
- package/dist/layout/types.js.map +1 -1
- package/dist/schema/base.d.ts +1 -1
- package/dist/schema/components.d.ts +150 -0
- package/dist/schema/components.d.ts.map +1 -1
- package/dist/schema/components.js +50 -4
- package/dist/schema/components.js.map +1 -1
- package/dist/scope/inline-editing.d.ts.map +1 -1
- package/dist/scope/inline-editing.js +10 -0
- package/dist/scope/inline-editing.js.map +1 -1
- package/dist/scope/sticky-offset.d.ts +185 -0
- package/dist/scope/sticky-offset.d.ts.map +1 -0
- package/dist/scope/sticky-offset.js +432 -0
- package/dist/scope/sticky-offset.js.map +1 -0
- package/dist/site/styles.css +41 -3
- package/dist/versioning/scheduler.d.ts +8 -0
- package/dist/versioning/scheduler.d.ts.map +1 -1
- package/dist/versioning/scheduler.js +21 -7
- package/dist/versioning/scheduler.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-refs.js","sourceRoot":"","sources":["../../src/layout/component-refs.ts"],"names":[],"mappings":"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"}
|
package/dist/layout/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
|
+
export { collectComponentRefs, diffComponentRefs, rekeyResolvedSection, rekeyResolvedVariantContainer, isCleanComponentInstance, resolveModulePlacement, applySectionPlacement, applyVariantContainerPlacement, componentDetachSource, validateComponentDefinition, materializeModuleNode, materializeSectionNode, materializeVariantContainerNode, detachModuleNode, detachSectionNode, detachVariantContainerNode, detachComponentFromLayout, resolveComponentPlacements, type ComponentPlacementLookup, type ComponentRef, type ComponentRefKind, type ComponentRefDiff, type ComponentDetachSource, type ComponentDefinitionValidation, type ResolvedModuleDefinition, type DetachResult, } from './component-refs.js';
|
|
2
3
|
export { createModuleRegistry, BUILT_IN_MODULES, type ModuleRegistry, type ModuleRegistryEntry } from './registry.js';
|
|
3
4
|
export type { ModuleConfig, ModulePropDefinition, ModulePropOption } from '../config/types.js';
|
|
4
5
|
export { mergeLayoutCascade, type CascadeRule } from './cascade.js';
|
|
5
|
-
export { KywiLayout, KywiRegion, AudienceMetaTags, type ComponentResolver, type SectionComponentResolver, type PersonalizationState, type ModuleComponentMap, } from './renderer.js';
|
|
6
|
+
export { KywiLayout, KywiRegion, AudienceMetaTags, type ComponentResolver, type SectionComponentResolver, type VariantContainerComponentResolver, type PersonalizationState, type ModuleComponentMap, } from './renderer.js';
|
|
6
7
|
export { hydrateLayoutNav, type NavHydrationResolver, } from './nav-hydration.js';
|
|
7
8
|
export { hydrateLayoutFeeds, contentRowsToFeedItems, type FeedDisplayItem, type FeedItemsResolver, } from './feed-hydration.js';
|
|
8
9
|
export { resolvePageVariantRegions, applyPageVariant } from './personalization.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACrH,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,6BAA6B,EAC7B,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACrH,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,iCAAiC,EACtC,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAA"}
|
package/dist/layout/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
|
+
export { collectComponentRefs, diffComponentRefs, rekeyResolvedSection, rekeyResolvedVariantContainer, isCleanComponentInstance, resolveModulePlacement, applySectionPlacement, applyVariantContainerPlacement, componentDetachSource, validateComponentDefinition, materializeModuleNode, materializeSectionNode, materializeVariantContainerNode, detachModuleNode, detachSectionNode, detachVariantContainerNode, detachComponentFromLayout, resolveComponentPlacements, } from './component-refs.js';
|
|
2
3
|
export { createModuleRegistry, BUILT_IN_MODULES } from './registry.js';
|
|
3
4
|
export { mergeLayoutCascade } from './cascade.js';
|
|
4
5
|
export { KywiLayout, KywiRegion, AudienceMetaTags, } from './renderer.js';
|
package/dist/layout/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAiD,MAAM,eAAe,CAAA;AAErH,OAAO,EAAE,kBAAkB,EAAoB,MAAM,cAAc,CAAA;AACnE,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,6BAA6B,EAC7B,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,GAS3B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAiD,MAAM,eAAe,CAAA;AAErH,OAAO,EAAE,kBAAkB,EAAoB,MAAM,cAAc,CAAA;AACnE,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,GAMjB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,gBAAgB,GAEjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GAGvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAsB,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GAEnB,MAAM,gBAAgB,CAAA"}
|
|
@@ -13,6 +13,44 @@ import type { LayoutDocument } from './types.js';
|
|
|
13
13
|
* depth (privilege separation), not the XSS boundary.
|
|
14
14
|
*/
|
|
15
15
|
export declare const ADMIN_ONLY_MODULE_TYPES: ReadonlySet<string>;
|
|
16
|
+
/** The fields of a `kywi_components` row this gate reads. */
|
|
17
|
+
export interface ComponentDefinitionForGuard {
|
|
18
|
+
type: string;
|
|
19
|
+
moduleType?: string | null | undefined;
|
|
20
|
+
definition?: unknown;
|
|
21
|
+
}
|
|
22
|
+
/** Look up a component's stored definition by id (null when unknown). */
|
|
23
|
+
export type ComponentDefinitionLookup = (componentId: string) => ComponentDefinitionForGuard | null | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* View a stored component definition as the layout document it will become once
|
|
26
|
+
* placed, so ONE walker answers "which module types does this contain" for
|
|
27
|
+
* layouts and for components alike.
|
|
28
|
+
*
|
|
29
|
+
* Returns null when the definition doesn't match its declared type. The callers
|
|
30
|
+
* read that as "assume nothing" — the strict direction: on a component write the
|
|
31
|
+
* definition is rejected by `validateComponentDefinition` anyway, and on a
|
|
32
|
+
* layout write an unreadable definition simply contributes no *permission*,
|
|
33
|
+
* which is the safe default because a definition that cannot be parsed also
|
|
34
|
+
* cannot be resolved by the renderer.
|
|
35
|
+
*
|
|
36
|
+
* A module component becomes a one-node document under a fixed node id, so the
|
|
37
|
+
* differential in {@link newlyIntroducedAdminOnlyTypes} compares the definition's
|
|
38
|
+
* props against the previous definition's props — "may not modify", not just
|
|
39
|
+
* "may not introduce", exactly as for a module written into a page.
|
|
40
|
+
*/
|
|
41
|
+
export declare function componentDefinitionAsDocument(component: ComponentDefinitionForGuard | null | undefined): LayoutDocument | null;
|
|
42
|
+
/**
|
|
43
|
+
* The admin-only module types a COMPONENT write introduces or modifies — the
|
|
44
|
+
* component-library counterpart of {@link newlyIntroducedAdminOnlyTypes}, and
|
|
45
|
+
* the gate `POST /components` and `PUT /components/:id` apply to the caller.
|
|
46
|
+
*
|
|
47
|
+
* `stored = null` (a create) makes every admin-only module in the definition
|
|
48
|
+
* offending. On an update the same least-surprise contract as a layout save
|
|
49
|
+
* holds: an author may rename a component whose definition already contains an
|
|
50
|
+
* admin-placed `html` block, and may re-save its definition untouched, but may
|
|
51
|
+
* neither add one nor rewrite an existing one's props.
|
|
52
|
+
*/
|
|
53
|
+
export declare function newlyIntroducedAdminOnlyTypesInDefinition(incoming: ComponentDefinitionForGuard, stored: ComponentDefinitionForGuard | null | undefined): string[];
|
|
16
54
|
/**
|
|
17
55
|
* The admin-only module TYPES that `incoming` introduces OR modifies relative to
|
|
18
56
|
* `stored`.
|
|
@@ -33,6 +71,16 @@ export declare const ADMIN_ONLY_MODULE_TYPES: ReadonlySet<string>;
|
|
|
33
71
|
*
|
|
34
72
|
* Pass `stored = null` for a create (no prior document): every admin-only module
|
|
35
73
|
* is then offending.
|
|
74
|
+
*
|
|
75
|
+
* `resolveComponent` extends the same rule THROUGH linked components: every
|
|
76
|
+
* `componentId` link the document newly gains is expanded to its stored
|
|
77
|
+
* definition, and any admin-only module inside it counts as introduced — because
|
|
78
|
+
* it is. Only NEW links are expanded; a link the document already had is a
|
|
79
|
+
* module the page was already rendering, and changing what it resolves to is a
|
|
80
|
+
* component write, gated at that door by
|
|
81
|
+
* {@link newlyIntroducedAdminOnlyTypesInDefinition}. Omit the lookup (the
|
|
82
|
+
* default) and only the modules written directly into the document are checked,
|
|
83
|
+
* which is the pre-#147 behaviour.
|
|
36
84
|
*/
|
|
37
|
-
export declare function newlyIntroducedAdminOnlyTypes(incoming: LayoutDocument, stored: LayoutDocument | null | undefined): string[];
|
|
85
|
+
export declare function newlyIntroducedAdminOnlyTypes(incoming: LayoutDocument, stored: LayoutDocument | null | undefined, resolveComponent?: ComponentDefinitionLookup): string[];
|
|
38
86
|
//# sourceMappingURL=module-permissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-permissions.d.ts","sourceRoot":"","sources":["../../src/layout/module-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"module-permissions.d.ts","sourceRoot":"","sources":["../../src/layout/module-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,YAAY,CAAA;AAIvF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAqB,CAAA;AAoF7E,6DAA6D;AAC7D,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACtC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,yEAAyE;AACzE,MAAM,MAAM,yBAAyB,GAAG,CACtC,WAAW,EAAE,MAAM,KAChB,2BAA2B,GAAG,IAAI,GAAG,SAAS,CAAA;AAKnD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,2BAA2B,GAAG,IAAI,GAAG,SAAS,GACxD,cAAc,GAAG,IAAI,CA6CvB;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,2BAA2B,EACrC,MAAM,EAAE,2BAA2B,GAAG,IAAI,GAAG,SAAS,GACrD,MAAM,EAAE,CAIV;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EACzC,gBAAgB,CAAC,EAAE,yBAAyB,GAC3C,MAAM,EAAE,CAkBV"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { validateLayoutSection, validateVariantContainer } from './types.js';
|
|
2
|
+
import { diffComponentRefs } from './component-refs.js';
|
|
1
3
|
/**
|
|
2
4
|
* Module types that expose privileged capabilities (raw HTML injection) and must
|
|
3
5
|
* be withheld from regular editors — only siteAdmin and above may INTRODUCE them.
|
|
@@ -15,20 +17,20 @@ export const ADMIN_ONLY_MODULE_TYPES = new Set(['html']);
|
|
|
15
17
|
/** Yield every ModuleNode contained anywhere in a LayoutDocument. */
|
|
16
18
|
function* iterModuleNodes(doc) {
|
|
17
19
|
function* fromSections(sections) {
|
|
18
|
-
for (const section of sections) {
|
|
19
|
-
for (const column of section.columns) {
|
|
20
|
-
yield* column.nodes;
|
|
20
|
+
for (const section of sections ?? []) {
|
|
21
|
+
for (const column of section.columns ?? []) {
|
|
22
|
+
yield* column.nodes ?? [];
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
26
|
function* fromRegionNodes(nodes) {
|
|
25
|
-
for (const node of nodes) {
|
|
27
|
+
for (const node of nodes ?? []) {
|
|
26
28
|
if (node.type === 'section') {
|
|
27
29
|
yield* fromSections([node]);
|
|
28
30
|
}
|
|
29
31
|
else if (node.type === 'variantContainer') {
|
|
30
32
|
yield* fromSections(node.defaultSections);
|
|
31
|
-
for (const variant of node.variants) {
|
|
33
|
+
for (const variant of node.variants ?? []) {
|
|
32
34
|
yield* fromSections(variant.sections);
|
|
33
35
|
}
|
|
34
36
|
}
|
|
@@ -77,6 +79,98 @@ function stableStringify(value) {
|
|
|
77
79
|
function propsEqual(a, b) {
|
|
78
80
|
return stableStringify(a) === stableStringify(b);
|
|
79
81
|
}
|
|
82
|
+
const DEFINITION_REGION = 'definition';
|
|
83
|
+
const DEFINITION_MODULE_ID = 'definition:module';
|
|
84
|
+
/**
|
|
85
|
+
* View a stored component definition as the layout document it will become once
|
|
86
|
+
* placed, so ONE walker answers "which module types does this contain" for
|
|
87
|
+
* layouts and for components alike.
|
|
88
|
+
*
|
|
89
|
+
* Returns null when the definition doesn't match its declared type. The callers
|
|
90
|
+
* read that as "assume nothing" — the strict direction: on a component write the
|
|
91
|
+
* definition is rejected by `validateComponentDefinition` anyway, and on a
|
|
92
|
+
* layout write an unreadable definition simply contributes no *permission*,
|
|
93
|
+
* which is the safe default because a definition that cannot be parsed also
|
|
94
|
+
* cannot be resolved by the renderer.
|
|
95
|
+
*
|
|
96
|
+
* A module component becomes a one-node document under a fixed node id, so the
|
|
97
|
+
* differential in {@link newlyIntroducedAdminOnlyTypes} compares the definition's
|
|
98
|
+
* props against the previous definition's props — "may not modify", not just
|
|
99
|
+
* "may not introduce", exactly as for a module written into a page.
|
|
100
|
+
*/
|
|
101
|
+
export function componentDefinitionAsDocument(component) {
|
|
102
|
+
if (!component)
|
|
103
|
+
return null;
|
|
104
|
+
const definition = component.definition;
|
|
105
|
+
if (component.type === 'module') {
|
|
106
|
+
if (!component.moduleType)
|
|
107
|
+
return null;
|
|
108
|
+
if (typeof definition !== 'object' || definition === null)
|
|
109
|
+
return null;
|
|
110
|
+
const def = definition;
|
|
111
|
+
const props = (def['props'] ?? {});
|
|
112
|
+
const style = (def['style'] ?? {});
|
|
113
|
+
return {
|
|
114
|
+
regions: {
|
|
115
|
+
[DEFINITION_REGION]: [
|
|
116
|
+
{
|
|
117
|
+
id: 'definition:section',
|
|
118
|
+
type: 'section',
|
|
119
|
+
style: {},
|
|
120
|
+
columns: [
|
|
121
|
+
{
|
|
122
|
+
id: 'definition:column',
|
|
123
|
+
width: 12,
|
|
124
|
+
nodes: [
|
|
125
|
+
{
|
|
126
|
+
id: DEFINITION_MODULE_ID,
|
|
127
|
+
type: component.moduleType,
|
|
128
|
+
instanceId: DEFINITION_MODULE_ID,
|
|
129
|
+
props,
|
|
130
|
+
style,
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if (component.type === 'section') {
|
|
141
|
+
const parsed = validateLayoutSection(definition);
|
|
142
|
+
return parsed.success ? { regions: { [DEFINITION_REGION]: [parsed.data] } } : null;
|
|
143
|
+
}
|
|
144
|
+
if (component.type === 'variantContainer') {
|
|
145
|
+
const parsed = validateVariantContainer(definition);
|
|
146
|
+
return parsed.success ? { regions: { [DEFINITION_REGION]: [parsed.data] } } : null;
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
/** Every admin-only module type contained in a definition, ignoring identity. */
|
|
151
|
+
function adminOnlyTypesInDefinition(component) {
|
|
152
|
+
const doc = componentDefinitionAsDocument(component);
|
|
153
|
+
if (!doc)
|
|
154
|
+
return [];
|
|
155
|
+
return [...new Set([...iterModuleNodes(doc)].map(n => n.type).filter(t => ADMIN_ONLY_MODULE_TYPES.has(t)))];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* The admin-only module types a COMPONENT write introduces or modifies — the
|
|
159
|
+
* component-library counterpart of {@link newlyIntroducedAdminOnlyTypes}, and
|
|
160
|
+
* the gate `POST /components` and `PUT /components/:id` apply to the caller.
|
|
161
|
+
*
|
|
162
|
+
* `stored = null` (a create) makes every admin-only module in the definition
|
|
163
|
+
* offending. On an update the same least-surprise contract as a layout save
|
|
164
|
+
* holds: an author may rename a component whose definition already contains an
|
|
165
|
+
* admin-placed `html` block, and may re-save its definition untouched, but may
|
|
166
|
+
* neither add one nor rewrite an existing one's props.
|
|
167
|
+
*/
|
|
168
|
+
export function newlyIntroducedAdminOnlyTypesInDefinition(incoming, stored) {
|
|
169
|
+
const incomingDoc = componentDefinitionAsDocument(incoming);
|
|
170
|
+
if (!incomingDoc)
|
|
171
|
+
return [];
|
|
172
|
+
return newlyIntroducedAdminOnlyTypes(incomingDoc, componentDefinitionAsDocument(stored));
|
|
173
|
+
}
|
|
80
174
|
/**
|
|
81
175
|
* The admin-only module TYPES that `incoming` introduces OR modifies relative to
|
|
82
176
|
* `stored`.
|
|
@@ -97,8 +191,18 @@ function propsEqual(a, b) {
|
|
|
97
191
|
*
|
|
98
192
|
* Pass `stored = null` for a create (no prior document): every admin-only module
|
|
99
193
|
* is then offending.
|
|
194
|
+
*
|
|
195
|
+
* `resolveComponent` extends the same rule THROUGH linked components: every
|
|
196
|
+
* `componentId` link the document newly gains is expanded to its stored
|
|
197
|
+
* definition, and any admin-only module inside it counts as introduced — because
|
|
198
|
+
* it is. Only NEW links are expanded; a link the document already had is a
|
|
199
|
+
* module the page was already rendering, and changing what it resolves to is a
|
|
200
|
+
* component write, gated at that door by
|
|
201
|
+
* {@link newlyIntroducedAdminOnlyTypesInDefinition}. Omit the lookup (the
|
|
202
|
+
* default) and only the modules written directly into the document are checked,
|
|
203
|
+
* which is the pre-#147 behaviour.
|
|
100
204
|
*/
|
|
101
|
-
export function newlyIntroducedAdminOnlyTypes(incoming, stored) {
|
|
205
|
+
export function newlyIntroducedAdminOnlyTypes(incoming, stored, resolveComponent) {
|
|
102
206
|
const storedById = adminOnlyModulesById(stored);
|
|
103
207
|
const offending = new Set();
|
|
104
208
|
for (const node of iterModuleNodes(incoming)) {
|
|
@@ -109,6 +213,13 @@ export function newlyIntroducedAdminOnlyTypes(incoming, stored) {
|
|
|
109
213
|
offending.add(node.type);
|
|
110
214
|
}
|
|
111
215
|
}
|
|
216
|
+
if (resolveComponent) {
|
|
217
|
+
for (const ref of diffComponentRefs(stored, incoming).added) {
|
|
218
|
+
for (const type of adminOnlyTypesInDefinition(resolveComponent(ref.componentId))) {
|
|
219
|
+
offending.add(type);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
112
223
|
return [...offending];
|
|
113
224
|
}
|
|
114
225
|
//# sourceMappingURL=module-permissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-permissions.js","sourceRoot":"","sources":["../../src/layout/module-permissions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module-permissions.js","sourceRoot":"","sources":["../../src/layout/module-permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,4 +10,36 @@
|
|
|
10
10
|
* context) always gets the real, submitting form (kywi-cms#34).
|
|
11
11
|
*/
|
|
12
12
|
export declare const ModuleEditorContext: import("react").Context<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* The attribute a renderer puts on the element that renders ONE inline-editable
|
|
15
|
+
* text prop (kywi-cms#145). Kept here rather than in the layout editor so the
|
|
16
|
+
* renderers that emit it don't have to import admin code.
|
|
17
|
+
*/
|
|
18
|
+
export declare const INLINE_PROP_ATTR = "data-kywi-prop";
|
|
19
|
+
/** What `useInlinePropAnchor()` spreads onto an element. Empty off the editor. */
|
|
20
|
+
export type InlinePropAnchor = {
|
|
21
|
+
'data-kywi-prop'?: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Mark the element that renders one inline-editable text prop, so the front-of-
|
|
25
|
+
* site editor can make exactly THAT element contenteditable instead of the whole
|
|
26
|
+
* module wrapper (kywi-cms#145).
|
|
27
|
+
*
|
|
28
|
+
* Before this, inline editing bound the module's first text prop to the wrapper,
|
|
29
|
+
* which for any module rendering more than one visible text prop (card's
|
|
30
|
+
* title/body/footer, hero, cta, testimonial, …) meant a commit serialized EVERY
|
|
31
|
+
* prop's text into the one bound field — silent content corruption through the
|
|
32
|
+
* primary editing gesture.
|
|
33
|
+
*
|
|
34
|
+
* Editor-only, exactly like the #134 empty-state placeholders: outside
|
|
35
|
+
* `ModuleEditorContext` this contributes no attributes at all, so published
|
|
36
|
+
* markup is byte-identical to before (guarded by
|
|
37
|
+
* `layout/__tests__/inline-prop-anchors.test.tsx`).
|
|
38
|
+
*
|
|
39
|
+
* Only annotate an element whose text content is EXACTLY the prop's value — that
|
|
40
|
+
* equality is what makes the commit read safe. An element that also renders
|
|
41
|
+
* punctuation or a sibling value (pricing's `/{period}`) must stay unannotated;
|
|
42
|
+
* it degrades to the props-rail fallback instead of writing a mangled value.
|
|
43
|
+
*/
|
|
44
|
+
export declare function useInlinePropAnchor(): (prop: string) => InlinePropAnchor;
|
|
13
45
|
//# sourceMappingURL=module-render-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-render-context.d.ts","sourceRoot":"","sources":["../../src/layout/module-render-context.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,kCAAgC,CAAA"}
|
|
1
|
+
{"version":3,"file":"module-render-context.d.ts","sourceRoot":"","sources":["../../src/layout/module-render-context.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,kCAAgC,CAAA;AAEhE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,mBAAmB,CAAA;AAEhD,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,CAGxE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { createContext } from 'react';
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
3
|
/**
|
|
4
4
|
* Signals that a module is being rendered inside the admin layout-editor canvas
|
|
5
5
|
* rather than on a public page. Interactive modules that would otherwise emit a
|
|
@@ -12,4 +12,35 @@ import { createContext } from 'react';
|
|
|
12
12
|
* context) always gets the real, submitting form (kywi-cms#34).
|
|
13
13
|
*/
|
|
14
14
|
export const ModuleEditorContext = createContext(false);
|
|
15
|
+
/**
|
|
16
|
+
* The attribute a renderer puts on the element that renders ONE inline-editable
|
|
17
|
+
* text prop (kywi-cms#145). Kept here rather than in the layout editor so the
|
|
18
|
+
* renderers that emit it don't have to import admin code.
|
|
19
|
+
*/
|
|
20
|
+
export const INLINE_PROP_ATTR = 'data-kywi-prop';
|
|
21
|
+
/**
|
|
22
|
+
* Mark the element that renders one inline-editable text prop, so the front-of-
|
|
23
|
+
* site editor can make exactly THAT element contenteditable instead of the whole
|
|
24
|
+
* module wrapper (kywi-cms#145).
|
|
25
|
+
*
|
|
26
|
+
* Before this, inline editing bound the module's first text prop to the wrapper,
|
|
27
|
+
* which for any module rendering more than one visible text prop (card's
|
|
28
|
+
* title/body/footer, hero, cta, testimonial, …) meant a commit serialized EVERY
|
|
29
|
+
* prop's text into the one bound field — silent content corruption through the
|
|
30
|
+
* primary editing gesture.
|
|
31
|
+
*
|
|
32
|
+
* Editor-only, exactly like the #134 empty-state placeholders: outside
|
|
33
|
+
* `ModuleEditorContext` this contributes no attributes at all, so published
|
|
34
|
+
* markup is byte-identical to before (guarded by
|
|
35
|
+
* `layout/__tests__/inline-prop-anchors.test.tsx`).
|
|
36
|
+
*
|
|
37
|
+
* Only annotate an element whose text content is EXACTLY the prop's value — that
|
|
38
|
+
* equality is what makes the commit read safe. An element that also renders
|
|
39
|
+
* punctuation or a sibling value (pricing's `/{period}`) must stay unannotated;
|
|
40
|
+
* it degrades to the props-rail fallback instead of writing a mangled value.
|
|
41
|
+
*/
|
|
42
|
+
export function useInlinePropAnchor() {
|
|
43
|
+
const inEditor = useContext(ModuleEditorContext);
|
|
44
|
+
return (prop) => (inEditor ? { [INLINE_PROP_ATTR]: prop } : {});
|
|
45
|
+
}
|
|
15
46
|
//# sourceMappingURL=module-render-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-render-context.js","sourceRoot":"","sources":["../../src/layout/module-render-context.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"module-render-context.js","sourceRoot":"","sources":["../../src/layout/module-render-context.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEjD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAU,KAAK,CAAC,CAAA;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAA;AAKhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAA;IAChD,OAAO,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AACzE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules-extended.d.ts","sourceRoot":"","sources":["../../src/layout/modules-extended.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAQ9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAcD,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,2CAqBjD;AAID,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,2CAUjD;AAID,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"modules-extended.d.ts","sourceRoot":"","sources":["../../src/layout/modules-extended.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { useContext, useEffect, useState } from 'react';
|
|
|
4
4
|
import { sanitizeHtml } from '../util/sanitize.js';
|
|
5
5
|
import { resolveMediaRef } from './media-ref.js';
|
|
6
6
|
import { KywiForm } from '../scope/kywi-form.js';
|
|
7
|
-
import { ModuleEditorContext } from './module-render-context.js';
|
|
7
|
+
import { ModuleEditorContext, useInlinePropAnchor } from './module-render-context.js';
|
|
8
8
|
import { CommentsModule } from './comments-module.js';
|
|
9
9
|
// ─── Helper: parse JSON-or-array props ──────────────────────────────────────
|
|
10
10
|
function parseArrayProp(raw) {
|
|
@@ -38,10 +38,11 @@ export function EmbedModule({ props }) {
|
|
|
38
38
|
}
|
|
39
39
|
// ─── Accordion ────────────────────────────────────────────────────────────────
|
|
40
40
|
export function AccordionModule({ props }) {
|
|
41
|
+
const anchor = useInlinePropAnchor();
|
|
41
42
|
const title = String(props.title ?? '');
|
|
42
43
|
const content = sanitizeHtml(String(props.content ?? ''));
|
|
43
44
|
const open = props.open === true;
|
|
44
|
-
return (_jsx("div", { className: "kywi-module kywi-module-accordion", children: _jsxs("details", { open: open || undefined, children: [_jsx("summary", { children: title }), _jsx("div", { dangerouslySetInnerHTML: { __html: content } })] }) }));
|
|
45
|
+
return (_jsx("div", { className: "kywi-module kywi-module-accordion", children: _jsxs("details", { open: open || undefined, children: [_jsx("summary", { ...anchor('title'), children: title }), _jsx("div", { ...anchor('content'), dangerouslySetInnerHTML: { __html: content } })] }) }));
|
|
45
46
|
}
|
|
46
47
|
// ─── Tabs ─────────────────────────────────────────────────────────────────────
|
|
47
48
|
export function TabsModule({ props }) {
|
|
@@ -128,15 +129,17 @@ export function SocialShareModule({ props }) {
|
|
|
128
129
|
}
|
|
129
130
|
// ─── CTA ──────────────────────────────────────────────────────────────────────
|
|
130
131
|
export function CtaModule({ props }) {
|
|
132
|
+
const anchor = useInlinePropAnchor();
|
|
131
133
|
const headline = String(props.headline ?? '');
|
|
132
134
|
const subtext = String(props.subtext ?? '');
|
|
133
135
|
const buttonLabel = String(props.buttonLabel ?? 'Get Started');
|
|
134
136
|
const buttonHref = String(props.buttonHref ?? '#');
|
|
135
137
|
const buttonVariant = String(props.buttonVariant ?? 'primary');
|
|
136
|
-
return (_jsxs("section", { className: "kywi-module kywi-module-cta", children: [headline && _jsx("h2", { className: "kywi-cta-headline", children: headline }), subtext && _jsx("p", { className: "kywi-cta-subtext", children: subtext }), _jsx("a", { href: buttonHref, className: `kywi-btn kywi-btn-${buttonVariant} kywi-cta-btn`, children: buttonLabel })] }));
|
|
138
|
+
return (_jsxs("section", { className: "kywi-module kywi-module-cta", children: [headline && _jsx("h2", { className: "kywi-cta-headline", ...anchor('headline'), children: headline }), subtext && _jsx("p", { className: "kywi-cta-subtext", ...anchor('subtext'), children: subtext }), _jsx("a", { href: buttonHref, className: `kywi-btn kywi-btn-${buttonVariant} kywi-cta-btn`, ...anchor('buttonLabel'), children: buttonLabel })] }));
|
|
137
139
|
}
|
|
138
140
|
// ─── Hero ─────────────────────────────────────────────────────────────────────
|
|
139
141
|
export function HeroModule({ props }) {
|
|
142
|
+
const anchor = useInlinePropAnchor();
|
|
140
143
|
const headline = String(props.headline ?? '');
|
|
141
144
|
const subtext = String(props.subtext ?? '');
|
|
142
145
|
const backgroundImage = props.backgroundImage ? resolveMediaRef(props.backgroundImage) : undefined;
|
|
@@ -145,18 +148,20 @@ export function HeroModule({ props }) {
|
|
|
145
148
|
const style = backgroundImage
|
|
146
149
|
? { backgroundImage: `url(${backgroundImage})`, backgroundSize: 'cover', backgroundPosition: 'center' }
|
|
147
150
|
: {};
|
|
148
|
-
return (_jsx("section", { className: "kywi-module kywi-module-hero", style: style, children: _jsxs("div", { className: "kywi-hero-overlay", children: [headline && _jsx("h1", { className: "kywi-hero-headline", children: headline }), subtext && _jsx("p", { className: "kywi-hero-subtext", children: subtext }), buttonLabel && (_jsx("a", { href: buttonHref, className: "kywi-btn kywi-btn-primary kywi-hero-btn", children: buttonLabel }))] }) }));
|
|
151
|
+
return (_jsx("section", { className: "kywi-module kywi-module-hero", style: style, children: _jsxs("div", { className: "kywi-hero-overlay", children: [headline && _jsx("h1", { className: "kywi-hero-headline", ...anchor('headline'), children: headline }), subtext && _jsx("p", { className: "kywi-hero-subtext", ...anchor('subtext'), children: subtext }), buttonLabel && (_jsx("a", { href: buttonHref, className: "kywi-btn kywi-btn-primary kywi-hero-btn", ...anchor('buttonLabel'), children: buttonLabel }))] }) }));
|
|
149
152
|
}
|
|
150
153
|
// ─── Testimonial ──────────────────────────────────────────────────────────────
|
|
151
154
|
export function TestimonialModule({ props }) {
|
|
155
|
+
const anchor = useInlinePropAnchor();
|
|
152
156
|
const quote = String(props.quote ?? '');
|
|
153
157
|
const author = String(props.author ?? '');
|
|
154
158
|
const role = props.role ? String(props.role) : undefined;
|
|
155
159
|
const avatar = props.avatar ? resolveMediaRef(props.avatar) : undefined;
|
|
156
|
-
return (_jsx("div", { className: "kywi-module kywi-module-testimonial", children: _jsxs("blockquote", { className: "kywi-testimonial-quote", cite: author, children: [_jsx("p", { children: quote }), _jsxs("footer", { className: "kywi-testimonial-footer", children: [avatar && _jsx("img", { src: avatar, alt: author, className: "kywi-testimonial-avatar" }), _jsxs("cite", { children: [_jsx("span", { className: "kywi-testimonial-author", children: author }), role && _jsx("span", { className: "kywi-testimonial-role", children: role })] })] })] }) }));
|
|
160
|
+
return (_jsx("div", { className: "kywi-module kywi-module-testimonial", children: _jsxs("blockquote", { className: "kywi-testimonial-quote", cite: author, children: [_jsx("p", { ...anchor('quote'), children: quote }), _jsxs("footer", { className: "kywi-testimonial-footer", children: [avatar && _jsx("img", { src: avatar, alt: author, className: "kywi-testimonial-avatar" }), _jsxs("cite", { children: [_jsx("span", { className: "kywi-testimonial-author", ...anchor('author'), children: author }), role && _jsx("span", { className: "kywi-testimonial-role", ...anchor('role'), children: role })] })] })] }) }));
|
|
157
161
|
}
|
|
158
162
|
// ─── Pricing ──────────────────────────────────────────────────────────────────
|
|
159
163
|
export function PricingModule({ props }) {
|
|
164
|
+
const anchor = useInlinePropAnchor();
|
|
160
165
|
const planName = String(props.planName ?? '');
|
|
161
166
|
const price = String(props.price ?? '');
|
|
162
167
|
const period = String(props.period ?? 'month');
|
|
@@ -174,14 +179,15 @@ export function PricingModule({ props }) {
|
|
|
174
179
|
catch {
|
|
175
180
|
// use empty list
|
|
176
181
|
}
|
|
177
|
-
return (_jsx("div", { className: `kywi-module kywi-module-pricing${highlighted ? ' kywi-pricing-highlighted' : ''}`, children: _jsxs("div", { className: "kywi-pricing-card", children: [planName && _jsx("h3", { className: "kywi-pricing-plan", children: planName }), _jsxs("div", { className: "kywi-pricing-price", children: [_jsx("span", { className: "kywi-pricing-amount", children: price }), _jsxs("span", { className: "kywi-pricing-period", children: ["/", period] })] }), features.length > 0 && (_jsx("ul", { className: "kywi-pricing-features", children: features.map((feature, i) => (_jsx("li", { className: "kywi-pricing-feature", children: feature }, i))) })), _jsx("a", { href: buttonHref, className: "kywi-btn kywi-btn-primary kywi-pricing-btn", children: buttonLabel })] }) }));
|
|
182
|
+
return (_jsx("div", { className: `kywi-module kywi-module-pricing${highlighted ? ' kywi-pricing-highlighted' : ''}`, children: _jsxs("div", { className: "kywi-pricing-card", children: [planName && _jsx("h3", { className: "kywi-pricing-plan", ...anchor('planName'), children: planName }), _jsxs("div", { className: "kywi-pricing-price", children: [_jsx("span", { className: "kywi-pricing-amount", ...anchor('price'), children: price }), _jsxs("span", { className: "kywi-pricing-period", children: ["/", period] })] }), features.length > 0 && (_jsx("ul", { className: "kywi-pricing-features", children: features.map((feature, i) => (_jsx("li", { className: "kywi-pricing-feature", children: feature }, i))) })), _jsx("a", { href: buttonHref, className: "kywi-btn kywi-btn-primary kywi-pricing-btn", ...anchor('buttonLabel'), children: buttonLabel })] }) }));
|
|
178
183
|
}
|
|
179
184
|
// ─── FAQ ──────────────────────────────────────────────────────────────────────
|
|
180
185
|
export function FaqModule({ props }) {
|
|
186
|
+
const anchor = useInlinePropAnchor();
|
|
181
187
|
const question = String(props.question ?? '');
|
|
182
188
|
const answer = sanitizeHtml(String(props.answer ?? ''));
|
|
183
189
|
const open = props.open === true;
|
|
184
|
-
return (_jsx("div", { className: "kywi-module kywi-module-faq", children: _jsxs("details", { open: open || undefined, children: [_jsx("summary", { className: "kywi-faq-question", children: question }), _jsx("div", { className: "kywi-faq-answer", dangerouslySetInnerHTML: { __html: answer } })] }) }));
|
|
190
|
+
return (_jsx("div", { className: "kywi-module kywi-module-faq", children: _jsxs("details", { open: open || undefined, children: [_jsx("summary", { className: "kywi-faq-question", ...anchor('question'), children: question }), _jsx("div", { className: "kywi-faq-answer", ...anchor('answer'), dangerouslySetInnerHTML: { __html: answer } })] }) }));
|
|
185
191
|
}
|
|
186
192
|
// ─── Countdown ────────────────────────────────────────────────────────────────
|
|
187
193
|
export function CountdownModule({ props }) {
|
|
@@ -202,10 +208,11 @@ export function CountdownModule({ props }) {
|
|
|
202
208
|
}
|
|
203
209
|
// ─── Alert ────────────────────────────────────────────────────────────────────
|
|
204
210
|
export function AlertModule({ props }) {
|
|
211
|
+
const anchor = useInlinePropAnchor();
|
|
205
212
|
const message = String(props.message ?? '');
|
|
206
213
|
const type = String(props.type ?? 'info');
|
|
207
214
|
const dismissible = props.dismissible === true;
|
|
208
|
-
return (_jsx("div", { role: "alert", className: `kywi-module kywi-module-alert kywi-alert kywi-alert-${type}`, "data-dismissible": dismissible, children: _jsx("span", { className: "kywi-alert-message", children: message }) }));
|
|
215
|
+
return (_jsx("div", { role: "alert", className: `kywi-module kywi-module-alert kywi-alert kywi-alert-${type}`, "data-dismissible": dismissible, children: _jsx("span", { className: "kywi-alert-message", ...anchor('message'), children: message }) }));
|
|
209
216
|
}
|
|
210
217
|
function optionalString(value) {
|
|
211
218
|
return typeof value === 'string' && value !== '' ? value : undefined;
|
|
@@ -487,17 +494,19 @@ export function ColumnsModule({ props }) {
|
|
|
487
494
|
}
|
|
488
495
|
// ─── Blockquote ──────────────────────────────────────────────────────────────
|
|
489
496
|
export function BlockquoteModule({ props }) {
|
|
497
|
+
const anchor = useInlinePropAnchor();
|
|
490
498
|
const content = String(props.content ?? '');
|
|
491
499
|
const cite = props.cite ? String(props.cite) : undefined;
|
|
492
500
|
const author = props.author ? String(props.author) : undefined;
|
|
493
|
-
return (_jsxs("figure", { className: "kywi-module kywi-module-blockquote", children: [_jsx("blockquote", { cite: cite, children: _jsx("p", { children: content }) }), author && _jsx("figcaption", { className: "kywi-blockquote-author", children: author })] }));
|
|
501
|
+
return (_jsxs("figure", { className: "kywi-module kywi-module-blockquote", children: [_jsx("blockquote", { cite: cite, children: _jsx("p", { ...anchor('content'), children: content }) }), author && (_jsx("figcaption", { className: "kywi-blockquote-author", ...anchor('author'), children: author }))] }));
|
|
494
502
|
}
|
|
495
503
|
// ─── Badge ───────────────────────────────────────────────────────────────────
|
|
496
504
|
export function BadgeModule({ props }) {
|
|
505
|
+
const anchor = useInlinePropAnchor();
|
|
497
506
|
const label = String(props.label ?? '');
|
|
498
507
|
const variant = String(props.variant ?? 'default');
|
|
499
508
|
const href = props.href ? String(props.href) : undefined;
|
|
500
|
-
const inner = _jsx("span", { className: `kywi-badge kywi-badge-${variant}`, children: label });
|
|
509
|
+
const inner = (_jsx("span", { className: `kywi-badge kywi-badge-${variant}`, ...anchor('label'), children: label }));
|
|
501
510
|
return (_jsx("span", { className: "kywi-module kywi-module-badge", children: href ? _jsx("a", { href: href, children: inner }) : inner }));
|
|
502
511
|
}
|
|
503
512
|
// ─── Icon ────────────────────────────────────────────────────────────────────
|
|
@@ -510,13 +519,14 @@ export function IconModule({ props }) {
|
|
|
510
519
|
}
|
|
511
520
|
// ─── Card ────────────────────────────────────────────────────────────────────
|
|
512
521
|
export function CardModule({ props }) {
|
|
522
|
+
const anchor = useInlinePropAnchor();
|
|
513
523
|
const title = String(props.title ?? '');
|
|
514
524
|
const body = String(props.body ?? '');
|
|
515
525
|
const image = props.image ? resolveMediaRef(props.image) : undefined;
|
|
516
526
|
const imageAlt = String(props.imageAlt ?? title);
|
|
517
527
|
const href = props.href ? String(props.href) : undefined;
|
|
518
528
|
const footer = props.footer ? String(props.footer) : undefined;
|
|
519
|
-
const card = (_jsxs("div", { className: "kywi-module kywi-module-card", children: [image && _jsx("img", { src: image, alt: imageAlt, className: "kywi-card-image" }), _jsxs("div", { className: "kywi-card-body", children: [title && _jsx("h3", { className: "kywi-card-title", children: title }), body && _jsx("p", { className: "kywi-card-text", children: body })] }), footer && _jsx("div", { className: "kywi-card-footer", children: footer })] }));
|
|
529
|
+
const card = (_jsxs("div", { className: "kywi-module kywi-module-card", children: [image && _jsx("img", { src: image, alt: imageAlt, className: "kywi-card-image" }), _jsxs("div", { className: "kywi-card-body", children: [title && _jsx("h3", { className: "kywi-card-title", ...anchor('title'), children: title }), body && _jsx("p", { className: "kywi-card-text", ...anchor('body'), children: body })] }), footer && _jsx("div", { className: "kywi-card-footer", ...anchor('footer'), children: footer })] }));
|
|
520
530
|
return href ? _jsx("a", { href: href, className: "kywi-card-link", children: card }) : card;
|
|
521
531
|
}
|
|
522
532
|
// ─── Tag Cloud ───────────────────────────────────────────────────────────────
|