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

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