@alpaca-headless/alpaca-headless-nextjs 1.0.20 → 1.0.26

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.
Files changed (108) hide show
  1. package/dist/cjs/components/Error.js +15 -0
  2. package/dist/cjs/components/Link.js +5 -0
  3. package/dist/cjs/components/Picture.js +3 -0
  4. package/dist/cjs/components/PictureEditor.js +6 -3
  5. package/dist/cjs/components/Placeholder.js +9 -2
  6. package/dist/cjs/components/RichText.js +4 -1
  7. package/dist/cjs/components/RichTextEditor.js +1 -4
  8. package/dist/cjs/components/Text.js +3 -2
  9. package/dist/cjs/components/TextEditor.js +1 -4
  10. package/dist/cjs/editor/AiTerminal.js +1 -1
  11. package/dist/cjs/editor/ComponentPalette.js +20 -19
  12. package/dist/cjs/editor/ComponentTree.js +1 -1
  13. package/dist/cjs/editor/EditorClient.js +32 -8
  14. package/dist/cjs/editor/FieldList.js +10 -5
  15. package/dist/cjs/editor/GraphQL.js +2 -3
  16. package/dist/cjs/editor/MediaSelector.js +6 -6
  17. package/dist/editor.css +48 -9
  18. package/dist/esm/components/Error.js +10 -0
  19. package/dist/esm/components/Link.js +5 -0
  20. package/dist/esm/components/Picture.js +3 -0
  21. package/dist/esm/components/PictureEditor.js +6 -3
  22. package/dist/esm/components/Placeholder.js +9 -2
  23. package/dist/esm/components/RichText.js +4 -1
  24. package/dist/esm/components/RichTextEditor.js +1 -4
  25. package/dist/esm/components/Text.js +3 -2
  26. package/dist/esm/components/TextEditor.js +1 -4
  27. package/dist/esm/editor/AiTerminal.js +1 -1
  28. package/dist/esm/editor/ComponentPalette.js +21 -20
  29. package/dist/esm/editor/ComponentTree.js +1 -1
  30. package/dist/esm/editor/EditorClient.js +32 -8
  31. package/dist/esm/editor/FieldList.js +10 -5
  32. package/dist/esm/editor/GraphQL.js +2 -3
  33. package/dist/esm/editor/MediaSelector.js +6 -6
  34. package/dist/primereact/resources/primereact.css +3 -6301
  35. package/dist/primereact/resources/primereact.min.css +3 -1
  36. package/dist/primereact/resources/themes/arya-blue/theme.css +5554 -5814
  37. package/dist/primereact/resources/themes/arya-green/theme.css +5554 -5814
  38. package/dist/primereact/resources/themes/arya-orange/theme.css +5554 -5814
  39. package/dist/primereact/resources/themes/arya-purple/theme.css +5554 -5814
  40. package/dist/primereact/resources/themes/bootstrap4-dark-blue/theme.css +5555 -5816
  41. package/dist/primereact/resources/themes/bootstrap4-dark-purple/theme.css +5555 -5816
  42. package/dist/primereact/resources/themes/bootstrap4-light-blue/theme.css +5539 -5800
  43. package/dist/primereact/resources/themes/bootstrap4-light-purple/theme.css +5539 -5800
  44. package/dist/primereact/resources/themes/fluent-light/theme.css +5662 -5922
  45. package/dist/primereact/resources/themes/lara-dark-blue/fonts/Inter-italic.var.woff2 +0 -0
  46. package/dist/primereact/resources/themes/lara-dark-blue/fonts/Inter-roman.var.woff2 +0 -0
  47. package/dist/primereact/resources/themes/lara-dark-blue/theme.css +5568 -5809
  48. package/dist/primereact/resources/themes/lara-dark-indigo/fonts/Inter-italic.var.woff2 +0 -0
  49. package/dist/primereact/resources/themes/lara-dark-indigo/fonts/Inter-roman.var.woff2 +0 -0
  50. package/dist/primereact/resources/themes/lara-dark-indigo/theme.css +5572 -5813
  51. package/dist/primereact/resources/themes/lara-dark-purple/fonts/Inter-italic.var.woff2 +0 -0
  52. package/dist/primereact/resources/themes/lara-dark-purple/fonts/Inter-roman.var.woff2 +0 -0
  53. package/dist/primereact/resources/themes/lara-dark-purple/theme.css +5572 -5813
  54. package/dist/primereact/resources/themes/lara-dark-teal/fonts/Inter-italic.var.woff2 +0 -0
  55. package/dist/primereact/resources/themes/lara-dark-teal/fonts/Inter-roman.var.woff2 +0 -0
  56. package/dist/primereact/resources/themes/lara-dark-teal/theme.css +5572 -5813
  57. package/dist/primereact/resources/themes/lara-light-blue/fonts/Inter-italic.var.woff2 +0 -0
  58. package/dist/primereact/resources/themes/lara-light-blue/fonts/Inter-roman.var.woff2 +0 -0
  59. package/dist/primereact/resources/themes/lara-light-blue/theme.css +5567 -5808
  60. package/dist/primereact/resources/themes/lara-light-indigo/fonts/Inter-italic.var.woff2 +0 -0
  61. package/dist/primereact/resources/themes/lara-light-indigo/fonts/Inter-roman.var.woff2 +0 -0
  62. package/dist/primereact/resources/themes/lara-light-indigo/theme.css +5562 -5803
  63. package/dist/primereact/resources/themes/lara-light-purple/fonts/Inter-italic.var.woff2 +0 -0
  64. package/dist/primereact/resources/themes/lara-light-purple/fonts/Inter-roman.var.woff2 +0 -0
  65. package/dist/primereact/resources/themes/lara-light-purple/theme.css +5562 -5803
  66. package/dist/primereact/resources/themes/lara-light-teal/fonts/Inter-italic.var.woff2 +0 -0
  67. package/dist/primereact/resources/themes/lara-light-teal/fonts/Inter-roman.var.woff2 +0 -0
  68. package/dist/primereact/resources/themes/lara-light-teal/theme.css +5562 -5803
  69. package/dist/primereact/resources/themes/luna-amber/theme.css +5508 -5770
  70. package/dist/primereact/resources/themes/luna-blue/theme.css +5508 -5770
  71. package/dist/primereact/resources/themes/luna-green/theme.css +5508 -5770
  72. package/dist/primereact/resources/themes/luna-pink/theme.css +5508 -5770
  73. package/dist/primereact/resources/themes/md-dark-deeppurple/theme.css +6906 -7209
  74. package/dist/primereact/resources/themes/md-dark-indigo/theme.css +6905 -7208
  75. package/dist/primereact/resources/themes/md-light-deeppurple/theme.css +6905 -7208
  76. package/dist/primereact/resources/themes/md-light-indigo/theme.css +6905 -7208
  77. package/dist/primereact/resources/themes/mdc-dark-deeppurple/theme.css +6907 -7210
  78. package/dist/primereact/resources/themes/mdc-dark-indigo/theme.css +6904 -7207
  79. package/dist/primereact/resources/themes/mdc-light-deeppurple/theme.css +6905 -7208
  80. package/dist/primereact/resources/themes/mdc-light-indigo/theme.css +6905 -7208
  81. package/dist/primereact/resources/themes/mira/theme.css +5723 -5979
  82. package/dist/primereact/resources/themes/nano/theme.css +5544 -5805
  83. package/dist/primereact/resources/themes/nova/theme.css +5497 -5758
  84. package/dist/primereact/resources/themes/nova-accent/theme.css +5529 -5790
  85. package/dist/primereact/resources/themes/nova-alt/theme.css +5514 -5775
  86. package/dist/primereact/resources/themes/rhea/theme.css +5526 -5787
  87. package/dist/primereact/resources/themes/saga-blue/theme.css +5554 -5814
  88. package/dist/primereact/resources/themes/saga-green/theme.css +5554 -5814
  89. package/dist/primereact/resources/themes/saga-orange/theme.css +5554 -5814
  90. package/dist/primereact/resources/themes/saga-purple/theme.css +5559 -5819
  91. package/dist/primereact/resources/themes/soho-dark/theme.css +5513 -5770
  92. package/dist/primereact/resources/themes/soho-light/theme.css +5565 -5822
  93. package/dist/primereact/resources/themes/tailwind-light/theme.css +5613 -5868
  94. package/dist/primereact/resources/themes/vela-blue/theme.css +5556 -5816
  95. package/dist/primereact/resources/themes/vela-green/theme.css +5556 -5816
  96. package/dist/primereact/resources/themes/vela-orange/theme.css +5556 -5816
  97. package/dist/primereact/resources/themes/vela-purple/theme.css +5556 -5816
  98. package/dist/primereact/resources/themes/viva-dark/theme.css +5669 -5925
  99. package/dist/primereact/resources/themes/viva-light/theme.css +5668 -5924
  100. package/package.json +3 -2
  101. package/types/components/Error.d.ts +2 -0
  102. package/types/components/RichTextEditor.d.ts +1 -1
  103. package/types/components/TextEditor.d.ts +1 -1
  104. package/types/editor/AiTerminal.d.ts +1 -1
  105. package/types/editor/editContext.d.ts +2 -0
  106. package/types/layoutData.d.ts +1 -0
  107. package/dist/primereact/resources/images/color.png +0 -0
  108. package/dist/primereact/resources/images/hue.png +0 -0
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ErrorFallbackWithDetails = exports.ErrorFallback = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ function ErrorFallback() {
7
+ // Call resetErrorBoundary() to reset the error boundary and retry the render.
8
+ return ((0, jsx_runtime_1.jsx)("div", { role: "alert", children: (0, jsx_runtime_1.jsx)("p", { children: "Something went wrong." }) }));
9
+ }
10
+ exports.ErrorFallback = ErrorFallback;
11
+ function ErrorFallbackWithDetails({ error }) {
12
+ // Call resetErrorBoundary() to reset the error boundary and retry the render.
13
+ return ((0, jsx_runtime_1.jsxs)("div", { role: "alert", children: [(0, jsx_runtime_1.jsx)("p", { children: "Something went wrong:" }), (0, jsx_runtime_1.jsxs)("pre", { style: { color: "red" }, children: [error.message, " ", error.stack] })] }));
14
+ }
15
+ exports.ErrorFallbackWithDetails = ErrorFallbackWithDetails;
@@ -23,6 +23,11 @@ function Link(_a) {
23
23
  var { field, children } = _a, props = __rest(_a, ["field", "children"]);
24
24
  if (!field)
25
25
  return;
26
+ if (field.jsonValue) {
27
+ field = field.jsonValue;
28
+ }
29
+ if (!field.value)
30
+ return;
26
31
  const editing = (_b = (0, __1.useAlpacaContext)().pageContext) === null || _b === void 0 ? void 0 : _b.pageEditing;
27
32
  if (editing)
28
33
  return ((0, jsx_runtime_1.jsx)(LinkEditor_1.default, Object.assign({ field: field, children: children }, props)));
@@ -34,6 +34,9 @@ const Picture = (_a) => {
34
34
  var { field, imageParams, sources, defaultVariant, renderJsonLinkedData } = _a, otherProps = __rest(_a, ["field", "imageParams", "sources", "defaultVariant", "renderJsonLinkedData"]);
35
35
  if (!field)
36
36
  return null;
37
+ if (field.jsonValue) {
38
+ field = field.jsonValue;
39
+ }
37
40
  if ((_b = (0, __1.useAlpacaContext)().pageContext) === null || _b === void 0 ? void 0 : _b.pageEditing)
38
41
  return (0, jsx_runtime_1.jsx)(PictureEditor_1.PictureEditor, Object.assign({ field: field }, otherProps));
39
42
  const variants = (_c = field.value) === null || _c === void 0 ? void 0 : _c.variants;
@@ -30,13 +30,16 @@ const PictureEditor = (_a) => {
30
30
  return;
31
31
  function imageSelected(imageId) {
32
32
  const value = (field === null || field === void 0 ? void 0 : field.value) || {};
33
- //value.variants[0].mediaId = imageId;
33
+ if (!selectedVariant)
34
+ return;
35
+ selectedVariant.mediaId = imageId;
34
36
  console.log(imageId);
37
+ console.log(JSON.stringify(value));
35
38
  if (field)
36
39
  editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, JSON.stringify(value), false);
37
40
  }
38
41
  console.log(JSON.stringify(field));
39
- 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: "Header", 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" +
40
- (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 " })] }, 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 })] }))] }));
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 })] }))] }));
41
44
  };
