@alpaca-headless/alpaca-headless-nextjs 1.0.21 → 1.0.27
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 +32 -6
- 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 +2 -2
- 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 +16 -10
- package/dist/editor.css +42 -13
- 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 +33 -7
- 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 +2 -2
- 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 +16 -10
- 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/fieldTypes.d.ts +2 -2
- 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;
|
|
@@ -19,6 +19,7 @@ const Picture_1 = require("./Picture");
|
|
|
19
19
|
const __1 = require("..");
|
|
20
20
|
const MediaSelector_1 = require("../editor/MediaSelector");
|
|
21
21
|
const dialog_1 = require("primereact/dialog");
|
|
22
|
+
const button_1 = require("primereact/button");
|
|
22
23
|
const PictureEditor = (_a) => {
|
|
23
24
|
var _b, _c;
|
|
24
25
|
var { field, imageParams, sources, defaultVariant, renderJsonLinkedData } = _a, otherProps = __rest(_a, ["field", "imageParams", "sources", "defaultVariant", "renderJsonLinkedData"]);
|
|
@@ -29,14 +30,39 @@ const PictureEditor = (_a) => {
|
|
|
29
30
|
if (!editContext)
|
|
30
31
|
return;
|
|
31
32
|
function imageSelected(imageId) {
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
if (!selectedVariant)
|
|
34
|
+
return;
|
|
35
|
+
const value = (field === null || field === void 0 ? void 0 : field.rawValue)
|
|
36
|
+
? JSON.parse(field === null || field === void 0 ? void 0 : field.rawValue)
|
|
37
|
+
: { variants: [] };
|
|
38
|
+
const selected = value.variants.find((x) => x.name == selectedVariant.name);
|
|
39
|
+
if (!selected) {
|
|
40
|
+
value.variants.push({
|
|
41
|
+
name: selectedVariant.name,
|
|
42
|
+
mediaId: imageId,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
selected.mediaId = imageId;
|
|
47
|
+
}
|
|
34
48
|
console.log(imageId);
|
|
35
|
-
|
|
49
|
+
console.log(JSON.stringify(value));
|
|
50
|
+
if (field) {
|
|
36
51
|
editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, JSON.stringify(value), false);
|
|
52
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
|
|
53
|
+
}
|
|
37
54
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
55
|
+
(0, react_1.useEffect)(() => {
|
|
56
|
+
var _a;
|
|
57
|
+
setSelectedVariant((_a = field === null || field === void 0 ? void 0 : field.value) === null || _a === void 0 ? void 0 : _a.variants[0]);
|
|
58
|
+
}, []);
|
|
59
|
+
console.log("Picture Field: " + JSON.stringify(field));
|
|
60
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(MediaSelector_1.MediaSelector, { visible: mediaSelectorVisible, onHide: () => setMediaSelectorVisible(false), onMediaSelected: imageSelected }), (0, jsx_runtime_1.jsx)(dialog_1.Dialog, { header: "Edit picture", visible: editorVisible, style: { width: "50vw", height: "50vh" }, onHide: () => setEditorVisible(false), children: (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-gap-1 a-flex-col a-justify a-h-full", children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-flex-1 a-flex a-gap-1", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-flex a-flex-col a-gap-1 a-h-full a-border-r", children: (_c = (_b = field === null || field === void 0 ? void 0 : field.value) === null || _b === void 0 ? void 0 : _b.variants) === null || _c === void 0 ? void 0 : _c.map((variant) => ((0, jsx_runtime_1.jsxs)("div", { onClick: () => setSelectedVariant(variant), children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-h-24 a-w-24 a-border a-relative" +
|
|
61
|
+
(selectedVariant == variant ? " a-shadow-xl " : ""), children: [variant.src && (0, jsx_runtime_1.jsx)("img", { src: variant.thumbSrc }), (0, jsx_runtime_1.jsx)("div", { className: "a-absolute a-top-0 a-right-0 ", children: (0, jsx_runtime_1.jsx)("i", { className: "pi pi-pencil a-m-1 a-cursor-pointer", onClick: () => setMediaSelectorVisible(true) }) })] }, variant.name), (0, jsx_runtime_1.jsx)("div", { children: variant.name }), (0, jsx_runtime_1.jsx)("div", { children: variant.aspectRatioText })] }))) }), (0, jsx_runtime_1.jsx)("div", { className: "a-flex-1 a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-absolute a-inset-0 a-overflow-auto", children: selectedVariant && (0, jsx_runtime_1.jsx)("img", { src: selectedVariant.src }) }) })] }), (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: () => {
|
|
62
|
+
setEditorVisible(false);
|
|
63
|
+
}, children: "Ok" }), (0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => {
|
|
64
|
+
setEditorVisible(false);
|
|
65
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
|
|
66
|
+
}, children: "Cancel" })] })] }) }), (0, jsx_runtime_1.jsx)("span", Object.assign({}, otherProps, { onClick: () => setEditorVisible(true), className: "a-cursor-pointer", children: (0, jsx_runtime_1.jsx)(Picture_1.Picture, { field: field, imageParams: imageParams, sources: sources }) }))] }));
|
|
41
67
|
};
|
|
42
68
|
exports.PictureEditor = PictureEditor;
|
|
@@ -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
|
}
|
|
@@ -86,7 +86,7 @@ function AiTerminal({ requestRefresh, selection, }) {
|
|
|
86
86
|
terminalservice_1.TerminalService.off("command", commandHandler);
|
|
87
87
|
};
|
|
88
88
|
}, []);
|
|
89
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-h-full a-flex a-flex-col a-relative", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-flex-1 a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute", children: (0, jsx_runtime_1.jsx)(Terminal_1.Terminal, { onReset: () => setMessages([]), commandHandler: (v, callback) => {
|
|
89
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-h-full a-flex a-flex-col a-relative a-flex-1", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-flex-1 a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute", children: (0, jsx_runtime_1.jsx)(Terminal_1.Terminal, { onReset: () => setMessages([]), commandHandler: (v, callback) => {
|
|
90
90
|
commandHandler(v, callback);
|
|
91
91
|
} }) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "a-text-xs", children: ["Tokens in: ", tokens.in, " out: ", tokens.out] })] }));
|
|
92
92
|
}
|
|
@@ -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
|
}
|
|
@@ -21,6 +21,7 @@ const contentService_1 = require("./contentService");
|
|
|
21
21
|
const editContext_1 = require("./editContext");
|
|
22
22
|
const button_1 = require("primereact/button");
|
|
23
23
|
const dialog_1 = require("primereact/dialog");
|
|
24
|
+
const fileupload_1 = require("primereact/fileupload");
|
|
24
25
|
const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
|
|
25
26
|
const [selectedFolderId, setSelectedFolderId] = (0, react_1.useState)();
|
|
26
27
|
const [images, setImages] = (0, react_1.useState)();
|
|
@@ -40,22 +41,27 @@ const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
|
|
|
40
41
|
"F1828A2C-7E5D-4BBD-98CA-320474871548",
|
|
41
42
|
]);
|
|
42
43
|
setImages(children);
|
|
44
|
+
return children;
|
|
43
45
|
}
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
|
-
return ((0, jsx_runtime_1.jsx)(dialog_1.Dialog, { style: { width: "
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-flex-col a-justify-between hover:a-shadow-md a-cursor-pointer a-p-1", onDoubleClick: () => {
|
|
48
|
+
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, className: "a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-absolute a-inset-0 a-overflow-auto", 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) => {
|
|
49
|
+
if (selection.length)
|
|
50
|
+
setSelectedFolderId(selection[0]);
|
|
51
|
+
else
|
|
52
|
+
setSelectedFolderId(undefined);
|
|
53
|
+
} }) }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "a-flex a-justify-center a-align-center", children: (0, jsx_runtime_1.jsx)("img", { src: selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.previewUrl }) })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-flex a-flex-wrap a-content-start a-items-start a-gap-2 a-absolute a-inset-0 a-overflow-auto", children: images === null || images === void 0 ? void 0 : images.map((t) => {
|
|
54
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-w-24 a-flex a-flex-col a-justify-between hover:a-shadow-md a-cursor-pointer a-p-1", onDoubleClick: () => {
|
|
53
55
|
onMediaSelected(t.id);
|
|
54
56
|
onHide();
|
|
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)(
|
|
57
|
+
}, onClick: () => setSelectedImage(t), children: [(0, jsx_runtime_1.jsx)("img", { src: t.imageUrl, className: "a-w-24 a-h-24" }), (0, jsx_runtime_1.jsx)("div", { className: "a-text-xs a-break-all", children: t.name })] }, t.id));
|
|
58
|
+
}) }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-justify-end a-gap-3 a-mt-3", children: [(0, jsx_runtime_1.jsx)(fileupload_1.FileUpload, { mode: "basic", disabled: !selectedFolderId, auto: true, chooseLabel: "Upload", accept: "image/*", url: "/alpaca/headless/editor/upload?folder=" + selection[0], onUpload: ({ xhr }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
const response = JSON.parse(xhr.responseText);
|
|
60
|
+
const thumbs = yield loadThumbnails(selectedFolderId);
|
|
61
|
+
setSelectedImage(thumbs === null || thumbs === void 0 ? void 0 : thumbs.find((x) => x.id === response.id));
|
|
62
|
+
}) }), (0, jsx_runtime_1.jsx)(button_1.Button, { disabled: !selectedImage, onClick: () => {
|
|
57
63
|
onMediaSelected(selectedImage.id);
|
|
58
64
|
onHide();
|
|
59
|
-
}, children: "Select" })] })] }) }));
|
|
65
|
+
}, children: "Select" }), (0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => onHide(), children: "Cancel" })] })] }) }));
|
|
60
66
|
};
|
|
61
67
|
exports.MediaSelector = MediaSelector;
|
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
|
}
|
|
@@ -93,10 +88,6 @@
|
|
|
93
88
|
cursor: pointer;
|
|
94
89
|
}
|
|
95
90
|
|
|
96
|
-
.a-grid-cols-3 {
|
|
97
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
98
|
-
}
|
|
99
|
-
|
|
100
91
|
.a-grid-cols-4 {
|
|
101
92
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
102
93
|
}
|
|
@@ -105,6 +96,18 @@
|
|
|
105
96
|
flex-direction: column;
|
|
106
97
|
}
|
|
107
98
|
|
|
99
|
+
.a-flex-wrap {
|
|
100
|
+
flex-wrap: wrap;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.a-content-start {
|
|
104
|
+
align-content: flex-start;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.a-items-start {
|
|
108
|
+
align-items: flex-start;
|
|
109
|
+
}
|
|
110
|
+
|
|
108
111
|
.a-items-center {
|
|
109
112
|
align-items: center;
|
|
110
113
|
}
|
|
@@ -113,6 +116,10 @@
|
|
|
113
116
|
justify-content: flex-end;
|
|
114
117
|
}
|
|
115
118
|
|
|
119
|
+
.a-justify-center {
|
|
120
|
+
justify-content: center;
|
|
121
|
+
}
|
|
122
|
+
|
|
116
123
|
.a-justify-between {
|
|
117
124
|
justify-content: space-between;
|
|
118
125
|
}
|
|
@@ -135,6 +142,10 @@
|
|
|
135
142
|
margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
|
|
136
143
|
}
|
|
137
144
|
|
|
145
|
+
.a-overflow-auto {
|
|
146
|
+
overflow: auto;
|
|
147
|
+
}
|
|
148
|
+
|
|
138
149
|
.a-overflow-hidden {
|
|
139
150
|
overflow: hidden;
|
|
140
151
|
}
|
|
@@ -171,6 +182,10 @@
|
|
|
171
182
|
border-bottom-width: 1px;
|
|
172
183
|
}
|
|
173
184
|
|
|
185
|
+
.a-border-r {
|
|
186
|
+
border-right-width: 1px;
|
|
187
|
+
}
|
|
188
|
+
|
|
174
189
|
.a-border-t-2 {
|
|
175
190
|
border-top-width: 2px;
|
|
176
191
|
}
|
|
@@ -445,6 +460,20 @@ div.p-tree .p-treenode-droppoint {
|
|
|
445
460
|
opacity: 0;
|
|
446
461
|
}
|
|
447
462
|
|
|
463
|
+
.p-dropdown-label.p-inputtext {
|
|
464
|
+
padding: 8px;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
div.p-tabview .p-tabview-nav li .p-tabview-nav-link {
|
|
468
|
+
padding: 1rem;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.p-sidebar-header.p-sidebar-custom-header {
|
|
472
|
+
justify-content: space-between;
|
|
473
|
+
font-weight: bold;
|
|
474
|
+
font-size: 18px;
|
|
475
|
+
}
|
|
476
|
+
|
|
448
477
|
.hover\:a-underline:hover {
|
|
449
478
|
text-decoration-line: underline;
|
|
450
479
|
}
|
|
@@ -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;
|