@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
|
@@ -31,7 +31,7 @@ exports.EditorClientHost = void 0;
|
|
|
31
31
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
32
32
|
const dynamic_1 = __importDefault(require("next/dynamic"));
|
|
33
33
|
const EditorClient = (0, dynamic_1.default)(() => Promise.resolve().then(() => __importStar(require("./EditorClient"))).then((dnd) => dnd.EditorClient), { ssr: false });
|
|
34
|
-
function EditorClientHost({ content, dictionaryObject, children, edit, }) {
|
|
35
|
-
return ((0, jsx_runtime_1.jsx)(EditorClient, {
|
|
34
|
+
function EditorClientHost({ content, dictionaryObject, children, site, edit, }) {
|
|
35
|
+
return ((0, jsx_runtime_1.jsx)(EditorClient, { page: content, site: site, dictionaryObject: dictionaryObject, edit: edit, children: children }));
|
|
36
36
|
}
|
|
37
37
|
exports.EditorClientHost = EditorClientHost;
|
|
@@ -1,21 +1,35 @@
|
|
|
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.FieldList = void 0;
|
|
5
8
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
9
|
const __1 = require("..");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const RichTextEditor_1 = require("./fieldTypes/RichTextEditor");
|
|
10
|
+
const react_1 = require("react");
|
|
11
|
+
const FieldListField_1 = __importDefault(require("./FieldListField"));
|
|
12
|
+
const Section_1 = require("./ui/Section");
|
|
11
13
|
function FieldList({ fields }) {
|
|
12
14
|
const editContext = (0, __1.useEditContext)();
|
|
15
|
+
const [liveFields, setLiveFields] = (0, react_1.useState)();
|
|
13
16
|
if (!editContext)
|
|
14
|
-
|
|
17
|
+
return;
|
|
18
|
+
if (!fields)
|
|
19
|
+
return;
|
|
20
|
+
const fieldsArray = Array.isArray(fields)
|
|
21
|
+
? fields
|
|
22
|
+
: Object.values(fields);
|
|
23
|
+
(0, react_1.useEffect)(() => {
|
|
24
|
+
if (!editContext)
|
|
15
25
|
return;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
26
|
+
setLiveFields(fieldsArray.map((x) => x.type === "rich text" || x.type === "text"
|
|
27
|
+
? editContext.getLiveField(x)
|
|
28
|
+
: x));
|
|
29
|
+
}, [fields]);
|
|
30
|
+
if (!liveFields)
|
|
31
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
|
|
32
|
+
const sections = liveFields.reduce((acc, value) => {
|
|
19
33
|
// Group initialization
|
|
20
34
|
if (!acc[value.section || "Default"]) {
|
|
21
35
|
acc[value.section || "Default"] = [];
|
|
@@ -25,40 +39,13 @@ function FieldList({ fields }) {
|
|
|
25
39
|
return acc;
|
|
26
40
|
}, {});
|
|
27
41
|
const sectionList = Object.values(sections);
|
|
28
|
-
sectionList.sort((a, b) =>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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)));
|
|
36
|
-
}
|
|
37
|
-
function getFieldEditor(field) {
|
|
38
|
-
switch (field.type) {
|
|
39
|
-
case "checkbox":
|
|
40
|
-
return checkbox(field);
|
|
41
|
-
case "picture":
|
|
42
|
-
return picture(field);
|
|
43
|
-
case "image":
|
|
44
|
-
return image(field);
|
|
45
|
-
case "rich text":
|
|
46
|
-
return (0, jsx_runtime_1.jsx)(RichTextEditor_1.RichTextEditor, { field: field });
|
|
47
|
-
default:
|
|
48
|
-
return (0, jsx_runtime_1.jsx)(SingleLineText_1.SingleLineText, { field: field });
|
|
42
|
+
sectionList.sort((a, b) => a[0].sectionSortOrder - b[0].sectionSortOrder);
|
|
43
|
+
function getSectionFields(fields) {
|
|
44
|
+
fields.sort((a, b) => a.sortOrder - b.sortOrder);
|
|
45
|
+
return fields.map((field) => ((0, jsx_runtime_1.jsx)(FieldListField_1.default, { field: field }, field.id)));
|
|
49
46
|
}
|
|
47
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "a-bg-gray-100 a-h-fill-available", children: sectionList
|
|
48
|
+
.map((x) => x[0].section)
|
|
49
|
+
.map((section) => ((0, jsx_runtime_1.jsx)(Section_1.Section, { title: section, children: getSectionFields(sections[section]) }, section))) }));
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
return (0, jsx_runtime_1.jsx)(checkbox_1.Checkbox, { checked: field.value === "1" });
|
|
53
|
-
}
|
|
54
|
-
// function singleLineText(field: Field) {
|
|
55
|
-
// return <InputText value={field.value as string} />;
|
|
56
|
-
// }
|
|
57
|
-
function picture(field) {
|
|
58
|
-
var _a, _b;
|
|
59
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("label", { className: "alpaca-minor-label", children: "Alt" }), (0, jsx_runtime_1.jsx)(inputtext_1.InputText, { value: (_b = (_a = field.value) === null || _a === void 0 ? void 0 : _a.alt) !== null && _b !== void 0 ? _b : "" })] }));
|
|
60
|
-
}
|
|
61
|
-
function image(field) {
|
|
62
|
-
var _a, _b;
|
|
63
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("label", { className: "alpaca-minor-label", children: "Alt" }), (0, jsx_runtime_1.jsx)(inputtext_1.InputText, { value: (_b = (_a = field.value) === null || _a === void 0 ? void 0 : _a.altText) !== null && _b !== void 0 ? _b : "" })] }));
|
|
64
|
-
}
|
|
51
|
+
exports.FieldList = FieldList;
|
|
@@ -0,0 +1,75 @@
|
|
|
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 inputtext_1 = require("primereact/inputtext");
|
|
8
|
+
const __1 = require("..");
|
|
9
|
+
const CheckboxEditor_1 = require("./fieldTypes/CheckboxEditor");
|
|
10
|
+
const react_1 = require("react");
|
|
11
|
+
const RichTextEditor_1 = require("./fieldTypes/RichTextEditor");
|
|
12
|
+
const LinkFieldEditor_1 = require("./fieldTypes/LinkFieldEditor");
|
|
13
|
+
const PictureFieldEditor_1 = require("./fieldTypes/PictureFieldEditor");
|
|
14
|
+
const InternalLinkFieldEditor_1 = require("./fieldTypes/InternalLinkFieldEditor");
|
|
15
|
+
const TreeListEditor_1 = __importDefault(require("./fieldTypes/TreeListEditor"));
|
|
16
|
+
const SingleLineText_1 = require("./fieldTypes/SingleLineText");
|
|
17
|
+
const MultiLineText_1 = require("./fieldTypes/MultiLineText");
|
|
18
|
+
function FieldListField({ field }) {
|
|
19
|
+
var _a;
|
|
20
|
+
const editContext = (0, __1.useEditContext)();
|
|
21
|
+
if (!editContext)
|
|
22
|
+
return;
|
|
23
|
+
const ref = (0, react_1.useRef)(null);
|
|
24
|
+
const isFocusedField = ((_a = editContext === null || editContext === void 0 ? void 0 : editContext.focusedField) === null || _a === void 0 ? void 0 : _a.id) === field.id &&
|
|
25
|
+
editContext.focusedField.item.id === field.item.id &&
|
|
26
|
+
editContext.focusedField.item.language === field.item.language;
|
|
27
|
+
(0, react_1.useEffect)(() => {
|
|
28
|
+
if (ref.current && isFocusedField) {
|
|
29
|
+
ref.current.scrollIntoView({
|
|
30
|
+
behavior: "smooth",
|
|
31
|
+
block: "center",
|
|
32
|
+
inline: "center",
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}, [editContext.focusedField]);
|
|
36
|
+
const liveField = editContext.getLiveField(field);
|
|
37
|
+
return ((0, jsx_runtime_1.jsxs)("div", { ref: ref, className: isFocusedField ? "a-focused-field" : "", children: [(0, jsx_runtime_1.jsx)("label", { className: "a-font-bold a-block a-mt-5 a-mb-1 a-text-sm", children: field.name }), (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-gap-2", children: [!field.isFallback && liveField.rawValue !== null ? ((0, jsx_runtime_1.jsxs)("button", { className: "a-text-xs a-p-0 ", onClick: () => {
|
|
38
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.editField({ field: field, rawValue: null });
|
|
39
|
+
}, children: ["Reset", " "] })) : ((0, jsx_runtime_1.jsx)("button", { className: "a-text-xs a-p-0", children: "Fallback" })), (0, jsx_runtime_1.jsx)("button", { className: "a-text-xs a-p-0", onClick: () => {
|
|
40
|
+
console.log(liveField);
|
|
41
|
+
}, children: "Debug" })] }), (0, jsx_runtime_1.jsx)("div", { className: "a-text-xs a-p-0 a-mt-1", children: getFieldEditor(liveField) })] }, field.id +
|
|
42
|
+
"_" +
|
|
43
|
+
field.item.id +
|
|
44
|
+
"_" +
|
|
45
|
+
field.item.language +
|
|
46
|
+
"_" +
|
|
47
|
+
field.item.version));
|
|
48
|
+
}
|
|
49
|
+
exports.default = FieldListField;
|
|
50
|
+
function getFieldEditor(field) {
|
|
51
|
+
switch (field.type) {
|
|
52
|
+
case "multi-line text":
|
|
53
|
+
return (0, jsx_runtime_1.jsx)(MultiLineText_1.MultiLineText, { field: field });
|
|
54
|
+
case "checkbox":
|
|
55
|
+
return (0, jsx_runtime_1.jsx)(CheckboxEditor_1.CheckboxEditor, { field: field });
|
|
56
|
+
case "image":
|
|
57
|
+
return image(field);
|
|
58
|
+
case "rich text":
|
|
59
|
+
return (0, jsx_runtime_1.jsx)(RichTextEditor_1.RichTextEditor, { field: field });
|
|
60
|
+
case "general link":
|
|
61
|
+
return (0, jsx_runtime_1.jsx)(LinkFieldEditor_1.LinkFieldEditor, { field: field });
|
|
62
|
+
case "picture":
|
|
63
|
+
return (0, jsx_runtime_1.jsx)(PictureFieldEditor_1.PictureFieldEditor, { field: field });
|
|
64
|
+
case "enhanced internal link":
|
|
65
|
+
return (0, jsx_runtime_1.jsx)(InternalLinkFieldEditor_1.InternalLinkFieldEditor, { field: field });
|
|
66
|
+
case "enhanced treelist":
|
|
67
|
+
return (0, jsx_runtime_1.jsx)(TreeListEditor_1.default, { field: field });
|
|
68
|
+
default:
|
|
69
|
+
return (0, jsx_runtime_1.jsx)(SingleLineText_1.SingleLineText, { field: field });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function image(field) {
|
|
73
|
+
var _a, _b;
|
|
74
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("label", { className: "alpaca-minor-label", children: "Alt" }), (0, jsx_runtime_1.jsx)(inputtext_1.InputText, { value: (_b = (_a = field.value) === null || _a === void 0 ? void 0 : _a.altText) !== null && _b !== void 0 ? _b : "" })] }));
|
|
75
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
function FloatingToolbar({ children, onPin, height, width, }) {
|
|
6
|
+
const [position, setPosition] = (0, react_1.useState)({ x: 0, y: 95 });
|
|
7
|
+
const [size, setSize] = (0, react_1.useState)({ width: 400, height: 70 });
|
|
8
|
+
const [dragging, setDragging] = (0, react_1.useState)(false);
|
|
9
|
+
const [resizing, setResizing] = (0, react_1.useState)(false);
|
|
10
|
+
const [offset, setOffset] = (0, react_1.useState)({ x: 0, y: 0 });
|
|
11
|
+
const [hidden, setHidden] = (0, react_1.useState)(false);
|
|
12
|
+
(0, react_1.useEffect)(() => {
|
|
13
|
+
console.log("WIDTH: ", width, "Height: ", height);
|
|
14
|
+
setSize({ width: width || 400, height: height || 70 });
|
|
15
|
+
}, []);
|
|
16
|
+
const handleMouseDown = (0, react_1.useCallback)((e) => {
|
|
17
|
+
// Start dragging and calculate the offset from the mouse to the sidebar top-left corner
|
|
18
|
+
setDragging(true);
|
|
19
|
+
setOffset({
|
|
20
|
+
x: e.clientX - position.x,
|
|
21
|
+
y: e.clientY - position.y,
|
|
22
|
+
});
|
|
23
|
+
}, [position]);
|
|
24
|
+
const handleMouseMove = (0, react_1.useCallback)((e) => {
|
|
25
|
+
if (dragging) {
|
|
26
|
+
// Update the position state based on mouse movement, adjusted by the initial offset
|
|
27
|
+
setPosition({
|
|
28
|
+
x: e.clientX - offset.x,
|
|
29
|
+
y: e.clientY - offset.y,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}, [dragging, offset]);
|
|
33
|
+
const handleMouseUp = (0, react_1.useCallback)(() => {
|
|
34
|
+
// Stop dragging
|
|
35
|
+
setDragging(false);
|
|
36
|
+
}, []);
|
|
37
|
+
const handleResizeMouseDown = (0, react_1.useCallback)((e) => {
|
|
38
|
+
e.preventDefault();
|
|
39
|
+
setResizing(true);
|
|
40
|
+
setOffset({
|
|
41
|
+
x: e.clientX,
|
|
42
|
+
y: e.clientY,
|
|
43
|
+
});
|
|
44
|
+
}, []);
|
|
45
|
+
const handleResizeMouseMove = (0, react_1.useCallback)((e) => {
|
|
46
|
+
if (resizing) {
|
|
47
|
+
const newWidth = size.width + (e.clientX - offset.x);
|
|
48
|
+
const newHeight = size.height + (e.clientY - offset.y);
|
|
49
|
+
setSize({
|
|
50
|
+
width: newWidth > 200 ? newWidth : 200, // Minimum width
|
|
51
|
+
height: newHeight > 100 ? newHeight : 100, // Minimum height
|
|
52
|
+
});
|
|
53
|
+
setOffset({
|
|
54
|
+
x: e.clientX,
|
|
55
|
+
y: e.clientY,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}, [resizing, offset, size]);
|
|
59
|
+
const handleResizeMouseUp = (0, react_1.useCallback)(() => {
|
|
60
|
+
setResizing(false);
|
|
61
|
+
}, []);
|
|
62
|
+
(0, react_1.useEffect)(() => {
|
|
63
|
+
if (resizing) {
|
|
64
|
+
document.addEventListener("mousemove", handleResizeMouseMove);
|
|
65
|
+
document.addEventListener("mouseup", handleResizeMouseUp);
|
|
66
|
+
}
|
|
67
|
+
return () => {
|
|
68
|
+
document.removeEventListener("mousemove", handleResizeMouseMove);
|
|
69
|
+
document.removeEventListener("mouseup", handleResizeMouseUp);
|
|
70
|
+
};
|
|
71
|
+
}, [resizing, handleResizeMouseMove, handleResizeMouseUp]);
|
|
72
|
+
// Add event listeners to the document when the sidebar is being dragged
|
|
73
|
+
(0, react_1.useEffect)(() => {
|
|
74
|
+
if (dragging) {
|
|
75
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
76
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
77
|
+
}
|
|
78
|
+
// Cleanup the document event listeners when the component unmounts or dragging stops
|
|
79
|
+
return () => {
|
|
80
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
81
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
82
|
+
};
|
|
83
|
+
}, [dragging, handleMouseMove, handleMouseUp]);
|
|
84
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-border a-border-gray-200 a-drop-shadow a-z-10 a-flex a-flex-col", onMouseMove: handleMouseMove, onMouseUp: handleMouseUp, style: {
|
|
85
|
+
left: `${position.x}px`,
|
|
86
|
+
top: `${position.y}px`,
|
|
87
|
+
position: "absolute", // Use 'fixed' or 'absolute' depending on your layout needs
|
|
88
|
+
height: `${hidden ? 30 : size.height}px`,
|
|
89
|
+
width: `${size.width}px`,
|
|
90
|
+
}, children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-bg-gray-100 a-w-full a-flex a-justify-between a-items-between a-p-2 a-text-sm", style: { cursor: "move", userSelect: "none" }, onMouseDown: handleMouseDown, children: ["Toolbar", (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-gap-2", children: [hidden && ((0, jsx_runtime_1.jsx)("div", { className: "a-border-2 a-border-gray-800 a-w-4 a-h-4 a-cusor-pointer", onClick: () => setHidden(false) })), !hidden && ((0, jsx_runtime_1.jsx)("div", { className: "a-border-b-2 a-border-gray-800 a-w-4 a-h-4 a-cusor-pointer", onClick: () => setHidden(true) })), onPin && ((0, jsx_runtime_1.jsx)("i", { className: "pi pi-arrow-down-left a-cursor-pointer", onClick: onPin }))] })] }), (0, jsx_runtime_1.jsx)("div", { className: "a-flex-1", children: !hidden && children }), (0, jsx_runtime_1.jsx)("div", { className: "a-h-4 a-bg-gray-100" }), (0, jsx_runtime_1.jsx)("div", { className: "a-cursor-nwse-resize a-w-4 a-h-4 a-absolute -a-bottom-1 -a-right-2 a-text-gray-500", onMouseDown: handleResizeMouseDown, children: (0, jsx_runtime_1.jsx)("i", { className: "pi pi-sort-down -a-rotate-45 a-w-4 a-h-4" }) })] }));
|
|
91
|
+
}
|
|
92
|
+
exports.default = FloatingToolbar;
|
|
@@ -56,7 +56,7 @@ function GraphQL({ component }) {
|
|
|
56
56
|
const fieldsjsonValues = findFields(component.graphql);
|
|
57
57
|
function renderItem(fields) {
|
|
58
58
|
const first = fields[0];
|
|
59
|
-
return ((0, jsx_runtime_1.jsxs)("div", { children: ["Item: ", first.path, " ", first.id, " ", first.language, " ", first.version, (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: fields })] }, first.path + first.id + first.language + first.version));
|
|
59
|
+
return ((0, jsx_runtime_1.jsxs)("div", { children: ["Item: ", first.path, " ", first.id, " ", first.item.language, " ", first.item.version, (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: fields })] }, first.path + first.id + first.item.language + first.item.version));
|
|
60
60
|
}
|
|
61
61
|
function refresh() {
|
|
62
62
|
var _a, _b;
|
|
@@ -70,9 +70,7 @@ function GraphQL({ component }) {
|
|
|
70
70
|
}
|
|
71
71
|
const field = {
|
|
72
72
|
name: "_GraphQL",
|
|
73
|
-
|
|
74
|
-
language: language,
|
|
75
|
-
version: version,
|
|
73
|
+
item: { id: component === null || component === void 0 ? void 0 : component.id, language: language, version: version },
|
|
76
74
|
path: "graphql",
|
|
77
75
|
id: "3622F861-ECA9-45D7-8DA7-2CDA35235002",
|
|
78
76
|
value: query,
|
|
@@ -80,10 +78,10 @@ function GraphQL({ component }) {
|
|
|
80
78
|
};
|
|
81
79
|
const prettyQuery = (0, graphql_formatter_1.format)(query);
|
|
82
80
|
setQuery(prettyQuery);
|
|
83
|
-
editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, prettyQuery
|
|
81
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.editField({ field, value: prettyQuery });
|
|
84
82
|
setShowSpinner(true);
|
|
85
83
|
editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
|
|
86
84
|
}
|
|
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: "
|
|
85
|
+
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: "a-relative", 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 }) }) })] }) })] }));
|
|
88
86
|
}
|
|
89
87
|
exports.GraphQL = GraphQL;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const FieldList_1 = require("./FieldList");
|
|
5
|
+
const ItemInfo_1 = require("./ItemInfo");
|
|
6
|
+
function ItemEditor({ item }) {
|
|
7
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ItemInfo_1.ItemInfo, { item: item }), (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: item.fields })] }));
|
|
8
|
+
}
|
|
9
|
+
exports.default = ItemEditor;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ItemInfo = void 0;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const Section_1 = require("./ui/Section");
|
|
7
|
+
function ItemInfo({ item }) {
|
|
8
|
+
var _a;
|
|
9
|
+
if (!(item === null || item === void 0 ? void 0 : item.fields))
|
|
10
|
+
return;
|
|
11
|
+
function formatRow(label, value) {
|
|
12
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "a-font-bold", children: label }), (0, jsx_runtime_1.jsx)("div", { children: value })] }));
|
|
13
|
+
}
|
|
14
|
+
return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h2", { className: "a-py-5 a-px-3 a-text-xl a-font-bold a-my-2", children: item.name }), (0, jsx_runtime_1.jsx)(Section_1.Section, { title: "Info", children: (0, jsx_runtime_1.jsxs)("div", { className: "a-grid a-grid-cols-[min-content_1fr] a-gap-3 a-text-xs a-p-2 a-bg-gray-100", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-font-bold", children: "ID:" }), (0, jsx_runtime_1.jsx)("div", { children: item.id }), (0, jsx_runtime_1.jsx)("div", { className: "a-font-bold", children: "Path:" }), (0, jsx_runtime_1.jsx)("div", { children: item.path }), (0, jsx_runtime_1.jsx)("div", { className: "a-font-bold", children: "Language:" }), (0, jsx_runtime_1.jsx)("div", { children: item.language }), (0, jsx_runtime_1.jsx)("div", { className: "a-font-bold", children: "Version:" }), (0, jsx_runtime_1.jsx)("div", { children: item.version }), formatRow("Template", item.templateName + " (" + item.templateId + ")"), item.masterLanguages &&
|
|
15
|
+
formatRow("Master languages", item.masterLanguages.join(", ")), item.translations && ((0, jsx_runtime_1.jsxs)("div", { className: "a-text-xs", children: ["Languages: ", (_a = item.translations) === null || _a === void 0 ? void 0 : _a.join(", ")] }))] }) })] }));
|
|
16
|
+
}
|
|
17
|
+
exports.ItemInfo = ItemInfo;
|
|
@@ -0,0 +1,37 @@
|
|
|
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 dialog_1 = require("primereact/dialog");
|
|
8
|
+
const inputtext_1 = require("primereact/inputtext");
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const DialogButtons_1 = __importDefault(require("./DialogButtons"));
|
|
11
|
+
const button_1 = require("primereact/button");
|
|
12
|
+
const ItemNameDialog = (0, react_1.forwardRef)((_props, ref) => {
|
|
13
|
+
const [visible, setVisible] = (0, react_1.useState)(false);
|
|
14
|
+
const [props, setProps] = (0, react_1.useState)();
|
|
15
|
+
const [name, setName] = (0, react_1.useState)("");
|
|
16
|
+
(0, react_1.useEffect)(() => {
|
|
17
|
+
setName((props === null || props === void 0 ? void 0 : props.name) || "");
|
|
18
|
+
}, [props]);
|
|
19
|
+
(0, react_1.useImperativeHandle)(ref, () => ({
|
|
20
|
+
show: (props) => {
|
|
21
|
+
setVisible(true);
|
|
22
|
+
setProps(props);
|
|
23
|
+
},
|
|
24
|
+
}));
|
|
25
|
+
const isValidName = name.trim().length > 0;
|
|
26
|
+
const handleOk = () => {
|
|
27
|
+
setVisible(false);
|
|
28
|
+
props === null || props === void 0 ? void 0 : props.accept(name);
|
|
29
|
+
};
|
|
30
|
+
return ((0, jsx_runtime_1.jsxs)(dialog_1.Dialog, { visible: visible, onHide: () => {
|
|
31
|
+
setVisible(false);
|
|
32
|
+
}, header: "Choose item name", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-pt-3", children: (0, jsx_runtime_1.jsx)(inputtext_1.InputText, { autoFocus: true, value: name, onChange: (e) => setName(e.target.value), onKeyDown: (ev) => {
|
|
33
|
+
if (ev.key === "Enter" && isValidName)
|
|
34
|
+
handleOk();
|
|
35
|
+
} }) }), (0, jsx_runtime_1.jsxs)(DialogButtons_1.default, { children: [(0, jsx_runtime_1.jsx)(button_1.Button, { onClick: handleOk, label: "Ok", disabled: !isValidName }), (0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => setVisible(false), label: "Cancel" })] })] }));
|
|
36
|
+
});
|
|
37
|
+
exports.default = ItemNameDialog;
|
|
@@ -16,6 +16,6 @@ function LanguageSelector({ page, onLanguageSelected, }) {
|
|
|
16
16
|
const countryOptionTemplate = (option) => {
|
|
17
17
|
return ((0, jsx_runtime_1.jsxs)("div", { children: [option.name, " (", option.versions, ")"] }));
|
|
18
18
|
};
|
|
19
|
-
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { value: page.language, onChange: (e) => onLanguageSelected(e.value), options: page.languages, optionValue: "languageCode", optionLabel: "name", placeholder: "Select a language", filter: true, valueTemplate: selectedCountryTemplate, itemTemplate: countryOptionTemplate }) }));
|
|
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.language, onChange: (e) => onLanguageSelected(e.value), options: page.languages, optionValue: "languageCode", optionLabel: "name", placeholder: "Select a language", filter: true, valueTemplate: selectedCountryTemplate, itemTemplate: countryOptionTemplate }) }));
|
|
20
20
|
}
|
|
21
21
|
exports.LanguageSelector = LanguageSelector;
|
|
@@ -0,0 +1,67 @@
|
|
|
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.LinkEditorDialog = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const dialog_1 = require("primereact/dialog");
|
|
9
|
+
const tabview_1 = require("primereact/tabview");
|
|
10
|
+
const ContentTree_1 = __importDefault(require("./ContentTree"));
|
|
11
|
+
const inputtext_1 = require("primereact/inputtext");
|
|
12
|
+
const react_1 = require("react");
|
|
13
|
+
const dropdown_1 = require("primereact/dropdown");
|
|
14
|
+
const divider_1 = require("primereact/divider");
|
|
15
|
+
const button_1 = require("primereact/button");
|
|
16
|
+
function LinkEditorDialog({ linkValue, onCancel, onOk, }) {
|
|
17
|
+
const [url, setUrl] = (0, react_1.useState)();
|
|
18
|
+
const [targetWindow, setTargetWindow] = (0, react_1.useState)();
|
|
19
|
+
const [customTarget, setCustomTarget] = (0, react_1.useState)();
|
|
20
|
+
const [queryString, setQueryString] = (0, react_1.useState)();
|
|
21
|
+
const [activeTabIndex, setActiveTabIndex] = (0, react_1.useState)();
|
|
22
|
+
const [selectedItemId, setSelectedItemId] = (0, react_1.useState)("");
|
|
23
|
+
(0, react_1.useEffect)(() => {
|
|
24
|
+
setUrl(linkValue.url);
|
|
25
|
+
setTargetWindow(linkValue.target);
|
|
26
|
+
if (linkValue.type == "external")
|
|
27
|
+
setActiveTabIndex(1);
|
|
28
|
+
else
|
|
29
|
+
setActiveTabIndex(0);
|
|
30
|
+
if (linkValue.target && linkValue.target != "_blank") {
|
|
31
|
+
setTargetWindow("custom");
|
|
32
|
+
setCustomTarget(linkValue.target);
|
|
33
|
+
}
|
|
34
|
+
if (linkValue.itemId)
|
|
35
|
+
setSelectedItemId(linkValue.itemId);
|
|
36
|
+
if (linkValue.queryString)
|
|
37
|
+
setQueryString(linkValue.queryString);
|
|
38
|
+
}, [linkValue]);
|
|
39
|
+
const targetWindows = [
|
|
40
|
+
{ name: "Active browser", code: "" },
|
|
41
|
+
{ name: "New browser", code: "_blank" },
|
|
42
|
+
{ name: "Custom", code: "custom" },
|
|
43
|
+
];
|
|
44
|
+
function getTargetWindow() {
|
|
45
|
+
if (targetWindow == "custom")
|
|
46
|
+
return customTarget;
|
|
47
|
+
return targetWindow;
|
|
48
|
+
}
|
|
49
|
+
return ((0, jsx_runtime_1.jsx)(dialog_1.Dialog, { style: { width: "50%", height: "50%" }, onHide: onCancel, header: "Select link target", visible: true, children: (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-flex-col a-h-full", children: [(0, jsx_runtime_1.jsxs)(tabview_1.TabView, { activeIndex: activeTabIndex, className: "a-flex-1 a-mb-3", pt: { panelContainer: { className: "a-h-full" } }, children: [(0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Internal", className: "a-relative a-h-[calc(100%-25px)] a-p-0 ", children: (0, jsx_runtime_1.jsx)("div", { className: "a-overflow-auto a-absolute a-inset-0", children: (0, jsx_runtime_1.jsx)(ContentTree_1.default, { className: "a-h-full", expandIdPath: linkValue.targetItemLongId ||
|
|
50
|
+
"0DE95AE4-41AB-4D01-9EB0-67441B7C2450", selectedItemIds: [selectedItemId], selectionMode: "single", rootItemId: "0DE95AE4-41AB-4D01-9EB0-67441B7C2450", onSelectionChange: (selection) => {
|
|
51
|
+
setSelectedItemId(selection.id);
|
|
52
|
+
} }) }) }), (0, jsx_runtime_1.jsxs)(tabview_1.TabPanel, { header: "External", children: [(0, jsx_runtime_1.jsx)("label", { className: "a-block", children: "Url:" }), (0, jsx_runtime_1.jsx)(inputtext_1.InputText, { value: url || "", onChange: (e) => {
|
|
53
|
+
setUrl(e.target.value);
|
|
54
|
+
}, className: "a-w-full" })] })] }), (0, jsx_runtime_1.jsx)(divider_1.Divider, {}), (0, jsx_runtime_1.jsx)("label", { children: "QueryString" }), (0, jsx_runtime_1.jsx)(inputtext_1.InputText, { value: queryString, onChange: (e) => setQueryString(e.target.value) }), (0, jsx_runtime_1.jsx)("label", { children: "Window" }), (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { options: targetWindows, optionLabel: "name", optionValue: "code", value: targetWindow, onChange: (e) => setTargetWindow(e.value) }), targetWindow === "custom" && ((0, jsx_runtime_1.jsxs)("div", { className: "a-m-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "a-block", children: "Custom:" }), (0, jsx_runtime_1.jsx)(inputtext_1.InputText, { value: customTarget || "", onChange: (e) => {
|
|
55
|
+
setCustomTarget(e.target.value);
|
|
56
|
+
} })] })), (0, jsx_runtime_1.jsx)(divider_1.Divider, {}), (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: () => {
|
|
57
|
+
onOk({
|
|
58
|
+
url,
|
|
59
|
+
target: getTargetWindow(),
|
|
60
|
+
customTarget: customTarget,
|
|
61
|
+
itemId: selectedItemId,
|
|
62
|
+
queryString: queryString,
|
|
63
|
+
type: activeTabIndex === 1 ? "external" : "internal",
|
|
64
|
+
});
|
|
65
|
+
}, children: "Select" }), (0, jsx_runtime_1.jsx)(button_1.Button, { onClick: onCancel, children: "Cancel" })] })] }) }));
|
|
66
|
+
}
|
|
67
|
+
exports.LinkEditorDialog = LinkEditorDialog;
|
|
@@ -0,0 +1,24 @@
|
|
|
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 splitter_1 = require("primereact/splitter");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const FloatingToolbar_1 = __importDefault(require("./FloatingToolbar"));
|
|
10
|
+
const react_2 = __importDefault(require("react"));
|
|
11
|
+
function MainLayout({ leftSidebar, content, rightSidebar, }) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
const panels = [];
|
|
14
|
+
const [floatingLeftSidebar, setFloatingLeftSidebar] = (0, react_1.useState)(false);
|
|
15
|
+
const leftSidebarRef = react_2.default.useRef(null);
|
|
16
|
+
if (leftSidebar && !floatingLeftSidebar)
|
|
17
|
+
panels.push((0, jsx_runtime_1.jsxs)(splitter_1.SplitterPanel, { size: 15, className: "a-overflow-hidden a-relative", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-absolute a-top-3 a-right-3 a-cursor-pointer", children: (0, jsx_runtime_1.jsx)("i", { className: "pi pi-arrow-up-right", onClick: () => setFloatingLeftSidebar(true) }) }), (0, jsx_runtime_1.jsx)("div", { className: "a-w-full a-h-full", ref: leftSidebarRef, children: leftSidebar })] }, "left"));
|
|
18
|
+
panels.push((0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 60, className: "alpaca-editor-content a-relative ", children: content }, "center"));
|
|
19
|
+
if (rightSidebar)
|
|
20
|
+
panels.push((0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 15, children: rightSidebar }, "right"));
|
|
21
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(splitter_1.Splitter, { className: "a-border-none", children: panels }, (leftSidebar ? "left" : "no-left") +
|
|
22
|
+
(rightSidebar ? "right" : "no-right")), leftSidebar && floatingLeftSidebar && ((0, jsx_runtime_1.jsx)(FloatingToolbar_1.default, { onPin: () => setFloatingLeftSidebar(false), height: (((_a = leftSidebarRef.current) === null || _a === void 0 ? void 0 : _a.clientHeight) || 300) - 70, width: ((_b = leftSidebarRef.current) === null || _b === void 0 ? void 0 : _b.clientWidth) || 300, children: leftSidebar }))] }));
|
|
23
|
+
}
|
|
24
|
+
exports.default = MainLayout;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
"use client";
|
|
2
3
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
4
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
5
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -21,15 +22,37 @@ const contentService_1 = require("./contentService");
|
|
|
21
22
|
const editContext_1 = require("./editContext");
|
|
22
23
|
const button_1 = require("primereact/button");
|
|
23
24
|
const dialog_1 = require("primereact/dialog");
|
|
24
|
-
const
|
|
25
|
+
const fileupload_1 = require("primereact/fileupload");
|
|
26
|
+
const utils_1 = require("primereact/utils");
|
|
27
|
+
const DialogButtons_1 = __importDefault(require("./DialogButtons"));
|
|
28
|
+
const MediaSelector = ({ visible, onHide, onMediaSelected, selectedIdPath, }) => {
|
|
25
29
|
const [selectedFolderId, setSelectedFolderId] = (0, react_1.useState)();
|
|
26
30
|
const [images, setImages] = (0, react_1.useState)();
|
|
27
31
|
const [selectedImage, setSelectedImage] = (0, react_1.useState)();
|
|
32
|
+
const [selectedImageId, setSelectedImageId] = (0, react_1.useState)();
|
|
28
33
|
const selection = selectedFolderId ? [selectedFolderId] : [];
|
|
29
34
|
const editContext = (0, editContext_1.useEditContext)();
|
|
30
35
|
(0, react_1.useEffect)(() => {
|
|
31
|
-
|
|
36
|
+
if (selectedIdPath) {
|
|
37
|
+
const path = selectedIdPath.split("/");
|
|
38
|
+
if (path.length > 1) {
|
|
39
|
+
setSelectedFolderId(path[path.length - 2]);
|
|
40
|
+
setSelectedImageId(path[path.length - 1].toLowerCase().substring(1, 37));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}, [selectedIdPath, visible]);
|
|
44
|
+
(0, react_1.useEffect)(() => {
|
|
45
|
+
loadThumbnailsAndSelectImage();
|
|
32
46
|
}, [selectedFolderId]);
|
|
47
|
+
function loadThumbnailsAndSelectImage() {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
setSelectedImage(undefined);
|
|
50
|
+
setImages([]);
|
|
51
|
+
const images = yield loadThumbnails(selectedFolderId);
|
|
52
|
+
if (selectedImageId)
|
|
53
|
+
setSelectedImage(images === null || images === void 0 ? void 0 : images.find((x) => x.id === selectedImageId));
|
|
54
|
+
});
|
|
55
|
+
}
|
|
33
56
|
function loadThumbnails(selectedFolderId) {
|
|
34
57
|
return __awaiter(this, void 0, void 0, function* () {
|
|
35
58
|
if (!selectedFolderId)
|
|
@@ -38,24 +61,32 @@ const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
|
|
|
38
61
|
const children = yield (0, contentService_1.getChildren)(selectedFolderId, editContext.sessionId, [
|
|
39
62
|
"C97BA923-8009-4858-BDD5-D8BE5FCCECF7",
|
|
40
63
|
"F1828A2C-7E5D-4BBD-98CA-320474871548",
|
|
41
|
-
]);
|
|
64
|
+
], false);
|
|
42
65
|
setImages(children);
|
|
66
|
+
return children;
|
|
43
67
|
}
|
|
44
68
|
});
|
|
45
69
|
}
|
|
46
|
-
return ((0, jsx_runtime_1.jsx)(dialog_1.Dialog, { style: { width: "80%", height: "80%" }, visible: visible, onHide: onHide, children: (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-flex-col a-h-full", children: [(0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { className: "a-flex-1 a-border-0", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 35, className: "alpaca-overflow-scroll", children: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 70, children: (0, jsx_runtime_1.jsx)(ContentTree_1.default, { rootItemId: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", selectionMode: "single", selectedItemIds: selection, templateIds: ["FE5DD826-48C6-436D-B87A-7C4210C7413B"], expandIdPath: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", onSelectionChange: (selection) => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
70
|
+
return ((0, jsx_runtime_1.jsx)(dialog_1.Dialog, { style: { width: "80%", height: "80%" }, visible: visible, onHide: onHide, header: "Select image", 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 a-p-2", 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: selectedIdPath !== null && selectedIdPath !== void 0 ? selectedIdPath : "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", onSelectionChange: (selection) => {
|
|
71
|
+
const selectedNode = selection;
|
|
72
|
+
if (selectedNode)
|
|
73
|
+
setSelectedFolderId(selectedNode.id);
|
|
74
|
+
else
|
|
75
|
+
setSelectedFolderId(undefined);
|
|
76
|
+
} }) }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "a-flex a-justify-center a-align-center", children: (0, jsx_runtime_1.jsx)("div", { className: "a-p-3 a-m-2 a-border a-w-full 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, className: "a-object-contain" }) }) })] }) }), (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 a-p-2", children: images === null || images === void 0 ? void 0 : images.map((t) => {
|
|
77
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.classNames)((selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.id) == t.id ? "a-shadow-md" : "", "a-w-24 a-flex a-flex-col a-justify-between hover:a-shadow-md a-cursor-pointer a-p-1"), onDoubleClick: () => {
|
|
53
78
|
onMediaSelected(t.id);
|
|
54
79
|
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)(
|
|
80
|
+
}, onClick: () => setSelectedImage(t), children: [(0, jsx_runtime_1.jsx)("div", { className: "a-h-24 a-w-24 a-flex a-justify-center a-items-center", 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 })] }, t.id));
|
|
81
|
+
}) }) })] }), (0, jsx_runtime_1.jsxs)(DialogButtons_1.default, { children: [(0, jsx_runtime_1.jsx)(fileupload_1.FileUpload, { mode: "basic",
|
|
82
|
+
// disabled={electedFolderId}
|
|
83
|
+
auto: true, chooseLabel: "Upload", accept: "image/*", url: "/alpaca/headless/editor/upload?folder=" + selection[0], onUpload: ({ xhr }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
+
const response = JSON.parse(xhr.responseText);
|
|
85
|
+
const thumbs = yield loadThumbnails(selectedFolderId);
|
|
86
|
+
setSelectedImage(thumbs === null || thumbs === void 0 ? void 0 : thumbs.find((x) => x.id === response.id));
|
|
87
|
+
}) }), (0, jsx_runtime_1.jsx)(button_1.Button, { disabled: !selectedImage, onClick: () => {
|
|
57
88
|
onMediaSelected(selectedImage.id);
|
|
58
89
|
onHide();
|
|
59
|
-
}, children: "Select" })] })] }) }));
|
|
90
|
+
}, children: "Select" }), (0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => onHide(), children: "Cancel" })] })] }) }));
|
|
60
91
|
};
|
|
61
92
|
exports.MediaSelector = MediaSelector;
|