42
45
  exports.PictureEditor = PictureEditor;
@@ -18,6 +18,8 @@ const EditFrame_1 = require("../editor/EditFrame");
18
18
  const __1 = require("..");
19
19
  const PlaceholderDropZoneHost_1 = require("../editor/PlaceholderDropZoneHost");
20
20
  const Slot_1 = __importDefault(require("./Slot"));
21
+ const react_error_boundary_1 = require("react-error-boundary");
22
+ const Error_1 = require("./Error");
21
23
  function Placeholder({ name, content, }) {
22
24
  return __awaiter(this, void 0, void 0, function* () {
23
25
  const data = yield content;
@@ -50,11 +52,16 @@ function Placeholder({ name, content, }) {
50
52
  const components = yield Promise.all(promises);
51
53
  if (context.pageContext.pageEditing) {
52
54
  return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [components.map(({ Component, data, parent }, index) => {
53
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(PlaceholderDropZoneHost_1.PlaceholderDropZoneHost, { parentName: parent === null || parent === void 0 ? void 0 : parent.name, placeholder: placeholderData, index: index + 1 }), (0, jsx_runtime_1.jsx)(EditFrame_1.EditFrame, { componentId: data.id, children: (0, jsx_runtime_1.jsx)(Component, { component: data }) }, data.id)] }));
55
+ try {
56
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(PlaceholderDropZoneHost_1.PlaceholderDropZoneHost, { parentName: parent === null || parent === void 0 ? void 0 : parent.name, placeholder: placeholderData, index: index + 1 }), (0, jsx_runtime_1.jsx)(EditFrame_1.EditFrame, { componentId: data.id, children: (0, jsx_runtime_1.jsx)(react_error_boundary_1.ErrorBoundary, { FallbackComponent: Error_1.ErrorFallbackWithDetails, children: (0, jsx_runtime_1.jsx)(Component, { component: data }) }) }, data.id)] }));
57
+ }
58
+ catch (e) {
59
+ return ((0, jsx_runtime_1.jsxs)("div", { children: ["Error rendering component ", data.name, ": ", e.message] }));
60
+ }
54
61
  }), (0, jsx_runtime_1.jsx)(PlaceholderDropZoneHost_1.PlaceholderDropZoneHost, { parentName: data === null || data === void 0 ? void 0 : data.name, placeholder: placeholderData, index: components.length + 1 })] }));
