@kywi-software/core 0.6.2 → 0.6.3
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/README.md +23 -5
- package/dist/admin/layout-editor/column-overlay.d.ts +14 -1
- package/dist/admin/layout-editor/column-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/column-overlay.js +5 -2
- package/dist/admin/layout-editor/column-overlay.js.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.d.ts +34 -1
- package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.js +156 -16
- package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
- package/dist/admin/layout-editor/editor-state.d.ts +57 -2
- package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-state.js +125 -53
- package/dist/admin/layout-editor/editor-state.js.map +1 -1
- package/dist/admin/layout-editor/editor.css +487 -44
- package/dist/admin/layout-editor/index.d.ts +1 -1
- package/dist/admin/layout-editor/index.d.ts.map +1 -1
- package/dist/admin/layout-editor/index.js.map +1 -1
- package/dist/admin/layout-editor/inline-text.d.ts +44 -0
- package/dist/admin/layout-editor/inline-text.d.ts.map +1 -0
- package/dist/admin/layout-editor/inline-text.js +67 -0
- package/dist/admin/layout-editor/inline-text.js.map +1 -0
- package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
- package/dist/admin/layout-editor/layout-editor.js +23 -31
- package/dist/admin/layout-editor/layout-editor.js.map +1 -1
- package/dist/admin/layout-editor/module-overlay.d.ts +32 -1
- package/dist/admin/layout-editor/module-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/module-overlay.js +108 -6
- package/dist/admin/layout-editor/module-overlay.js.map +1 -1
- package/dist/admin/layout-editor/node-lookup.d.ts +94 -0
- package/dist/admin/layout-editor/node-lookup.d.ts.map +1 -0
- package/dist/admin/layout-editor/node-lookup.js +142 -0
- package/dist/admin/layout-editor/node-lookup.js.map +1 -0
- package/dist/admin/layout-editor/overlay-shell.d.ts +19 -1
- package/dist/admin/layout-editor/overlay-shell.d.ts.map +1 -1
- package/dist/admin/layout-editor/overlay-shell.js +177 -69
- package/dist/admin/layout-editor/overlay-shell.js.map +1 -1
- package/dist/admin/layout-editor/props-panel.d.ts +9 -2
- package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
- package/dist/admin/layout-editor/props-panel.js +13 -5
- package/dist/admin/layout-editor/props-panel.js.map +1 -1
- package/dist/admin/layout-editor/region-overlay.d.ts +8 -1
- package/dist/admin/layout-editor/region-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/region-overlay.js +4 -1
- package/dist/admin/layout-editor/region-overlay.js.map +1 -1
- package/dist/admin/layout-editor/section-insert-line.d.ts +7 -1
- package/dist/admin/layout-editor/section-insert-line.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-insert-line.js +4 -1
- package/dist/admin/layout-editor/section-insert-line.js.map +1 -1
- package/dist/admin/layout-editor/section-overlay.d.ts +13 -1
- package/dist/admin/layout-editor/section-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-overlay.js +24 -12
- package/dist/admin/layout-editor/section-overlay.js.map +1 -1
- package/dist/admin/layout-editor/section-variant-container-config.d.ts +29 -0
- package/dist/admin/layout-editor/section-variant-container-config.d.ts.map +1 -0
- package/dist/admin/layout-editor/section-variant-container-config.js +82 -0
- package/dist/admin/layout-editor/section-variant-container-config.js.map +1 -0
- package/dist/admin/styles/admin.css +5 -2
- package/dist/admin/surfaces/content/content-edit.d.ts.map +1 -1
- package/dist/admin/surfaces/content/content-edit.js +8 -1
- package/dist/admin/surfaces/content/content-edit.js.map +1 -1
- package/dist/db/content-queries.d.ts +35 -0
- package/dist/db/content-queries.d.ts.map +1 -1
- package/dist/db/content-queries.js +175 -36
- package/dist/db/content-queries.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 +4 -1
- package/dist/nav/index.js.map +1 -1
- package/dist/nav/url-resolver.d.ts +27 -0
- package/dist/nav/url-resolver.d.ts.map +1 -1
- package/dist/nav/url-resolver.js +36 -1
- package/dist/nav/url-resolver.js.map +1 -1
- package/dist/scope/edit-mode-hooks.d.ts.map +1 -1
- package/dist/scope/edit-mode-hooks.js +27 -1
- package/dist/scope/edit-mode-hooks.js.map +1 -1
- package/dist/scope/inline-editing.d.ts.map +1 -1
- package/dist/scope/inline-editing.js +2 -1
- package/dist/scope/inline-editing.js.map +1 -1
- package/dist/site/styles.css +147 -4
- package/package.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inline-text.ts
|
|
3
|
+
* Which modules can be text-edited directly on the page, and how to read the
|
|
4
|
+
* edited value back out of the DOM (kywi-cms#94).
|
|
5
|
+
*
|
|
6
|
+
* The front-of-site editor makes a text-bearing module's own rendered element
|
|
7
|
+
* `contenteditable` — the real `<h2>`, `<p>` or rich-text `<div>` the visitor
|
|
8
|
+
* sees, with the site's real styling — instead of swapping it for an input.
|
|
9
|
+
* Committing writes the SAME prop the props panel writes, through the SAME
|
|
10
|
+
* `UPDATE_PROPS` action, so there is one save path and undo/redo just work.
|
|
11
|
+
*/
|
|
12
|
+
import { sanitizeHtml } from '../../util/sanitize.js';
|
|
13
|
+
/** Prop types that hold editable copy. */
|
|
14
|
+
const TEXT_PROP_TYPES = new Set(['text', 'textarea', 'richText']);
|
|
15
|
+
/**
|
|
16
|
+
* Modules whose first prop happens to be text-typed but must never be edited by
|
|
17
|
+
* typing on the page: `html`'s `code` prop is a raw-HTML escape hatch (admin
|
|
18
|
+
* only, see ADMIN_ONLY_MODULE_TYPES) where contenteditable would mangle the
|
|
19
|
+
* source the author is deliberately hand-writing.
|
|
20
|
+
*/
|
|
21
|
+
const NOT_INLINE_EDITABLE = new Set(['html']);
|
|
22
|
+
/**
|
|
23
|
+
* The module's *primary* text prop, or null when it has none.
|
|
24
|
+
*
|
|
25
|
+
* Deliberately only the FIRST declared prop: that is the module's headline
|
|
26
|
+
* content by convention across the registry (heading → `text`, richText →
|
|
27
|
+
* `content`, button → `label`), and it keeps a module like `image` — whose
|
|
28
|
+
* first prop is the image itself and whose `alt` is a text prop further down —
|
|
29
|
+
* out of inline editing, where typing over the picture would be nonsense.
|
|
30
|
+
*/
|
|
31
|
+
export function resolveInlineTextProp(config) {
|
|
32
|
+
if (!config)
|
|
33
|
+
return null;
|
|
34
|
+
if (NOT_INLINE_EDITABLE.has(config.name))
|
|
35
|
+
return null;
|
|
36
|
+
const entries = Object.entries(config.props ?? {});
|
|
37
|
+
const first = entries[0];
|
|
38
|
+
if (!first)
|
|
39
|
+
return null;
|
|
40
|
+
const [name, definition] = first;
|
|
41
|
+
if (!TEXT_PROP_TYPES.has(definition.type))
|
|
42
|
+
return null;
|
|
43
|
+
return { name, html: definition.type === 'richText' };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Read the edited value back out of an editing host.
|
|
47
|
+
*
|
|
48
|
+
* The host is the module's wrapper element, which also carries the editor's own
|
|
49
|
+
* floating chrome (type chip, action cluster). Chrome is marked with
|
|
50
|
+
* `data-kywi-editor-chrome` and skipped, so the value comes from the module's
|
|
51
|
+
* own rendered element — `innerHTML` for a rich-text prop, `textContent` for a
|
|
52
|
+
* plain one.
|
|
53
|
+
*
|
|
54
|
+
* HTML values are put through the same `sanitizeHtml` the renderer applies, so
|
|
55
|
+
* what is stored is exactly what will render — contenteditable cannot smuggle a
|
|
56
|
+
* shape the public page would strip anyway.
|
|
57
|
+
*/
|
|
58
|
+
export function readInlineTextValue(host, html) {
|
|
59
|
+
const content = Array.from(host.children).find((el) => !el.hasAttribute('data-kywi-editor-chrome'));
|
|
60
|
+
const target = content ?? host;
|
|
61
|
+
if (html)
|
|
62
|
+
return sanitizeHtml(target.innerHTML);
|
|
63
|
+
// contenteditable leaves non-breaking spaces behind where the browser padded
|
|
64
|
+
// the line; normalise them so a round-trip through the props panel matches.
|
|
65
|
+
return (target.textContent ?? '').replace(/\u00a0/g, ' ').trim();
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=inline-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-text.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/inline-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAUrD,0CAA0C;AAC1C,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;AAEjE;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAE7C;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAuC;IAC3E,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,IAAI,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA0C,CAAA;IAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,KAAK,CAAA;IAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACtD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAA;AACvD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAiB,EAAE,IAAa;IAClE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC5C,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAyB,CAAC,CACzB,CAAA;IAC5B,MAAM,MAAM,GAAG,OAAO,IAAI,IAAI,CAAA;IAC9B,IAAI,IAAI;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC/C,6EAA6E;IAC7E,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AAClE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-editor.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/layout-editor.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAUnF,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"layout-editor.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/layout-editor.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAUnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAiB9D,OAAO,cAAc,CAAA;AAarB,UAAU,iBAAiB;IACzB,aAAa,EAAE,cAAc,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,cAAc,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC,CAAA;IACzH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB;0EACsE;IACtE,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;IAC3C,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAYD,wBAAgB,YAAY,CAAC,EAC3B,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,GACT,EAAE,iBAAiB,2CA6UnB"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useReducer, useState, useCallback, useEffect, useRef } from 'react';
|
|
4
4
|
import { DndContext, PointerSensor, KeyboardSensor, useSensors, useSensor, closestCenter, } from '@dnd-kit/core';
|
|
5
|
-
import { isLayoutSection } from '../../layout/types.js';
|
|
6
5
|
import { editorReducer, createInitialState } from './editor-state.js';
|
|
6
|
+
import { findModuleInDocument, findSectionInDocument, findVariantContainerInDocument, } from './node-lookup.js';
|
|
7
7
|
import { resolveDragEndAction } from './drag-utils.js';
|
|
8
8
|
import { EditorToolbar } from './editor-toolbar.js';
|
|
9
9
|
import { ModulePalette } from './module-palette.js';
|
|
@@ -14,35 +14,11 @@ import { adminFetch } from '../../host-client/index.js';
|
|
|
14
14
|
import { saveAsComponent, detachModuleFromComponent, detachSectionFromComponent, resolveComponentDefinition } from './component-actions.js';
|
|
15
15
|
import './editor.css';
|
|
16
16
|
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
for (const sections of Object.values(layout.regions)) {
|
|
23
|
-
for (const section of sections) {
|
|
24
|
-
if (!isLayoutSection(section))
|
|
25
|
-
continue;
|
|
26
|
-
for (const column of section.columns) {
|
|
27
|
-
for (const node of column.nodes) {
|
|
28
|
-
if (node.id === moduleId)
|
|
29
|
-
return node;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
/** Find a top-level LayoutSection by id across all regions (kywi-cms#69). */
|
|
37
|
-
function findSectionById(layout, sectionId) {
|
|
38
|
-
for (const sections of Object.values(layout.regions)) {
|
|
39
|
-
for (const section of sections) {
|
|
40
|
-
if (isLayoutSection(section) && section.id === sectionId)
|
|
41
|
-
return section;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
17
|
+
// Selection lookups are arm-aware (kywi-cms#92): a module or section living
|
|
18
|
+
// inside a section-level variant container's arm resolves like any other, so
|
|
19
|
+
// props editing works on everything the canvas now renders.
|
|
20
|
+
const findModuleById = findModuleInDocument;
|
|
21
|
+
const findSectionById = findSectionInDocument;
|
|
46
22
|
// ── Component ─────────────────────────────────────────────────────────────────
|
|
47
23
|
export function LayoutEditor({ initialLayout, moduleRegistry, moduleComponents, onSave, onCancel, audiences, onChange, userRole, }) {
|
|
48
24
|
const [state, dispatch] = useReducer(editorReducer, initialLayout, createInitialState);
|
|
@@ -241,6 +217,18 @@ export function LayoutEditor({ initialLayout, moduleRegistry, moduleComponents,
|
|
|
241
217
|
if (state.selectedId)
|
|
242
218
|
dispatch({ type: 'REMOVE_SECTION', sectionId: state.selectedId });
|
|
243
219
|
}, [state.selectedId]);
|
|
220
|
+
// ── Section-level variant containers (kywi-cms#92) ────────────────────────
|
|
221
|
+
const handleUpdateVariantContainer = useCallback((patch) => {
|
|
222
|
+
if (state.selectedId) {
|
|
223
|
+
dispatch({ type: 'UPDATE_VARIANT_CONTAINER', containerId: state.selectedId, patch });
|
|
224
|
+
}
|
|
225
|
+
}, [state.selectedId]);
|
|
226
|
+
const handleDeleteVariantContainer = useCallback(() => {
|
|
227
|
+
if (!state.selectedId)
|
|
228
|
+
return;
|
|
229
|
+
dispatch({ type: 'REMOVE_VARIANT_CONTAINER', containerId: state.selectedId });
|
|
230
|
+
dispatch({ type: 'DESELECT' });
|
|
231
|
+
}, [state.selectedId]);
|
|
244
232
|
// Module-type components offered by the props-panel picker.
|
|
245
233
|
const componentOptions = components.map(c => ({ id: c.id, name: c.name, moduleType: c.moduleType }));
|
|
246
234
|
// Section-type components, for the linked-badge label.
|
|
@@ -255,13 +243,17 @@ export function LayoutEditor({ initialLayout, moduleRegistry, moduleComponents,
|
|
|
255
243
|
const selectedSection = state.selectedType === 'section' && state.selectedId
|
|
256
244
|
? findSectionById(state.layout, state.selectedId)
|
|
257
245
|
: null;
|
|
246
|
+
// A section-level variant container is selected via its canvas block (#92).
|
|
247
|
+
const selectedVariantContainer = state.selectedType === 'variantContainer' && state.selectedId
|
|
248
|
+
? findVariantContainerInDocument(state.layout, state.selectedId)
|
|
249
|
+
: null;
|
|
258
250
|
return (_jsxs(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: [_jsxs("div", { className: "kywi-editor-root", children: [_jsx(EditorToolbar, { state: state, dispatch: dispatch, ...(audiences ? { audiences } : {}), onSave: handleSave, onCancel: handleCancel, onAddSection: () => {
|
|
259
251
|
setTemplateRegion(Object.keys(state.layout.regions)[0] ?? 'main');
|
|
260
252
|
setShowTemplatePicker(true);
|
|
261
253
|
} }), _jsxs("div", { className: "kywi-editor-body", children: [_jsx(ModulePalette, { modules: moduleRegistry.list(), ...(userRole ? { userRole } : {}) }), _jsx("div", { className: "kywi-editor-canvas", children: _jsx(EditorCanvas, { state: state, dispatch: dispatch, moduleComponents: moduleComponents, onInsertSection: handleInsertSection, resolveComponent: resolveComponent }) }), _jsx(PropsPanel, { module: selectedModule, moduleConfig: selectedConfig, ...(audiences ? { audiences } : {}), components: componentOptions, onUpdateProps: (props) => dispatch({ type: 'UPDATE_PROPS', moduleId: state.selectedId, props }), onUpdateStyle: (style) => dispatch({ type: 'UPDATE_STYLE', moduleId: state.selectedId, style }), onDelete: () => dispatch({ type: 'REMOVE_MODULE', moduleId: state.selectedId }), onSaveAsComponent: handleSaveAsComponent, onLinkComponent: (componentId) => {
|
|
262
254
|
if (state.selectedId)
|
|
263
255
|
linkModule(state.selectedId, componentId);
|
|
264
|
-
}, onDetach: handleDetach, section: selectedSection, sectionComponents: sectionComponentOptions, onSaveSectionAsComponent: handleSaveSectionAsComponent, onDetachSection: handleDetachSection, onDeleteSection: handleDeleteSection, onClose: () => dispatch({ type: 'DESELECT' }) })] })] }), showTemplatePicker && (_jsx(SectionTemplatePicker, { onSelect: (columns) => {
|
|
256
|
+
}, onDetach: handleDetach, section: selectedSection, sectionComponents: sectionComponentOptions, onSaveSectionAsComponent: handleSaveSectionAsComponent, onDetachSection: handleDetachSection, onDeleteSection: handleDeleteSection, variantContainer: selectedVariantContainer, onUpdateVariantContainer: handleUpdateVariantContainer, onDeleteVariantContainer: handleDeleteVariantContainer, onClose: () => dispatch({ type: 'DESELECT' }) })] })] }), showTemplatePicker && (_jsx(SectionTemplatePicker, { onSelect: (columns) => {
|
|
265
257
|
if (templateRegion) {
|
|
266
258
|
dispatch({ type: 'ADD_SECTION', regionName: templateRegion, columns });
|
|
267
259
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-editor.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/layout-editor.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"layout-editor.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/layout-editor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { OverlayAction } from './section-overlay.js';
|
|
3
|
+
/**
|
|
4
|
+
* Inline text editing for one module (kywi-cms#94). The overlay makes its own
|
|
5
|
+
* wrapper — which contains the module's real rendered element — contenteditable
|
|
6
|
+
* so the owner types on the page, in the page's styling. Commit reads the value
|
|
7
|
+
* back out of the DOM (see `readInlineTextValue`); the parent turns that into an
|
|
8
|
+
* `UPDATE_PROPS` dispatch, so the edit goes through history like any other.
|
|
9
|
+
*/
|
|
10
|
+
export interface InlineTextBinding {
|
|
11
|
+
/** True while THIS module is the one being text-edited. */
|
|
12
|
+
active: boolean;
|
|
13
|
+
/** Whether the bound prop holds HTML (Enter inserts a line break instead of committing). */
|
|
14
|
+
html: boolean;
|
|
15
|
+
/** Begin editing (double-click, or a click on an already-selected module). */
|
|
16
|
+
onActivate: () => void;
|
|
17
|
+
/** Commit the value currently in `host` and end the edit. */
|
|
18
|
+
onCommit: (host: HTMLElement) => void;
|
|
19
|
+
/** Abandon the edit and end it, leaving the stored props untouched. */
|
|
20
|
+
onCancel: () => void;
|
|
21
|
+
}
|
|
3
22
|
interface ModuleOverlayProps {
|
|
4
23
|
moduleId: string;
|
|
5
24
|
instanceId: string;
|
|
@@ -17,8 +36,20 @@ interface ModuleOverlayProps {
|
|
|
17
36
|
actions?: OverlayAction[];
|
|
18
37
|
/** Human-readable module type shown in the corner chip on hover/selection. */
|
|
19
38
|
typeLabel?: string;
|
|
39
|
+
/**
|
|
40
|
+
* In-place (front-of-site) mode: emit the PUBLIC renderer's module wrapper —
|
|
41
|
+
* `.kywi-module-wrapper .kywi-module--{type}` + `data-kywi-module` /
|
|
42
|
+
* `data-instance-id` — so the site's own CSS styles the module exactly as it
|
|
43
|
+
* does when nobody is editing, and float the chrome instead of insetting it
|
|
44
|
+
* (kywi-cms#94).
|
|
45
|
+
*/
|
|
46
|
+
inPlace?: boolean;
|
|
47
|
+
/** Module type, used for the public wrapper's BEM class + data hook in in-place mode. */
|
|
48
|
+
moduleType?: string;
|
|
49
|
+
/** Inline text editing binding, when this module carries a primary text prop. */
|
|
50
|
+
inlineText?: InlineTextBinding | null;
|
|
20
51
|
children: React.ReactNode;
|
|
21
52
|
}
|
|
22
|
-
export declare function ModuleOverlay({ moduleId, instanceId, columnId, index, isSelected, onSelect, actions, typeLabel, children, }: ModuleOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
53
|
+
export declare function ModuleOverlay({ moduleId, instanceId, columnId, index, isSelected, onSelect, actions, typeLabel, inPlace, moduleType, inlineText, children, }: ModuleOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
23
54
|
export {};
|
|
24
55
|
//# sourceMappingURL=module-overlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-overlay.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/module-overlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;sDAKkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,KAAK,EACL,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"module-overlay.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/module-overlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,MAAM,EAAE,OAAO,CAAA;IACf,4FAA4F;IAC5F,IAAI,EAAE,OAAO,CAAA;IACb,8EAA8E;IAC9E,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,6DAA6D;IAC7D,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IACrC,uEAAuE;IACvE,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;sDAKkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iFAAiF;IACjF,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,KAAK,EACL,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,OAAe,EACf,UAAU,EACV,UAAU,EACV,QAAQ,GACT,EAAE,kBAAkB,2CAqLpB"}
|
|
@@ -1,23 +1,125 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import React from 'react';
|
|
3
4
|
import { useSortable } from '@dnd-kit/sortable';
|
|
4
5
|
import { CSS } from '@dnd-kit/utilities';
|
|
5
6
|
import { EditorIcon } from './editor-icons.js';
|
|
6
|
-
export function ModuleOverlay({ moduleId, instanceId, columnId, index, isSelected, onSelect, actions, typeLabel, children, }) {
|
|
7
|
+
export function ModuleOverlay({ moduleId, instanceId, columnId, index, isSelected, onSelect, actions, typeLabel, inPlace = false, moduleType, inlineText, children, }) {
|
|
7
8
|
const { attributes, listeners, setNodeRef, transform, transition } = useSortable({
|
|
8
9
|
id: moduleId,
|
|
9
10
|
data: { source: 'canvas', moduleId, instanceId, columnId, index },
|
|
10
11
|
});
|
|
12
|
+
const hostRef = React.useRef(null);
|
|
13
|
+
// Escape must not commit: turning contenteditable off blurs the host, and the
|
|
14
|
+
// blur handler would otherwise save the very edit the owner just abandoned.
|
|
15
|
+
const cancellingRef = React.useRef(false);
|
|
16
|
+
const setRefs = React.useCallback((node) => {
|
|
17
|
+
hostRef.current = node;
|
|
18
|
+
setNodeRef(node);
|
|
19
|
+
}, [setNodeRef]);
|
|
20
|
+
const isEditing = Boolean(inlineText?.active);
|
|
21
|
+
// Focus the editing host and drop the caret at the end of the text, so typing
|
|
22
|
+
// continues the copy rather than replacing it.
|
|
23
|
+
React.useEffect(() => {
|
|
24
|
+
if (!isEditing)
|
|
25
|
+
return;
|
|
26
|
+
const host = hostRef.current;
|
|
27
|
+
if (!host)
|
|
28
|
+
return;
|
|
29
|
+
cancellingRef.current = false;
|
|
30
|
+
host.focus();
|
|
31
|
+
const selection = window.getSelection?.();
|
|
32
|
+
if (selection && typeof document.createRange === 'function') {
|
|
33
|
+
const range = document.createRange();
|
|
34
|
+
range.selectNodeContents(host);
|
|
35
|
+
range.collapse(false);
|
|
36
|
+
selection.removeAllRanges();
|
|
37
|
+
selection.addRange(range);
|
|
38
|
+
}
|
|
39
|
+
}, [isEditing]);
|
|
11
40
|
const style = {
|
|
12
41
|
transform: CSS.Transform.toString(transform),
|
|
13
42
|
transition,
|
|
14
43
|
};
|
|
15
|
-
|
|
44
|
+
function handleClick(e) {
|
|
45
|
+
e.stopPropagation();
|
|
46
|
+
// On the real page a module's own links and buttons are live. Clicking one
|
|
47
|
+
// while editing would navigate away mid-edit, so in-place clicks select
|
|
48
|
+
// instead of following the link (kywi-cms#94).
|
|
49
|
+
if (inPlace)
|
|
50
|
+
e.preventDefault();
|
|
51
|
+
if (isEditing)
|
|
52
|
+
return;
|
|
53
|
+
// A click on an already-selected, text-bearing module starts typing —
|
|
54
|
+
// the second click of the "select, then edit" pattern (kywi-cms#94).
|
|
55
|
+
if (inlineText && isSelected) {
|
|
56
|
+
inlineText.onActivate();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
onSelect();
|
|
60
|
+
}
|
|
61
|
+
function handleDoubleClick(e) {
|
|
62
|
+
if (!inlineText || isEditing)
|
|
63
|
+
return;
|
|
64
|
+
e.stopPropagation();
|
|
65
|
+
inlineText.onActivate();
|
|
66
|
+
}
|
|
67
|
+
function handleKeyDown(e) {
|
|
68
|
+
if (!isEditing || !inlineText)
|
|
69
|
+
return;
|
|
70
|
+
if (e.key === 'Escape') {
|
|
71
|
+
// Handled here rather than at the window: stopping propagation keeps the
|
|
72
|
+
// shell's Escape handler (deselect) from also firing for the same press.
|
|
73
|
+
e.preventDefault();
|
|
16
74
|
e.stopPropagation();
|
|
17
|
-
|
|
18
|
-
|
|
75
|
+
cancellingRef.current = true;
|
|
76
|
+
inlineText.onCancel();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (e.key === 'Enter' && !e.shiftKey && !inlineText.html) {
|
|
80
|
+
// A plain-text prop is a single line — Enter means "done", not a newline.
|
|
81
|
+
e.preventDefault();
|
|
82
|
+
e.stopPropagation();
|
|
83
|
+
inlineText.onCommit(e.currentTarget);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function handleBlur(e) {
|
|
87
|
+
if (!isEditing || !inlineText)
|
|
88
|
+
return;
|
|
89
|
+
// Focus moving to a child (an action button) is not leaving the edit.
|
|
90
|
+
if (e.relatedTarget && e.currentTarget.contains(e.relatedTarget))
|
|
91
|
+
return;
|
|
92
|
+
if (cancellingRef.current) {
|
|
93
|
+
cancellingRef.current = false;
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
inlineText.onCommit(e.currentTarget);
|
|
97
|
+
}
|
|
98
|
+
const editingProps = inlineText
|
|
99
|
+
? {
|
|
100
|
+
onDoubleClick: handleDoubleClick,
|
|
101
|
+
onKeyDown: handleKeyDown,
|
|
102
|
+
onBlur: handleBlur,
|
|
103
|
+
...(isEditing
|
|
104
|
+
? { contentEditable: true, suppressContentEditableWarning: true, spellCheck: true }
|
|
105
|
+
: {}),
|
|
106
|
+
}
|
|
107
|
+
: {};
|
|
108
|
+
const chrome = (_jsxs(_Fragment, { children: [typeLabel && (_jsx("span", { className: inPlace ? 'kywi-ip-chip' : 'kywi-editor-module-type-chip', "data-kywi-editor-chrome": "", contentEditable: false, children: typeLabel })), _jsxs("div", { className: inPlace ? 'kywi-ip-chrome kywi-ip-module-actions' : 'kywi-editor-module-actions', "data-kywi-editor-chrome": "", contentEditable: false, children: [_jsx("button", { type: "button", className: "kywi-editor-module-action-btn kywi-editor-module-drag-handle", "aria-label": "Drag to reorder", title: "Drag to reorder", ...listeners, children: _jsx(EditorIcon, { name: "grip", size: 14 }) }), actions?.map((action, i) => (_jsx("button", { type: "button", className: "kywi-editor-module-action-btn", onClick: (e) => {
|
|
19
109
|
e.stopPropagation();
|
|
20
110
|
action.onClick();
|
|
21
|
-
}, title: action.label, children: action.icon }, i)))] })
|
|
111
|
+
}, title: action.label, children: action.icon }, i)))] })] }));
|
|
112
|
+
const className = inPlace
|
|
113
|
+
? [
|
|
114
|
+
'kywi-module-wrapper',
|
|
115
|
+
moduleType ? `kywi-module--${moduleType}` : null,
|
|
116
|
+
'kywi-ip-module',
|
|
117
|
+
isSelected ? 'kywi-ip-module--selected' : null,
|
|
118
|
+
isEditing ? 'kywi-ip-module--editing' : null,
|
|
119
|
+
]
|
|
120
|
+
.filter(Boolean)
|
|
121
|
+
.join(' ')
|
|
122
|
+
: `kywi-editor-module${isSelected ? ' kywi-editor-module--selected' : ''}`;
|
|
123
|
+
return (_jsxs("div", { ref: setRefs, className: className, style: style, onClick: handleClick, "data-module-id": moduleId, ...(inPlace ? { 'data-instance-id': instanceId } : {}), ...(inPlace && moduleType ? { 'data-kywi-module': moduleType } : {}), ...attributes, ...editingProps, children: [chrome, children] }));
|
|
22
124
|
}
|
|
23
125
|
//# sourceMappingURL=module-overlay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-overlay.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/module-overlay.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;
|
|
1
|
+
{"version":3,"file":"module-overlay.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/module-overlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* node-lookup.ts
|
|
3
|
+
* Arm-aware traversal for the layout editor (kywi-cms#92).
|
|
4
|
+
*
|
|
5
|
+
* A region's node array holds `LayoutSection`s *and* `VariantContainer`s. A
|
|
6
|
+
* container is not a leaf: it owns a Default arm (`defaultSections`) plus one
|
|
7
|
+
* arm per `VariantEntry` (`variants[].sections`), and every one of those arms
|
|
8
|
+
* holds ordinary sections. Editor lookups used to stop at the top level, which
|
|
9
|
+
* is exactly why section-level personalized / A-B'd content (typically the
|
|
10
|
+
* hero) was invisible and uneditable in the canvas.
|
|
11
|
+
*
|
|
12
|
+
* Everything here walks the same shape as the renderer
|
|
13
|
+
* (`VariantContainerRenderer`) and `layout/module-permissions.ts`: region nodes
|
|
14
|
+
* → container arms → sections → columns → modules.
|
|
15
|
+
*/
|
|
16
|
+
import type { LayoutColumn, LayoutDocument, LayoutSection, ModuleNode, RegionNode, VariantContainer } from '../../layout/types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Arm id standing for a container's Default arm. Real arms are keyed by their
|
|
19
|
+
* `VariantEntry.id`, so a reserved literal keeps "which arm is open" a single
|
|
20
|
+
* `string` rather than `string | null` everywhere it is stored or compared.
|
|
21
|
+
* The renderer uses the same word for its `data-variant` attribute.
|
|
22
|
+
*/
|
|
23
|
+
export declare const DEFAULT_ARM_ID = "default";
|
|
24
|
+
/** Narrow a RegionNode to a VariantContainer (mirrors `isLayoutSection`). */
|
|
25
|
+
export declare function isVariantContainer(node: RegionNode): node is VariantContainer;
|
|
26
|
+
/**
|
|
27
|
+
* One array that directly holds `LayoutSection`s, plus enough context to know
|
|
28
|
+
* where it sits in the document.
|
|
29
|
+
*
|
|
30
|
+
* `siblings` is typed `RegionNode[]` so callers can splice/index it uniformly
|
|
31
|
+
* whether it is a region's own node array or a container arm. A container arm
|
|
32
|
+
* is really a `LayoutSection[]` widened by TypeScript's (unsound) array
|
|
33
|
+
* covariance — so callers may insert `LayoutSection`s into `siblings`, but must
|
|
34
|
+
* never insert a `VariantContainer` (containers do not nest).
|
|
35
|
+
*/
|
|
36
|
+
export interface SectionHolder {
|
|
37
|
+
regionName: string;
|
|
38
|
+
/** The region's own top-level node array. */
|
|
39
|
+
region: RegionNode[];
|
|
40
|
+
/** The array directly containing the sections of this holder. */
|
|
41
|
+
siblings: RegionNode[];
|
|
42
|
+
/** The variant container that owns this arm, or null for the region itself. */
|
|
43
|
+
container: VariantContainer | null;
|
|
44
|
+
/** `DEFAULT_ARM_ID`, a `VariantEntry.id`, or null when this is the region. */
|
|
45
|
+
armId: string | null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Every section-holding array in a regions map, in document order: each
|
|
49
|
+
* region's own node list first, then each variant container's Default arm and
|
|
50
|
+
* variant arms.
|
|
51
|
+
*/
|
|
52
|
+
export declare function iterSectionHolders(regions: Record<string, RegionNode[]>): Generator<SectionHolder>;
|
|
53
|
+
/** The sections of one arm, or null when `armId` names no arm of this container. */
|
|
54
|
+
export declare function armSections(container: VariantContainer, armId: string): LayoutSection[] | null;
|
|
55
|
+
/**
|
|
56
|
+
* The sections the editor should show for `armId`, falling back to the Default
|
|
57
|
+
* arm when the requested arm no longer exists (e.g. it was just deleted while
|
|
58
|
+
* open). Never null, so the canvas always has something to render.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveArmSections(container: VariantContainer, armId: string): LayoutSection[];
|
|
61
|
+
export interface SectionLocation {
|
|
62
|
+
holder: SectionHolder;
|
|
63
|
+
section: LayoutSection;
|
|
64
|
+
/** Index of the section within `holder.siblings`. */
|
|
65
|
+
index: number;
|
|
66
|
+
}
|
|
67
|
+
export interface ColumnLocation {
|
|
68
|
+
holder: SectionHolder;
|
|
69
|
+
section: LayoutSection;
|
|
70
|
+
column: LayoutColumn;
|
|
71
|
+
}
|
|
72
|
+
export interface ModuleLocation extends ColumnLocation {
|
|
73
|
+
module: ModuleNode;
|
|
74
|
+
moduleIndex: number;
|
|
75
|
+
}
|
|
76
|
+
export interface VariantContainerLocation {
|
|
77
|
+
regionName: string;
|
|
78
|
+
region: RegionNode[];
|
|
79
|
+
container: VariantContainer;
|
|
80
|
+
/** Index of the container within its region's node array. */
|
|
81
|
+
index: number;
|
|
82
|
+
}
|
|
83
|
+
/** Find a section by id anywhere in the regions map, including container arms. */
|
|
84
|
+
export declare function findSectionIn(regions: Record<string, RegionNode[]>, sectionId: string): SectionLocation | null;
|
|
85
|
+
/** Find a column by id anywhere in the regions map, including container arms. */
|
|
86
|
+
export declare function findColumnIn(regions: Record<string, RegionNode[]>, columnId: string): ColumnLocation | null;
|
|
87
|
+
/** Find a module by id anywhere in the regions map, including container arms. */
|
|
88
|
+
export declare function findModuleIn(regions: Record<string, RegionNode[]>, moduleId: string): ModuleLocation | null;
|
|
89
|
+
/** Find a variant container by id. Containers only ever live at region level. */
|
|
90
|
+
export declare function findVariantContainerIn(regions: Record<string, RegionNode[]>, containerId: string): VariantContainerLocation | null;
|
|
91
|
+
export declare function findModuleInDocument(layout: LayoutDocument, moduleId: string): ModuleNode | null;
|
|
92
|
+
export declare function findSectionInDocument(layout: LayoutDocument, sectionId: string): LayoutSection | null;
|
|
93
|
+
export declare function findVariantContainerInDocument(layout: LayoutDocument, containerId: string): VariantContainer | null;
|
|
94
|
+
//# sourceMappingURL=node-lookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-lookup.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/node-lookup.ts"],"names":[],"mappings":"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"}
|