@alpaca-headless/alpaca-headless-nextjs 1.0.26 → 1.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/PictureEditor.js +29 -6
- package/dist/cjs/editor/AiTerminal.js +1 -1
- package/dist/cjs/editor/MediaSelector.js +16 -10
- package/dist/editor.css +24 -4
- package/dist/esm/components/PictureEditor.js +30 -7
- package/dist/esm/editor/AiTerminal.js +1 -1
- package/dist/esm/editor/MediaSelector.js +16 -10
- package/package.json +1 -1
- package/types/fieldTypes.d.ts +2 -2
|
@@ -19,6 +19,7 @@ const Picture_1 = require("./Picture");
|
|
|
19
19
|
const __1 = require("..");
|
|
20
20
|
const MediaSelector_1 = require("../editor/MediaSelector");
|
|
21
21
|
const dialog_1 = require("primereact/dialog");
|
|
22
|
+
const button_1 = require("primereact/button");
|
|
22
23
|
const PictureEditor = (_a) => {
|
|
23
24
|
var _b, _c;
|
|
24
25
|
var { field, imageParams, sources, defaultVariant, renderJsonLinkedData } = _a, otherProps = __rest(_a, ["field", "imageParams", "sources", "defaultVariant", "renderJsonLinkedData"]);
|
|
@@ -29,17 +30,39 @@ const PictureEditor = (_a) => {
|
|
|
29
30
|
if (!editContext)
|
|
30
31
|
return;
|
|
31
32
|
function imageSelected(imageId) {
|
|
32
|
-
const value = (field === null || field === void 0 ? void 0 : field.value) || {};
|
|
33
33
|
if (!selectedVariant)
|
|
34
34
|
return;
|
|
35
|
-
|
|
35
|
+
const value = (field === null || field === void 0 ? void 0 : field.rawValue)
|
|
36
|
+
? JSON.parse(field === null || field === void 0 ? void 0 : field.rawValue)
|
|
37
|
+
: { variants: [] };
|
|
38
|
+
const selected = value.variants.find((x) => x.name == selectedVariant.name);
|
|
39
|
+
if (!selected) {
|
|
40
|
+
value.variants.push({
|
|
41
|
+
name: selectedVariant.name,
|
|
42
|
+
mediaId: imageId,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
selected.mediaId = imageId;
|
|
47
|
+
}
|
|
36
48
|
console.log(imageId);
|
|
37
49
|
console.log(JSON.stringify(value));
|
|
38
|
-
if (field)
|
|
50
|
+
if (field) {
|
|
39
51
|
editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, JSON.stringify(value), false);
|
|
52
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
|
|
53
|
+
}
|
|
40
54
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
55
|
+
(0, react_1.useEffect)(() => {
|
|
56
|
+
var _a;
|
|
57
|
+
setSelectedVariant((_a = field === null || field === void 0 ? void 0 : field.value) === null || _a === void 0 ? void 0 : _a.variants[0]);
|
|
58
|
+
}, []);
|
|
59
|
+
console.log("Picture Field: " + JSON.stringify(field));
|
|
60
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(MediaSelector_1.MediaSelector, { visible: mediaSelectorVisible, onHide: () => setMediaSelectorVisible(false), onMediaSelected: imageSelected }), (0, jsx_runtime_1.jsx)(dialog_1.Dialog, { header: "Edit picture", visible: editorVisible, style: { width: "50vw", height: "50vh" }, onHide: () => setEditorVisible(false), children: (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-gap-1 a-flex-col a-justify a-h-full", children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-flex-1 a-flex a-gap-1", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-flex a-flex-col a-gap-1 a-h-full a-border-r", children: (_c = (_b = field === null || field === void 0 ? void 0 : field.value) === null || _b === void 0 ? void 0 : _b.variants) === null || _c === void 0 ? void 0 : _c.map((variant) => ((0, jsx_runtime_1.jsxs)("div", { onClick: () => setSelectedVariant(variant), children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-h-24 a-w-24 a-border a-relative" +
|
|
61
|
+
(selectedVariant == variant ? " a-shadow-xl " : ""), children: [variant.src && (0, jsx_runtime_1.jsx)("img", { src: variant.thumbSrc }), (0, jsx_runtime_1.jsx)("div", { className: "a-absolute a-top-0 a-right-0 ", children: (0, jsx_runtime_1.jsx)("i", { className: "pi pi-pencil a-m-1 a-cursor-pointer", onClick: () => setMediaSelectorVisible(true) }) })] }, variant.name), (0, jsx_runtime_1.jsx)("div", { children: variant.name }), (0, jsx_runtime_1.jsx)("div", { children: variant.aspectRatioText })] }))) }), (0, jsx_runtime_1.jsx)("div", { className: "a-flex-1 a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-absolute a-inset-0 a-overflow-auto", children: selectedVariant && (0, jsx_runtime_1.jsx)("img", { src: selectedVariant.src }) }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-justify-end a-gap-3 a-mt-3", children: [(0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => {
|
|
62
|
+
setEditorVisible(false);
|
|
63
|
+
}, children: "Ok" }), (0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => {
|
|
64
|
+
setEditorVisible(false);
|
|
65
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
|
|
66
|
+
}, children: "Cancel" })] })] }) }), (0, jsx_runtime_1.jsx)("span", Object.assign({}, otherProps, { onClick: () => setEditorVisible(true), className: "a-cursor-pointer", children: (0, jsx_runtime_1.jsx)(Picture_1.Picture, { field: field, imageParams: imageParams, sources: sources }) }))] }));
|
|
44
67
|
};
|
|
45
68
|
exports.PictureEditor = PictureEditor;
|
|
@@ -86,7 +86,7 @@ function AiTerminal({ requestRefresh, selection, }) {
|
|
|
86
86
|
terminalservice_1.TerminalService.off("command", commandHandler);
|
|
87
87
|
};
|
|
88
88
|
}, []);
|
|
89
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-h-full a-flex a-flex-col a-relative", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-flex-1 a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute", children: (0, jsx_runtime_1.jsx)(Terminal_1.Terminal, { onReset: () => setMessages([]), commandHandler: (v, callback) => {
|
|
89
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-h-full a-flex a-flex-col a-relative a-flex-1", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-flex-1 a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute", children: (0, jsx_runtime_1.jsx)(Terminal_1.Terminal, { onReset: () => setMessages([]), commandHandler: (v, callback) => {
|
|
90
90
|
commandHandler(v, callback);
|
|
91
91
|
} }) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "a-text-xs", children: ["Tokens in: ", tokens.in, " out: ", tokens.out] })] }));
|
|
92
92
|
}
|
|
@@ -21,6 +21,7 @@ const contentService_1 = require("./contentService");
|
|
|
21
21
|
const editContext_1 = require("./editContext");
|
|
22
22
|
const button_1 = require("primereact/button");
|
|
23
23
|
const dialog_1 = require("primereact/dialog");
|
|
24
|
+
const fileupload_1 = require("primereact/fileupload");
|
|
24
25
|
const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
|
|
25
26
|
const [selectedFolderId, setSelectedFolderId] = (0, react_1.useState)();
|
|
26
27
|
const [images, setImages] = (0, react_1.useState)();
|
|
@@ -40,22 +41,27 @@ const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
|
|
|
40
41
|
"F1828A2C-7E5D-4BBD-98CA-320474871548",
|
|
41
42
|
]);
|
|
42
43
|
setImages(children);
|
|
44
|
+
return children;
|
|
43
45
|
}
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
|
-
return ((0, jsx_runtime_1.jsx)(dialog_1.Dialog, { style: { width: "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
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-flex-col a-justify-between hover:a-shadow-md a-cursor-pointer a-p-1", onDoubleClick: () => {
|
|
48
|
+
return ((0, jsx_runtime_1.jsx)(dialog_1.Dialog, { style: { width: "80%", height: "80%" }, visible: visible, onHide: onHide, children: (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-flex-col a-h-full", children: [(0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { className: "a-flex-1 a-border-0", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 35, className: "alpaca-overflow-scroll", children: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 70, className: "a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-absolute a-inset-0 a-overflow-auto", children: (0, jsx_runtime_1.jsx)(ContentTree_1.default, { rootItemId: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", selectionMode: "single", selectedItemIds: selection, templateIds: ["FE5DD826-48C6-436D-B87A-7C4210C7413B"], expandIdPath: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", onSelectionChange: (selection) => {
|
|
49
|
+
if (selection.length)
|
|
50
|
+
setSelectedFolderId(selection[0]);
|
|
51
|
+
else
|
|
52
|
+
setSelectedFolderId(undefined);
|
|
53
|
+
} }) }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "a-flex a-justify-center a-align-center", children: (0, jsx_runtime_1.jsx)("img", { src: selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.previewUrl }) })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-flex a-flex-wrap a-content-start a-items-start a-gap-2 a-absolute a-inset-0 a-overflow-auto", children: images === null || images === void 0 ? void 0 : images.map((t) => {
|
|
54
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "a-w-24 a-flex a-flex-col a-justify-between hover:a-shadow-md a-cursor-pointer a-p-1", onDoubleClick: () => {
|
|
53
55
|
onMediaSelected(t.id);
|
|
54
56
|
onHide();
|
|
55
|
-
}, onClick: () => setSelectedImage(t), children: [(0, jsx_runtime_1.jsx)("img", { src: t.imageUrl }), (0, jsx_runtime_1.jsx)("div", { className: "a-text-xs a-break-all", children: t.name })] }));
|
|
56
|
-
}) }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-justify-end a-gap-3 a-mt-3", children: [(0, jsx_runtime_1.jsx)(
|
|
57
|
+
}, onClick: () => setSelectedImage(t), children: [(0, jsx_runtime_1.jsx)("img", { src: t.imageUrl, className: "a-w-24 a-h-24" }), (0, jsx_runtime_1.jsx)("div", { className: "a-text-xs a-break-all", children: t.name })] }, t.id));
|
|
58
|
+
}) }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-justify-end a-gap-3 a-mt-3", children: [(0, jsx_runtime_1.jsx)(fileupload_1.FileUpload, { mode: "basic", disabled: !selectedFolderId, auto: true, chooseLabel: "Upload", accept: "image/*", url: "/alpaca/headless/editor/upload?folder=" + selection[0], onUpload: ({ xhr }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
const response = JSON.parse(xhr.responseText);
|
|
60
|
+
const thumbs = yield loadThumbnails(selectedFolderId);
|
|
61
|
+
setSelectedImage(thumbs === null || thumbs === void 0 ? void 0 : thumbs.find((x) => x.id === response.id));
|
|
62
|
+
}) }), (0, jsx_runtime_1.jsx)(button_1.Button, { disabled: !selectedImage, onClick: () => {
|
|
57
63
|
onMediaSelected(selectedImage.id);
|
|
58
64
|
onHide();
|
|
59
|
-
}, children: "Select" })] })] }) }));
|
|
65
|
+
}, children: "Select" }), (0, jsx_runtime_1.jsx)(button_1.Button, { onClick: () => onHide(), children: "Cancel" })] })] }) }));
|
|
60
66
|
};
|
|
61
67
|
exports.MediaSelector = MediaSelector;
|
package/dist/editor.css
CHANGED
|
@@ -88,10 +88,6 @@
|
|
|
88
88
|
cursor: pointer;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
.a-grid-cols-3 {
|
|
92
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
93
|
-
}
|
|
94
|
-
|
|
95
91
|
.a-grid-cols-4 {
|
|
96
92
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
97
93
|
}
|
|
@@ -100,6 +96,18 @@
|
|
|
100
96
|
flex-direction: column;
|
|
101
97
|
}
|
|
102
98
|
|
|
99
|
+
.a-flex-wrap {
|
|
100
|
+
flex-wrap: wrap;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.a-content-start {
|
|
104
|
+
align-content: flex-start;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.a-items-start {
|
|
108
|
+
align-items: flex-start;
|
|
109
|
+
}
|
|
110
|
+
|
|
103
111
|
.a-items-center {
|
|
104
112
|
align-items: center;
|
|
105
113
|
}
|
|
@@ -108,6 +116,10 @@
|
|
|
108
116
|
justify-content: flex-end;
|
|
109
117
|
}
|
|
110
118
|
|
|
119
|
+
.a-justify-center {
|
|
120
|
+
justify-content: center;
|
|
121
|
+
}
|
|
122
|
+
|
|
111
123
|
.a-justify-between {
|
|
112
124
|
justify-content: space-between;
|
|
113
125
|
}
|
|
@@ -130,6 +142,10 @@
|
|
|
130
142
|
margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
|
|
131
143
|
}
|
|
132
144
|
|
|
145
|
+
.a-overflow-auto {
|
|
146
|
+
overflow: auto;
|
|
147
|
+
}
|
|
148
|
+
|
|
133
149
|
.a-overflow-hidden {
|
|
134
150
|
overflow: hidden;
|
|
135
151
|
}
|
|
@@ -166,6 +182,10 @@
|
|
|
166
182
|
border-bottom-width: 1px;
|
|
167
183
|
}
|
|
168
184
|
|
|
185
|
+
.a-border-r {
|
|
186
|
+
border-right-width: 1px;
|
|
187
|
+
}
|
|
188
|
+
|
|
169
189
|
.a-border-t-2 {
|
|
170
190
|
border-top-width: 2px;
|
|
171
191
|
}
|
|
@@ -11,11 +11,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
return t;
|
|
12
12
|
};
|
|
13
13
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
14
|
-
import { useState } from "react";
|
|
14
|
+
import { useEffect, useState } from "react";
|
|
15
15
|
import { Picture } from "./Picture";
|
|
16
16
|
import { useEditContext } from "..";
|
|
17
17
|
import { MediaSelector } from "../editor/MediaSelector";
|
|
18
18
|
import { Dialog } from "primereact/dialog";
|
|
19
|
+
import { Button } from "primereact/button";
|
|
19
20
|
export const PictureEditor = (_a) => {
|
|
20
21
|
var _b, _c;
|
|
21
22
|
var { field, imageParams, sources, defaultVariant, renderJsonLinkedData } = _a, otherProps = __rest(_a, ["field", "imageParams", "sources", "defaultVariant", "renderJsonLinkedData"]);
|
|
@@ -26,16 +27,38 @@ export const PictureEditor = (_a) => {
|
|
|
26
27
|
if (!editContext)
|
|
27
28
|
return;
|
|
28
29
|
function imageSelected(imageId) {
|
|
29
|
-
const value = (field === null || field === void 0 ? void 0 : field.value) || {};
|
|
30
30
|
if (!selectedVariant)
|
|
31
31
|
return;
|
|
32
|
-
|
|
32
|
+
const value = (field === null || field === void 0 ? void 0 : field.rawValue)
|
|
33
|
+
? JSON.parse(field === null || field === void 0 ? void 0 : field.rawValue)
|
|
34
|
+
: { variants: [] };
|
|
35
|
+
const selected = value.variants.find((x) => x.name == selectedVariant.name);
|
|
36
|
+
if (!selected) {
|
|
37
|
+
value.variants.push({
|
|
38
|
+
name: selectedVariant.name,
|
|
39
|
+
mediaId: imageId,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
selected.mediaId = imageId;
|
|
44
|
+
}
|
|
33
45
|
console.log(imageId);
|
|
34
46
|
console.log(JSON.stringify(value));
|
|
35
|
-
if (field)
|
|
47
|
+
if (field) {
|
|
36
48
|
editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, JSON.stringify(value), false);
|
|
49
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
|
|
50
|
+
}
|
|
37
51
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
var _a;
|
|
54
|
+
setSelectedVariant((_a = field === null || field === void 0 ? void 0 : field.value) === null || _a === void 0 ? void 0 : _a.variants[0]);
|
|
55
|
+
}, []);
|
|
56
|
+
console.log("Picture Field: " + JSON.stringify(field));
|
|
57
|
+
return (_jsxs(_Fragment, { children: [_jsx(MediaSelector, { visible: mediaSelectorVisible, onHide: () => setMediaSelectorVisible(false), onMediaSelected: imageSelected }), _jsx(Dialog, { header: "Edit picture", visible: editorVisible, style: { width: "50vw", height: "50vh" }, onHide: () => setEditorVisible(false), children: _jsxs("div", { className: "a-flex a-gap-1 a-flex-col a-justify a-h-full", children: [_jsxs("div", { className: "a-flex-1 a-flex a-gap-1", children: [_jsx("div", { className: "a-flex a-flex-col a-gap-1 a-h-full a-border-r", children: (_c = (_b = field === null || field === void 0 ? void 0 : field.value) === null || _b === void 0 ? void 0 : _b.variants) === null || _c === void 0 ? void 0 : _c.map((variant) => (_jsxs("div", { onClick: () => setSelectedVariant(variant), children: [_jsxs("div", { className: "a-h-24 a-w-24 a-border a-relative" +
|
|
58
|
+
(selectedVariant == variant ? " a-shadow-xl " : ""), children: [variant.src && _jsx("img", { src: variant.thumbSrc }), _jsx("div", { className: "a-absolute a-top-0 a-right-0 ", children: _jsx("i", { className: "pi pi-pencil a-m-1 a-cursor-pointer", onClick: () => setMediaSelectorVisible(true) }) })] }, variant.name), _jsx("div", { children: variant.name }), _jsx("div", { children: variant.aspectRatioText })] }))) }), _jsx("div", { className: "a-flex-1 a-relative", children: _jsx("div", { className: "a-absolute a-inset-0 a-overflow-auto", children: selectedVariant && _jsx("img", { src: selectedVariant.src }) }) })] }), _jsxs("div", { className: "a-flex a-justify-end a-gap-3 a-mt-3", children: [_jsx(Button, { onClick: () => {
|
|
59
|
+
setEditorVisible(false);
|
|
60
|
+
}, children: "Ok" }), _jsx(Button, { onClick: () => {
|
|
61
|
+
setEditorVisible(false);
|
|
62
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
|
|
63
|
+
}, children: "Cancel" })] })] }) }), _jsx("span", Object.assign({}, otherProps, { onClick: () => setEditorVisible(true), className: "a-cursor-pointer", children: _jsx(Picture, { field: field, imageParams: imageParams, sources: sources }) }))] }));
|
|
41
64
|
};
|
|
@@ -83,7 +83,7 @@ export function AiTerminal({ requestRefresh, selection, }) {
|
|
|
83
83
|
TerminalService.off("command", commandHandler);
|
|
84
84
|
};
|
|
85
85
|
}, []);
|
|
86
|
-
return (_jsxs("div", { className: "a-h-full a-flex a-flex-col a-relative", children: [_jsx("div", { className: "a-flex-1 a-relative", children: _jsx("div", { className: "a-inset-0 a-absolute", children: _jsx(Terminal, { onReset: () => setMessages([]), commandHandler: (v, callback) => {
|
|
86
|
+
return (_jsxs("div", { className: "a-h-full a-flex a-flex-col a-relative a-flex-1", children: [_jsx("div", { className: "a-flex-1 a-relative", children: _jsx("div", { className: "a-inset-0 a-absolute", children: _jsx(Terminal, { onReset: () => setMessages([]), commandHandler: (v, callback) => {
|
|
87
87
|
commandHandler(v, callback);
|
|
88
88
|
} }) }) }), _jsxs("div", { className: "a-text-xs", children: ["Tokens in: ", tokens.in, " out: ", tokens.out] })] }));
|
|
89
89
|
}
|
|
@@ -15,6 +15,7 @@ import { getChildren } from "./contentService";
|
|
|
15
15
|
import { useEditContext } from "./editContext";
|
|
16
16
|
import { Button } from "primereact/button";
|
|
17
17
|
import { Dialog } from "primereact/dialog";
|
|
18
|
+
import { FileUpload } from "primereact/fileupload";
|
|
18
19
|
export const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
|
|
19
20
|
const [selectedFolderId, setSelectedFolderId] = useState();
|
|
20
21
|
const [images, setImages] = useState();
|
|
@@ -34,21 +35,26 @@ export const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
|
|
|
34
35
|
"F1828A2C-7E5D-4BBD-98CA-320474871548",
|
|
35
36
|
]);
|
|
36
37
|
setImages(children);
|
|
38
|
+
return children;
|
|
37
39
|
}
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
|
-
return (_jsx(Dialog, { style: { width: "80%", height: "80%" }, visible: visible, onHide: onHide, children: _jsxs("div", { className: "a-flex a-flex-col a-h-full", children: [_jsxs(Splitter, { className: "a-flex-1 a-border-0", children: [_jsx(SplitterPanel, { size: 35, className: "alpaca-overflow-scroll", children: _jsxs(Splitter, { layout: "vertical", children: [_jsx(SplitterPanel, { size: 70, children: _jsx(ContentTree, { rootItemId: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", selectionMode: "single", selectedItemIds: selection, templateIds: ["FE5DD826-48C6-436D-B87A-7C4210C7413B"], expandIdPath: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", onSelectionChange: (selection) => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return (_jsxs("div", { className: "a-flex a-flex-col a-justify-between hover:a-shadow-md a-cursor-pointer a-p-1", onDoubleClick: () => {
|
|
42
|
+
return (_jsx(Dialog, { style: { width: "80%", height: "80%" }, visible: visible, onHide: onHide, children: _jsxs("div", { className: "a-flex a-flex-col a-h-full", children: [_jsxs(Splitter, { className: "a-flex-1 a-border-0", children: [_jsx(SplitterPanel, { size: 35, className: "alpaca-overflow-scroll", children: _jsxs(Splitter, { layout: "vertical", children: [_jsx(SplitterPanel, { size: 70, className: "a-relative", children: _jsx("div", { className: "a-absolute a-inset-0 a-overflow-auto", children: _jsx(ContentTree, { rootItemId: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", selectionMode: "single", selectedItemIds: selection, templateIds: ["FE5DD826-48C6-436D-B87A-7C4210C7413B"], expandIdPath: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", onSelectionChange: (selection) => {
|
|
43
|
+
if (selection.length)
|
|
44
|
+
setSelectedFolderId(selection[0]);
|
|
45
|
+
else
|
|
46
|
+
setSelectedFolderId(undefined);
|
|
47
|
+
} }) }) }), _jsx(SplitterPanel, { className: "a-flex a-justify-center a-align-center", children: _jsx("img", { src: selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.previewUrl }) })] }) }), _jsx(SplitterPanel, { className: "a-relative", children: _jsx("div", { className: "a-flex a-flex-wrap a-content-start a-items-start a-gap-2 a-absolute a-inset-0 a-overflow-auto", children: images === null || images === void 0 ? void 0 : images.map((t) => {
|
|
48
|
+
return (_jsxs("div", { className: "a-w-24 a-flex a-flex-col a-justify-between hover:a-shadow-md a-cursor-pointer a-p-1", onDoubleClick: () => {
|
|
47
49
|
onMediaSelected(t.id);
|
|
48
50
|
onHide();
|
|
49
|
-
}, onClick: () => setSelectedImage(t), children: [_jsx("img", { src: t.imageUrl }), _jsx("div", { className: "a-text-xs a-break-all", children: t.name })] }));
|
|
50
|
-
}) }) })] }), _jsxs("div", { className: "a-flex a-justify-end a-gap-3 a-mt-3", children: [_jsx(
|
|
51
|
+
}, onClick: () => setSelectedImage(t), children: [_jsx("img", { src: t.imageUrl, className: "a-w-24 a-h-24" }), _jsx("div", { className: "a-text-xs a-break-all", children: t.name })] }, t.id));
|
|
52
|
+
}) }) })] }), _jsxs("div", { className: "a-flex a-justify-end a-gap-3 a-mt-3", children: [_jsx(FileUpload, { mode: "basic", disabled: !selectedFolderId, auto: true, chooseLabel: "Upload", accept: "image/*", url: "/alpaca/headless/editor/upload?folder=" + selection[0], onUpload: ({ xhr }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
+
const response = JSON.parse(xhr.responseText);
|
|
54
|
+
const thumbs = yield loadThumbnails(selectedFolderId);
|
|
55
|
+
setSelectedImage(thumbs === null || thumbs === void 0 ? void 0 : thumbs.find((x) => x.id === response.id));
|
|
56
|
+
}) }), _jsx(Button, { disabled: !selectedImage, onClick: () => {
|
|
51
57
|
onMediaSelected(selectedImage.id);
|
|
52
58
|
onHide();
|
|
53
|
-
}, children: "Select" })] })] }) }));
|
|
59
|
+
}, children: "Select" }), _jsx(Button, { onClick: () => onHide(), children: "Cancel" })] })] }) }));
|
|
54
60
|
};
|
package/package.json
CHANGED
package/types/fieldTypes.d.ts
CHANGED
|
@@ -17,10 +17,10 @@ export type PictureValue = {
|
|
|
17
17
|
export type PictureVariant = {
|
|
18
18
|
name: string;
|
|
19
19
|
src: string;
|
|
20
|
-
videoUrl
|
|
20
|
+
videoUrl?: string;
|
|
21
21
|
width: number;
|
|
22
|
-
mediaId: string;
|
|
23
22
|
aspectRatioText?: string;
|
|
23
|
+
thumbSrc?: string;
|
|
24
24
|
};
|
|
25
25
|
export type ImageField = Field & {
|
|
26
26
|
value: ImageValue | null;
|