55
62
  }
56
63
  else
57
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: components.map(({ Component, data }) => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(Component, { component: data }) }))) }));
64
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: components.map(({ Component, data }) => ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(react_error_boundary_1.ErrorBoundary, { FallbackComponent: Error_1.ErrorFallback, children: (0, jsx_runtime_1.jsx)(Component, { component: data }) }) }))) }));
58
65
  });
59
66
  }
60
67
  exports.Placeholder = Placeholder;
@@ -33,9 +33,12 @@ function RichText(_a) {
33
33
  return __awaiter(this, void 0, void 0, function* () {
34
34
  if (!field)
35
35
  return;
36
+ if (field.jsonValue) {
37
+ field = field.jsonValue;
38
+ }
36
39
  const internalProps = Object.assign(Object.assign({}, props), { dangerouslySetInnerHTML: {
37
40
  __html: field.value,
38
- }, editable: editable, contentEditable: true, "data-test": "test", placeholder: '[' + field.name + ']' });
41
+ }, editable: editable, contentEditable: true, "data-test": "test", placeholder: "[" + field.name + "]" });
39
42
  if ((0, __1.useAlpacaContext)().pageContext.pageEditing)
40
43
  return (0, jsx_runtime_1.jsx)(RichTextEditor_1.RichTextEditor, Object.assign({ field: field, tag: tag }, props));
41
44
  return react_1.default.createElement(tag || "div", Object.assign(props, internalProps));
@@ -46,10 +46,7 @@ function RichTextEditor(_a) {
46
46
  if (!editContext)
47
47
  return;
48
48
  const { updateContentEditingFields } = editContext;
49
- const component = editContext.getComponentById(field.itemId);
50
- if (!component)
51
- return;
52
- const liveField = Object.values(component.fields).find((f) => f.id == field.id);
49
+ const liveField = editContext.getLiveField(field);
53
50
  (0, react_1.useEffect)(() => {
54
51
  if (editedValue != liveField.value &&
55
52
  "<p>" + editedValue + "</p>" != liveField.value) {
@@ -36,8 +36,9 @@ function Text(_a) {
36
36
  if (field.jsonValue) {
37
37
  field = field.jsonValue;
38
38
  }
39
- if ((0, __1.useAlpacaContext)().pageContext.pageEditing)
40
- return (0, jsx_runtime_1.jsx)(TextEditor_1.TextEditor, Object.assign({ field: field, tag: tag }, props));
39
+ if ((0, __1.useAlpacaContext)().pageContext.pageEditing) {
40
+ return ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(TextEditor_1.TextEditor, Object.assign({ field: field, tag: tag }, props)) }));
41
+ }
41
42
  else
42
43
  return react_1.default.createElement(tag || "div", props, field.value);
43
44
  });
