@alpaca-headless/alpaca-headless-nextjs 0.0.3 → 1.0.13

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 (143) hide show
  1. package/dist/cjs/alpacaContext.js +7 -6
  2. package/dist/cjs/components/Image.js +36 -0
  3. package/dist/cjs/components/Link.js +22 -0
  4. package/dist/cjs/components/Picture.js +119 -0
  5. package/dist/cjs/components/PictureEditor.js +43 -0
  6. package/dist/cjs/components/Placeholder.js +43 -5
  7. package/dist/cjs/components/RichText.js +44 -0
  8. package/dist/cjs/components/RichTextEditor.js +82 -0
  9. package/dist/cjs/components/Slot.js +8 -0
  10. package/dist/cjs/components/Text.js +24 -4
  11. package/dist/cjs/components/TextEditor.js +68 -0
  12. package/dist/cjs/components/Translate.js +14 -0
  13. package/dist/cjs/components/index.js +5 -0
  14. package/dist/cjs/editor/AiTerminal.js +150 -0
  15. package/dist/cjs/editor/ComponentInfo.js +14 -0
  16. package/dist/cjs/editor/ComponentPalette.js +78 -0
  17. package/dist/cjs/editor/ComponentTree.js +200 -0
  18. package/dist/cjs/editor/ContentTree.js +120 -0
  19. package/dist/cjs/editor/Debug.js +16 -0
  20. package/dist/cjs/editor/DictionaryEditor.js +35 -0
  21. package/dist/cjs/editor/EditFrame.js +61 -0
  22. package/dist/cjs/editor/EditHistory.js +30 -0
  23. package/dist/cjs/editor/Editor.js +27 -0
  24. package/dist/cjs/editor/EditorClient.js +457 -0
  25. package/dist/cjs/editor/EditorClientHost.js +37 -0
  26. package/dist/cjs/editor/FieldList.js +59 -0
  27. package/dist/cjs/editor/GraphQL.js +90 -0
  28. package/dist/cjs/editor/LanguageSelector.js +21 -0
  29. package/dist/cjs/editor/MediaSelector.js +61 -0
  30. package/dist/cjs/editor/PageInfo.js +12 -0
  31. package/dist/cjs/editor/PlaceholderDropZone.js +54 -0
  32. package/dist/cjs/editor/PlaceholderDropZoneHost.js +37 -0
  33. package/dist/cjs/editor/Terminal.js +51 -0
  34. package/dist/cjs/editor/TranslateEditor.js +25 -0
  35. package/dist/cjs/editor/VersionSelector.js +21 -0
  36. package/dist/cjs/editor/componentTreeHelper.js +18 -0
  37. package/dist/cjs/editor/contentService.js +38 -0
  38. package/dist/cjs/editor/editContext.js +35 -0
  39. package/dist/cjs/editor/editService.js +150 -0
  40. package/dist/cjs/editor/fieldTypes/RichTextEditor.js +19 -0
  41. package/dist/cjs/editor/fieldTypes/SingleLineText.js +17 -0
  42. package/dist/cjs/editor/index.js +18 -0
  43. package/dist/cjs/graphQLTypes.js +2 -0
  44. package/dist/cjs/index.js +17 -0
  45. package/dist/cjs/loadRouteData.js +102 -38
  46. package/dist/cjs/mediaProtection.js +56 -0
  47. package/dist/editor.css +120 -0
  48. package/dist/esm/alpacaContext.js +6 -4
  49. package/dist/esm/components/Image.js +32 -0
  50. package/dist/esm/components/Link.js +18 -0
  51. package/dist/esm/components/Picture.js +115 -0
  52. package/dist/esm/components/PictureEditor.js +39 -0
  53. package/dist/esm/components/Placeholder.js +41 -6
  54. package/dist/esm/components/RichText.js +37 -0
  55. package/dist/esm/components/RichTextEditor.js +55 -0
  56. package/dist/esm/components/Slot.js +5 -0
  57. package/dist/esm/components/Text.js +24 -4
  58. package/dist/esm/components/TextEditor.js +41 -0
  59. package/dist/esm/components/Translate.js +10 -0
  60. package/dist/esm/components/index.js +5 -0
  61. package/dist/esm/editor/AiTerminal.js +146 -0
  62. package/dist/esm/editor/ComponentInfo.js +10 -0
  63. package/dist/esm/editor/ComponentPalette.js +71 -0
  64. package/dist/esm/editor/ComponentTree.js +196 -0
  65. package/dist/esm/editor/ContentTree.js +117 -0
  66. package/dist/esm/editor/Debug.js +9 -0
  67. package/dist/esm/editor/DictionaryEditor.js +31 -0
  68. package/dist/esm/editor/EditFrame.js +57 -0
  69. package/dist/esm/editor/EditHistory.js +26 -0
  70. package/dist/esm/editor/Editor.js +23 -0
  71. package/dist/esm/editor/EditorClient.js +450 -0
  72. package/dist/esm/editor/EditorClientHost.js +7 -0
  73. package/dist/esm/editor/FieldList.js +55 -0
  74. package/dist/esm/editor/GraphQL.js +83 -0
  75. package/dist/esm/editor/LanguageSelector.js +17 -0
  76. package/dist/esm/editor/MediaSelector.js +54 -0
  77. package/dist/esm/editor/PageInfo.js +8 -0
  78. package/dist/esm/editor/PlaceholderDropZone.js +50 -0
  79. package/dist/esm/editor/PlaceholderDropZoneHost.js +7 -0
  80. package/dist/esm/editor/Terminal.js +47 -0
  81. package/dist/esm/editor/TranslateEditor.js +21 -0
  82. package/dist/esm/editor/VersionSelector.js +17 -0
  83. package/dist/esm/editor/componentTreeHelper.js +14 -0
  84. package/dist/esm/editor/contentService.js +31 -0
  85. package/dist/esm/editor/editContext.js +5 -0
  86. package/dist/esm/editor/editService.js +139 -0
  87. package/dist/esm/editor/fieldTypes/RichTextEditor.js +15 -0
  88. package/dist/esm/editor/fieldTypes/SingleLineText.js +13 -0
  89. package/dist/esm/editor/index.js +2 -0
  90. package/dist/esm/graphQLTypes.js +1 -0
  91. package/dist/esm/index.js +4 -0
  92. package/dist/esm/loadRouteData.js +102 -38
  93. package/dist/esm/mediaProtection.js +49 -0
  94. package/next-env.d.ts +5 -5
  95. package/package.json +51 -39
  96. package/types/alpacaContext.d.ts +20 -7
  97. package/types/components/Image.d.ts +10 -0
  98. package/types/components/Link.d.ts +6 -0
  99. package/types/components/Picture.d.ts +20 -0
  100. package/types/components/PictureEditor.d.ts +3 -0
  101. package/types/components/RichText.d.ts +7 -0
  102. package/types/components/RichTextEditor.d.ts +296 -0
  103. package/types/components/Slot.d.ts +4 -0
  104. package/types/components/Text.d.ts +3 -2
  105. package/types/components/TextEditor.d.ts +296 -0
  106. package/types/components/Translate.d.ts +3 -0
  107. package/types/components/index.d.ts +5 -0
  108. package/types/editor/AiTerminal.d.ts +4 -0
  109. package/types/editor/ComponentInfo.d.ts +4 -0
  110. package/types/editor/ComponentPalette.d.ts +7 -0
  111. package/types/editor/ComponentTree.d.ts +5 -0
  112. package/types/editor/ContentTree.d.ts +13 -0
  113. package/types/editor/Debug.d.ts +6 -0
  114. package/types/editor/DictionaryEditor.d.ts +3 -0
  115. package/types/editor/EditFrame.d.ts +6 -0
  116. package/types/editor/EditHistory.d.ts +4 -0
  117. package/types/editor/Editor.d.ts +6 -0
  118. package/types/editor/EditorClient.d.ts +9 -0
  119. package/types/editor/EditorClientHost.d.ts +8 -0
  120. package/types/editor/FieldList.d.ts +4 -0
  121. package/types/editor/GraphQL.d.ts +5 -0
  122. package/types/editor/LanguageSelector.d.ts +5 -0
  123. package/types/editor/MediaSelector.d.ts +5 -0
  124. package/types/editor/PageInfo.d.ts +4 -0
  125. package/types/editor/PlaceholderDropZone.d.ts +6 -0
  126. package/types/editor/PlaceholderDropZoneHost.d.ts +6 -0
  127. package/types/editor/Terminal.d.ts +4 -0
  128. package/types/editor/TranslateEditor.d.ts +3 -0
  129. package/types/editor/VersionSelector.d.ts +5 -0
  130. package/types/editor/componentTreeHelper.d.ts +2 -0
  131. package/types/editor/contentService.d.ts +14 -0
  132. package/types/editor/editContext.d.ts +81 -0
  133. package/types/editor/editService.d.ts +12 -0
  134. package/types/editor/fieldTypes/RichTextEditor.d.ts +4 -0
  135. package/types/editor/fieldTypes/SingleLineText.d.ts +4 -0
  136. package/types/editor/index.d.ts +2 -0
  137. package/types/fieldTypes.d.ts +63 -1
  138. package/types/graphQLTypes.d.ts +24 -0
  139. package/types/index.d.ts +4 -0
  140. package/types/layoutData.d.ts +56 -1
  141. package/types/loadRouteData.d.ts +34 -2
  142. package/types/mediaProtection.d.ts +2 -0
  143. package/types/AlpacaHeadless.d.ts +0 -37
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.FieldList = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const inputtext_1 = require("primereact/inputtext");
7
+ const checkbox_1 = require("primereact/checkbox");
8
+ const SingleLineText_1 = require("./fieldTypes/SingleLineText");
9
+ const RichTextEditor_1 = require("./fieldTypes/RichTextEditor");
10
+ function FieldList({ fields }) {
11
+ if (!fields)
12
+ return;
13
+ if (!Array.isArray(fields))
14
+ fields = Object.values(fields);
15
+ const sections = fields.reduce((acc, value) => {
16
+ // Group initialization
17
+ if (!acc[value.section || "Default"]) {
18
+ acc[value.section || "Default"] = [];
19
+ }
20
+ // Grouping
21
+ acc[value.section || "Default"].push(value);
22
+ return acc;
23
+ }, {});
24
+ const sectionList = Object.values(sections);
25
+ sectionList.sort((a, b) => b[0].sortOrder - a[0].sortOrder);
26
+ return ((0, jsx_runtime_1.jsx)("div", { className: "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))) }));
27
+ }
28
+ 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: "text-xs p-0 m-1", children: "Reset " })) : ((0, jsx_runtime_1.jsx)("button", { children: "Fallback" })), (0, jsx_runtime_1.jsx)("div", { children: getFieldEditor(field) })] }, field.id)));
31
+ }
32
+ function getFieldEditor(field) {
33
+ switch (field.type) {
34
+ case "checkbox":
35
+ return checkbox(field);
36
+ case "picture":
37
+ return picture(field);
38
+ case "image":
39
+ return image(field);
40
+ case "rich text":
41
+ return (0, jsx_runtime_1.jsx)(RichTextEditor_1.RichTextEditor, { field: field });
42
+ default:
43
+ return (0, jsx_runtime_1.jsx)(SingleLineText_1.SingleLineText, { field: field });
44
+ }
45
+ }
46
+ function checkbox(field) {
47
+ return (0, jsx_runtime_1.jsx)(checkbox_1.Checkbox, { checked: field.value === "1" });
48
+ }
49
+ // function singleLineText(field: Field) {
50
+ // return <InputText value={field.value as string} />;
51
+ // }
52
+ function picture(field) {
53
+ var _a, _b;
54
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("label", { className: "alpaca-minor-label", children: "Alt" }), (0, jsx_runtime_1.jsx)(inputtext_1.InputText, { value: (_b = (_a = field.value) === null || _a === void 0 ? void 0 : _a.alt) !== null && _b !== void 0 ? _b : "" })] }));
55
+ }
56
+ function image(field) {
57
+ var _a, _b;
58
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("label", { className: "alpaca-minor-label", children: "Alt" }), (0, jsx_runtime_1.jsx)(inputtext_1.InputText, { value: (_b = (_a = field.value) === null || _a === void 0 ? void 0 : _a.altText) !== null && _b !== void 0 ? _b : "" })] }));
59
+ }
@@ -0,0 +1,90 @@
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.GraphQL = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const __1 = require("..");
9
+ const react_json_pretty_1 = __importDefault(require("react-json-pretty"));
10
+ require("react-json-pretty/themes/monikai.css");
11
+ const tabview_1 = require("primereact/tabview");
12
+ const FieldList_1 = require("./FieldList");
13
+ const splitter_1 = require("primereact/splitter");
14
+ const inputtextarea_1 = require("primereact/inputtextarea");
15
+ const button_1 = require("primereact/button");
16
+ const react_1 = require("react");
17
+ const graphql_formatter_1 = require("graphql-formatter");
18
+ function GraphQL({ component }) {
19
+ const editContext = (0, __1.useEditContext)();
20
+ const [query, setQuery] = (0, react_1.useState)("");
21
+ const [showSpinner, setShowSpinner] = (0, react_1.useState)(false);
22
+ if (!(component === null || component === void 0 ? void 0 : component.graphql))
23
+ return;
24
+ (0, react_1.useEffect)(() => {
25
+ setQuery(component.graphql_query);
26
+ }, [component.graphql_query]);
27
+ (0, react_1.useEffect)(() => {
28
+ setShowSpinner(false);
29
+ }, [editContext === null || editContext === void 0 ? void 0 : editContext.refreshCompletedFlag]);
30
+ function findFields(json) {
31
+ let result = {};
32
+ for (let key in json) {
33
+ if (typeof json[key] === "object" && json[key] !== null) {
34
+ let subResult = findFields(json[key]);
35
+ for (let subKey in subResult) {
36
+ if (result[subKey]) {
37
+ result[subKey] = result[subKey].concat(subResult[subKey]);
38
+ }
39
+ else {
40
+ result[subKey] = subResult[subKey];
41
+ }
42
+ }
43
+ }
44
+ if (key === "jsonValue") {
45
+ let groupKey = `${json[key].itemId}_${json[key].language}_${json[key].version}`;
46
+ if (result[groupKey]) {
47
+ result[groupKey].push(json[key]);
48
+ }
49
+ else {
50
+ result[groupKey] = [json[key]];
51
+ }
52
+ }
53
+ }
54
+ return result;
55
+ }
56
+ const fieldsjsonValues = findFields(component.graphql);
57
+ function renderItem(fields) {
58
+ const first = fields[0];
59
+ return ((0, jsx_runtime_1.jsxs)("div", { children: ["Item: ", first.path, " ", first.id, " ", first.language, " ", first.version, (0, jsx_runtime_1.jsx)(FieldList_1.FieldList, { fields: fields })] }, first.path + first.id + first.language + first.version));
60
+ }
61
+ function refresh() {
62
+ var _a, _b;
63
+ if (!component)
64
+ return;
65
+ let language = ((_a = component.hostingPageItem) === null || _a === void 0 ? void 0 : _a.language) || "en";
66
+ let version = ((_b = component.hostingPageItem) === null || _b === void 0 ? void 0 : _b.version) || 0;
67
+ if (component.linkedComponentItem) {
68
+ language = component.linkedComponentItem.language;
69
+ version = component.linkedComponentItem.version;
70
+ }
71
+ const field = {
72
+ name: "_GraphQL",
73
+ itemId: component === null || component === void 0 ? void 0 : component.id,
74
+ language: language,
75
+ version: version,
76
+ path: "graphql",
77
+ id: "3622F861-ECA9-45D7-8DA7-2CDA35235002",
78
+ value: query,
79
+ type: "jsonValue",
80
+ };
81
+ const prettyQuery = (0, graphql_formatter_1.format)(query);
82
+ console.log(query);
83
+ console.log(prettyQuery);
84
+ setQuery(prettyQuery);
85
+ editContext === null || editContext === void 0 ? void 0 : editContext.editField(field, prettyQuery, false);
86
+ setShowSpinner(true);
87
+ }
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: "relative", children: (0, jsx_runtime_1.jsxs)("div", { className: "absolute inset-0 flex", children: [(0, jsx_runtime_1.jsx)(inputtextarea_1.InputTextarea, { value: query, onChange: (e) => setQuery(e.target.value), className: "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: "inset-0 absolute", children: [(0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "Data", style: { height: "100%" }, className: "relative", children: (0, jsx_runtime_1.jsx)("div", { className: "m-1", children: Object.values(fieldsjsonValues).map((x) => renderItem(x)) }) }), (0, jsx_runtime_1.jsx)(tabview_1.TabPanel, { header: "JSON", className: "relative", style: { height: "100%" }, children: (0, jsx_runtime_1.jsx)("div", { className: "inset-0 absolute overflow-y-auto", children: (0, jsx_runtime_1.jsx)(react_json_pretty_1.default, { data: component.graphql }) }) })] }) })] }));
89
+ }
90
+ exports.GraphQL = GraphQL;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LanguageSelector = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const dropdown_1 = require("primereact/dropdown");
7
+ function LanguageSelector({ page, onLanguageSelected, }) {
8
+ if (page == null)
9
+ return;
10
+ const selectedCountryTemplate = (option, props) => {
11
+ if (option) {
12
+ return (0, jsx_runtime_1.jsx)("div", { children: option.name });
13
+ }
14
+ return (0, jsx_runtime_1.jsx)("span", { children: props.placeholder });
15
+ };
16
+ const countryOptionTemplate = (option) => {
17
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [option.name, " (", option.versions, ")"] }));
18
+ };
19
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { value: page.language, onChange: (e) => onLanguageSelected(e.value), options: page.languages, optionValue: "languageCode", optionLabel: "name", placeholder: "Select a language", filter: true, valueTemplate: selectedCountryTemplate, itemTemplate: countryOptionTemplate }) }));
20
+ }
21
+ exports.LanguageSelector = LanguageSelector;
@@ -0,0 +1,61 @@
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.MediaSelector = void 0;
16
+ const jsx_runtime_1 = require("react/jsx-runtime");
17
+ const sidebar_1 = require("primereact/sidebar");
18
+ const ContentTree_1 = __importDefault(require("./ContentTree"));
19
+ const splitter_1 = require("primereact/splitter");
20
+ const react_1 = require("react");
21
+ const contentService_1 = require("./contentService");
22
+ const editContext_1 = require("./editContext");
23
+ const button_1 = require("primereact/button");
24
+ const MediaSelector = ({ visible, onHide, onMediaSelected, }) => {
25
+ const [selectedFolderId, setSelectedFolderId] = (0, react_1.useState)();
26
+ const [images, setImages] = (0, react_1.useState)();
27
+ const [selectedImage, setSelectedImage] = (0, react_1.useState)();
28
+ const selection = selectedFolderId ? [selectedFolderId] : [];
29
+ const editContext = (0, editContext_1.useEditContext)();
30
+ (0, react_1.useEffect)(() => {
31
+ loadThumbnails(selectedFolderId);
32
+ }, [selectedFolderId]);
33
+ function loadThumbnails(selectedFolderId) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ if (!selectedFolderId)
36
+ setImages([]);
37
+ else {
38
+ const children = yield (0, contentService_1.getChildren)(selectedFolderId, editContext.sessionId, [
39
+ "C97BA923-8009-4858-BDD5-D8BE5FCCECF7",
40
+ "F1828A2C-7E5D-4BBD-98CA-320474871548",
41
+ ]);
42
+ setImages(children);
43
+ }
44
+ });
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) => {
47
+ if (selection.length)
48
+ setSelectedFolderId(selection[0]);
49
+ else
50
+ setSelectedFolderId(undefined);
51
+ } }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { children: selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.name })] }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "alpaca-overflow-scroll 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: () => {
53
+ onMediaSelected(t.id);
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: () => {
57
+ onMediaSelected(selectedImage.id);
58
+ onHide();
59
+ }, children: "Select" })] })] }) }));
60
+ };
61
+ exports.MediaSelector = MediaSelector;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PageInfo = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ function PageInfo({ page }) {
7
+ var _a;
8
+ if (!(page === null || page === void 0 ? void 0 : page.fields))
9
+ return;
10
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "p-1", children: [(0, jsx_runtime_1.jsx)("h2", { className: "text-xl font-bold my-2", children: page.path }), (0, jsx_runtime_1.jsxs)("div", { className: "text-xs", children: ["ID: ", page.id] }), (0, jsx_runtime_1.jsxs)("div", { className: "text-xs", children: ["Language: ", page.language] }), (0, jsx_runtime_1.jsxs)("div", { className: "text-xs", children: ["Version: ", page.version] }), page.translations && ((0, jsx_runtime_1.jsxs)("div", { className: "text-xs", children: ["Languages: ", (_a = page.translations) === null || _a === void 0 ? void 0 : _a.join(", ")] }))] }));
11
+ }
12
+ exports.PageInfo = PageInfo;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PlaceholderDropZone = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const progressbar_1 = require("primereact/progressbar");
8
+ const __1 = require("..");
9
+ function PlaceholderDropZone({ placeholder, index, parentName, }) {
10
+ const [isInserting, setIsInserting] = (0, react_1.useState)(false);
11
+ const [isSelected, setIsSelected] = (0, react_1.useState)(false);
12
+ const editContext = (0, __1.useEditContext)();
13
+ if (!editContext)
14
+ return;
15
+ const { selection, refreshCompletedFlag, dragObject, selectedForInsertion } = editContext;
16
+ function isAnyPlaceholderSelected() {
17
+ return selection.find((x) => x.indexOf("_") > 0) != undefined;
18
+ }
19
+ (0, react_1.useEffect)(() => {
20
+ setIsInserting(false);
21
+ }, [refreshCompletedFlag]);
22
+ (0, react_1.useEffect)(() => {
23
+ var _a;
24
+ const isSelectedForInsertion = editContext.selectedForInsertion.length > 0 &&
25
+ placeholder.key.indexOf(editContext.selectedForInsertion) >= 0;
26
+ 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;
28
+ const selected = (isSelectedForInsertion ||
29
+ (!isAnyPlaceholderSelected() && editContext.dragObject != undefined)) &&
30
+ (!editContext.dragObject ? true : false || dragObjectAllowed);
31
+ setIsSelected(selected);
32
+ }, [selection, dragObject, selectedForInsertion, editContext]);
33
+ function dragOver(ev) {
34
+ var _a;
35
+ ev.dataTransfer.dropEffect =
36
+ ((_a = editContext === null || editContext === void 0 ? void 0 : editContext.dragObject) === null || _a === void 0 ? void 0 : _a.type) == "template" ? "copy" : "move";
37
+ ev.preventDefault();
38
+ }
39
+ function drop(ev) {
40
+ ev.preventDefault();
41
+ setIsInserting(true);
42
+ editContext.droppedInPlaceholder(placeholder.key, index);
43
+ }
44
+ if (isInserting)
45
+ return ((0, jsx_runtime_1.jsx)("div", { className: " bg-gray-200 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: "p-6 max-w-sm mx-auto bg-white rounded-xl shadow-md flex items-center space-x-4", children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "text-xl font-medium text-black", children: ["Placeholder ", parentName, " / ", placeholder.name, " ", index] }), (0, jsx_runtime_1.jsx)("p", { className: "text-gray-500", children: "You can add your components here." })] }) }) }));
53
+ }
54
+ exports.PlaceholderDropZone = PlaceholderDropZone;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ "use client";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.PlaceholderDropZoneHost = void 0;
31
+ const jsx_runtime_1 = require("react/jsx-runtime");
32
+ const dynamic_1 = __importDefault(require("next/dynamic"));
33
+ const PlaceholderDropZone = (0, dynamic_1.default)(() => Promise.resolve().then(() => __importStar(require("./PlaceholderDropZone"))).then((dnd) => dnd.PlaceholderDropZone), { ssr: false });
34
+ function PlaceholderDropZoneHost({ placeholder, index, parentName, }) {
35
+ return ((0, jsx_runtime_1.jsx)(PlaceholderDropZone, { placeholder: placeholder, index: index, parentName: parentName }));
36
+ }
37
+ exports.PlaceholderDropZoneHost = PlaceholderDropZoneHost;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Terminal = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const inputtextarea_1 = require("primereact/inputtextarea");
7
+ const react_1 = require("react");
8
+ function Terminal({ commandHandler, onReset, }) {
9
+ const [value, setValue] = (0, react_1.useState)("");
10
+ const [response, setResponse] = (0, react_1.useState)();
11
+ const [messages, setMessages] = (0, react_1.useState)([]);
12
+ const bottomRef = (0, react_1.useRef)(null);
13
+ const messageRef = (0, react_1.useRef)(messages);
14
+ (0, react_1.useEffect)(() => {
15
+ messageRef.current = messages;
16
+ }, [messages]);
17
+ const callback = (text, finished) => {
18
+ if (!finished)
19
+ setResponse(text);
20
+ else {
21
+ setResponse(undefined);
22
+ setMessages([...messageRef.current, { type: "response", text }]);
23
+ }
24
+ };
25
+ const handleKeyPress = (e) => {
26
+ if (e.key === "Enter" && !e.shiftKey) {
27
+ e.preventDefault(); // Prevent newline insertion
28
+ setMessages([...messages, { type: "command", text: value }]);
29
+ setValue("");
30
+ setResponse("...");
31
+ commandHandler(value, callback);
32
+ }
33
+ };
34
+ (0, react_1.useEffect)(() => {
35
+ var _a;
36
+ // 👇️ scroll to bottom every time messages change
37
+ (_a = bottomRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ behavior: "smooth" });
38
+ }, [messages, response]);
39
+ const getClasses = (m) => {
40
+ if (m.type === "response")
41
+ return "text-blue-500";
42
+ return "";
43
+ };
44
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col h-full", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-4 border-b 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: "overflow-y-auto h-full overflow-x-hidden 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: "flex", children: [(0, jsx_runtime_1.jsxs)("div", { className: "text-xs", children: [" ", (0, jsx_runtime_1.jsx)("i", { className: "pi pi-spin pi-spinner" })] }), (0, jsx_runtime_1.jsx)("div", { dangerouslySetInnerHTML: {
48
+ __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: "border-0 border-t-2 rounded-none", onKeyDown: handleKeyPress, onChange: (e) => setValue(e.target.value), rows: 5, cols: 30 })] }));
50
+ }
51
+ exports.Terminal = Terminal;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TranslateEditor = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const __1 = require("..");
8
+ function TranslateEditor({ text }) {
9
+ const context = (0, __1.useEditContext)();
10
+ if (!context || !context.dictionary)
11
+ return text;
12
+ const dictionary = context.dictionary;
13
+ (0, react_1.useEffect)(() => {
14
+ if (Object.keys(dictionary).indexOf(text) < 0 &&
15
+ context.unresolvedDictionaryKeys.indexOf(text) < 0) {
16
+ console.log("Pushing...");
17
+ context.setUnresolvedDictionaryKeys([
18
+ ...context.unresolvedDictionaryKeys,
19
+ text,
20
+ ]);
21
+ }
22
+ }, []);
23
+ return (dictionary[text] || (0, jsx_runtime_1.jsx)("span", { className: "p-1 ring-2 ring-red-500", children: text }));
24
+ }
25
+ exports.TranslateEditor = TranslateEditor;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.VersionSelector = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const dropdown_1 = require("primereact/dropdown");
7
+ function VersionSelector({ page, onVersionSelected, }) {
8
+ if (page == null)
9
+ return;
10
+ const selectedVersionTemplate = (option, props) => {
11
+ if (option) {
12
+ return (0, jsx_runtime_1.jsx)("div", { children: option.version });
13
+ }
14
+ return (0, jsx_runtime_1.jsx)("span", { children: props.placeholder });
15
+ };
16
+ const versionOptionTemplate = (option) => {
17
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [option.version, " ", (0, jsx_runtime_1.jsxs)("div", { className: "text-xs", children: ["(", option.updated.toString(), " by ", option.updatedBy, ")"] })] }));
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 }) }));
20
+ }
21
+ exports.VersionSelector = VersionSelector;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findComponent = void 0;
4
+ function findComponent(id, placeholders) {
5
+ for (const p of placeholders) {
6
+ for (const c of p.components) {
7
+ if (c.id == id) {
8
+ return c;
9
+ }
10
+ const match = findComponent(id, c.placeholders);
11
+ if (match) {
12
+ return match;
13
+ }
14
+ }
15
+ }
16
+ return null;
17
+ }
18
+ exports.findComponent = findComponent;
@@ -0,0 +1,38 @@
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.getChildren = void 0;
16
+ const universal_cookie_1 = __importDefault(require("universal-cookie"));
17
+ function getChildren(itemId, sessionId, templateIds = []) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ let url = "/alpaca/headless/editor/children?itemId=" +
20
+ itemId +
21
+ "&sessionId=" +
22
+ sessionId;
23
+ url = templateIds.reduce((u, t) => u + "&templateIds=" + t, url);
24
+ const response = yield fetch(url, {
25
+ method: "GET",
26
+ credentials: "include",
27
+ headers: {
28
+ "Content-Type": "application/json",
29
+ Cookie: new universal_cookie_1.default().getAll(),
30
+ },
31
+ next: {
32
+ revalidate: 0,
33
+ },
34
+ });
35
+ return yield response.json();
36
+ });
37
+ }
38
+ exports.getChildren = getChildren;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ "use client";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.useEditContext = exports.EditContextProvider = void 0;
28
+ const react_1 = __importStar(require("react"));
29
+ const EditContext = react_1.default.createContext(undefined);
30
+ exports.EditContextProvider = EditContext.Provider;
31
+ const useEditContext = () => (0, react_1.useContext)(EditContext);
32
+ exports.useEditContext = useEditContext;
33
+ // const TestContext = React.createContext<string | undefined>(undefined);
34
+ // export const TestContextProvider = TestContext.Provider;
35
+ // export const useTestContext = () => useContext(TestContext);