@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.
@@ -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
- selectedVariant.mediaId = imageId;
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
- console.log(JSON.stringify(field));
42
- 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" }, onHide: () => setEditorVisible(false), children: (0, jsx_runtime_1.jsx)("div", { className: "a-flex a-gap-1", 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" +
43
- (selectedVariant == variant ? " a-shadow-xl " : ""), children: [variant.src && (0, jsx_runtime_1.jsx)("img", { src: variant.src }), (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.jsxs)("span", Object.assign({}, otherProps, { onClick: () => setEditorVisible(true), children: ["PICTURE", (0, jsx_runtime_1.jsx)(Picture_1.Picture, { field: field, imageParams: imageParams, sources: sources })] }))] }));
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
- if (selection.length)
48
- setSelectedFolderId(selection[0]);
49
- else
50
- setSelectedFolderId(undefined);
51
- } }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { children: selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.name })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "alpaca-overflow-scroll a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-grid a-grid-cols-3 a-gap-2 a-absolute a-inset-0", children: images === null || images === void 0 ? void 0 : images.map((t) => {
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)(button_1.Button, { onClick: () => onHide(), children: "Cancel" }), (0, jsx_runtime_1.jsx)(button_1.Button, { disabled: !selectedImage, onClick: () => {
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
- selectedVariant.mediaId = imageId;
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
- console.log(JSON.stringify(field));
39
- return (_jsxs(_Fragment, { children: [_jsx(MediaSelector, { visible: mediaSelectorVisible, onHide: () => setMediaSelectorVisible(false), onMediaSelected: imageSelected }), _jsx(Dialog, { header: "Edit picture", visible: editorVisible, style: { width: "50vw" }, onHide: () => setEditorVisible(false), children: _jsx("div", { className: "a-flex a-gap-1", 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" +
40
- (selectedVariant == variant ? " a-shadow-xl " : ""), children: [variant.src && _jsx("img", { src: variant.src }), _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 })] }))) }) }), _jsxs("span", Object.assign({}, otherProps, { onClick: () => setEditorVisible(true), children: ["PICTURE", _jsx(Picture, { field: field, imageParams: imageParams, sources: sources })] }))] }));
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
- if (selection.length)
42
- setSelectedFolderId(selection[0]);
43
- else
44
- setSelectedFolderId(undefined);
45
- } }) }), _jsx(SplitterPanel, { children: selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.name })] }) }), _jsx(SplitterPanel, { className: "alpaca-overflow-scroll a-relative", children: _jsx("div", { className: "a-grid a-grid-cols-3 a-gap-2 a-absolute a-inset-0", children: images === null || images === void 0 ? void 0 : images.map((t) => {
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(Button, { onClick: () => onHide(), children: "Cancel" }), _jsx(Button, { disabled: !selectedImage, onClick: () => {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpaca-headless/alpaca-headless-nextjs",
3
- "version": "1.0.26",
3
+ "version": "1.0.27",
4
4
  "description": "Alpaca Headless NextJs Integration",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -17,10 +17,10 @@ export type PictureValue = {
17
17
  export type PictureVariant = {
18
18
  name: string;
19
19
  src: string;
20
- videoUrl: string;
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;