@@ -46,10 +46,7 @@ function TextEditor(_a) {
46
46
  if (!editContext)
47
47
  return;
48
48
  const { updateContentEditingFields } = editContext;
49
- const component = editContext.getComponentById(field.itemId);
50
- if (!component)
51
- return;
52
- const liveField = Object.values(component.fields).find((f) => f.id == field.id);
49
+ const liveField = editContext.getLiveField(field);
53
50
  (0, react_1.useEffect)(() => {
54
51
  if (editedValue != liveField.value)
55
52
  setValue(liveField.value);
@@ -45,7 +45,7 @@ function AiTerminal({ requestRefresh, selection, }) {
45
45
  handleResponse(response, callback, false);
46
46
  if (response.editOperations.length) {
47
47
  if (new Date().getTime() - lastRefresh > 500) {
48
- requestRefresh(false);
48
+ requestRefresh("delayed");
49
49
  router.refresh();
50
50
  lastRefresh = new Date().getTime();
51
51
  }
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ComponentPalette = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const tabview_1 = require("primereact/tabview");
8
9
  const __1 = require("..");
9
10
  const ContentTree_1 = __importDefault(require("./ContentTree"));
10
11
  function ComponentPalette({ selection, page, dragStart, dragEnd, }) {
@@ -34,25 +35,25 @@ function ComponentPalette({ selection, page, dragStart, dragEnd, }) {
34
35
  // editContext!.droppedInPlaceholder(key, parseInt(index));
35
36
  // }
36
37
  // }
37
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h2", { className: "a-text-xl a-font-bold a-mb-8", children: "New" }), (0, jsx_runtime_1.jsx)("div", { className: "a-grid a-grid-cols-4 a-gap-1", children: insertOptions.map((option) => {
38
- function handleDragStart(event) {
39
- dragStart({ type: "template", templateId: option.id });
40
- event.stopPropagation();
41
- }
42
- function handleDragEnd() {
43
- dragEnd();
44
- }
45
- return ((0, jsx_runtime_1.jsxs)("div", {
46
- // onClick={directInsert}
47
- draggable: true, onDragStart: handleDragStart, onDragEnd: handleDragEnd, className: "p-3 shadow-md flex items-center flex-col gap-1 cursor-grab", children: [(0, jsx_runtime_1.jsx)("img", { src: option.icon, width: "32", height: "32" }), option.name] }, option.id));
48
- }) }), (0, jsx_runtime_1.jsx)("h2", { className: "a-text-xl a-font-bold a-my-8", children: "Existing" }), (0, jsx_runtime_1.jsx)(ContentTree_1.default, { rootItemId: "0DE95AE4-41AB-4D01-9EB0-67441B7C2450", dragStart: (itemNode) => {
49
- dragStart({
50
- type: "link-component",
51
- templateId: itemNode.templateId,
52
- componentId: itemNode.id,
53
- });
54
- }, expandIdPath: page.idPath, dragEnd: dragEnd, isDraggable: (x) => x.isComponent &&
55
- (insertOptions === null || insertOptions === void 0 ? void 0 : insertOptions.find((insertOption) => insertOption.id == x.templateId)) != undefined })] }));
38
+ return ((0, jsx_runtime_1.jsxs)(tabview_1.TabView, { children: [(0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "New", children: (0, jsx_runtime_1.jsx)("div", { className: "a-grid a-grid-cols-4 a-gap-1", children: insertOptions.map((option) => {
39
+ function handleDragStart(event) {
40
+ dragStart({ type: "template", templateId: option.id });
41
+ event.stopPropagation();
42
+ }
43
+ function handleDragEnd() {
44
+ dragEnd();
45
+ }
46
+ return ((0, jsx_runtime_1.jsxs)("div", {
47
+ // onClick={directInsert}
48
+ draggable: true, onDragStart: handleDragStart, onDragEnd: handleDragEnd, className: "a-p-3 a-shadow-md a-flex a-items-center a-flex-col a-gap-1 a-cursor-grab", children: [(0, jsx_runtime_1.jsx)("img", { src: option.icon, width: "32", height: "32" }), option.name] }, option.id));
49
+ }) }) }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Existing", children: (0, jsx_runtime_1.jsx)(ContentTree_1.default, { rootItemId: "0DE95AE4-41AB-4D01-9EB0-67441B7C2450", dragStart: (itemNode) => {
50
+ dragStart({
51
+ type: "link-component",
52
+ templateId: itemNode.templateId,
53
+ componentId: itemNode.id,
54
+ });
55
+ }, expandIdPath: page.idPath, dragEnd: dragEnd, isDraggable: (x) => x.isComponent &&
56
+ (insertOptions === null || insertOptions === void 0 ? void 0 : insertOptions.find((insertOption) => insertOption.id == x.templateId)) != undefined }) })] }));
56
57
  }
57
58
  exports.ComponentPalette = ComponentPalette;
