@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
@@ -1,72 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { TabPanel, TabView } from "primereact/tabview";
3
- import { useEditContext } from "..";
4
- import ContentTree from "./ContentTree";
5
- export function ComponentPalette({ selection, page, dragStart, dragEnd, }) {
6
- const editContext = useEditContext();
7
- if (!editContext)
8
- return;
9
- const insertingPlaceholderKeys = selection
10
- .map((x) => editContext.getComponentById(x))
11
- .filter((x) => x)
12
- .reduce((a, x) => a.concat(x.placeholders.map((y) => y.key)), []);
13
- const selectedPlaceholderKeys = [
14
- ...selection.filter((x) => x.indexOf("_") > 0),
15
- ...insertingPlaceholderKeys,
16
- ];
17
- const insertOptions = collectInsertOptions(page, selectedPlaceholderKeys);
18
- // function directInsert() {
19
- // if (editContext!.selectedForInsertion.indexOf("_") > 0) {
20
- // var lastUnderscoreIndex =
21
- // editContext!.selectedForInsertion.lastIndexOf("_");
22
- // const index = editContext!.selectedForInsertion.substring(
23
- // lastUnderscoreIndex + 1
24
- // );
25
- // const key = editContext!.selectedForInsertion.substring(
26
- // 0,
27
- // lastUnderscoreIndex
28
- // );
29
- // editContext!.droppedInPlaceholder(key, parseInt(index));
30
- // }
31
- // }
32
- return (_jsxs(TabView, { children: [_jsx(TabPanel, { header: "New", children: _jsx("div", { className: "a-grid a-grid-cols-4 a-gap-1", children: insertOptions.map((option) => {
33
- function handleDragStart(event) {
34
- dragStart({ type: "template", templateId: option.id });
35
- event.stopPropagation();
36
- }
37
- function handleDragEnd() {
38
- dragEnd();
39
- }
40
- return (_jsxs("div", {
41
- // onClick={directInsert}
42
- 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: [_jsx("img", { src: option.icon, width: "32", height: "32" }), option.name] }, option.id));
43
- }) }) }), _jsx(TabPanel, { header: "Existing", children: _jsx(ContentTree, { rootItemId: "0DE95AE4-41AB-4D01-9EB0-67441B7C2450", dragStart: (itemNode) => {
44
- dragStart({
45
- type: "link-component",
46
- templateId: itemNode.templateId,
47
- componentId: itemNode.id,
48
- });
49
- }, expandIdPath: page.idPath, dragEnd: dragEnd, isDraggable: (x) => x.isComponent &&
50
- (insertOptions === null || insertOptions === void 0 ? void 0 : insertOptions.find((insertOption) => insertOption.id == x.templateId)) != undefined }) })] }));
51
- }
52
- function collectInsertOptions(page, placeholderKeys) {
53
- const insertOptionsMap = new Map();
54
- function traverse(placeholders) {
55
- for (const placeholder of placeholders) {
56
- if (placeholder.insertOptions &&
57
- (placeholderKeys.length === 0 ||
58
- placeholderKeys.includes(placeholder.key))) {
59
- for (const option of placeholder.insertOptions) {
60
- insertOptionsMap.set(option.id, option);
61
- }
62
- }
63
- for (const component of placeholder.components) {
64
- traverse(component.placeholders);
65
- }
66
- }
67
- }
68
- traverse(page.placeholders);
69
- // Convert the map back into an array of objects
70
- const insertOptionsArray = Array.from(insertOptionsMap.values());
71
- return insertOptionsArray;
72
- }
@@ -1,196 +0,0 @@
1
- "use client";
2
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEditContext } from "..";
4
- import { Tree, } from "primereact/tree";
5
- import { useEffect, useRef, useState } from "react";
6
- import { Tag } from "primereact/tag";
7
- import { ContextMenu } from "primereact/contextmenu";
8
- import { confirmDialog } from "primereact/confirmdialog";
9
- function mapPlaceholderNode(p, parent) {
10
- const node = {
11
- key: p.key,
12
- componentId: p.key,
13
- label: p.name,
14
- data: p,
15
- icon: "pi pi-folder",
16
- parent: parent,
17
- droppable: true,
18
- };
19
- node.children = p.components.map((c) => mapComponentNode(c, node));
20
- return node;
21
- }
22
- function mapPlaceholders(c, parent) {
23
- if (c.placeholders.length > 1)
24
- return c.placeholders.map((x) => mapPlaceholderNode(x, parent));
25
- else if (c.placeholders.length > 0)
26
- return c.placeholders[0].components.map((c) => mapComponentNode(c, parent));
27
- return [];
28
- }
29
- function mapComponentNode(c, parent) {
30
- const node = {
31
- key: c.linkItemId + "_" + c.id || c.id,
32
- componentId: c.id,
33
- label: c.name,
34
- icon: "pi pi-stop",
35
- data: c,
36
- parent: parent,
37
- tags: [],
38
- droppable: true,
39
- };
40
- if (c.translations && c.translations.length > 1)
41
- node.tags.push({
42
- severity: "info",
43
- value: c.translations.length + " Languages",
44
- icon: "pi pi-flag",
45
- });
46
- if (c.hostingPageItem) {
47
- node.tags.push({
48
- severity: "warning",
49
- value: "Layout",
50
- icon: "",
51
- color: "rgb(192 132 252)",
52
- onClick: () => {
53
- var _a;
54
- confirmDialog({
55
- header: "Edit layout",
56
- message: "Edit layout " + ((_a = c.hostingPageItem) === null || _a === void 0 ? void 0 : _a.path) + "?",
57
- accept: () => window.open(c.hostingPageItem.editUrl, "_blank"),
58
- });
59
- },
60
- });
61
- }
62
- node.children = mapPlaceholders(c, node);
63
- return node;
64
- }
65
- // function selectTreeNode(event: TreeSelectionEvent): void {
66
- // editContext.setSelection(event.value.keys());
67
- // }
68
- export function ComponentTree({ page, selection, }) {
69
- const [expandedKeys, setExpandedKeys] = useState({
70
- "0": true,
71
- });
72
- const [selectedKeys, setSelectedKeys] = useState();
73
- const cm = useRef(null);
74
- let editContext = useEditContext();
75
- useEffect(() => {
76
- const newSelectedKeys = {};
77
- selection.forEach((id) => {
78
- const nodes = findNodesByComponentId(id, nodeDictionary);
79
- nodes.forEach((nodeId) => {
80
- newSelectedKeys[nodeId] = true;
81
- });
82
- });
83
- const newExpandedKeys = Object.assign({}, expandedKeys);
84
- Object.keys(newSelectedKeys).forEach((id) => {
85
- const node = nodeDictionary[id];
86
- if (node)
87
- expandParents(node.parent, newExpandedKeys);
88
- });
89
- if (!hasSameProps(newExpandedKeys, expandedKeys))
90
- setExpandedKeys(newExpandedKeys);
91
- setSelectedKeys(newSelectedKeys);
92
- }, [selection]);
93
- if (!page)
94
- return _jsx(_Fragment, {});
95
- const componentsNode = {
96
- key: "0",
97
- componentId: "0",
98
- label: "Components",
99
- data: "Components Folder",
100
- icon: "pi pi-fw pi-list",
101
- };
102
- componentsNode.children = mapPlaceholders(page, componentsNode);
103
- const treeNodes = [componentsNode];
104
- const nodeDictionary = {};
105
- createMap(treeNodes, nodeDictionary);
106
- const nodeTemplate = (node, options) => {
107
- var _a;
108
- let label = (_jsxs("span", { "data-key": node.key, className: "a-flex", children: [node.label, (_a = node.tags) === null || _a === void 0 ? void 0 : _a.map((x) => (_jsx(Tag, { icon: x.icon, value: x.value, severity: x.severity, onClick: x.onClick, style: { backgroundColor: x.color, marginLeft: "8px" } }, x.value)))] }));
109
- return _jsx("span", { className: options.className, children: label });
110
- };
111
- const menu = [
112
- {
113
- label: "View Key",
114
- icon: "pi pi-search",
115
- command: () => {
116
- // toast.current.show({ severity: 'success', summary: 'Node Key', detail: selectedNodeKey });
117
- },
118
- },
119
- {
120
- label: "Toggle",
121
- icon: "pi pi-sort",
122
- command: () => {
123
- // let _expandedKeys = { ...expandedKeys };
124
- // if (_expandedKeys[selectedNodeKey]) delete _expandedKeys[selectedNodeKey];
125
- // else _expandedKeys[selectedNodeKey] = true;
126
- // setExpandedKeys(_expandedKeys);
127
- },
128
- },
129
- ];
130
- function findNode(ev) {
131
- const treeNodeParent = ev.target.closest(".p-treenode");
132
- if (treeNodeParent) {
133
- const childWithDataKey = treeNodeParent.querySelector("[data-key]");
134
- if (childWithDataKey) {
135
- return childWithDataKey;
136
- }
137
- }
138
- return null;
139
- }
140
- return (_jsxs("div", { onDragOverCapture: (ev) => {
141
- var _a;
142
- if (!findNode(ev))
143
- ev.dataTransfer.dropEffect = "none";
144
- ev.dataTransfer.dropEffect =
145
- ((_a = editContext === null || editContext === void 0 ? void 0 : editContext.dragObject) === null || _a === void 0 ? void 0 : _a.type) == "template" ? "copy" : "move";
146
- ev.preventDefault();
147
- ev.stopPropagation();
148
- }, onDropCapture: (ev) => {
149
- var node = findNode(ev);
150
- if (node)
151
- alert(node.getAttribute("data-key"));
152
- ev.stopPropagation();
153
- }, children: [_jsx(ContextMenu, { model: menu, ref: cm }), _jsx(Tree, { value: treeNodes, selectionMode: "multiple", selectionKeys: selectedKeys, className: "a-w-full alpaca-no-border", onToggle: (e) => setExpandedKeys(e.value), expandedKeys: expandedKeys, nodeTemplate: nodeTemplate, dragdropScope: "ignore", onSelectionChange: (ev) => {
154
- if (ev.value) {
155
- const selectedKeys = Object.keys(ev.value);
156
- const selectedComponentIds = selectedKeys
157
- .filter((key) => nodeDictionary[key])
158
- .map((key) => nodeDictionary[key].componentId);
159
- editContext === null || editContext === void 0 ? void 0 : editContext.setSelection(selectedComponentIds);
160
- }
161
- else {
162
- editContext === null || editContext === void 0 ? void 0 : editContext.setSelection([]);
163
- }
164
- }, onContextMenu: (e) => { var _a; return (_a = cm.current) === null || _a === void 0 ? void 0 : _a.show(e.originalEvent); } })] }));
165
- }
166
- function createMap(treeNodes, nodeDictionary) {
167
- treeNodes.forEach((n) => {
168
- if (n.key)
169
- nodeDictionary[n.key] = n;
170
- if (n.children)
171
- createMap(n.children, nodeDictionary);
172
- });
173
- }
174
- function findNodesByComponentId(id, nodesDictionary) {
175
- const allNodes = Object.values(nodesDictionary);
176
- return allNodes
177
- .filter((x) => x.componentId === id)
178
- .map((x) => { var _a; return ((_a = x.key) === null || _a === void 0 ? void 0 : _a.toString()) || ""; });
179
- }
180
- function expandParents(node, newExpandedKeys) {
181
- if (!node)
182
- return;
183
- if (node.key)
184
- newExpandedKeys[node.key] = true;
185
- if (node.parent)
186
- expandParents(node.parent, newExpandedKeys);
187
- }
188
- function hasSameProps(obj1, obj2) {
189
- var obj1Props = Object.keys(obj1), obj2Props = Object.keys(obj2);
190
- if (obj1Props.length == obj2Props.length) {
191
- return obj1Props.every(function (prop) {
192
- return obj2Props.indexOf(prop) >= 0;
193
- });
194
- }
195
- return false;
196
- }
@@ -1,117 +0,0 @@
1
- "use client";
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
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
- import { ProgressSpinner } from "primereact/progressspinner";
13
- import { useEditContext } from "..";
14
- import { Tree, } from "primereact/tree";
15
- import { useEffect, useState } from "react";
16
- import { getChildren } from "./contentService";
17
- export default function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionMode, selectedItemIds, rootItemId, onSelectionChange, filter, templateIds, }) {
18
- const [treeNodes, setTreeNodes] = useState([]);
19
- const [expandedKeys, setExpandedKeys] = useState();
20
- const editContext = useEditContext();
21
- const loadOnExpand = (event) => __awaiter(this, void 0, void 0, function* () {
22
- const node = event.node;
23
- node.loading = true;
24
- yield loadNodeChildren(node);
25
- let value = [...treeNodes];
26
- setTreeNodes(value);
27
- node.loading = false;
28
- });
29
- const loadNodeChildren = (node) => __awaiter(this, void 0, void 0, function* () {
30
- if (!node.children) {
31
- if (!node.key || !editContext)
32
- return node.children || [];
33
- let children = yield getChildren(node.key, editContext === null || editContext === void 0 ? void 0 : editContext.sessionId, templateIds);
34
- if (filter)
35
- children = filter(children);
36
- node.children = children.map((x) => ({
37
- key: x.id,
38
- label: x.name,
39
- iconUrl: x.icon,
40
- isDraggable: isDraggable && isDraggable(x),
41
- data: x,
42
- leaf: !x.hasChildren,
43
- }));
44
- }
45
- return node.children;
46
- });
47
- useEffect(() => {
48
- const treeNodes = [
49
- {
50
- key: rootItemId.toLowerCase(),
51
- label: "content",
52
- leaf: false,
53
- },
54
- ];
55
- const newExpandedKeys = getExpandedKeys();
56
- setExpandedKeys(newExpandedKeys);
57
- preLoadNodes(newExpandedKeys, treeNodes);
58
- setTreeNodes(treeNodes);
59
- }, []);
60
- function getExpandedKeys() {
61
- const newExpandedKeys = {};
62
- newExpandedKeys[rootItemId.toLocaleLowerCase()] = true;
63
- const idPathArray = expandIdPath.split("/");
64
- idPathArray.forEach((x) => {
65
- if (x !== "")
66
- newExpandedKeys[x.substring(1, x.length - 1).toLowerCase()] = true;
67
- });
68
- return newExpandedKeys;
69
- }
70
- function preLoadNodes(expandedKeys, treeNodes) {
71
- return __awaiter(this, void 0, void 0, function* () {
72
- yield doPreloadNodes(expandedKeys, treeNodes);
73
- setExpandedKeys(Object.assign({}, expandedKeys));
74
- setTreeNodes([...treeNodes]);
75
- });
76
- }
77
- function doPreloadNodes(expandedKeys, treeNodes) {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- for (let i = 0; i < treeNodes.length; i++) {
80
- if (expandedKeys[treeNodes[i].key]) {
81
- const children = yield loadNodeChildren(treeNodes[i]);
82
- yield doPreloadNodes(expandedKeys, children);
83
- }
84
- }
85
- });
86
- }
87
- const nodeTemplate = (node, options) => {
88
- let label = _jsx("b", { children: node.label });
89
- if (node.url) {
90
- label = (_jsx("a", { onDragStart: (e) => e.preventDefault(), href: node.url, className: "a-text-primary hover:a-underline a-font-semibold", children: node.label }));
91
- }
92
- return (_jsxs("span", { onDragStart: (event) => {
93
- handleDragStart(event, node.data);
94
- }, onDragEnd: handleDragEnd, draggable: node.isDraggable, className: `a-flex a-gap-2 ${node.isDraggable ? "a-cursor-grab" : ""} ${options.className}`, children: [_jsx("img", { src: node.iconUrl, style: { height: "20px" }, width: "20", height: "20", onDragStart: (e) => e.preventDefault() }), label, node.loading && (_jsx(ProgressSpinner, { style: { width: "20px", height: "20px" } }))] }));
95
- };
96
- function handleDragStart(event, item) {
97
- if (dragStart)
98
- dragStart(item);
99
- event.stopPropagation();
100
- }
101
- function handleDragEnd() {
102
- if (dragEnd)
103
- dragEnd();
104
- }
105
- const newSelectedKeys = {};
106
- selectedItemIds === null || selectedItemIds === void 0 ? void 0 : selectedItemIds.forEach((x) => {
107
- newSelectedKeys[x] = true;
108
- });
109
- return (_jsx("div", { onDragEnterCapture: (ev) => ev.stopPropagation(), onDragOverCapture: (ev) => ev.stopPropagation(), onDragLeaveCapture: (ev) => ev.stopPropagation(), children: _jsx(Tree, { value: treeNodes, expandedKeys: expandedKeys, onToggle: (e) => setExpandedKeys(e.value), nodeTemplate: nodeTemplate,
110
- //dragdropScope={isDraggable ? "alpaca" : undefined}
111
- className: "a-w-full alpaca-no-border a-p-0", onExpand: loadOnExpand, selectionMode: selectionMode, onSelectionChange: (ev) => {
112
- if (onSelectionChange && selectionMode == "multiple")
113
- onSelectionChange(Object.keys(ev.value || {}));
114
- if (onSelectionChange && selectionMode == "single")
115
- onSelectionChange([ev.value]);
116
- }, selectionKeys: newSelectedKeys }) }));
117
- }
@@ -1,9 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import JSONPretty from "react-json-pretty";
3
- import "react-json-pretty/themes/monikai.css";
4
- import { TabView, TabPanel } from "primereact/tabview";
5
- export function Debug({ component, page }) {
6
- if (!component && !page)
7
- return;
8
- return (_jsxs(TabView, { children: [component && _jsx(TabPanel, { header: "Component", children: _jsx(JSONPretty, { data: component }) }), _jsx(TabPanel, { header: "Page", children: _jsx(JSONPretty, { data: page }) })] }));
9
- }
@@ -1,31 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { DataTable } from "primereact/datatable";
4
- import { Column } from "primereact/column";
5
- import { InputText } from "primereact/inputtext";
6
- import { useEditContext } from "..";
7
- export function DictionaryEditor({ dictionary }) {
8
- if (!dictionary)
9
- return;
10
- const context = useEditContext();
11
- if (!context) {
12
- console.log("Context is undefined!");
13
- return;
14
- }
15
- let entries = Object.keys(dictionary).map((k) => ({
16
- key: k,
17
- translation: dictionary[k],
18
- }));
19
- entries = [...entries, ...context === null || context === void 0 ? void 0 : context.unresolvedDictionaryKeys.map(x => ({
20
- key: x,
21
- translation: "[undefined]"
22
- }))];
23
- entries.sort((a, b) => (a.key > b.key ? -1 : 1));
24
- const textEditor = (options) => {
25
- if (options.value != "[undefined]")
26
- return _jsx(InputText, { type: "text", value: options.value, onChange: (e) => options.editorCallback(e.target.value) });
27
- else
28
- return null;
29
- };
30
- return (_jsx(_Fragment, { children: _jsxs(DataTable, { value: entries, children: [_jsx(Column, { field: "key", header: "Key" }), _jsx(Column, { field: "translation", header: "Translation", editor: (options) => textEditor(options) })] }) }));
31
- }
@@ -1,57 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState } from "react";
4
- import { useEditContext } from "..";
5
- export function EditFrame({ componentId, children, }) {
6
- var _a, _b;
7
- const editContext = useEditContext();
8
- if (!editContext)
9
- return children;
10
- const { getComponentById, selection, setSelection } = editContext;
11
- const [isRemoved, setIsRemoved] = useState(false);
12
- const clientComponent = getComponentById(componentId);
13
- if (!clientComponent) {
14
- return children;
15
- }
16
- function select(e) {
17
- e.stopPropagation();
18
- if (clientComponent)
19
- setSelection([clientComponent.id]);
20
- }
21
- let classNames = "ap-editframe";
22
- let color = clientComponent.linkItemId ? "orange-400" : "sky-400";
23
- if (clientComponent.hostingPageItem)
24
- color = "purple-400";
25
- const isSelected = selection && selection.indexOf(clientComponent.id) >= 0;
26
- if (isSelected)
27
- classNames = `ap-editframe a-relative a-ring-2 a-ring-${color}`;
28
- function handleDragStart(event) {
29
- if (!clientComponent)
30
- return;
31
- event.dataTransfer.setData("text/plain", clientComponent.id);
32
- event.dataTransfer.setData("alpaca", clientComponent.id);
33
- setTimeout(() => {
34
- editContext.dragStart({
35
- type: "component",
36
- templateId: clientComponent.templateId,
37
- componentId: clientComponent.id,
38
- });
39
- }, 50);
40
- event.stopPropagation();
41
- }
42
- const isDraggable = isSelected && !clientComponent.hostingPageItem;
43
- if ((_a = children.props) === null || _a === void 0 ? void 0 : _a.className)
44
- classNames += " " + ((_b = children === null || children === void 0 ? void 0 : children.props) === null || _b === void 0 ? void 0 : _b.className);
45
- if (isRemoved)
46
- classNames += " ap-removed";
47
- return (_jsxs("div", { className: classNames, onClick: select, draggable: isDraggable, onDragStart: handleDragStart, children: [isSelected && (_jsxs("div", { className: `a-absolute a-top-0 a-right-0 a-text-white a-px-3 a-bg-${color} ${isDraggable ? "a-cursor-move" : ""}`, children: [clientComponent.name, _jsx("button", { className: "a-ml-3", onClick: (ev) => {
48
- ev.preventDefault();
49
- ev.stopPropagation();
50
- editContext.removeComponent(clientComponent.linkItemId || clientComponent.id, () => setIsRemoved(true));
51
- }, children: _jsx("i", { className: "pi pi-trash" }) }), clientComponent.placeholders.length > 0 && (_jsx("button", { className: "a-ml-3", onClick: (ev) => {
52
- editContext.setSelectedForInsertion(clientComponent.id);
53
- editContext.openComponentPalette();
54
- ev.stopPropagation();
55
- ev.preventDefault();
56
- }, children: _jsx("i", { className: "pi pi-plus" }) }))] })), children] }));
57
- }
@@ -1,26 +0,0 @@
1
- "use client";
2
- import { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
3
- export function EditHistory({ operations }) {
4
- if (!operations)
5
- return;
6
- const description = (op) => {
7
- if (op.type === "add-component")
8
- return _jsxs(_Fragment, { children: ["Add ", op.itemName] });
9
- if (op.type === "link-component")
10
- return _jsxs(_Fragment, { children: ["Insert ", op.itemName] });
11
- if (op.type === "remove-component")
12
- return _jsxs(_Fragment, { children: ["Remove ", op.id] });
13
- if (op.type === "edit-field") {
14
- const editFieldOp = op;
15
- return (_jsxs(_Fragment, { children: ["Edit ", editFieldOp.fieldName, _jsxs("span", { className: "a-text-gray-400 a-ml-1", children: ["(", editFieldOp.itemName, ", ", editFieldOp.language, ",", " ", editFieldOp.version, ")"] })] }));
16
- }
17
- return _jsx("div", { children: op.type });
18
- };
19
- return (_jsxs("div", { className: "a-inset-0 a-absolute", children: [_jsx("div", { className: "a-p-2 a-bg-gray-100 a-m-1", children: "History" }), _jsx("div", { className: "a-flex a-flex-col a-overflow-y-auto a-overflow-x-hidden", style: { height: "calc(100% - 45px)" }, children: operations.map((o, i) => singleOperation(i, o)) })] }));
20
- function singleOperation(i, o) {
21
- let className = "a-border-b a-p-2 a-flex a-justify-between";
22
- if (o.undone)
23
- className = className + " a-text-gray-300";
24
- return (_jsxs("div", { className: className, children: [_jsx("div", { children: _jsx("small", { className: "a-text-color-secondary", children: description(o) }) }), _jsx("div", { className: "a-text-xs", children: o.user })] }, i));
25
- }
26
- }
@@ -1,23 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
11
- import { useAlpacaContext, } from "..";
12
- import { EditorClientHost } from "./EditorClientHost";
13
- export function Editor({ children, content, }) {
14
- return __awaiter(this, void 0, void 0, function* () {
15
- const data = yield content;
16
- if (data.type !== "page")
17
- return;
18
- if (!data.editing)
19
- return _jsx(_Fragment, { children: children });
20
- var alpacaContext = useAlpacaContext();
21
- return (_jsx(_Fragment, { children: _jsx(EditorClientHost, { content: data, dictionaryObject: alpacaContext.dictionary, edit: alpacaContext.edit, children: children }) }));
22
- });
23
- }