@alpaca-headless/alpaca-headless-nextjs 1.0.26 → 1.0.128
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/client-components/ClientLink.js +36 -0
- package/dist/cjs/client-components/MultiComponentEditor.js +26 -0
- package/dist/cjs/client-components/index.js +19 -0
- package/dist/cjs/components/Link.js +1 -1
- package/dist/cjs/components/LinkEditor.js +47 -1
- package/dist/cjs/components/Picture.js +14 -12
- package/dist/cjs/components/PictureEditor.js +22 -18
- package/dist/cjs/components/Placeholder.js +51 -9
- package/dist/cjs/components/RichText.js +1 -1
- package/dist/cjs/components/RichTextEditor.js +17 -2
- package/dist/cjs/components/TextEditor.js +15 -3
- package/dist/cjs/components/Translate.js +1 -1
- package/dist/cjs/{editor → components}/TranslateEditor.js +5 -2
- package/dist/cjs/editor/AiPopup.js +33 -0
- package/dist/cjs/editor/AiTerminal.js +42 -18
- package/dist/cjs/editor/ComponentInfo.js +4 -3
- package/dist/cjs/editor/ComponentPalette.js +12 -68
- package/dist/cjs/editor/ComponentTree.js +76 -59
- package/dist/cjs/editor/ConfirmationDialog.js +31 -0
- package/dist/cjs/editor/ContentTree.js +144 -49
- package/dist/cjs/editor/Debug.js +12 -2
- package/dist/cjs/editor/DialogButtons.js +7 -0
- package/dist/cjs/editor/DictionaryEditor.js +14 -8
- package/dist/cjs/editor/EditFrame.js +88 -20
- package/dist/cjs/editor/EditHistory.js +17 -4
- package/dist/cjs/editor/Editor.js +1 -1
- package/dist/cjs/editor/EditorClient.js +506 -237
- package/dist/cjs/editor/EditorClientHost.js +2 -2
- package/dist/cjs/editor/FieldList.js +30 -43
- package/dist/cjs/editor/FieldListField.js +75 -0
- package/dist/cjs/editor/FloatingToolbar.js +92 -0
- package/dist/cjs/editor/GraphQL.js +4 -6
- package/dist/cjs/editor/ItemEditor.js +9 -0
- package/dist/cjs/editor/ItemInfo.js +17 -0
- package/dist/cjs/editor/ItemNameDialog.js +37 -0
- package/dist/cjs/editor/LanguageSelector.js +1 -1
- package/dist/cjs/editor/LinkEditorDialog.js +67 -0
- package/dist/cjs/editor/MainLayout.js +24 -0
- package/dist/cjs/editor/MediaSelector.js +44 -13
- package/dist/cjs/editor/PictureEditorDialog.js +93 -0
- package/dist/cjs/editor/PlaceholderDropZone.js +48 -9
- package/dist/cjs/editor/SidebarTabs.js +47 -0
- package/dist/cjs/editor/Terminal.js +21 -11
- package/dist/cjs/editor/Utils.js +43 -0
- package/dist/cjs/editor/VersionSelector.js +1 -1
- package/dist/cjs/editor/Workbox.js +41 -0
- package/dist/cjs/editor/componentCommands.js +141 -0
- package/dist/cjs/editor/contentService.js +45 -3
- package/dist/cjs/editor/editContext.js +9 -4
- package/dist/cjs/editor/editService.js +187 -3
- package/dist/cjs/editor/fieldTypes/CheckboxEditor.js +21 -0
- package/dist/cjs/editor/fieldTypes/InternalLinkFieldEditor.js +46 -0
- package/dist/cjs/editor/fieldTypes/LinkFieldEditor.js +55 -0
- package/dist/cjs/editor/fieldTypes/MultiLineText.js +25 -0
- package/dist/cjs/editor/fieldTypes/PictureFieldEditor.js +19 -0
- package/dist/cjs/editor/fieldTypes/RichTextEditor.js +9 -4
- package/dist/cjs/editor/fieldTypes/SingleLineText.js +12 -4
- package/dist/cjs/editor/fieldTypes/TreeListEditor.js +59 -0
- package/dist/cjs/editor/ui/Section.js +8 -0
- package/dist/cjs/loadRouteData.js +24 -14
- package/dist/cjs/middleware/authorization.js +52 -0
- package/dist/cjs/middleware/index.js +17 -0
- package/dist/editor.css +552 -74
- package/dist/primereact/resources/themes/arya-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/arya-green/theme.css +103 -91
- package/dist/primereact/resources/themes/arya-orange/theme.css +103 -91
- package/dist/primereact/resources/themes/arya-purple/theme.css +103 -91
- package/dist/primereact/resources/themes/bootstrap4-dark-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/bootstrap4-dark-purple/theme.css +103 -91
- package/dist/primereact/resources/themes/bootstrap4-light-blue/theme.css +102 -90
- package/dist/primereact/resources/themes/bootstrap4-light-purple/theme.css +102 -90
- package/dist/primereact/resources/themes/fluent-light/theme.css +103 -91
- package/dist/primereact/resources/themes/lara-dark-amber/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-amber/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-amber/theme.css +6049 -0
- package/dist/primereact/resources/themes/lara-dark-blue/theme.css +1006 -955
- package/dist/primereact/resources/themes/lara-dark-cyan/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-cyan/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-cyan/theme.css +6049 -0
- package/dist/primereact/resources/themes/lara-dark-green/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-green/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-green/theme.css +6049 -0
- package/dist/primereact/resources/themes/lara-dark-indigo/theme.css +1006 -955
- package/dist/primereact/resources/themes/lara-dark-pink/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-pink/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-pink/theme.css +6049 -0
- package/dist/primereact/resources/themes/lara-dark-purple/theme.css +1006 -955
- package/dist/primereact/resources/themes/lara-dark-teal/theme.css +1006 -955
- package/dist/primereact/resources/themes/lara-light-amber/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-amber/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-amber/theme.css +6041 -0
- package/dist/primereact/resources/themes/lara-light-blue/theme.css +842 -799
- package/dist/primereact/resources/themes/lara-light-cyan/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-cyan/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-cyan/theme.css +6041 -0
- package/dist/primereact/resources/themes/lara-light-green/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-green/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-green/theme.css +6041 -0
- package/dist/primereact/resources/themes/lara-light-indigo/theme.css +842 -799
- package/dist/primereact/resources/themes/lara-light-pink/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-pink/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-pink/theme.css +6041 -0
- package/dist/primereact/resources/themes/lara-light-purple/theme.css +842 -799
- package/dist/primereact/resources/themes/lara-light-teal/theme.css +1115 -1072
- package/dist/primereact/resources/themes/luna-amber/theme.css +103 -91
- package/dist/primereact/resources/themes/luna-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/luna-green/theme.css +103 -91
- package/dist/primereact/resources/themes/luna-pink/theme.css +103 -91
- package/dist/primereact/resources/themes/md-dark-deeppurple/theme.css +147 -135
- package/dist/primereact/resources/themes/md-dark-indigo/theme.css +147 -135
- package/dist/primereact/resources/themes/md-light-deeppurple/theme.css +147 -135
- package/dist/primereact/resources/themes/md-light-indigo/theme.css +147 -135
- package/dist/primereact/resources/themes/mdc-dark-deeppurple/theme.css +147 -135
- package/dist/primereact/resources/themes/mdc-dark-indigo/theme.css +147 -135
- package/dist/primereact/resources/themes/mdc-light-deeppurple/theme.css +147 -135
- package/dist/primereact/resources/themes/mdc-light-indigo/theme.css +147 -135
- package/dist/primereact/resources/themes/mira/theme.css +108 -91
- package/dist/primereact/resources/themes/nano/theme.css +107 -91
- package/dist/primereact/resources/themes/nova/theme.css +103 -91
- package/dist/primereact/resources/themes/nova-accent/theme.css +103 -91
- package/dist/primereact/resources/themes/nova-alt/theme.css +103 -91
- package/dist/primereact/resources/themes/rhea/theme.css +103 -91
- package/dist/primereact/resources/themes/saga-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/saga-green/theme.css +103 -91
- package/dist/primereact/resources/themes/saga-orange/theme.css +103 -91
- package/dist/primereact/resources/themes/saga-purple/theme.css +103 -91
- package/dist/primereact/resources/themes/soho-dark/theme.css +108 -91
- package/dist/primereact/resources/themes/soho-light/theme.css +108 -91
- package/dist/primereact/resources/themes/vela-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/vela-green/theme.css +103 -91
- package/dist/primereact/resources/themes/vela-orange/theme.css +103 -91
- package/dist/primereact/resources/themes/vela-purple/theme.css +103 -91
- package/dist/primereact/resources/themes/viva-dark/theme.css +103 -91
- package/dist/primereact/resources/themes/viva-light/theme.css +103 -91
- package/package.json +29 -16
- package/tailwind.config.js +9 -2
- package/types/client-components/ClientLink.d.ts +6 -0
- package/types/client-components/MultiComponentEditor.d.ts +10 -0
- package/types/client-components/index.d.ts +2 -0
- package/types/components/Picture.d.ts +1 -0
- package/types/components/Placeholder.d.ts +16 -2
- package/types/components/RichTextEditor.d.ts +55 -55
- package/types/components/TextEditor.d.ts +54 -54
- package/types/editor/AiPopup.d.ts +10 -0
- package/types/editor/AiTerminal.d.ts +4 -3
- package/types/editor/ComponentPalette.d.ts +3 -4
- package/types/editor/ComponentTree.d.ts +1 -1
- package/types/editor/ConfirmationDialog.d.ts +19 -0
- package/types/editor/ContentTree.d.ts +7 -3
- package/types/editor/Debug.d.ts +1 -1
- package/types/editor/DialogButtons.d.ts +4 -0
- package/types/editor/DictionaryEditor.d.ts +3 -2
- package/types/editor/EditFrame.d.ts +4 -3
- package/types/editor/EditorClient.d.ts +4 -4
- package/types/editor/EditorClientHost.d.ts +4 -3
- package/types/editor/FieldListField.d.ts +4 -0
- package/types/editor/FloatingToolbar.d.ts +7 -0
- package/types/editor/ItemEditor.d.ts +4 -0
- package/types/editor/ItemInfo.d.ts +4 -0
- package/types/editor/ItemNameDialog.d.ts +10 -0
- package/types/editor/LinkEditorDialog.d.ts +15 -0
- package/types/editor/MainLayout.d.ts +6 -0
- package/types/editor/MediaSelector.d.ts +2 -1
- package/types/editor/PictureEditorDialog.d.ts +6 -0
- package/types/editor/SidebarTabs.d.ts +8 -0
- package/types/editor/Terminal.d.ts +3 -1
- package/types/editor/Utils.d.ts +3 -0
- package/types/editor/Workbox.d.ts +6 -0
- package/types/editor/componentCommands.d.ts +4 -0
- package/types/editor/contentService.d.ts +7 -1
- package/types/editor/editContext.d.ts +90 -19
- package/types/editor/editService.d.ts +9 -1
- package/types/editor/fieldTypes/CheckboxEditor.d.ts +4 -0
- package/types/editor/fieldTypes/InternalLinkFieldEditor.d.ts +4 -0
- package/types/editor/fieldTypes/LinkFieldEditor.d.ts +4 -0
- package/types/editor/fieldTypes/MultiLineText.d.ts +4 -0
- package/types/editor/fieldTypes/PictureFieldEditor.d.ts +4 -0
- package/types/editor/fieldTypes/TreeListEditor.d.ts +4 -0
- package/types/editor/ui/Section.d.ts +5 -0
- package/types/fieldTypes.d.ts +32 -17
- package/types/layoutData.d.ts +34 -9
- package/types/loadRouteData.d.ts +34 -5
- package/types/mediaProtection.d.ts +1 -0
- package/types/middleware/authorization.d.ts +2 -0
- package/types/middleware/index.d.ts +1 -0
- package/dist/cjs/editor/PageInfo.js +0 -12
- package/dist/esm/alpacaContext.js +0 -8
- package/dist/esm/components/Error.js +0 -10
- package/dist/esm/components/Image.js +0 -32
- package/dist/esm/components/Link.js +0 -29
- package/dist/esm/components/LinkEditor.js +0 -19
- package/dist/esm/components/Picture.js +0 -118
- package/dist/esm/components/PictureEditor.js +0 -41
- package/dist/esm/components/Placeholder.js +0 -69
- package/dist/esm/components/RichText.js +0 -40
- package/dist/esm/components/RichTextEditor.js +0 -52
- package/dist/esm/components/Slot.js +0 -5
- package/dist/esm/components/Text.js +0 -39
- package/dist/esm/components/TextEditor.js +0 -38
- package/dist/esm/components/Translate.js +0 -10
- package/dist/esm/components/index.js +0 -7
- package/dist/esm/editor/AiTerminal.js +0 -157
- package/dist/esm/editor/ComponentInfo.js +0 -10
- package/dist/esm/editor/ComponentPalette.js +0 -72
- package/dist/esm/editor/ComponentTree.js +0 -196
- package/dist/esm/editor/ContentTree.js +0 -117
- package/dist/esm/editor/Debug.js +0 -9
- package/dist/esm/editor/DictionaryEditor.js +0 -31
- package/dist/esm/editor/EditFrame.js +0 -57
- package/dist/esm/editor/EditHistory.js +0 -26
- package/dist/esm/editor/Editor.js +0 -23
- package/dist/esm/editor/EditorClient.js +0 -477
- package/dist/esm/editor/EditorClientHost.js +0 -7
- package/dist/esm/editor/FieldList.js +0 -60
- package/dist/esm/editor/GraphQL.js +0 -82
- package/dist/esm/editor/LanguageSelector.js +0 -17
- package/dist/esm/editor/MediaSelector.js +0 -54
- package/dist/esm/editor/PageInfo.js +0 -8
- package/dist/esm/editor/PlaceholderDropZone.js +0 -50
- package/dist/esm/editor/PlaceholderDropZoneHost.js +0 -7
- package/dist/esm/editor/Terminal.js +0 -47
- package/dist/esm/editor/TranslateEditor.js +0 -21
- package/dist/esm/editor/VersionSelector.js +0 -17
- package/dist/esm/editor/componentTreeHelper.js +0 -14
- package/dist/esm/editor/contentService.js +0 -31
- package/dist/esm/editor/editContext.js +0 -5
- package/dist/esm/editor/editService.js +0 -139
- package/dist/esm/editor/fieldTypes/RichTextEditor.js +0 -15
- package/dist/esm/editor/fieldTypes/SingleLineText.js +0 -13
- package/dist/esm/editor/index.js +0 -2
- package/dist/esm/fieldTypes.js +0 -1
- package/dist/esm/graphQLTypes.js +0 -1
- package/dist/esm/index.js +0 -7
- package/dist/esm/layoutData.js +0 -1
- package/dist/esm/loadRouteData.js +0 -123
- package/dist/esm/mediaProtection.js +0 -49
- package/types/editor/PageInfo.d.ts +0 -4
- /package/types/{editor → components}/TranslateEditor.d.ts +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PictureEditorDialog = void 0;
|
|
16
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
17
|
+
const dialog_1 = require("primereact/dialog");
|
|
18
|
+
const __1 = require("..");
|
|
19
|
+
const react_1 = require("react");
|
|
20
|
+
const button_1 = require("primereact/button");
|
|
21
|
+
const DialogButtons_1 = __importDefault(require("./DialogButtons"));
|
|
22
|
+
function PictureEditorDialog({ field, onCancel, onOk, }) {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
const [selectedVariantName, setSelectedVariantName] = (0, react_1.useState)();
|
|
25
|
+
const [pictureValue, setPictureValue] = (0, react_1.useState)();
|
|
26
|
+
const [rawValue, setRawValue] = (0, react_1.useState)();
|
|
27
|
+
const editContext = (0, __1.useEditContext)();
|
|
28
|
+
(0, react_1.useEffect)(() => {
|
|
29
|
+
var _a;
|
|
30
|
+
setSelectedVariantName((_a = field === null || field === void 0 ? void 0 : field.value) === null || _a === void 0 ? void 0 : _a.variants[0].name);
|
|
31
|
+
}, []);
|
|
32
|
+
(0, react_1.useEffect)(() => {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
const deepCopy = JSON.parse(JSON.stringify(field.value));
|
|
35
|
+
setPictureValue(deepCopy);
|
|
36
|
+
const raw = (field === null || field === void 0 ? void 0 : field.rawValue)
|
|
37
|
+
? JSON.parse(field === null || field === void 0 ? void 0 : field.rawValue)
|
|
38
|
+
: { variants: [] };
|
|
39
|
+
setRawValue(raw);
|
|
40
|
+
if (!((_a = field === null || field === void 0 ? void 0 : field.value) === null || _a === void 0 ? void 0 : _a.variants[0].src))
|
|
41
|
+
selectMedia((_b = field === null || field === void 0 ? void 0 : field.value) === null || _b === void 0 ? void 0 : _b.variants[0].name, raw);
|
|
42
|
+
}, [field]);
|
|
43
|
+
function selectMedia(variantName, raw) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const chosenImage = yield (editContext === null || editContext === void 0 ? void 0 : editContext.selectMedia({
|
|
46
|
+
selectedIdPath: (selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.idPath) || "",
|
|
47
|
+
}));
|
|
48
|
+
if (chosenImage)
|
|
49
|
+
imageSelected(chosenImage, variantName !== null && variantName !== void 0 ? variantName : selectedVariantName, raw !== null && raw !== void 0 ? raw : rawValue);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const selectedVariant = pictureValue && pictureValue.variants
|
|
53
|
+
? (_a = pictureValue.variants) === null || _a === void 0 ? void 0 : _a.find((x) => x.name == selectedVariantName)
|
|
54
|
+
: null;
|
|
55
|
+
const imageSelected = (0, react_1.useCallback)((imageId, variantName, rawValue) => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
var _c;
|
|
57
|
+
if (!variantName || !rawValue)
|
|
58
|
+
return;
|
|
59
|
+
const selected = (_c = rawValue.variants) === null || _c === void 0 ? void 0 : _c.find((x) => x.name == variantName);
|
|
60
|
+
if (!selected) {
|
|
61
|
+
rawValue.variants.push({
|
|
62
|
+
name: variantName,
|
|
63
|
+
mediaId: imageId,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
selected.mediaId = imageId;
|
|
68
|
+
}
|
|
69
|
+
setRawValue(rawValue);
|
|
70
|
+
const newValue = yield (editContext === null || editContext === void 0 ? void 0 : editContext.getPictureFieldValue(field, rawValue));
|
|
71
|
+
if (newValue)
|
|
72
|
+
setPictureValue(newValue);
|
|
73
|
+
}), []);
|
|
74
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(dialog_1.Dialog, { header: "Edit " + (field === null || field === void 0 ? void 0 : field.name), visible: true, style: { width: "70vw", height: "70vh" }, onHide: onCancel, 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-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-flex a-flex-col a-gap-1 a-h-full a-border-r a-pr-3 a-pt-3", children: pictureValue &&
|
|
75
|
+
((_b = pictureValue.variants) === null || _b === void 0 ? void 0 : _b.map((variant) => ((0, jsx_runtime_1.jsxs)("div", { onClick: () => setSelectedVariantName(variant.name), children: [(0, jsx_runtime_1.jsx)("div", { className: "a-flex a-justify-center a-items-center a-h-24 a-w-24 a-border a-relative" +
|
|
76
|
+
(selectedVariantName == variant.name
|
|
77
|
+
? " a-shadow-xl "
|
|
78
|
+
: ""), children: variant.src && (0, jsx_runtime_1.jsx)("img", { src: variant.thumbSrc }) }), (0, jsx_runtime_1.jsx)("div", { children: variant.name }), (0, jsx_runtime_1.jsx)("div", { children: variant.aspectRatioText })] }, variant.name)))) }), (0, jsx_runtime_1.jsx)("div", { className: "a-flex-1 a-relative a-p-3", children: (0, jsx_runtime_1.jsxs)("div", { className: "a-absolute a-inset-0 a-top-3 a-overflow-auto a-select-none a-flex a-align-center a-justify-center", children: [selectedVariant && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("img", { src: selectedVariant.src, className: "a-object-contain a-h-full a-w-full" }) })), selectedVariant && ((0, jsx_runtime_1.jsx)("div", { className: "a-absolute a-top-0 a-right-0 a-cursor-pointer", children: (0, jsx_runtime_1.jsx)("i", { className: "pi pi-pencil a-text-3xl a-cursor-pointer a-p-1 a-bg-gray-100 a-bg-opacity-70", onClick: () => selectMedia() }) }))] }) })] }), (0, jsx_runtime_1.jsxs)(DialogButtons_1.default, { children: [(0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => {
|
|
79
|
+
if (pictureValue) {
|
|
80
|
+
if (field) {
|
|
81
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.editField({
|
|
82
|
+
field,
|
|
83
|
+
rawValue: JSON.stringify(rawValue),
|
|
84
|
+
refresh: "immediate",
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
onOk(pictureValue);
|
|
88
|
+
}
|
|
89
|
+
}, children: "Ok" }), (0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => {
|
|
90
|
+
onCancel();
|
|
91
|
+
}, children: "Cancel" })] })] }) }) }));
|
|
92
|
+
}
|
|
93
|
+
exports.PictureEditorDialog = PictureEditorDialog;
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
"use client";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
3
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
7
|
exports.PlaceholderDropZone = void 0;
|
|
5
8
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
9
|
const react_1 = require("react");
|
|
7
10
|
const progressbar_1 = require("primereact/progressbar");
|
|
8
11
|
const __1 = require("..");
|
|
12
|
+
const utils_1 = require("primereact/utils");
|
|
13
|
+
const react_dom_1 = __importDefault(require("react-dom"));
|
|
9
14
|
function PlaceholderDropZone({ placeholder, index, parentName, }) {
|
|
10
15
|
const [isInserting, setIsInserting] = (0, react_1.useState)(false);
|
|
11
16
|
const [isSelected, setIsSelected] = (0, react_1.useState)(false);
|
|
17
|
+
const [isHovering, setIsHovering] = (0, react_1.useState)(false);
|
|
18
|
+
const spotRef = (0, react_1.useRef)(null);
|
|
19
|
+
const [spotPosition, setSpotPosition] = (0, react_1.useState)({ x: 0, y: 0 });
|
|
12
20
|
const editContext = (0, __1.useEditContext)();
|
|
13
21
|
if (!editContext)
|
|
14
22
|
return;
|
|
@@ -16,6 +24,19 @@ function PlaceholderDropZone({ placeholder, index, parentName, }) {
|
|
|
16
24
|
function isAnyPlaceholderSelected() {
|
|
17
25
|
return selection.find((x) => x.indexOf("_") > 0) != undefined;
|
|
18
26
|
}
|
|
27
|
+
const updateSpotPosition = () => {
|
|
28
|
+
var _a, _b;
|
|
29
|
+
if (spotRef.current) {
|
|
30
|
+
const editorRect = (_a = editContext.editorContainerRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
31
|
+
if (editorRect) {
|
|
32
|
+
const spotRect = (_b = spotRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect();
|
|
33
|
+
setSpotPosition({
|
|
34
|
+
x: spotRect.left * editContext.zoom - editorRect.left,
|
|
35
|
+
y: spotRect.top * editContext.zoom - editorRect.top,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
19
40
|
(0, react_1.useEffect)(() => {
|
|
20
41
|
setIsInserting(false);
|
|
21
42
|
}, [refreshCompletedFlag]);
|
|
@@ -24,31 +45,49 @@ function PlaceholderDropZone({ placeholder, index, parentName, }) {
|
|
|
24
45
|
const isSelectedForInsertion = editContext.selectedForInsertion.length > 0 &&
|
|
25
46
|
placeholder.key.indexOf(editContext.selectedForInsertion) >= 0;
|
|
26
47
|
const dragObjectAllowed = (editContext.dragObject ? true : false) &&
|
|
27
|
-
((_a = placeholder.insertOptions) === null || _a === void 0 ? void 0 : _a.find((x) => {
|
|
48
|
+
((_a = placeholder.insertOptions) === null || _a === void 0 ? void 0 : _a.find((x) => {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
return x.id == ((_a = editContext.dragObject) === null || _a === void 0 ? void 0 : _a.templateId) ||
|
|
51
|
+
((_b = x.compatibleTemplates) === null || _b === void 0 ? void 0 : _b.find((y) => { var _a; return y == ((_a = editContext.dragObject) === null || _a === void 0 ? void 0 : _a.templateId); })) !== undefined;
|
|
52
|
+
})) != undefined;
|
|
28
53
|
const selected = (isSelectedForInsertion ||
|
|
29
54
|
(!isAnyPlaceholderSelected() && editContext.dragObject != undefined)) &&
|
|
30
55
|
(!editContext.dragObject ? true : false || dragObjectAllowed);
|
|
31
56
|
setIsSelected(selected);
|
|
57
|
+
if (selected)
|
|
58
|
+
updateSpotPosition();
|
|
32
59
|
}, [selection, dragObject, selectedForInsertion, editContext]);
|
|
60
|
+
(0, react_1.useEffect)(() => {
|
|
61
|
+
updateSpotPosition();
|
|
62
|
+
}, [editContext.zoom, editContext.scroll, isSelected]);
|
|
33
63
|
function dragOver(ev) {
|
|
34
64
|
var _a;
|
|
35
65
|
ev.dataTransfer.dropEffect =
|
|
36
66
|
((_a = editContext === null || editContext === void 0 ? void 0 : editContext.dragObject) === null || _a === void 0 ? void 0 : _a.type) == "template" ? "copy" : "move";
|
|
67
|
+
setIsHovering(true);
|
|
37
68
|
ev.preventDefault();
|
|
38
69
|
}
|
|
39
70
|
function drop(ev) {
|
|
40
71
|
ev.preventDefault();
|
|
41
72
|
setIsInserting(true);
|
|
73
|
+
setIsHovering(false);
|
|
42
74
|
editContext.droppedInPlaceholder(placeholder.key, index);
|
|
43
75
|
}
|
|
44
76
|
if (isInserting)
|
|
45
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: " a-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
77
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "a-inserting-placeholder a-p-8 a-border a-border-dashed", children: (0, jsx_runtime_1.jsx)(progressbar_1.ProgressBar, { mode: "indeterminate", style: { height: "6px" } }) }));
|
|
78
|
+
let overlayStyle = undefined;
|
|
79
|
+
overlayStyle = {
|
|
80
|
+
top: spotPosition.y,
|
|
81
|
+
left: spotPosition.x,
|
|
82
|
+
zIndex: isHovering ? 1000 : 900,
|
|
83
|
+
position: "absolute",
|
|
84
|
+
};
|
|
85
|
+
if (!isSelected)
|
|
86
|
+
return;
|
|
87
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.classNames)(isHovering ? "a-z-50 a-border a-border-dashed" : "a-z-10", "a-flex a-justify-center a-items-center a-relative a-transition-all a-duration-200"), children: (0, jsx_runtime_1.jsx)("div", { ref: spotRef, children: editContext.editorContainerRef.current &&
|
|
88
|
+
overlayStyle &&
|
|
89
|
+
react_dom_1.default.createPortal((0, jsx_runtime_1.jsx)("div", { style: overlayStyle, onDragOver: dragOver, onDrop: drop, onDragLeave: () => setIsHovering(false), onClick: (e) => e.preventDefault(), className: `a-placeholder ${isSelected ? "a-placeholder-dropzone" : "a-hidden"} `, children: (0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.classNames)(isHovering
|
|
90
|
+
? "a-z-50 a-shadow-xl shadow-black a-w-28 a-h-28 a-shadow-blue-500/50"
|
|
91
|
+
: "a-z-49 a-w-10 a-h-10 hover:a-scale-[1.1]", "a-transition-all a-duration-200 a-text-white a-text-center a-p-2 a-text-sm a-flex a-justify-center a-items-center a-bg-blue-500 a-rounded-full a-absolute a-top-1/2 a-left-1/2 a--translate-x-1/2 a--translate-y-1/2 "), children: [!isHovering && (0, jsx_runtime_1.jsx)("i", { className: "pi pi-plus a-block" }), isHovering && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [parentName, " (", index, ")"] }))] }) }), editContext.editorContainerRef.current) }) }));
|
|
53
92
|
}
|
|
54
93
|
exports.PlaceholderDropZone = PlaceholderDropZone;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const tabview_1 = require("primereact/tabview");
|
|
8
|
+
const DictionaryEditor_1 = require("./DictionaryEditor");
|
|
9
|
+
const Debug_1 = require("./Debug");
|
|
10
|
+
const FieldList_1 = require("./FieldList");
|
|
11
|
+
const ItemInfo_1 = require("./ItemInfo");
|
|
12
|
+
const GraphQL_1 = require("./GraphQL");
|
|
13
|
+
const ComponentInfo_1 = require("./ComponentInfo");
|
|
14
|
+
const react_1 = require("react");
|
|
15
|
+
const ItemEditor_1 = __importDefault(require("./ItemEditor"));
|
|
16
|
+
function SidebarTabs({ selectedComponent, page, dictionary, item, }) {
|
|
17
|
+
const [activeIndex, setActiveIndex] = (0, react_1.useState)(0);
|
|
18
|
+
(0, react_1.useEffect)(() => {
|
|
19
|
+
if (selectedComponent)
|
|
20
|
+
setActiveIndex(1);
|
|
21
|
+
else
|
|
22
|
+
setActiveIndex(0);
|
|
23
|
+
}, [selectedComponent === null || selectedComponent === void 0 ? void 0 : selectedComponent.id]);
|
|
24
|
+
(0, react_1.useEffect)(() => {
|
|
25
|
+
if (selectedComponent && item)
|
|
26
|
+
setActiveIndex(2);
|
|
27
|
+
else if (item) {
|
|
28
|
+
setActiveIndex(1);
|
|
29
|
+
}
|
|
30
|
+
else
|
|
31
|
+
setActiveIndex(0);
|
|
32
|
+
}, [item]);
|
|
33
|
+
const panels = [
|
|
34
|
+
(0, jsx_runtime_1.jsxs)(tabview_1.TabPanel, { header: "Page", className: "a-h-fill-available", children: [page && (0, jsx_runtime_1.jsx)(ItemInfo_1.ItemInfo, { item: page }), page && (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: page.fields })] }, "page"),
|
|
35
|
+
];
|
|
36
|
+
if (selectedComponent)
|
|
37
|
+
panels.push((0, jsx_runtime_1.jsxs)(tabview_1.TabPanel, { header: "Component", className: "a-h-fill-available", children: [(0, jsx_runtime_1.jsx)(ComponentInfo_1.ComponentInfo, { component: selectedComponent }), (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: selectedComponent.fields })] }, "component"));
|
|
38
|
+
if (item)
|
|
39
|
+
panels.push((0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Item", className: "a-h-fill-available", children: (0, jsx_runtime_1.jsx)(ItemEditor_1.default, { item: item }) }, "item"));
|
|
40
|
+
if (selectedComponent) {
|
|
41
|
+
panels.push((0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "GraphQL", style: { height: "100%" }, children: (0, jsx_runtime_1.jsx)(GraphQL_1.GraphQL, { component: selectedComponent }) }, "graphql"));
|
|
42
|
+
}
|
|
43
|
+
panels.push((0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Dictionary", children: (0, jsx_runtime_1.jsx)(DictionaryEditor_1.DictionaryEditor, { dictionary: dictionary }) }, "dictionary"));
|
|
44
|
+
panels.push((0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Debug", className: "a-h-full", children: (0, jsx_runtime_1.jsx)(Debug_1.Debug, { component: selectedComponent, page: page }) }, "debug"));
|
|
45
|
+
return ((0, jsx_runtime_1.jsx)(tabview_1.TabView, { className: "a-inset-0 a-absolute alpaca-editor-tabs ", scrollable: true, activeIndex: activeIndex, onTabChange: (e) => setActiveIndex(e.index), children: panels }));
|
|
46
|
+
}
|
|
47
|
+
exports.default = SidebarTabs;
|
|
@@ -3,14 +3,21 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Terminal = void 0;
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const button_1 = require("primereact/button");
|
|
6
7
|
const inputtextarea_1 = require("primereact/inputtextarea");
|
|
7
8
|
const react_1 = require("react");
|
|
8
|
-
function Terminal({ commandHandler, onReset, }) {
|
|
9
|
+
function Terminal({ commandHandler, onReset, toolbar, }) {
|
|
9
10
|
const [value, setValue] = (0, react_1.useState)("");
|
|
10
11
|
const [response, setResponse] = (0, react_1.useState)();
|
|
11
12
|
const [messages, setMessages] = (0, react_1.useState)([]);
|
|
12
13
|
const bottomRef = (0, react_1.useRef)(null);
|
|
13
14
|
const messageRef = (0, react_1.useRef)(messages);
|
|
15
|
+
const inputRef = (0, react_1.useRef)(null);
|
|
16
|
+
(0, react_1.useEffect)(() => {
|
|
17
|
+
if (inputRef.current) {
|
|
18
|
+
inputRef.current.focus();
|
|
19
|
+
}
|
|
20
|
+
}, []);
|
|
14
21
|
(0, react_1.useEffect)(() => {
|
|
15
22
|
messageRef.current = messages;
|
|
16
23
|
}, [messages]);
|
|
@@ -25,10 +32,7 @@ function Terminal({ commandHandler, onReset, }) {
|
|
|
25
32
|
const handleKeyPress = (e) => {
|
|
26
33
|
if (e.key === "Enter" && !e.shiftKey) {
|
|
27
34
|
e.preventDefault(); // Prevent newline insertion
|
|
28
|
-
|
|
29
|
-
setValue("");
|
|
30
|
-
setResponse("...");
|
|
31
|
-
commandHandler(value, callback);
|
|
35
|
+
submit();
|
|
32
36
|
}
|
|
33
37
|
};
|
|
34
38
|
(0, react_1.useEffect)(() => {
|
|
@@ -38,14 +42,20 @@ function Terminal({ commandHandler, onReset, }) {
|
|
|
38
42
|
}, [messages, response]);
|
|
39
43
|
const getClasses = (m) => {
|
|
40
44
|
if (m.type === "response")
|
|
41
|
-
return "text-blue-500";
|
|
45
|
+
return "a-text-blue-500";
|
|
42
46
|
return "";
|
|
43
47
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
function submit() {
|
|
49
|
+
setMessages([...messages, { type: "command", text: value }]);
|
|
50
|
+
setValue("");
|
|
51
|
+
setResponse("...");
|
|
52
|
+
commandHandler(value, callback);
|
|
53
|
+
}
|
|
54
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-flex-col a-h-full", children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-p-4 a-border-b a-border-gray-200 a-flex a-justify-between a-gap-2", children: [(0, jsx_runtime_1.jsx)("button", { onClick: () => {
|
|
55
|
+
setMessages([]);
|
|
56
|
+
onReset();
|
|
57
|
+
}, children: (0, jsx_runtime_1.jsx)("i", { className: "pi pi-trash" }) }), toolbar] }), (0, jsx_runtime_1.jsxs)("div", { className: "a-overflow-y-auto a-h-full a-overflow-x-hidden a-p-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-flex a-flex-col a-gap-2", children: messages.map((m, i) => ((0, jsx_runtime_1.jsx)("div", { className: getClasses(m), children: m.text }, i))) }), response != null && ((0, jsx_runtime_1.jsxs)("div", { className: "a-flex", children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-text-xs", children: [" ", (0, jsx_runtime_1.jsx)("i", { className: "pi pi-spin pi-spinner" })] }), (0, jsx_runtime_1.jsx)("div", { dangerouslySetInnerHTML: {
|
|
48
58
|
__html: response.replaceAll("\\n", "<br>"),
|
|
49
|
-
} })] })), (0, jsx_runtime_1.jsx)("div", { ref: bottomRef })] }), (0, jsx_runtime_1.jsx)(inputtextarea_1.InputTextarea, { value: value, className: "a-border-0 a-border-t-2 a-rounded-none", onKeyDown: handleKeyPress, onChange: (e) => setValue(e.target.value), rows: 5, cols: 30 })] }));
|
|
59
|
+
} })] })), (0, jsx_runtime_1.jsx)("div", { ref: bottomRef })] }), (0, jsx_runtime_1.jsxs)("div", { className: "a-flex", children: [(0, jsx_runtime_1.jsx)(inputtextarea_1.InputTextarea, { ref: inputRef, value: value, className: "a-border-0 a-border-t-2 a-rounded-none a-flex-1", onKeyDown: handleKeyPress, onChange: (e) => setValue(e.target.value), rows: 5, cols: 30 }), (0, jsx_runtime_1.jsx)(button_1.Button, { icon: "pi pi-chevron-right", onClick: submit })] })] }));
|
|
50
60
|
}
|
|
51
61
|
exports.Terminal = Terminal;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useLocalStorage = exports.useEventListenerExt = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const react_2 = require("react");
|
|
6
|
+
// Hook
|
|
7
|
+
function useEventListenerExt(eventName, handler, element) {
|
|
8
|
+
// Create a ref that stores handler
|
|
9
|
+
const savedHandler = (0, react_2.useRef)();
|
|
10
|
+
// Update ref.current value if handler changes.
|
|
11
|
+
// This allows our effect below to always get latest handler ...
|
|
12
|
+
// ... without us needing to pass it in effect deps array ...
|
|
13
|
+
// ... and potentially cause effect to re-run every render.
|
|
14
|
+
(0, react_2.useEffect)(() => {
|
|
15
|
+
savedHandler.current = handler;
|
|
16
|
+
}, [handler]);
|
|
17
|
+
(0, react_2.useEffect)(() => {
|
|
18
|
+
// Make sure element supports addEventListener
|
|
19
|
+
// On
|
|
20
|
+
const isSupported = element && element.addEventListener;
|
|
21
|
+
if (!isSupported)
|
|
22
|
+
return;
|
|
23
|
+
// Create event listener that calls handler function stored in ref
|
|
24
|
+
const eventListener = (event) => savedHandler.current(event);
|
|
25
|
+
// Add event listener
|
|
26
|
+
element.addEventListener(eventName, eventListener);
|
|
27
|
+
// Remove event listener on cleanup
|
|
28
|
+
return () => {
|
|
29
|
+
element.removeEventListener(eventName, eventListener);
|
|
30
|
+
};
|
|
31
|
+
}, [eventName, element] // Re-run if eventName or element changes
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
exports.useEventListenerExt = useEventListenerExt;
|
|
35
|
+
const useLocalStorage = (storageKey, fallbackState) => {
|
|
36
|
+
var _a;
|
|
37
|
+
const [value, setValue] = (0, react_1.useState)(JSON.parse((_a = localStorage.getItem(storageKey)) !== null && _a !== void 0 ? _a : JSON.stringify(fallbackState)));
|
|
38
|
+
(0, react_2.useEffect)(() => {
|
|
39
|
+
localStorage.setItem(storageKey, JSON.stringify(value));
|
|
40
|
+
}, [value, storageKey]);
|
|
41
|
+
return [value, setValue];
|
|
42
|
+
};
|
|
43
|
+
exports.useLocalStorage = useLocalStorage;
|
|
@@ -16,6 +16,6 @@ function VersionSelector({ page, onVersionSelected, }) {
|
|
|
16
16
|
const versionOptionTemplate = (option) => {
|
|
17
17
|
return ((0, jsx_runtime_1.jsxs)("div", { children: [option.version, " ", (0, jsx_runtime_1.jsxs)("div", { className: "a-text-xs", children: ["(", option.updated.toString(), " by ", option.updatedBy, ")"] })] }));
|
|
18
18
|
};
|
|
19
|
-
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { value: page.version, onChange: (e) => onVersionSelected(e.value), options: page.versions, optionValue: "version", optionLabel: "version", placeholder: "Select a version", valueTemplate: selectedVersionTemplate, itemTemplate: versionOptionTemplate }) }));
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { className: "a-text-sm", value: page.version, onChange: (e) => onVersionSelected(e.value), options: page.versions, optionValue: "version", optionLabel: "version", placeholder: "Select a version", valueTemplate: selectedVersionTemplate, itemTemplate: versionOptionTemplate }) }));
|
|
20
20
|
}
|
|
21
21
|
exports.VersionSelector = VersionSelector;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const column_1 = require("primereact/column");
|
|
5
|
+
const datatable_1 = require("primereact/datatable");
|
|
6
|
+
const tooltip_1 = require("primereact/tooltip");
|
|
7
|
+
const button_1 = require("primereact/button");
|
|
8
|
+
function Workbox({ workbox, lockItem, executeWorkflowCommand, }) {
|
|
9
|
+
const nameBodyTemplate = (wbItem) => {
|
|
10
|
+
const id = wbItem.item.id + wbItem.item.language + wbItem.item.version;
|
|
11
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-gap-2 a-items-center", children: [(wbItem.lockedBy || wbItem.hasLock) && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("i", { className: `a-lock-tooltip-${id} ` +
|
|
12
|
+
"a-text-xs pi pi-lock " +
|
|
13
|
+
(wbItem.hasLock ? "a-text-green-600" : "a-text-red-600") }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { target: `.a-lock-tooltip-${id}`, content: wbItem.lockedBy })] })), !wbItem.lockedBy && !wbItem.hasLock && ((0, jsx_runtime_1.jsx)("i", { className: "a-text-xs pi pi-lock-open", onClick: () => {
|
|
14
|
+
lockItem(wbItem.item);
|
|
15
|
+
} })), (0, jsx_runtime_1.jsxs)("span", { className: `a-name-tooltip-${id}`, style: { position: "relative" }, children: [wbItem.item.name, " ", (0, jsx_runtime_1.jsxs)("span", { className: "a-text-gray-300", children: ["(", wbItem.item.language, ", ", wbItem.item.version, ")"] }), (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { target: `.a-name-tooltip-${id}`, content: wbItem.path })] })] }));
|
|
16
|
+
};
|
|
17
|
+
const stateBodyTemplate = (item) => {
|
|
18
|
+
if (item.isFinalState) {
|
|
19
|
+
if (item.publishStatus === "")
|
|
20
|
+
return "Published";
|
|
21
|
+
return item.publishStatus;
|
|
22
|
+
}
|
|
23
|
+
else
|
|
24
|
+
return item.workflowState;
|
|
25
|
+
};
|
|
26
|
+
const actionsBodyTemplate = (item) => {
|
|
27
|
+
var _a;
|
|
28
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-workbox", children: [item.isFinalState && item.publishStatus, !item.isFinalState &&
|
|
29
|
+
((_a = item.commands) === null || _a === void 0 ? void 0 : _a.map((action) => {
|
|
30
|
+
return ((0, jsx_runtime_1.jsx)(button_1.Button, { label: action.name, className: "a-text-xs a-p-1", onClick: () => executeWorkflowCommand(item.item, action.id), size: "small" }, action.id));
|
|
31
|
+
}))] }));
|
|
32
|
+
};
|
|
33
|
+
let items = workbox.items;
|
|
34
|
+
items = items.sort((a, b) => {
|
|
35
|
+
if (a.publishStatus.length > 0 && b.publishStatus.length > 0)
|
|
36
|
+
return 0;
|
|
37
|
+
return a.publishStatus.length > 0 || !a.isPublishable ? -1 : 1;
|
|
38
|
+
});
|
|
39
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "a-p-3 a-bg-gray-50 a-text-gray-600 a-text-sm a-border-b-2", children: "Workbox" }), (0, jsx_runtime_1.jsx)("div", { className: "a-overflow-hidden a-relative a-flex-1 a-workbox", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute a-overflow-y-auto", children: (0, jsx_runtime_1.jsxs)(datatable_1.DataTable, { value: items, className: "a-text-xs", children: [(0, jsx_runtime_1.jsx)(column_1.Column, { body: nameBodyTemplate, header: "Item" }), (0, jsx_runtime_1.jsx)(column_1.Column, { body: stateBodyTemplate, header: "State" }), (0, jsx_runtime_1.jsx)(column_1.Column, { body: actionsBodyTemplate, header: "Actions" })] }) }) })] }));
|
|
40
|
+
}
|
|
41
|
+
exports.default = Workbox;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getComponentCommands = exports.getCommands = void 0;
|
|
7
|
+
const confirmdialog_1 = require("primereact/confirmdialog");
|
|
8
|
+
const react_uuid_1 = __importDefault(require("react-uuid"));
|
|
9
|
+
const isPlaceholder = (x) => x.components !== undefined;
|
|
10
|
+
function getCommands(entities, editContext) {
|
|
11
|
+
const commands = [
|
|
12
|
+
getDeleteCommand(entities.filter((x) => !isPlaceholder(x)), editContext),
|
|
13
|
+
getSyncCommand(entities, editContext),
|
|
14
|
+
];
|
|
15
|
+
return commands;
|
|
16
|
+
}
|
|
17
|
+
exports.getCommands = getCommands;
|
|
18
|
+
function getComponentCommands(components, editContext) {
|
|
19
|
+
const commands = [
|
|
20
|
+
getDeleteCommand(components, editContext),
|
|
21
|
+
getSyncCommand(components, editContext),
|
|
22
|
+
];
|
|
23
|
+
return commands;
|
|
24
|
+
}
|
|
25
|
+
exports.getComponentCommands = getComponentCommands;
|
|
26
|
+
function getDeleteCommand(components, editContext) {
|
|
27
|
+
const applicableComponents = components.filter((c) => {
|
|
28
|
+
var _a, _b;
|
|
29
|
+
return (!isPlaceholder(c) && !c.hostingPageItem) ||
|
|
30
|
+
((_a = c.hostingPageItem) === null || _a === void 0 ? void 0 : _a.id) === ((_b = editContext.page) === null || _b === void 0 ? void 0 : _b.id);
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
name: "delete",
|
|
34
|
+
label: "Delete",
|
|
35
|
+
icon: "pi pi-fw pi-trash",
|
|
36
|
+
execute: () => deleteComponents(applicableComponents, editContext),
|
|
37
|
+
disabled: applicableComponents.length === 0 ||
|
|
38
|
+
applicableComponents.length !== components.length,
|
|
39
|
+
visibilityScopes: ["editFrame", "menu"],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function canSynchronize(placeholderData) {
|
|
43
|
+
if (placeholderData.canSynchronize)
|
|
44
|
+
return true;
|
|
45
|
+
placeholderData.components.forEach((c) => {
|
|
46
|
+
if (c.placeholders.find((x) => canSynchronize(x)))
|
|
47
|
+
return true;
|
|
48
|
+
});
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
function getSyncCommand(components, editContext) {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
const placeholders = [];
|
|
54
|
+
for (const component of components) {
|
|
55
|
+
if (isPlaceholder(component) && canSynchronize(component)) {
|
|
56
|
+
placeholders.push({
|
|
57
|
+
item: component.parentComponent
|
|
58
|
+
? getItemDescriptor(component.parentComponent, editContext)
|
|
59
|
+
: undefined,
|
|
60
|
+
name: component.name,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
if ((_a = component.placeholders) === null || _a === void 0 ? void 0 : _a.find((x) => canSynchronize(x))) {
|
|
65
|
+
placeholders.push({
|
|
66
|
+
item: getItemDescriptor(component, editContext),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const canSync = placeholders.length > 0 ||
|
|
72
|
+
(components.length === 0 &&
|
|
73
|
+
((_b = editContext.page) === null || _b === void 0 ? void 0 : _b.placeholders.find((x) => canSynchronize(x))));
|
|
74
|
+
return {
|
|
75
|
+
name: "synchronize",
|
|
76
|
+
label: "Synchronize",
|
|
77
|
+
icon: "pi pi-fw pi-sync",
|
|
78
|
+
disabled: !canSync,
|
|
79
|
+
visibilityScopes: ["menu", "editFrame"],
|
|
80
|
+
execute: () => {
|
|
81
|
+
const op = {
|
|
82
|
+
type: "synchronize-components",
|
|
83
|
+
date: new Date(),
|
|
84
|
+
delete: false,
|
|
85
|
+
id: (0, react_uuid_1.default)(),
|
|
86
|
+
placeholders: placeholders,
|
|
87
|
+
pageItem: getPageItemDescriptor(editContext),
|
|
88
|
+
};
|
|
89
|
+
editContext.executeEditOperation(op);
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function getItemDescriptors(components, editContext) {
|
|
94
|
+
const items = components
|
|
95
|
+
.map((c) => getItemDescriptor(c, editContext))
|
|
96
|
+
.flatMap((f) => (f ? [f] : []));
|
|
97
|
+
return items;
|
|
98
|
+
}
|
|
99
|
+
function deleteComponents(components, editContext) {
|
|
100
|
+
const items = getItemDescriptors(components, editContext);
|
|
101
|
+
if (!items.length)
|
|
102
|
+
return;
|
|
103
|
+
(0, confirmdialog_1.confirmDialog)({
|
|
104
|
+
message: (items.length > 1
|
|
105
|
+
? "Are you sure you want to remove these components? "
|
|
106
|
+
: "Are you sure you want to remove this component? ") +
|
|
107
|
+
items.map((x) => x.name).join(", "),
|
|
108
|
+
header: items.length > 1 ? "Remove components" : "Remove component",
|
|
109
|
+
icon: "pi pi-exclamation-triangle",
|
|
110
|
+
accept: () => {
|
|
111
|
+
const op = {
|
|
112
|
+
type: "remove-component",
|
|
113
|
+
date: new Date(),
|
|
114
|
+
id: (0, react_uuid_1.default)(),
|
|
115
|
+
components: items,
|
|
116
|
+
pageItem: getPageItemDescriptor(editContext),
|
|
117
|
+
};
|
|
118
|
+
editContext.executeEditOperation(op);
|
|
119
|
+
components.forEach((c) => {
|
|
120
|
+
if (c)
|
|
121
|
+
c.isRemoved = true;
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function getItemDescriptor(component, editContext) {
|
|
127
|
+
var _a, _b;
|
|
128
|
+
return {
|
|
129
|
+
id: component.id,
|
|
130
|
+
language: ((_a = component.hostingPageItem) === null || _a === void 0 ? void 0 : _a.language) || editContext.page.language,
|
|
131
|
+
version: ((_b = component.hostingPageItem) === null || _b === void 0 ? void 0 : _b.version) || editContext.page.version,
|
|
132
|
+
name: component.name,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function getPageItemDescriptor(editContext) {
|
|
136
|
+
return {
|
|
137
|
+
id: editContext.page.id,
|
|
138
|
+
language: editContext.page.language,
|
|
139
|
+
version: editContext.page.version,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
@@ -12,14 +12,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.getChildren = void 0;
|
|
15
|
+
exports.getItem = exports.getChildren = void 0;
|
|
16
16
|
const universal_cookie_1 = __importDefault(require("universal-cookie"));
|
|
17
|
-
function getChildren(itemId, sessionId, templateIds = []) {
|
|
17
|
+
function getChildren(itemId, sessionId, templateIds = [], includeEmbeddedItems) {
|
|
18
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
19
19
|
let url = "/alpaca/headless/editor/children?itemId=" +
|
|
20
20
|
itemId +
|
|
21
21
|
"&sessionId=" +
|
|
22
|
-
sessionId
|
|
22
|
+
sessionId +
|
|
23
|
+
"&includeEmbeddedItems=" +
|
|
24
|
+
includeEmbeddedItems;
|
|
23
25
|
url = templateIds.reduce((u, t) => u + "&templateIds=" + t, url);
|
|
24
26
|
const response = yield fetch(url, {
|
|
25
27
|
method: "GET",
|
|
@@ -36,3 +38,43 @@ function getChildren(itemId, sessionId, templateIds = []) {
|
|
|
36
38
|
});
|
|
37
39
|
}
|
|
38
40
|
exports.getChildren = getChildren;
|
|
41
|
+
function getItem(page, item, sessionId) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
const query = `query { item(id: "${item.id}", language: "${item.language}", version: ${item.version}) { id name version language path template {id name} ` +
|
|
44
|
+
" fields { " +
|
|
45
|
+
" jsonValue} } } ";
|
|
46
|
+
const response = yield fetch("/alpaca/headless/graphql?sessionId=" + sessionId, {
|
|
47
|
+
method: "POST",
|
|
48
|
+
body: JSON.stringify({
|
|
49
|
+
itemId: page.id,
|
|
50
|
+
language: page.language,
|
|
51
|
+
version: page.version,
|
|
52
|
+
query: query,
|
|
53
|
+
isEditing: true,
|
|
54
|
+
}),
|
|
55
|
+
credentials: "include",
|
|
56
|
+
headers: {
|
|
57
|
+
"Content-Type": "application/json",
|
|
58
|
+
Cookie: new universal_cookie_1.default().getAll(),
|
|
59
|
+
},
|
|
60
|
+
next: {
|
|
61
|
+
revalidate: 0,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
const json = yield response.json();
|
|
65
|
+
if (json.data.item) {
|
|
66
|
+
const itemData = json.data.item;
|
|
67
|
+
return {
|
|
68
|
+
id: itemData.id,
|
|
69
|
+
name: itemData.name,
|
|
70
|
+
language: itemData.language,
|
|
71
|
+
version: itemData.version,
|
|
72
|
+
path: itemData.path,
|
|
73
|
+
fields: itemData.fields.map((x) => x.jsonValue),
|
|
74
|
+
templateId: itemData.template.id,
|
|
75
|
+
templateName: itemData.template.name,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
exports.getItem = getItem;
|
|
@@ -24,12 +24,17 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
return result;
|
|
25
25
|
};
|
|
26
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.useEditContext = exports.EditContextProvider = void 0;
|
|
27
|
+
exports.EditFilterChildrenContextProvider = exports.useEditFilterChildrenContext = exports.EditFrameContextProvider = exports.useEditFrameContext = exports.useEditContext = exports.EditContextProvider = void 0;
|
|
28
28
|
const react_1 = __importStar(require("react"));
|
|
29
29
|
const EditContext = react_1.default.createContext(undefined);
|
|
30
30
|
exports.EditContextProvider = EditContext.Provider;
|
|
31
31
|
const useEditContext = () => (0, react_1.useContext)(EditContext);
|
|
32
32
|
exports.useEditContext = useEditContext;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
const EditFrameContext = react_1.default.createContext(undefined);
|
|
34
|
+
const useEditFrameContext = () => (0, react_1.useContext)(EditFrameContext);
|
|
35
|
+
exports.useEditFrameContext = useEditFrameContext;
|
|
36
|
+
exports.EditFrameContextProvider = EditFrameContext.Provider;
|
|
37
|
+
const EditFilterChildrenContext = react_1.default.createContext(undefined);
|
|
38
|
+
const useEditFilterChildrenContext = () => (0, react_1.useContext)(EditFilterChildrenContext);
|
|
39
|
+
exports.useEditFilterChildrenContext = useEditFilterChildrenContext;
|
|
40
|
+
exports.EditFilterChildrenContextProvider = EditFilterChildrenContext.Provider;
|