58
59
  function collectInsertOptions(page, placeholderKeys) {
@@ -108,7 +108,7 @@ function ComponentTree({ page, selection, }) {
108
108
  createMap(treeNodes, nodeDictionary);
109
109
  const nodeTemplate = (node, options) => {
110
110
  var _a;
111
- let label = ((0, jsx_runtime_1.jsxs)("span", { "data-key": node.key, className: "flex", children: [node.label, (_a = node.tags) === null || _a === void 0 ? void 0 : _a.map((x) => ((0, jsx_runtime_1.jsx)(tag_1.Tag, { icon: x.icon, value: x.value, severity: x.severity, onClick: x.onClick, style: { backgroundColor: x.color, marginLeft: "8px" } }, x.value)))] }));
111
+ let label = ((0, jsx_runtime_1.jsxs)("span", { "data-key": node.key, className: "a-flex", children: [node.label, (_a = node.tags) === null || _a === void 0 ? void 0 : _a.map((x) => ((0, jsx_runtime_1.jsx)(tag_1.Tag, { icon: x.icon, value: x.value, severity: x.severity, onClick: x.onClick, style: { backgroundColor: x.color, marginLeft: "8px" } }, x.value)))] }));
112
112
  return (0, jsx_runtime_1.jsx)("span", { className: options.className, children: label });
113
113
  };
114
114
  const menu = [
@@ -80,6 +80,7 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
80
80
  const searchParams = (0, navigation_1.useSearchParams)();
81
81
  const [selection, setSelection] = (0, react_1.useState)([]);
82
82
  const [selectedForInsertion, setSelectedForInsertion] = (0, react_1.useState)("");
83
+ const [liveUpdatingFields, setLiveUpdatingFields] = (0, react_1.useState)([]);
83
84
  const [currentEditOperation, setCurrentEditOperation] = (0, react_1.useState)();
84
85
  const [dictionary, setDictionary] = (0, react_1.useState)(dictionaryObject);
85
86
  const [unresolvedDictionaryKeys, setUnresolvedDictionaryKeys] = (0, react_1.useState)([]);
@@ -147,23 +148,33 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
147
148
  setSelection([result.componentId]);
148
149
  }
149
150
  if (!currentEditOperation.noRefresh)
150
- requestRefresh(currentEditOperation.refreshAfterQuietPeriod);
151
+ requestRefresh(currentEditOperation.refreshAfterQuietPeriod
152
+ ? "waitForQuietPeriod"
153
+ : "delayed");
151
154
  }
152
155
  });
153
156
  sync();
154
157
  }, [currentEditOperation]);
155
- const requestRefresh = (waitForQuietPeriod) => {
156
- console.log("request refresh with " + waitForQuietPeriod);
157
- if (waitForQuietPeriod && refreshTimer) {
158
+ const requestRefresh = (mode) => {
159
+ if (mode === "immediate") {
160
+ console.log("Immediate refresh requested");
161
+ clearTimeout(refreshTimer);
162
+ router.refresh();
163
+ setRefreshCompletedFlag(!refreshCompletedFlag);
164
+ setRefreshTimer(undefined);
165
+ return;
166
+ }
167
+ console.log("request refresh with mode: " + mode);
168
+ if (mode === "waitForQuietPeriod" && refreshTimer) {
158
169
  clearTimeout(refreshTimer);
159
170
  }
160
- if (!refreshTimer || waitForQuietPeriod) {
171
+ if (!refreshTimer || mode === "waitForQuietPeriod") {
161
172
  setRefreshTimer(setTimeout(() => {
162
173
  console.log("refreshing");
163
174
  router.refresh();
164
175
  setRefreshCompletedFlag(!refreshCompletedFlag);
165
176
  setRefreshTimer(undefined);
166
- }, waitForQuietPeriod ? 2000 : 1000));
177
+ }, mode === "waitForQuietPeriod" ? 2000 : 1000));
167
178
  }
168
179
  };
169
180
  const saveAndRefresh = (callback) => __awaiter(this, void 0, void 0, function* () {
@@ -268,6 +279,16 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
268
279
  }
269
280
  });
270
281
  }
282
+ const getLiveField = (field) => {
283
+ const existingField = liveUpdatingFields.find((f) => f.id === field.id &&
284
+ f.language === field.language &&
285
+ f.version === field.version &&
286
+ f.itemId === field.itemId);
287
+ if (existingField)
288
+ return existingField;
289
+ setLiveUpdatingFields([...liveUpdatingFields, field]);
290
+ return field;
291
+ };
271
292
  const selectedComponent = selection.length === 1 && page ? getComponentById(selection[0]) : null;
