@alpaca-headless/alpaca-headless-nextjs 1.0.21 → 1.0.26
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/dist/cjs/components/Error.js +15 -0
- package/dist/cjs/components/Link.js +5 -0
- package/dist/cjs/components/Picture.js +3 -0
- package/dist/cjs/components/PictureEditor.js +4 -1
- package/dist/cjs/components/Placeholder.js +9 -2
- package/dist/cjs/components/RichText.js +4 -1
- package/dist/cjs/components/RichTextEditor.js +1 -4
- package/dist/cjs/components/Text.js +3 -2
- package/dist/cjs/components/TextEditor.js +1 -4
- package/dist/cjs/editor/AiTerminal.js +1 -1
- package/dist/cjs/editor/ComponentPalette.js +20 -19
- package/dist/cjs/editor/EditorClient.js +32 -8
- package/dist/cjs/editor/FieldList.js +10 -5
- package/dist/cjs/editor/GraphQL.js +1 -2
- package/dist/cjs/editor/MediaSelector.js +2 -2
- package/dist/editor.css +18 -9
- package/dist/esm/components/Error.js +10 -0
- package/dist/esm/components/Link.js +5 -0
- package/dist/esm/components/Picture.js +3 -0
- package/dist/esm/components/PictureEditor.js +4 -1
- package/dist/esm/components/Placeholder.js +9 -2
- package/dist/esm/components/RichText.js +4 -1
- package/dist/esm/components/RichTextEditor.js +1 -4
- package/dist/esm/components/Text.js +3 -2
- package/dist/esm/components/TextEditor.js +1 -4
- package/dist/esm/editor/AiTerminal.js +1 -1
- package/dist/esm/editor/ComponentPalette.js +21 -20
- package/dist/esm/editor/EditorClient.js +32 -8
- package/dist/esm/editor/FieldList.js +10 -5
- package/dist/esm/editor/GraphQL.js +1 -2
- package/dist/esm/editor/MediaSelector.js +2 -2
- package/dist/primereact/resources/primereact.css +3 -6301
- package/dist/primereact/resources/primereact.min.css +3 -1
- package/dist/primereact/resources/themes/arya-blue/theme.css +5554 -5814
- package/dist/primereact/resources/themes/arya-green/theme.css +5554 -5814
- package/dist/primereact/resources/themes/arya-orange/theme.css +5554 -5814
- package/dist/primereact/resources/themes/arya-purple/theme.css +5554 -5814
- package/dist/primereact/resources/themes/bootstrap4-dark-blue/theme.css +5555 -5816
- package/dist/primereact/resources/themes/bootstrap4-dark-purple/theme.css +5555 -5816
- package/dist/primereact/resources/themes/bootstrap4-light-blue/theme.css +5539 -5800
- package/dist/primereact/resources/themes/bootstrap4-light-purple/theme.css +5539 -5800
- package/dist/primereact/resources/themes/fluent-light/theme.css +5662 -5922
- package/dist/primereact/resources/themes/lara-dark-blue/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-blue/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-blue/theme.css +5568 -5809
- package/dist/primereact/resources/themes/lara-dark-indigo/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-indigo/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-indigo/theme.css +5572 -5813
- package/dist/primereact/resources/themes/lara-dark-purple/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-purple/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-purple/theme.css +5572 -5813
- package/dist/primereact/resources/themes/lara-dark-teal/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-teal/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-teal/theme.css +5572 -5813
- package/dist/primereact/resources/themes/lara-light-blue/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-blue/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-blue/theme.css +5567 -5808
- package/dist/primereact/resources/themes/lara-light-indigo/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-indigo/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-indigo/theme.css +5562 -5803
- package/dist/primereact/resources/themes/lara-light-purple/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-purple/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-purple/theme.css +5562 -5803
- package/dist/primereact/resources/themes/lara-light-teal/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-teal/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-teal/theme.css +5562 -5803
- package/dist/primereact/resources/themes/luna-amber/theme.css +5508 -5770
- package/dist/primereact/resources/themes/luna-blue/theme.css +5508 -5770
- package/dist/primereact/resources/themes/luna-green/theme.css +5508 -5770
- package/dist/primereact/resources/themes/luna-pink/theme.css +5508 -5770
- package/dist/primereact/resources/themes/md-dark-deeppurple/theme.css +6906 -7209
- package/dist/primereact/resources/themes/md-dark-indigo/theme.css +6905 -7208
- package/dist/primereact/resources/themes/md-light-deeppurple/theme.css +6905 -7208
- package/dist/primereact/resources/themes/md-light-indigo/theme.css +6905 -7208
- package/dist/primereact/resources/themes/mdc-dark-deeppurple/theme.css +6907 -7210
- package/dist/primereact/resources/themes/mdc-dark-indigo/theme.css +6904 -7207
- package/dist/primereact/resources/themes/mdc-light-deeppurple/theme.css +6905 -7208
- package/dist/primereact/resources/themes/mdc-light-indigo/theme.css +6905 -7208
- package/dist/primereact/resources/themes/mira/theme.css +5723 -5979
- package/dist/primereact/resources/themes/nano/theme.css +5544 -5805
- package/dist/primereact/resources/themes/nova/theme.css +5497 -5758
- package/dist/primereact/resources/themes/nova-accent/theme.css +5529 -5790
- package/dist/primereact/resources/themes/nova-alt/theme.css +5514 -5775
- package/dist/primereact/resources/themes/rhea/theme.css +5526 -5787
- package/dist/primereact/resources/themes/saga-blue/theme.css +5554 -5814
- package/dist/primereact/resources/themes/saga-green/theme.css +5554 -5814
- package/dist/primereact/resources/themes/saga-orange/theme.css +5554 -5814
- package/dist/primereact/resources/themes/saga-purple/theme.css +5559 -5819
- package/dist/primereact/resources/themes/soho-dark/theme.css +5513 -5770
- package/dist/primereact/resources/themes/soho-light/theme.css +5565 -5822
- package/dist/primereact/resources/themes/tailwind-light/theme.css +5613 -5868
- package/dist/primereact/resources/themes/vela-blue/theme.css +5556 -5816
- package/dist/primereact/resources/themes/vela-green/theme.css +5556 -5816
- package/dist/primereact/resources/themes/vela-orange/theme.css +5556 -5816
- package/dist/primereact/resources/themes/vela-purple/theme.css +5556 -5816
- package/dist/primereact/resources/themes/viva-dark/theme.css +5669 -5925
- package/dist/primereact/resources/themes/viva-light/theme.css +5668 -5924
- package/package.json +3 -2
- package/types/components/Error.d.ts +2 -0
- package/types/components/RichTextEditor.d.ts +1 -1
- package/types/components/TextEditor.d.ts +1 -1
- package/types/editor/AiTerminal.d.ts +1 -1
- package/types/editor/editContext.d.ts +2 -0
- package/types/layoutData.d.ts +1 -0
- package/dist/primereact/resources/images/color.png +0 -0
- package/dist/primereact/resources/images/hue.png +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ErrorFallbackWithDetails = exports.ErrorFallback = void 0;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
function ErrorFallback() {
|
|
7
|
+
// Call resetErrorBoundary() to reset the error boundary and retry the render.
|
|
8
|
+
return ((0, jsx_runtime_1.jsx)("div", { role: "alert", children: (0, jsx_runtime_1.jsx)("p", { children: "Something went wrong." }) }));
|
|
9
|
+
}
|
|
10
|
+
exports.ErrorFallback = ErrorFallback;
|
|
11
|
+
function ErrorFallbackWithDetails({ error }) {
|
|
12
|
+
// Call resetErrorBoundary() to reset the error boundary and retry the render.
|
|
13
|
+
return ((0, jsx_runtime_1.jsxs)("div", { role: "alert", children: [(0, jsx_runtime_1.jsx)("p", { children: "Something went wrong:" }), (0, jsx_runtime_1.jsxs)("pre", { style: { color: "red" }, children: [error.message, " ", error.stack] })] }));
|
|
14
|
+
}
|
|
15
|
+
exports.ErrorFallbackWithDetails = ErrorFallbackWithDetails;
|
|
@@ -23,6 +23,11 @@ function Link(_a) {
|
|
|
23
23
|
var { field, children } = _a, props = __rest(_a, ["field", "children"]);
|
|
24
24
|
if (!field)
|
|
25
25
|
return;
|
|
26
|
+
if (field.jsonValue) {
|
|
27
|
+
field = field.jsonValue;
|
|
28
|
+
}
|
|
29
|
+
if (!field.value)
|
|
30
|
+
return;
|
|
26
31
|
const editing = (_b = (0, __1.useAlpacaContext)().pageContext) === null || _b === void 0 ? void 0 : _b.pageEditing;
|
|
27
32
|
if (editing)
|
|
28
33
|
return ((0, jsx_runtime_1.jsx)(LinkEditor_1.default, Object.assign({ field: field, children: children }, props)));
|
|
@@ -34,6 +34,9 @@ const Picture = (_a) => {
|
|
|
34
34
|
var { field, imageParams, sources, defaultVariant, renderJsonLinkedData } = _a, otherProps = __rest(_a, ["field", "imageParams", "sources", "defaultVariant", "renderJsonLinkedData"]);
|
|
35
35
|
if (!field)
|
|
36
36
|
return null;
|
|
37
|
+
if (field.jsonValue) {
|
|
38
|
+
field = field.jsonValue;
|
|
39
|
+
}
|
|
37
40
|
if ((_b = (0, __1.useAlpacaContext)().pageContext) === null || _b === void 0 ? void 0 : _b.pageEditing)
|
|
38
41
|
return (0, jsx_runtime_1.jsx)(PictureEditor_1.PictureEditor, Object.assign({ field: field }, otherProps));
|
|
39
42
|
const variants = (_c = field.value) === null || _c === void 0 ? void 0 : _c.variants;
|
|
@@ -30,8 +30,11 @@ const PictureEditor = (_a) => {
|
|
|
30
30
|
return;
|
|
31
31
|
function imageSelected(imageId) {
|
|
32
32
|
const value = (field === null || field === void 0 ? void 0 : field.value) || {};
|
|
33
|
-
|
|
33
|
+
if (!selectedVariant)
|
|
34
|
+
return;
|
|
35
|
+
selectedVariant.mediaId = imageId;
|
|
34
36
|
console.log(imageId);
|
|
37
|
+
console.log(JSON.stringify(value));
|
|
35
38
|
if (field)
|
|
36
39
|
editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, JSON.stringify(value), false);
|
|
37
40
|
}
|
|
@@ -18,6 +18,8 @@ const EditFrame_1 = require("../editor/EditFrame");
|
|
|
18
18
|
const __1 = require("..");
|
|
19
19
|
const PlaceholderDropZoneHost_1 = require("../editor/PlaceholderDropZoneHost");
|
|
20
20
|
const Slot_1 = __importDefault(require("./Slot"));
|
|
21
|
+
const react_error_boundary_1 = require("react-error-boundary");
|
|
22
|
+
const Error_1 = require("./Error");
|
|
21
23
|
function Placeholder({ name, content, }) {
|
|
22
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
25
|
const data = yield content;
|
|
@@ -50,11 +52,16 @@ function Placeholder({ name, content, }) {
|
|
|
50
52
|
const components = yield Promise.all(promises);
|
|
51
53
|
if (context.pageContext.pageEditing) {
|
|
52
54
|
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [components.map(({ Component, data, parent }, index) => {
|
|
53
|
-
|
|
55
|
+
try {
|
|
56
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(PlaceholderDropZoneHost_1.PlaceholderDropZoneHost, { parentName: parent === null || parent === void 0 ? void 0 : parent.name, placeholder: placeholderData, index: index + 1 }), (0, jsx_runtime_1.jsx)(EditFrame_1.EditFrame, { componentId: data.id, children: (0, jsx_runtime_1.jsx)(react_error_boundary_1.ErrorBoundary, { FallbackComponent: Error_1.ErrorFallbackWithDetails, children: (0, jsx_runtime_1.jsx)(Component, { component: data }) }) }, data.id)] }));
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
return ((0, jsx_runtime_1.jsxs)("div", { children: ["Error rendering component ", data.name, ": ", e.message] }));
|
|
60
|
+
}
|
|
54
61
|
}), (0, jsx_runtime_1.jsx)(PlaceholderDropZoneHost_1.PlaceholderDropZoneHost, { parentName: data === null || data === void 0 ? void 0 : data.name, placeholder: placeholderData, index: components.length + 1 })] }));
|
|
55
62
|
}
|
|
56
63
|
else
|
|
57
|
-
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: components.map(({ Component, data }) => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(Component, { component: data }) }))) }));
|
|
64
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: components.map(({ Component, data }) => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(react_error_boundary_1.ErrorBoundary, { FallbackComponent: Error_1.ErrorFallback, children: (0, jsx_runtime_1.jsx)(Component, { component: data }) }) }))) }));
|
|
58
65
|
});
|
|
59
66
|
}
|
|
60
67
|
exports.Placeholder = Placeholder;
|
|
@@ -33,9 +33,12 @@ function RichText(_a) {
|
|
|
33
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
34
|
if (!field)
|
|
35
35
|
return;
|
|
36
|
+
if (field.jsonValue) {
|
|
37
|
+
field = field.jsonValue;
|
|
38
|
+
}
|
|
36
39
|
const internalProps = Object.assign(Object.assign({}, props), { dangerouslySetInnerHTML: {
|
|
37
40
|
__html: field.value,
|
|
38
|
-
}, editable: editable, contentEditable: true, "data-test": "test", placeholder:
|
|
41
|
+
}, editable: editable, contentEditable: true, "data-test": "test", placeholder: "[" + field.name + "]" });
|
|
39
42
|
if ((0, __1.useAlpacaContext)().pageContext.pageEditing)
|
|
40
43
|
return (0, jsx_runtime_1.jsx)(RichTextEditor_1.RichTextEditor, Object.assign({ field: field, tag: tag }, props));
|
|
41
44
|
return react_1.default.createElement(tag || "div", Object.assign(props, internalProps));
|
|
@@ -46,10 +46,7 @@ function RichTextEditor(_a) {
|
|
|
46
46
|
if (!editContext)
|
|
47
47
|
return;
|
|
48
48
|
const { updateContentEditingFields } = editContext;
|
|
49
|
-
const
|
|
50
|
-
if (!component)
|
|
51
|
-
return;
|
|
52
|
-
const liveField = Object.values(component.fields).find((f) => f.id == field.id);
|
|
49
|
+
const liveField = editContext.getLiveField(field);
|
|
53
50
|
(0, react_1.useEffect)(() => {
|
|
54
51
|
if (editedValue != liveField.value &&
|
|
55
52
|
"<p>" + editedValue + "</p>" != liveField.value) {
|
|
@@ -36,8 +36,9 @@ function Text(_a) {
|
|
|
36
36
|
if (field.jsonValue) {
|
|
37
37
|
field = field.jsonValue;
|
|
38
38
|
}
|
|
39
|
-
if ((0, __1.useAlpacaContext)().pageContext.pageEditing)
|
|
40
|
-
return (0, jsx_runtime_1.jsx)(TextEditor_1.TextEditor, Object.assign({ field: field, tag: tag }, props));
|
|
39
|
+
if ((0, __1.useAlpacaContext)().pageContext.pageEditing) {
|
|
40
|
+
return ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(TextEditor_1.TextEditor, Object.assign({ field: field, tag: tag }, props)) }));
|
|
41
|
+
}
|
|
41
42
|
else
|
|
42
43
|
return react_1.default.createElement(tag || "div", props, field.value);
|
|
43
44
|
});
|
|
@@ -46,10 +46,7 @@ function TextEditor(_a) {
|
|
|
46
46
|
if (!editContext)
|
|
47
47
|
return;
|
|
48
48
|
const { updateContentEditingFields } = editContext;
|
|
49
|
-
const
|
|
50
|
-
if (!component)
|
|
51
|
-
return;
|
|
52
|
-
const liveField = Object.values(component.fields).find((f) => f.id == field.id);
|
|
49
|
+
const liveField = editContext.getLiveField(field);
|
|
53
50
|
(0, react_1.useEffect)(() => {
|
|
54
51
|
if (editedValue != liveField.value)
|
|
55
52
|
setValue(liveField.value);
|
|
@@ -45,7 +45,7 @@ function AiTerminal({ requestRefresh, selection, }) {
|
|
|
45
45
|
handleResponse(response, callback, false);
|
|
46
46
|
if (response.editOperations.length) {
|
|
47
47
|
if (new Date().getTime() - lastRefresh > 500) {
|
|
48
|
-
requestRefresh(
|
|
48
|
+
requestRefresh("delayed");
|
|
49
49
|
router.refresh();
|
|
50
50
|
lastRefresh = new Date().getTime();
|
|
51
51
|
}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ComponentPalette = void 0;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const tabview_1 = require("primereact/tabview");
|
|
8
9
|
const __1 = require("..");
|
|
9
10
|
const ContentTree_1 = __importDefault(require("./ContentTree"));
|
|
10
11
|
function ComponentPalette({ selection, page, dragStart, dragEnd, }) {
|
|
@@ -34,25 +35,25 @@ function ComponentPalette({ selection, page, dragStart, dragEnd, }) {
|
|
|
34
35
|
// editContext!.droppedInPlaceholder(key, parseInt(index));
|
|
35
36
|
// }
|
|
36
37
|
// }
|
|
37
|
-
return ((0, jsx_runtime_1.jsxs)(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
38
|
+
return ((0, jsx_runtime_1.jsxs)(tabview_1.TabView, { children: [(0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "New", children: (0, jsx_runtime_1.jsx)("div", { className: "a-grid a-grid-cols-4 a-gap-1", children: insertOptions.map((option) => {
|
|
39
|
+
function handleDragStart(event) {
|
|
40
|
+
dragStart({ type: "template", templateId: option.id });
|
|
41
|
+
event.stopPropagation();
|
|
42
|
+
}
|
|
43
|
+
function handleDragEnd() {
|
|
44
|
+
dragEnd();
|
|
45
|
+
}
|
|
46
|
+
return ((0, jsx_runtime_1.jsxs)("div", {
|
|
47
|
+
// onClick={directInsert}
|
|
48
|
+
draggable: true, onDragStart: handleDragStart, onDragEnd: handleDragEnd, className: "a-p-3 a-shadow-md a-flex a-items-center a-flex-col a-gap-1 a-cursor-grab", children: [(0, jsx_runtime_1.jsx)("img", { src: option.icon, width: "32", height: "32" }), option.name] }, option.id));
|
|
49
|
+
}) }) }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Existing", children: (0, jsx_runtime_1.jsx)(ContentTree_1.default, { rootItemId: "0DE95AE4-41AB-4D01-9EB0-67441B7C2450", dragStart: (itemNode) => {
|
|
50
|
+
dragStart({
|
|
51
|
+
type: "link-component",
|
|
52
|
+
templateId: itemNode.templateId,
|
|
53
|
+
componentId: itemNode.id,
|
|
54
|
+
});
|
|
55
|
+
}, expandIdPath: page.idPath, dragEnd: dragEnd, isDraggable: (x) => x.isComponent &&
|
|
56
|
+
(insertOptions === null || insertOptions === void 0 ? void 0 : insertOptions.find((insertOption) => insertOption.id == x.templateId)) != undefined }) })] }));
|
|
56
57
|
}
|
|
57
58
|
exports.ComponentPalette = ComponentPalette;
|
|
58
59
|
function collectInsertOptions(page, placeholderKeys) {
|
|
@@ -80,6 +80,7 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
|
|
|
80
80
|
const searchParams = (0, navigation_1.useSearchParams)();
|
|
81
81
|
const [selection, setSelection] = (0, react_1.useState)([]);
|
|
82
82
|
const [selectedForInsertion, setSelectedForInsertion] = (0, react_1.useState)("");
|
|
83
|
+
const [liveUpdatingFields, setLiveUpdatingFields] = (0, react_1.useState)([]);
|
|
83
84
|
const [currentEditOperation, setCurrentEditOperation] = (0, react_1.useState)();
|
|
84
85
|
const [dictionary, setDictionary] = (0, react_1.useState)(dictionaryObject);
|
|
85
86
|
const [unresolvedDictionaryKeys, setUnresolvedDictionaryKeys] = (0, react_1.useState)([]);
|
|
@@ -147,23 +148,33 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
|
|
|
147
148
|
setSelection([result.componentId]);
|
|
148
149
|
}
|
|
149
150
|
if (!currentEditOperation.noRefresh)
|
|
150
|
-
requestRefresh(currentEditOperation.refreshAfterQuietPeriod
|
|
151
|
+
requestRefresh(currentEditOperation.refreshAfterQuietPeriod
|
|
152
|
+
? "waitForQuietPeriod"
|
|
153
|
+
: "delayed");
|
|
151
154
|
}
|
|
152
155
|
});
|
|
153
156
|
sync();
|
|
154
157
|
}, [currentEditOperation]);
|
|
155
|
-
const requestRefresh = (
|
|
156
|
-
|
|
157
|
-
|
|
158
|
+
const requestRefresh = (mode) => {
|
|
159
|
+
if (mode === "immediate") {
|
|
160
|
+
console.log("Immediate refresh requested");
|
|
161
|
+
clearTimeout(refreshTimer);
|
|
162
|
+
router.refresh();
|
|
163
|
+
setRefreshCompletedFlag(!refreshCompletedFlag);
|
|
164
|
+
setRefreshTimer(undefined);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
console.log("request refresh with mode: " + mode);
|
|
168
|
+
if (mode === "waitForQuietPeriod" && refreshTimer) {
|
|
158
169
|
clearTimeout(refreshTimer);
|
|
159
170
|
}
|
|
160
|
-
if (!refreshTimer || waitForQuietPeriod) {
|
|
171
|
+
if (!refreshTimer || mode === "waitForQuietPeriod") {
|
|
161
172
|
setRefreshTimer(setTimeout(() => {
|
|
162
173
|
console.log("refreshing");
|
|
163
174
|
router.refresh();
|
|
164
175
|
setRefreshCompletedFlag(!refreshCompletedFlag);
|
|
165
176
|
setRefreshTimer(undefined);
|
|
166
|
-
}, waitForQuietPeriod ? 2000 : 1000));
|
|
177
|
+
}, mode === "waitForQuietPeriod" ? 2000 : 1000));
|
|
167
178
|
}
|
|
168
179
|
};
|
|
169
180
|
const saveAndRefresh = (callback) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -268,6 +279,16 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
|
|
|
268
279
|
}
|
|
269
280
|
});
|
|
270
281
|
}
|
|
282
|
+
const getLiveField = (field) => {
|
|
283
|
+
const existingField = liveUpdatingFields.find((f) => f.id === field.id &&
|
|
284
|
+
f.language === field.language &&
|
|
285
|
+
f.version === field.version &&
|
|
286
|
+
f.itemId === field.itemId);
|
|
287
|
+
if (existingField)
|
|
288
|
+
return existingField;
|
|
289
|
+
setLiveUpdatingFields([...liveUpdatingFields, field]);
|
|
290
|
+
return field;
|
|
291
|
+
};
|
|
271
292
|
const selectedComponent = selection.length === 1 && page ? getComponentById(selection[0]) : null;
|
|
272
293
|
const editField = (field, value, noRefresh = true) => {
|
|
273
294
|
var _a;
|
|
@@ -300,6 +321,7 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
|
|
|
300
321
|
op.noRefresh = noRefresh;
|
|
301
322
|
op.refreshAfterQuietPeriod = !noRefresh;
|
|
302
323
|
op.value = value;
|
|
324
|
+
getLiveField(field).value = value;
|
|
303
325
|
function getField(fields, id) {
|
|
304
326
|
return Object.values(fields).find((f) => f.id === id);
|
|
305
327
|
}
|
|
@@ -349,10 +371,12 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
|
|
|
349
371
|
dragObject,
|
|
350
372
|
dictionary,
|
|
351
373
|
setDictionary,
|
|
374
|
+
requestRefresh,
|
|
352
375
|
refreshCompletedFlag,
|
|
353
376
|
unresolvedDictionaryKeys,
|
|
354
377
|
setUnresolvedDictionaryKeys,
|
|
355
378
|
updateContentEditingFields,
|
|
379
|
+
getLiveField,
|
|
356
380
|
showToast: () => { },
|
|
357
381
|
removeComponent: (componentId, callback) => {
|
|
358
382
|
(0, confirmdialog_1.confirmDialog)({
|
|
@@ -438,7 +462,7 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
|
|
|
438
462
|
setCurrentEditOperation(op);
|
|
439
463
|
setDragObject(undefined);
|
|
440
464
|
}),
|
|
441
|
-
}, children: [(0, jsx_runtime_1.jsx)(toast_1.Toast, { ref: toast }), (0, jsx_runtime_1.jsxs)(api_1.PrimeReactProvider, { children: [(0, jsx_runtime_1.jsx)(confirmdialog_1.ConfirmDialog, {}), (0, jsx_runtime_1.jsx)(sidebar_1.Sidebar, { style: { width: "40%" }, visible: componentsPaletteVisible, position: "right", onHide: () => setComponentsPaletteVisible(false), pt: {
|
|
465
|
+
}, children: [(0, jsx_runtime_1.jsx)(toast_1.Toast, { ref: toast }), (0, jsx_runtime_1.jsxs)(api_1.PrimeReactProvider, { children: [(0, jsx_runtime_1.jsx)(confirmdialog_1.ConfirmDialog, {}), (0, jsx_runtime_1.jsx)(sidebar_1.Sidebar, { style: { width: "40%" }, visible: componentsPaletteVisible, position: "right", onHide: () => setComponentsPaletteVisible(false), header: "Insert component", pt: {
|
|
442
466
|
mask: {
|
|
443
467
|
onDragOver: () => setHidePalette(true),
|
|
444
468
|
style: {
|
|
@@ -455,6 +479,6 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
|
|
|
455
479
|
setHidePalette(false);
|
|
456
480
|
}
|
|
457
481
|
setSelectedForInsertion("");
|
|
458
|
-
} })) }), (0, jsx_runtime_1.jsxs)(blockui_1.BlockUI, { blocked: uiBlocked, template: spinner, children: [(0, jsx_runtime_1.jsx)(menubar_1.Menubar, { model: menuItems, end: endContent }), (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size:
|
|
482
|
+
} })) }), (0, jsx_runtime_1.jsxs)(blockui_1.BlockUI, { blocked: uiBlocked, template: spinner, children: [(0, jsx_runtime_1.jsx)(menubar_1.Menubar, { model: menuItems, end: endContent }), (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 30, className: "alpaca-overflow-scroll", children: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 30, className: "a-overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute a-overflow-y-auto", children: (0, jsx_runtime_1.jsx)(ComponentTree_1.ComponentTree, { page: page, selection: selection }) }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "alpaca-editor-tabs", children: (0, jsx_runtime_1.jsxs)(tabview_1.TabView, { className: "a-inset-0 a-absolute", scrollable: true, children: [selectedComponent && ((0, jsx_runtime_1.jsxs)(tabview_1.TabPanel, { header: "Fields", children: [(0, jsx_runtime_1.jsx)(ComponentInfo_1.ComponentInfo, { component: selectedComponent }), (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: selectedComponent.fields })] })), selectedComponent && ((0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "GraphQL", style: { height: "100%" }, children: (0, jsx_runtime_1.jsx)(GraphQL_1.GraphQL, { component: selectedComponent }) })), (0, jsx_runtime_1.jsxs)(tabview_1.TabPanel, { header: "Page", children: [page && (0, jsx_runtime_1.jsx)(PageInfo_1.PageInfo, { page: page }), page && (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: page.fields })] }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Dictionary", children: (0, jsx_runtime_1.jsx)(DictionaryEditor_1.DictionaryEditor, { dictionary: dictionary }) }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Debug", children: (0, jsx_runtime_1.jsx)(Debug_1.Debug, { component: selectedComponent, page: page }) })] }) })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 55, className: "alpaca-overflow-scroll alpaca-editor-content", children: (0, jsx_runtime_1.jsx)("div", { onDragEndCapture: () => setDragObject(undefined), className: "alpaca-editor-container", children: children }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 15, children: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", className: "alpaca-editor", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)(EditHistory_1.EditHistory, { operations: editData === null || editData === void 0 ? void 0 : editData.operations }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)(AiTerminal_1.AiTerminal, { selection: selection, requestRefresh: requestRefresh }) })] }) })] })] })] })] }));
|
|
459
483
|
}
|
|
460
484
|
exports.EditorClient = EditorClient;
|
|
@@ -3,13 +3,16 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.FieldList = void 0;
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const __1 = require("..");
|
|
6
7
|
const inputtext_1 = require("primereact/inputtext");
|
|
7
8
|
const checkbox_1 = require("primereact/checkbox");
|
|
8
9
|
const SingleLineText_1 = require("./fieldTypes/SingleLineText");
|
|
9
10
|
const RichTextEditor_1 = require("./fieldTypes/RichTextEditor");
|
|
10
11
|
function FieldList({ fields }) {
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
const editContext = (0, __1.useEditContext)();
|
|
13
|
+
if (!editContext)
|
|
14
|
+
if (!fields)
|
|
15
|
+
return;
|
|
13
16
|
if (!Array.isArray(fields))
|
|
14
17
|
fields = Object.values(fields);
|
|
15
18
|
const sections = fields.reduce((acc, value) => {
|
|
@@ -23,11 +26,13 @@ function FieldList({ fields }) {
|
|
|
23
26
|
}, {});
|
|
24
27
|
const sectionList = Object.values(sections);
|
|
25
28
|
sectionList.sort((a, b) => b[0].sortOrder - a[0].sortOrder);
|
|
26
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: "a-p-1", children: Object.keys(sections).map((section) => ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "alpaca-fields-section-headline", children: section }), getSectionFields(sections[section])] }, section))) }));
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "a-p-1", children: Object.keys(sections).map((section) => ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "alpaca-fields-section-headline", children: section }), getSectionFields(sections[section], editContext)] }, section))) }));
|
|
27
30
|
}
|
|
28
31
|
exports.FieldList = FieldList;
|
|
29
|
-
function getSectionFields(fields) {
|
|
30
|
-
return fields
|
|
32
|
+
function getSectionFields(fields, editContext) {
|
|
33
|
+
return fields
|
|
34
|
+
.map((field) => editContext.getLiveField(field))
|
|
35
|
+
.map((field) => ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "alpaca-field-label", children: field.name }), !field.containsFallbackValue ? ((0, jsx_runtime_1.jsx)("button", { className: "a-text-xs a-p-0 a-m-1", children: "Reset " })) : ((0, jsx_runtime_1.jsx)("button", { children: "Fallback" })), (0, jsx_runtime_1.jsx)("div", { children: getFieldEditor(field) })] }, field.id)));
|
|
31
36
|
}
|
|
32
37
|
function getFieldEditor(field) {
|
|
33
38
|
switch (field.type) {
|
|
@@ -79,11 +79,10 @@ function GraphQL({ component }) {
|
|
|
79
79
|
type: "jsonValue",
|
|
80
80
|
};
|
|
81
81
|
const prettyQuery = (0, graphql_formatter_1.format)(query);
|
|
82
|
-
console.log(query);
|
|
83
|
-
console.log(prettyQuery);
|
|
84
82
|
setQuery(prettyQuery);
|
|
85
83
|
editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, prettyQuery, false);
|
|
86
84
|
setShowSpinner(true);
|
|
85
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
|
|
87
86
|
}
|
|
88
87
|
return ((0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", style: { height: "100%" }, children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 50, className: "a-relative", children: (0, jsx_runtime_1.jsxs)("div", { className: "a-absolute a-inset-0 a-flex", children: [(0, jsx_runtime_1.jsx)(inputtextarea_1.InputTextarea, { value: query, onChange: (e) => setQuery(e.target.value), className: "a-flex-1", style: { height: "100%" } }), (0, jsx_runtime_1.jsx)(button_1.Button, { icon: "pi pi-refresh" + (showSpinner ? " pi-spin" : ""), onClick: refresh, disabled: showSpinner })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "alpaca-editor-tabs", children: (0, jsx_runtime_1.jsxs)(tabview_1.TabView, { className: "a-inset-0 a-absolute", children: [(0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Data", style: { height: "100%" }, className: "a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-m-1", children: Object.values(fieldsjsonValues).map((x) => renderItem(x)) }) }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "JSON", className: "a-relative", style: { height: "100%" }, children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute a-overflow-y-auto", children: (0, jsx_runtime_1.jsx)(react_json_pretty_1.default, { data: component.graphql }) }) })] }) })] }));
|
|
89
88
|
}
|
|
@@ -43,7 +43,7 @@ const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
|
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
-
return ((0, jsx_runtime_1.jsx)(dialog_1.Dialog, { style: { width: "
|
|
46
|
+
return ((0, jsx_runtime_1.jsx)(dialog_1.Dialog, { style: { width: "80%", height: "80%" }, visible: visible, onHide: onHide, children: (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-flex-col a-h-full", children: [(0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { className: "a-flex-1 a-border-0", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 35, className: "alpaca-overflow-scroll", children: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 70, children: (0, jsx_runtime_1.jsx)(ContentTree_1.default, { rootItemId: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", selectionMode: "single", selectedItemIds: selection, templateIds: ["FE5DD826-48C6-436D-B87A-7C4210C7413B"], expandIdPath: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", onSelectionChange: (selection) => {
|
|
47
47
|
if (selection.length)
|
|
48
48
|
setSelectedFolderId(selection[0]);
|
|
49
49
|
else
|
|
@@ -53,7 +53,7 @@ const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
|
|
|
53
53
|
onMediaSelected(t.id);
|
|
54
54
|
onHide();
|
|
55
55
|
}, onClick: () => setSelectedImage(t), children: [(0, jsx_runtime_1.jsx)("img", { src: t.imageUrl }), (0, jsx_runtime_1.jsx)("div", { className: "a-text-xs a-break-all", children: t.name })] }));
|
|
56
|
-
}) }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-justify-end a-gap-3", children: [(0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => onHide(), children: "Cancel" }), (0, jsx_runtime_1.jsx)(button_1.Button, { disabled: !selectedImage, onClick: () => {
|
|
56
|
+
}) }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-justify-end a-gap-3 a-mt-3", children: [(0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => onHide(), children: "Cancel" }), (0, jsx_runtime_1.jsx)(button_1.Button, { disabled: !selectedImage, onClick: () => {
|
|
57
57
|
onMediaSelected(selectedImage.id);
|
|
58
58
|
onHide();
|
|
59
59
|
}, children: "Select" })] })] }) }));
|
package/dist/editor.css
CHANGED
|
@@ -32,15 +32,6 @@
|
|
|
32
32
|
margin-bottom: 0.5rem;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
.a-my-8 {
|
|
36
|
-
margin-top: 2rem;
|
|
37
|
-
margin-bottom: 2rem;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.a-mb-8 {
|
|
41
|
-
margin-bottom: 2rem;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
35
|
.a-ml-1 {
|
|
45
36
|
margin-left: 0.25rem;
|
|
46
37
|
}
|
|
@@ -49,6 +40,10 @@
|
|
|
49
40
|
margin-left: 0.75rem;
|
|
50
41
|
}
|
|
51
42
|
|
|
43
|
+
.a-mt-3 {
|
|
44
|
+
margin-top: 0.75rem;
|
|
45
|
+
}
|
|
46
|
+
|
|
52
47
|
.a-flex {
|
|
53
48
|
display: flex;
|
|
54
49
|
}
|
|
@@ -445,6 +440,20 @@ div.p-tree .p-treenode-droppoint {
|
|
|
445
440
|
opacity: 0;
|
|
446
441
|
}
|
|
447
442
|
|
|
443
|
+
.p-dropdown-label.p-inputtext {
|
|
444
|
+
padding: 8px;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
div.p-tabview .p-tabview-nav li .p-tabview-nav-link {
|
|
448
|
+
padding: 1rem;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
.p-sidebar-header.p-sidebar-custom-header {
|
|
452
|
+
justify-content: space-between;
|
|
453
|
+
font-weight: bold;
|
|
454
|
+
font-size: 18px;
|
|
455
|
+
}
|
|
456
|
+
|
|
448
457
|
.hover\:a-underline:hover {
|
|
449
458
|
text-decoration-line: underline;
|
|
450
459
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
export function ErrorFallback() {
|
|
4
|
+
// Call resetErrorBoundary() to reset the error boundary and retry the render.
|
|
5
|
+
return (_jsx("div", { role: "alert", children: _jsx("p", { children: "Something went wrong." }) }));
|
|
6
|
+
}
|
|
7
|
+
export function ErrorFallbackWithDetails({ error }) {
|
|
8
|
+
// Call resetErrorBoundary() to reset the error boundary and retry the render.
|
|
9
|
+
return (_jsxs("div", { role: "alert", children: [_jsx("p", { children: "Something went wrong:" }), _jsxs("pre", { style: { color: "red" }, children: [error.message, " ", error.stack] })] }));
|
|
10
|
+
}
|
|
@@ -17,6 +17,11 @@ export function Link(_a) {
|
|
|
17
17
|
var { field, children } = _a, props = __rest(_a, ["field", "children"]);
|
|
18
18
|
if (!field)
|
|
19
19
|
return;
|
|
20
|
+
if (field.jsonValue) {
|
|
21
|
+
field = field.jsonValue;
|
|
22
|
+
}
|
|
23
|
+
if (!field.value)
|
|
24
|
+
return;
|
|
20
25
|
const editing = (_b = useAlpacaContext().pageContext) === null || _b === void 0 ? void 0 : _b.pageEditing;
|
|
21
26
|
if (editing)
|
|
22
27
|
return (_jsx(LinkEditor, Object.assign({ field: field, children: children }, props)));
|
|
@@ -31,6 +31,9 @@ export const Picture = (_a) => {
|
|
|
31
31
|
var { field, imageParams, sources, defaultVariant, renderJsonLinkedData } = _a, otherProps = __rest(_a, ["field", "imageParams", "sources", "defaultVariant", "renderJsonLinkedData"]);
|
|
32
32
|
if (!field)
|
|
33
33
|
return null;
|
|
34
|
+
if (field.jsonValue) {
|
|
35
|
+
field = field.jsonValue;
|
|
36
|
+
}
|
|
34
37
|
if ((_b = useAlpacaContext().pageContext) === null || _b === void 0 ? void 0 : _b.pageEditing)
|
|
35
38
|
return _jsx(PictureEditor, Object.assign({ field: field }, otherProps));
|
|
36
39
|
const variants = (_c = field.value) === null || _c === void 0 ? void 0 : _c.variants;
|
|
@@ -27,8 +27,11 @@ export const PictureEditor = (_a) => {
|
|
|
27
27
|
return;
|
|
28
28
|
function imageSelected(imageId) {
|
|
29
29
|
const value = (field === null || field === void 0 ? void 0 : field.value) || {};
|
|
30
|
-
|
|
30
|
+
if (!selectedVariant)
|
|
31
|
+
return;
|
|
32
|
+
selectedVariant.mediaId = imageId;
|
|
31
33
|
console.log(imageId);
|
|
34
|
+
console.log(JSON.stringify(value));
|
|
32
35
|
if (field)
|
|
33
36
|
editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, JSON.stringify(value), false);
|
|
34
37
|
}
|
|
@@ -12,6 +12,8 @@ import { EditFrame } from "../editor/EditFrame";
|
|
|
12
12
|
import { useAlpacaContext, } from "..";
|
|
13
13
|
import { PlaceholderDropZoneHost } from "../editor/PlaceholderDropZoneHost";
|
|
14
14
|
import Slot from "./Slot";
|
|
15
|
+
import { ErrorBoundary } from "react-error-boundary";
|
|
16
|
+
import { ErrorFallbackWithDetails, ErrorFallback } from "./Error";
|
|
15
17
|
export function Placeholder({ name, content, }) {
|
|
16
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
19
|
const data = yield content;
|
|
@@ -44,11 +46,16 @@ export function Placeholder({ name, content, }) {
|
|
|
44
46
|
const components = yield Promise.all(promises);
|
|
45
47
|
if (context.pageContext.pageEditing) {
|
|
46
48
|
return (_jsxs(_Fragment, { children: [components.map(({ Component, data, parent }, index) => {
|
|
47
|
-
|
|
49
|
+
try {
|
|
50
|
+
return (_jsxs(_Fragment, { children: [_jsx(PlaceholderDropZoneHost, { parentName: parent === null || parent === void 0 ? void 0 : parent.name, placeholder: placeholderData, index: index + 1 }), _jsx(EditFrame, { componentId: data.id, children: _jsx(ErrorBoundary, { FallbackComponent: ErrorFallbackWithDetails, children: _jsx(Component, { component: data }) }) }, data.id)] }));
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
return (_jsxs("div", { children: ["Error rendering component ", data.name, ": ", e.message] }));
|
|
54
|
+
}
|
|
48
55
|
}), _jsx(PlaceholderDropZoneHost, { parentName: data === null || data === void 0 ? void 0 : data.name, placeholder: placeholderData, index: components.length + 1 })] }));
|
|
49
56
|
}
|
|
50
57
|
else
|
|
51
|
-
return (_jsx(_Fragment, { children: components.map(({ Component, data }) => (_jsx(_Fragment, { children: _jsx(Component, { component: data }) }))) }));
|
|
58
|
+
return (_jsx(_Fragment, { children: components.map(({ Component, data }) => (_jsx(_Fragment, { children: _jsx(ErrorBoundary, { FallbackComponent: ErrorFallback, children: _jsx(Component, { component: data }) }) }))) }));
|
|
52
59
|
});
|
|
53
60
|
}
|
|
54
61
|
function ComponentNotFound({ component }) {
|
|
@@ -27,9 +27,12 @@ export function RichText(_a) {
|
|
|
27
27
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
28
|
if (!field)
|
|
29
29
|
return;
|
|
30
|
+
if (field.jsonValue) {
|
|
31
|
+
field = field.jsonValue;
|
|
32
|
+
}
|
|
30
33
|
const internalProps = Object.assign(Object.assign({}, props), { dangerouslySetInnerHTML: {
|
|
31
34
|
__html: field.value,
|
|
32
|
-
}, editable: editable, contentEditable: true, "data-test": "test", placeholder:
|
|
35
|
+
}, editable: editable, contentEditable: true, "data-test": "test", placeholder: "[" + field.name + "]" });
|
|
33
36
|
if (useAlpacaContext().pageContext.pageEditing)
|
|
34
37
|
return _jsx(RichTextEditor, Object.assign({ field: field, tag: tag }, props));
|
|
35
38
|
return React.createElement(tag || "div", Object.assign(props, internalProps));
|
|
@@ -20,10 +20,7 @@ export function RichTextEditor(_a) {
|
|
|
20
20
|
if (!editContext)
|
|
21
21
|
return;
|
|
22
22
|
const { updateContentEditingFields } = editContext;
|
|
23
|
-
const
|
|
24
|
-
if (!component)
|
|
25
|
-
return;
|
|
26
|
-
const liveField = Object.values(component.fields).find((f) => f.id == field.id);
|
|
23
|
+
const liveField = editContext.getLiveField(field);
|
|
27
24
|
useEffect(() => {
|
|
28
25
|
if (editedValue != liveField.value &&
|
|
29
26
|
"<p>" + editedValue + "</p>" != liveField.value) {
|
|
@@ -30,8 +30,9 @@ export function Text(_a) {
|
|
|
30
30
|
if (field.jsonValue) {
|
|
31
31
|
field = field.jsonValue;
|
|
32
32
|
}
|
|
33
|
-
if (useAlpacaContext().pageContext.pageEditing)
|
|
34
|
-
return _jsx(TextEditor, Object.assign({ field: field, tag: tag }, props));
|
|
33
|
+
if (useAlpacaContext().pageContext.pageEditing) {
|
|
34
|
+
return (_jsx("div", { children: _jsx(TextEditor, Object.assign({ field: field, tag: tag }, props)) }));
|
|
35
|
+
}
|
|
35
36
|
else
|
|
36
37
|
return React.createElement(tag || "div", props, field.value);
|
|
37
38
|
});
|
|
@@ -20,10 +20,7 @@ export function TextEditor(_a) {
|
|
|
20
20
|
if (!editContext)
|
|
21
21
|
return;
|
|
22
22
|
const { updateContentEditingFields } = editContext;
|
|
23
|
-
const
|
|
24
|
-
if (!component)
|
|
25
|
-
return;
|
|
26
|
-
const liveField = Object.values(component.fields).find((f) => f.id == field.id);
|
|
23
|
+
const liveField = editContext.getLiveField(field);
|
|
27
24
|
useEffect(() => {
|
|
28
25
|
if (editedValue != liveField.value)
|
|
29
26
|
setValue(liveField.value);
|
|
@@ -42,7 +42,7 @@ export function AiTerminal({ requestRefresh, selection, }) {
|
|
|
42
42
|
handleResponse(response, callback, false);
|
|
43
43
|
if (response.editOperations.length) {
|
|
44
44
|
if (new Date().getTime() - lastRefresh > 500) {
|
|
45
|
-
requestRefresh(
|
|
45
|
+
requestRefresh("delayed");
|
|
46
46
|
router.refresh();
|
|
47
47
|
lastRefresh = new Date().getTime();
|
|
48
48
|
}
|