272
293
  const editField = (field, value, noRefresh = true) => {
273
294
  var _a;
@@ -300,6 +321,7 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
300
321
  op.noRefresh = noRefresh;
301
322
  op.refreshAfterQuietPeriod = !noRefresh;
302
323
  op.value = value;
324
+ getLiveField(field).value = value;
303
325
  function getField(fields, id) {
304
326
  return Object.values(fields).find((f) => f.id === id);
305
327
  }
@@ -349,10 +371,12 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
349
371
  dragObject,
350
372
  dictionary,
351
373
  setDictionary,
374
+ requestRefresh,
352
375
  refreshCompletedFlag,
353
376
  unresolvedDictionaryKeys,
354
377
  setUnresolvedDictionaryKeys,
355
378
  updateContentEditingFields,
379
+ getLiveField,
356
380
  showToast: () => { },
357
381
  removeComponent: (componentId, callback) => {
358
382
  (0, confirmdialog_1.confirmDialog)({
@@ -438,7 +462,7 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
438
462
  setCurrentEditOperation(op);
439
463
  setDragObject(undefined);
440
464
  }),
441
- }, children: [(0, jsx_runtime_1.jsx)(toast_1.Toast, { ref: toast }), (0, jsx_runtime_1.jsxs)(api_1.PrimeReactProvider, { children: [(0, jsx_runtime_1.jsx)(confirmdialog_1.ConfirmDialog, {}), (0, jsx_runtime_1.jsx)(sidebar_1.Sidebar, { style: { width: "40%" }, visible: componentsPaletteVisible, position: "right", onHide: () => setComponentsPaletteVisible(false), pt: {
465
+ }, children: [(0, jsx_runtime_1.jsx)(toast_1.Toast, { ref: toast }), (0, jsx_runtime_1.jsxs)(api_1.PrimeReactProvider, { children: [(0, jsx_runtime_1.jsx)(confirmdialog_1.ConfirmDialog, {}), (0, jsx_runtime_1.jsx)(sidebar_1.Sidebar, { style: { width: "40%" }, visible: componentsPaletteVisible, position: "right", onHide: () => setComponentsPaletteVisible(false), header: "Insert component", pt: {
442
466
  mask: {
443
467
  onDragOver: () => setHidePalette(true),
444
468
  style: {
@@ -455,6 +479,6 @@ function EditorClient({ content, dictionaryObject, edit, children, }) {
455
479
  setHidePalette(false);
456
480
  }
457
481
  setSelectedForInsertion("");
458
- } })) }), (0, jsx_runtime_1.jsxs)(blockui_1.BlockUI, { blocked: uiBlocked, template: spinner, children: [(0, jsx_runtime_1.jsx)(menubar_1.Menubar, { model: menuItems, end: endContent }), (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 25, className: "alpaca-overflow-scroll", children: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "a-overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute a-overflow-y-auto", children: (0, jsx_runtime_1.jsx)(ComponentTree_1.ComponentTree, { page: page, selection: selection }) }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "alpaca-editor-tabs", children: (0, jsx_runtime_1.jsxs)(tabview_1.TabView, { className: "a-inset-0 a-absolute", scrollable: true, children: [selectedComponent && ((0, jsx_runtime_1.jsxs)(tabview_1.TabPanel, { header: "Fields", children: [(0, jsx_runtime_1.jsx)(ComponentInfo_1.ComponentInfo, { component: selectedComponent }), (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: selectedComponent.fields })] })), selectedComponent && ((0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "GraphQL", style: { height: "100%" }, children: (0, jsx_runtime_1.jsx)(GraphQL_1.GraphQL, { component: selectedComponent }) })), (0, jsx_runtime_1.jsxs)(tabview_1.TabPanel, { header: "Page", children: [page && (0, jsx_runtime_1.jsx)(PageInfo_1.PageInfo, { page: page }), page && (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: page.fields })] }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Dictionary", children: (0, jsx_runtime_1.jsx)(DictionaryEditor_1.DictionaryEditor, { dictionary: dictionary }) }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Debug", children: (0, jsx_runtime_1.jsx)(Debug_1.Debug, { component: selectedComponent, page: page }) })] }) })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 55, className: "alpaca-overflow-scroll alpaca-editor-content", children: (0, jsx_runtime_1.jsx)("div", { onDragEndCapture: () => setDragObject(undefined), className: "alpaca-editor-container", children: children }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 20, children: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", className: "alpaca-editor", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)(EditHistory_1.EditHistory, { operations: editData === null || editData === void 0 ? void 0 : editData.operations }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)(AiTerminal_1.AiTerminal, { selection: selection, requestRefresh: requestRefresh }) })] }) })] })] })] })] }));
482
+ } })) }), (0, jsx_runtime_1.jsxs)(blockui_1.BlockUI, { blocked: uiBlocked, template: spinner, children: [(0, jsx_runtime_1.jsx)(menubar_1.Menubar, { model: menuItems, end: endContent }), (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 30, className: "alpaca-overflow-scroll", children: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 30, className: "a-overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute a-overflow-y-auto", children: (0, jsx_runtime_1.jsx)(ComponentTree_1.ComponentTree, { page: page, selection: selection }) }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "alpaca-editor-tabs", children: (0, jsx_runtime_1.jsxs)(tabview_1.TabView, { className: "a-inset-0 a-absolute", scrollable: true, children: [selectedComponent && ((0, jsx_runtime_1.jsxs)(tabview_1.TabPanel, { header: "Fields", children: [(0, jsx_runtime_1.jsx)(ComponentInfo_1.ComponentInfo, { component: selectedComponent }), (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: selectedComponent.fields })] })), selectedComponent && ((0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "GraphQL", style: { height: "100%" }, children: (0, jsx_runtime_1.jsx)(GraphQL_1.GraphQL, { component: selectedComponent }) })), (0, jsx_runtime_1.jsxs)(tabview_1.TabPanel, { header: "Page", children: [page && (0, jsx_runtime_1.jsx)(PageInfo_1.PageInfo, { page: page }), page && (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: page.fields })] }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Dictionary", children: (0, jsx_runtime_1.jsx)(DictionaryEditor_1.DictionaryEditor, { dictionary: dictionary }) }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Debug", children: (0, jsx_runtime_1.jsx)(Debug_1.Debug, { component: selectedComponent, page: page }) })] }) })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 55, className: "alpaca-overflow-scroll alpaca-editor-content", children: (0, jsx_runtime_1.jsx)("div", { onDragEndCapture: () => setDragObject(undefined), className: "alpaca-editor-container", children: children }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 15, children: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", className: "alpaca-editor", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)(EditHistory_1.EditHistory, { operations: editData === null || editData === void 0 ? void 0 : editData.operations }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)(AiTerminal_1.AiTerminal, { selection: selection, requestRefresh: requestRefresh }) })] }) })] })] })] })] }));
459
483
  }
460
484
  exports.EditorClient = EditorClient;
@@ -3,13 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.FieldList = void 0;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const __1 = require("..");
6
7
  const inputtext_1 = require("primereact/inputtext");
7
8
  const checkbox_1 = require("primereact/checkbox");
8
9
  const SingleLineText_1 = require("./fieldTypes/SingleLineText");
9
10
  const RichTextEditor_1 = require("./fieldTypes/RichTextEditor");
10
11
  function FieldList({ fields }) {
11
- if (!fields)
12
- return;
12
+ const editContext = (0, __1.useEditContext)();
13
+ if (!editContext)
14
+ if (!fields)
15
+ return;
13
16
  if (!Array.isArray(fields))
14
17
  fields = Object.values(fields);
15
18
  const sections = fields.reduce((acc, value) => {
@@ -23,11 +26,13 @@ function FieldList({ fields }) {
23
26
  }, {});
24
27
  const sectionList = Object.values(sections);
25
28
  sectionList.sort((a, b) => b[0].sortOrder - a[0].sortOrder);
26
- return ((0, jsx_runtime_1.jsx)("div", { className: "a-p-1", children: Object.keys(sections).map((section) => ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "alpaca-fields-section-headline", children: section }), getSectionFields(sections[section])] }, section))) }));
29
+ return ((0, jsx_runtime_1.jsx)("div", { className: "a-p-1", children: Object.keys(sections).map((section) => ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "alpaca-fields-section-headline", children: section }), getSectionFields(sections[section], editContext)] }, section))) }));
27
30
  }
28
31
  exports.FieldList = FieldList;
29
- function getSectionFields(fields) {
30
- return fields.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)));
32
+ function getSectionFields(fields, editContext) {
33
+ return fields
34
+ .map((field) => editContext.getLiveField(field))
35
+ .map((field) => ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "alpaca-field-label", children: field.name }), !field.containsFallbackValue ? ((0, jsx_runtime_1.jsx)("button", { className: "a-text-xs a-p-0 a-m-1", children: "Reset " })) : ((0, jsx_runtime_1.jsx)("button", { children: "Fallback" })), (0, jsx_runtime_1.jsx)("div", { children: getFieldEditor(field) })] }, field.id)));
31
36
  }
32
37
  function getFieldEditor(field) {
33
38
  switch (field.type) {
@@ -79,12 +79,11 @@ function GraphQL({ component }) {
79
79
  type: "jsonValue",
80
80
  };
81
81
  const prettyQuery = (0, graphql_formatter_1.format)(query);
82
- console.log(query);
83
- console.log(prettyQuery);
84
82
  setQuery(prettyQuery);
85
83
  editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, prettyQuery, false);
86
84
  setShowSpinner(true);
85
+ editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
87
86
  }
88
- return ((0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", style: { height: "100%" }, children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 50, className: "a-relative", children: (0, jsx_runtime_1.jsxs)("div", { className: "a-absolute a-inset-0 a-flex", children: [(0, jsx_runtime_1.jsx)(inputtextarea_1.InputTextarea, { value: query, onChange: (e) => setQuery(e.target.value), className: "a-flex-1", style: { height: "100%" } }), (0, jsx_runtime_1.jsx)(button_1.Button, { icon: "pi pi-refresh" + (showSpinner ? " pi-spin" : ""), onClick: refresh, disabled: showSpinner })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "alpaca-editor-tabs", children: (0, jsx_runtime_1.jsxs)(tabview_1.TabView, { className: "a-inset-0 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 }) }) })] }) })] }));
87
+ return ((0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", style: { height: "100%" }, children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 50, className: "a-relative", children: (0, jsx_runtime_1.jsxs)("div", { className: "a-absolute a-inset-0 a-flex", children: [(0, jsx_runtime_1.jsx)(inputtextarea_1.InputTextarea, { value: query, onChange: (e) => setQuery(e.target.value), className: "a-flex-1", style: { height: "100%" } }), (0, jsx_runtime_1.jsx)(button_1.Button, { icon: "pi pi-refresh" + (showSpinner ? " pi-spin" : ""), onClick: refresh, disabled: showSpinner })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "alpaca-editor-tabs", children: (0, jsx_runtime_1.jsxs)(tabview_1.TabView, { className: "a-inset-0 a-absolute", children: [(0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Data", style: { height: "100%" }, className: "a-relative", children: (0, jsx_runtime_1.jsx)("div", { className: "a-m-1", children: Object.values(fieldsjsonValues).map((x) => renderItem(x)) }) }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "JSON", className: "a-relative", style: { height: "100%" }, children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute a-overflow-y-auto", children: (0, jsx_runtime_1.jsx)(react_json_pretty_1.default, { data: component.graphql }) }) })] }) })] }));
89
88
  }
90
89
  exports.GraphQL = GraphQL;
@@ -14,13 +14,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.MediaSelector = void 0;
16
16
  const jsx_runtime_1 = require("react/jsx-runtime");
17
- const sidebar_1 = require("primereact/sidebar");
18
17
  const ContentTree_1 = __importDefault(require("./ContentTree"));
19
18
  const splitter_1 = require("primereact/splitter");
20
19
  const react_1 = require("react");
21
20
  const contentService_1 = require("./contentService");
22
21
  const editContext_1 = require("./editContext");
23
22
  const button_1 = require("primereact/button");
23
+ const dialog_1 = require("primereact/dialog");
24
24
  const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
25
25
  const [selectedFolderId, setSelectedFolderId] = (0, react_1.useState)();
26
26
  const [images, setImages] = (0, react_1.useState)();
@@ -43,17 +43,17 @@ const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
43
43
  }
44
44
  });
45
45
  }
46
- return ((0, jsx_runtime_1.jsx)(sidebar_1.Sidebar, { style: { width: "60%" }, position: "right", visible: visible, onHide: onHide, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col h-full", children: [(0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { className: "flex-1 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) => {
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
47
  if (selection.length)
48
48
  setSelectedFolderId(selection[0]);
49
49
  else
50
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 relative", children: (0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-3 gap-2 absolute inset-0", children: images === null || images === void 0 ? void 0 : images.map((t) => {
52
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col justify-between hover:shadow-md cursor-pointer p-1", onDoubleClick: () => {
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: () => {
53
53
  onMediaSelected(t.id);
54
54
  onHide();
55
- }, onClick: () => setSelectedImage(t), children: [(0, jsx_runtime_1.jsx)("img", { src: t.imageUrl }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs break-all", children: t.name })] }));
56
- }) }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-end gap-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: () => {
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
57
  onMediaSelected(selectedImage.id);
58
58
  onHide();
59
59
  }, children: "Select" })] })] }) }));
package/dist/editor.css CHANGED
@@ -32,15 +32,6 @@
32
32
  margin-bottom: 0.5rem;
33
33
  }
34
34
 
35
- .a-my-8 {
36
- margin-top: 2rem;
37
- margin-bottom: 2rem;
38
- }
39
-
40
- .a-mb-8 {
41
- margin-bottom: 2rem;
42
- }
43
-
44
35
  .a-ml-1 {
45
36
  margin-left: 0.25rem;
46
37
  }
@@ -49,6 +40,10 @@
49
40
  margin-left: 0.75rem;
50
41
  }
51
42
 
43
+ .a-mt-3 {
44
+ margin-top: 0.75rem;
45
+ }
46
+
52
47
  .a-flex {
53
48
  display: flex;
54
49
  }
@@ -89,6 +84,14 @@
89
84
  cursor: move;
90
85
  }
91
86
 
87
+ .a-cursor-pointer {
88
+ cursor: pointer;
89
+ }
90
+
91
+ .a-grid-cols-3 {
92
+ grid-template-columns: repeat(3, minmax(0, 1fr));
93
+ }
94
+
92
95
  .a-grid-cols-4 {
93
96
  grid-template-columns: repeat(4, minmax(0, 1fr));
94
97
  }
@@ -101,6 +104,10 @@
101
104
  align-items: center;
102
105
  }
103
106
 
107
+ .a-justify-end {
108
+ justify-content: flex-end;
109
+ }
110
+
104
111
  .a-justify-between {
105
112
  justify-content: space-between;
106
113
  }
@@ -113,6 +120,10 @@
113
120
  gap: 0.5rem;
114
121
  }
115
122
 
123
+ .a-gap-3 {
124
+ gap: 0.75rem;
125
+ }
126
+
116
127
  .a-space-x-4 > :not([hidden]) ~ :not([hidden]) {
117
128
  --tw-space-x-reverse: 0;
118
129
  margin-right: calc(1rem * var(--tw-space-x-reverse));
@@ -131,6 +142,10 @@
131
142
  overflow-x: hidden;
132
143
  }
133
144
 
145
+ .a-break-all {
146
+ word-break: break-all;
147
+ }
148
+
134
149
  .a-rounded-none {
135
150
  border-radius: 0px;
136
151
  }
@@ -206,6 +221,10 @@
206
221
  padding: 0.5rem;
207
222
  }
208
223
 
224
+ .a-p-3 {
225
+ padding: 0.75rem;
226
+ }
227
+
209
228
  .a-p-4 {
210
229
  padding: 1rem;
211
230
  }
@@ -421,6 +440,26 @@ div.p-tree .p-treenode-droppoint {
421
440
  opacity: 0;
422
441
  }
423
442
 
443
+ .p-dropdown-label.p-inputtext {
444
+ padding: 8px;
445
+ }
446
+
447
+ div.p-tabview .p-tabview-nav li .p-tabview-nav-link {
448
+ padding: 1rem;
449
+ }
450
+
451
+ .p-sidebar-header.p-sidebar-custom-header {
452
+ justify-content: space-between;
453
+ font-weight: bold;
454
+ font-size: 18px;
455
+ }
456
+
424
457
  .hover\:a-underline:hover {
425
458
  text-decoration-line: underline;
459
+ }
460
+
461
+ .hover\:a-shadow-md:hover {
462
+ --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
463
+ --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
464
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
426
465
  }
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ export function ErrorFallback() {
4
+ // Call resetErrorBoundary() to reset the error boundary and retry the render.
5
+ return (_jsx("div", { role: "alert", children: _jsx("p", { children: "Something went wrong." }) }));
6
+ }
7
+ export function ErrorFallbackWithDetails({ error }) {
8
+ // Call resetErrorBoundary() to reset the error boundary and retry the render.
9
+ return (_jsxs("div", { role: "alert", children: [_jsx("p", { children: "Something went wrong:" }), _jsxs("pre", { style: { color: "red" }, children: [error.message, " ", error.stack] })] }));
10
+ }
@@ -17,6 +17,11 @@ export function Link(_a) {
17
17
  var { field, children } = _a, props = __rest(_a, ["field", "children"]);
18
18
  if (!field)
19
19
  return;
20
+ if (field.jsonValue) {
21
+ field = field.jsonValue;
22
+ }
23
+ if (!field.value)
24
+ return;
20
25
  const editing = (_b = useAlpacaContext().pageContext) === null || _b === void 0 ? void 0 : _b.pageEditing;
21
26
  if (editing)
22
27
  return (_jsx(LinkEditor, Object.assign({ field: field, children: children }, props)));
@@ -31,6 +31,9 @@ export const Picture = (_a) => {
31
31
  var { field, imageParams, sources, defaultVariant, renderJsonLinkedData } = _a, otherProps = __rest(_a, ["field", "imageParams", "sources", "defaultVariant", "renderJsonLinkedData"]);
32
32
  if (!field)
33
33
  return null;
34
+ if (field.jsonValue) {
35
+ field = field.jsonValue;
36
+ }
34
37
  if ((_b = useAlpacaContext().pageContext) === null || _b === void 0 ? void 0 : _b.pageEditing)
35
38
  return _jsx(PictureEditor, Object.assign({ field: field }, otherProps));
36
39
  const variants = (_c = field.value) === null || _c === void 0 ? void 0 : _c.variants;
@@ -27,12 +27,15 @@ export const PictureEditor = (_a) => {
27
27
  return;
28
28
  function imageSelected(imageId) {
29
29
  const value = (field === null || field === void 0 ? void 0 : field.value) || {};
30
- //value.variants[0].mediaId = imageId;
30
+ if (!selectedVariant)
31
+ return;
32
+ selectedVariant.mediaId = imageId;
31
33
  console.log(imageId);
34
+ console.log(JSON.stringify(value));
32
35
  if (field)
33
36
  editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, JSON.stringify(value), false);
34
37
  }
35
38
  console.log(JSON.stringify(field));
36
- return (_jsxs(_Fragment, { children: [_jsx(MediaSelector, { visible: mediaSelectorVisible, onHide: () => setMediaSelectorVisible(false), onMediaSelected: imageSelected }), _jsx(Dialog, { header: "Header", 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" +
37
- (selectedVariant == variant ? " a-shadow-xl " : ""), children: [variant.src && _jsx("img", { src: variant.src }), _jsx("div", { className: "a-absolute " })] }, 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 })] }))] }));
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 })] }))] }));
38
41
  };