@alpaca-headless/alpaca-headless-nextjs 1.0.27 → 1.0.129
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.
- package/dist/cjs/client-components/ClientLink.js +36 -0
- package/dist/cjs/client-components/MultiComponentEditor.js +26 -0
- package/dist/cjs/client-components/index.js +19 -0
- package/dist/cjs/components/Link.js +1 -1
- package/dist/cjs/components/LinkEditor.js +47 -1
- package/dist/cjs/components/Picture.js +14 -12
- package/dist/cjs/components/PictureEditor.js +20 -39
- package/dist/cjs/components/Placeholder.js +51 -9
- package/dist/cjs/components/RichText.js +1 -1
- package/dist/cjs/components/RichTextEditor.js +17 -2
- package/dist/cjs/components/TextEditor.js +15 -3
- package/dist/cjs/components/Translate.js +1 -1
- package/dist/cjs/{editor → components}/TranslateEditor.js +5 -2
- package/dist/cjs/editor/AiPopup.js +33 -0
- package/dist/cjs/editor/AiTerminal.js +42 -18
- package/dist/cjs/editor/ComponentInfo.js +4 -3
- package/dist/cjs/editor/ComponentPalette.js +12 -68
- package/dist/cjs/editor/ComponentTree.js +76 -59
- package/dist/cjs/editor/ConfirmationDialog.js +31 -0
- package/dist/cjs/editor/ContentTree.js +144 -49
- package/dist/cjs/editor/Debug.js +12 -2
- package/dist/cjs/editor/DialogButtons.js +7 -0
- package/dist/cjs/editor/DictionaryEditor.js +14 -8
- package/dist/cjs/editor/EditFrame.js +88 -20
- package/dist/cjs/editor/EditHistory.js +17 -4
- package/dist/cjs/editor/Editor.js +1 -1
- package/dist/cjs/editor/EditorClient.js +506 -237
- package/dist/cjs/editor/EditorClientHost.js +2 -2
- package/dist/cjs/editor/FieldList.js +30 -43
- package/dist/cjs/editor/FieldListField.js +75 -0
- package/dist/cjs/editor/FloatingToolbar.js +92 -0
- package/dist/cjs/editor/GraphQL.js +4 -6
- package/dist/cjs/editor/ItemEditor.js +9 -0
- package/dist/cjs/editor/ItemInfo.js +17 -0
- package/dist/cjs/editor/ItemNameDialog.js +37 -0
- package/dist/cjs/editor/LanguageSelector.js +1 -1
- package/dist/cjs/editor/LinkEditorDialog.js +67 -0
- package/dist/cjs/editor/MainLayout.js +24 -0
- package/dist/cjs/editor/MediaSelector.js +35 -10
- package/dist/cjs/editor/PictureEditorDialog.js +93 -0
- package/dist/cjs/editor/PlaceholderDropZone.js +48 -9
- package/dist/cjs/editor/SidebarTabs.js +47 -0
- package/dist/cjs/editor/Terminal.js +21 -11
- package/dist/cjs/editor/Utils.js +43 -0
- package/dist/cjs/editor/VersionSelector.js +1 -1
- package/dist/cjs/editor/Workbox.js +41 -0
- package/dist/cjs/editor/componentCommands.js +141 -0
- package/dist/cjs/editor/contentService.js +45 -3
- package/dist/cjs/editor/editContext.js +9 -4
- package/dist/cjs/editor/editService.js +187 -3
- package/dist/cjs/editor/fieldTypes/CheckboxEditor.js +21 -0
- package/dist/cjs/editor/fieldTypes/InternalLinkFieldEditor.js +46 -0
- package/dist/cjs/editor/fieldTypes/LinkFieldEditor.js +55 -0
- package/dist/cjs/editor/fieldTypes/MultiLineText.js +25 -0
- package/dist/cjs/editor/fieldTypes/PictureFieldEditor.js +19 -0
- package/dist/cjs/editor/fieldTypes/RichTextEditor.js +9 -4
- package/dist/cjs/editor/fieldTypes/SingleLineText.js +12 -4
- package/dist/cjs/editor/fieldTypes/TreeListEditor.js +59 -0
- package/dist/cjs/editor/ui/Section.js +8 -0
- package/dist/cjs/loadRouteData.js +24 -14
- package/dist/cjs/middleware/authorization.js +52 -0
- package/dist/cjs/middleware/index.js +17 -0
- package/dist/editor.css +530 -72
- package/dist/primereact/resources/themes/arya-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/arya-green/theme.css +103 -91
- package/dist/primereact/resources/themes/arya-orange/theme.css +103 -91
- package/dist/primereact/resources/themes/arya-purple/theme.css +103 -91
- package/dist/primereact/resources/themes/bootstrap4-dark-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/bootstrap4-dark-purple/theme.css +103 -91
- package/dist/primereact/resources/themes/bootstrap4-light-blue/theme.css +102 -90
- package/dist/primereact/resources/themes/bootstrap4-light-purple/theme.css +102 -90
- package/dist/primereact/resources/themes/fluent-light/theme.css +103 -91
- package/dist/primereact/resources/themes/lara-dark-amber/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-amber/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-amber/theme.css +6049 -0
- package/dist/primereact/resources/themes/lara-dark-blue/theme.css +1006 -955
- package/dist/primereact/resources/themes/lara-dark-cyan/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-cyan/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-cyan/theme.css +6049 -0
- package/dist/primereact/resources/themes/lara-dark-green/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-green/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-green/theme.css +6049 -0
- package/dist/primereact/resources/themes/lara-dark-indigo/theme.css +1006 -955
- package/dist/primereact/resources/themes/lara-dark-pink/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-pink/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-dark-pink/theme.css +6049 -0
- package/dist/primereact/resources/themes/lara-dark-purple/theme.css +1006 -955
- package/dist/primereact/resources/themes/lara-dark-teal/theme.css +1006 -955
- package/dist/primereact/resources/themes/lara-light-amber/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-amber/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-amber/theme.css +6041 -0
- package/dist/primereact/resources/themes/lara-light-blue/theme.css +842 -799
- package/dist/primereact/resources/themes/lara-light-cyan/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-cyan/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-cyan/theme.css +6041 -0
- package/dist/primereact/resources/themes/lara-light-green/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-green/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-green/theme.css +6041 -0
- package/dist/primereact/resources/themes/lara-light-indigo/theme.css +842 -799
- package/dist/primereact/resources/themes/lara-light-pink/fonts/Inter-italic.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-pink/fonts/Inter-roman.var.woff2 +0 -0
- package/dist/primereact/resources/themes/lara-light-pink/theme.css +6041 -0
- package/dist/primereact/resources/themes/lara-light-purple/theme.css +842 -799
- package/dist/primereact/resources/themes/lara-light-teal/theme.css +1115 -1072
- package/dist/primereact/resources/themes/luna-amber/theme.css +103 -91
- package/dist/primereact/resources/themes/luna-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/luna-green/theme.css +103 -91
- package/dist/primereact/resources/themes/luna-pink/theme.css +103 -91
- package/dist/primereact/resources/themes/md-dark-deeppurple/theme.css +147 -135
- package/dist/primereact/resources/themes/md-dark-indigo/theme.css +147 -135
- package/dist/primereact/resources/themes/md-light-deeppurple/theme.css +147 -135
- package/dist/primereact/resources/themes/md-light-indigo/theme.css +147 -135
- package/dist/primereact/resources/themes/mdc-dark-deeppurple/theme.css +147 -135
- package/dist/primereact/resources/themes/mdc-dark-indigo/theme.css +147 -135
- package/dist/primereact/resources/themes/mdc-light-deeppurple/theme.css +147 -135
- package/dist/primereact/resources/themes/mdc-light-indigo/theme.css +147 -135
- package/dist/primereact/resources/themes/mira/theme.css +108 -91
- package/dist/primereact/resources/themes/nano/theme.css +107 -91
- package/dist/primereact/resources/themes/nova/theme.css +103 -91
- package/dist/primereact/resources/themes/nova-accent/theme.css +103 -91
- package/dist/primereact/resources/themes/nova-alt/theme.css +103 -91
- package/dist/primereact/resources/themes/rhea/theme.css +103 -91
- package/dist/primereact/resources/themes/saga-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/saga-green/theme.css +103 -91
- package/dist/primereact/resources/themes/saga-orange/theme.css +103 -91
- package/dist/primereact/resources/themes/saga-purple/theme.css +103 -91
- package/dist/primereact/resources/themes/soho-dark/theme.css +108 -91
- package/dist/primereact/resources/themes/soho-light/theme.css +108 -91
- package/dist/primereact/resources/themes/vela-blue/theme.css +103 -91
- package/dist/primereact/resources/themes/vela-green/theme.css +103 -91
- package/dist/primereact/resources/themes/vela-orange/theme.css +103 -91
- package/dist/primereact/resources/themes/vela-purple/theme.css +103 -91
- package/dist/primereact/resources/themes/viva-dark/theme.css +103 -91
- package/dist/primereact/resources/themes/viva-light/theme.css +103 -91
- package/package.json +29 -16
- package/tailwind.config.js +9 -2
- package/types/client-components/ClientLink.d.ts +6 -0
- package/types/client-components/MultiComponentEditor.d.ts +10 -0
- package/types/client-components/index.d.ts +2 -0
- package/types/components/Picture.d.ts +1 -0
- package/types/components/Placeholder.d.ts +16 -2
- package/types/components/RichTextEditor.d.ts +55 -55
- package/types/components/TextEditor.d.ts +54 -54
- package/types/editor/AiPopup.d.ts +10 -0
- package/types/editor/AiTerminal.d.ts +4 -3
- package/types/editor/ComponentPalette.d.ts +3 -4
- package/types/editor/ComponentTree.d.ts +1 -1
- package/types/editor/ConfirmationDialog.d.ts +19 -0
- package/types/editor/ContentTree.d.ts +7 -3
- package/types/editor/Debug.d.ts +1 -1
- package/types/editor/DialogButtons.d.ts +4 -0
- package/types/editor/DictionaryEditor.d.ts +3 -2
- package/types/editor/EditFrame.d.ts +4 -3
- package/types/editor/EditorClient.d.ts +4 -4
- package/types/editor/EditorClientHost.d.ts +4 -3
- package/types/editor/FieldListField.d.ts +4 -0
- package/types/editor/FloatingToolbar.d.ts +7 -0
- package/types/editor/ItemEditor.d.ts +4 -0
- package/types/editor/ItemInfo.d.ts +4 -0
- package/types/editor/ItemNameDialog.d.ts +10 -0
- package/types/editor/LinkEditorDialog.d.ts +15 -0
- package/types/editor/MainLayout.d.ts +6 -0
- package/types/editor/MediaSelector.d.ts +2 -1
- package/types/editor/PictureEditorDialog.d.ts +6 -0
- package/types/editor/SidebarTabs.d.ts +8 -0
- package/types/editor/Terminal.d.ts +3 -1
- package/types/editor/Utils.d.ts +3 -0
- package/types/editor/Workbox.d.ts +6 -0
- package/types/editor/componentCommands.d.ts +4 -0
- package/types/editor/contentService.d.ts +7 -1
- package/types/editor/editContext.d.ts +90 -19
- package/types/editor/editService.d.ts +9 -1
- package/types/editor/fieldTypes/CheckboxEditor.d.ts +4 -0
- package/types/editor/fieldTypes/InternalLinkFieldEditor.d.ts +4 -0
- package/types/editor/fieldTypes/LinkFieldEditor.d.ts +4 -0
- package/types/editor/fieldTypes/MultiLineText.d.ts +4 -0
- package/types/editor/fieldTypes/PictureFieldEditor.d.ts +4 -0
- package/types/editor/fieldTypes/TreeListEditor.d.ts +4 -0
- package/types/editor/ui/Section.d.ts +5 -0
- package/types/fieldTypes.d.ts +30 -15
- package/types/layoutData.d.ts +34 -9
- package/types/loadRouteData.d.ts +34 -5
- package/types/mediaProtection.d.ts +1 -0
- package/types/middleware/authorization.d.ts +2 -0
- package/types/middleware/index.d.ts +1 -0
- package/dist/cjs/editor/PageInfo.js +0 -12
- package/dist/esm/alpacaContext.js +0 -8
- package/dist/esm/components/Error.js +0 -10
- package/dist/esm/components/Image.js +0 -32
- package/dist/esm/components/Link.js +0 -29
- package/dist/esm/components/LinkEditor.js +0 -19
- package/dist/esm/components/Picture.js +0 -118
- package/dist/esm/components/PictureEditor.js +0 -64
- package/dist/esm/components/Placeholder.js +0 -69
- package/dist/esm/components/RichText.js +0 -40
- package/dist/esm/components/RichTextEditor.js +0 -52
- package/dist/esm/components/Slot.js +0 -5
- package/dist/esm/components/Text.js +0 -39
- package/dist/esm/components/TextEditor.js +0 -38
- package/dist/esm/components/Translate.js +0 -10
- package/dist/esm/components/index.js +0 -7
- package/dist/esm/editor/AiTerminal.js +0 -157
- package/dist/esm/editor/ComponentInfo.js +0 -10
- package/dist/esm/editor/ComponentPalette.js +0 -72
- package/dist/esm/editor/ComponentTree.js +0 -196
- package/dist/esm/editor/ContentTree.js +0 -117
- package/dist/esm/editor/Debug.js +0 -9
- package/dist/esm/editor/DictionaryEditor.js +0 -31
- package/dist/esm/editor/EditFrame.js +0 -57
- package/dist/esm/editor/EditHistory.js +0 -26
- package/dist/esm/editor/Editor.js +0 -23
- package/dist/esm/editor/EditorClient.js +0 -477
- package/dist/esm/editor/EditorClientHost.js +0 -7
- package/dist/esm/editor/FieldList.js +0 -60
- package/dist/esm/editor/GraphQL.js +0 -82
- package/dist/esm/editor/LanguageSelector.js +0 -17
- package/dist/esm/editor/MediaSelector.js +0 -60
- package/dist/esm/editor/PageInfo.js +0 -8
- package/dist/esm/editor/PlaceholderDropZone.js +0 -50
- package/dist/esm/editor/PlaceholderDropZoneHost.js +0 -7
- package/dist/esm/editor/Terminal.js +0 -47
- package/dist/esm/editor/TranslateEditor.js +0 -21
- package/dist/esm/editor/VersionSelector.js +0 -17
- package/dist/esm/editor/componentTreeHelper.js +0 -14
- package/dist/esm/editor/contentService.js +0 -31
- package/dist/esm/editor/editContext.js +0 -5
- package/dist/esm/editor/editService.js +0 -139
- package/dist/esm/editor/fieldTypes/RichTextEditor.js +0 -15
- package/dist/esm/editor/fieldTypes/SingleLineText.js +0 -13
- package/dist/esm/editor/index.js +0 -2
- package/dist/esm/fieldTypes.js +0 -1
- package/dist/esm/graphQLTypes.js +0 -1
- package/dist/esm/index.js +0 -7
- package/dist/esm/layoutData.js +0 -1
- package/dist/esm/loadRouteData.js +0 -123
- package/dist/esm/mediaProtection.js +0 -49
- package/types/editor/PageInfo.d.ts +0 -4
- /package/types/{editor → components}/TranslateEditor.d.ts +0 -0
|
@@ -1,157 +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 { useEffect, useRef, useState } from "react";
|
|
13
|
-
import { TerminalService } from "primereact/terminalservice";
|
|
14
|
-
import { useRouter, useSearchParams } from "next/navigation";
|
|
15
|
-
import { Terminal } from "./Terminal";
|
|
16
|
-
export function AiTerminal({ requestRefresh, selection, }) {
|
|
17
|
-
const searchParams = useSearchParams();
|
|
18
|
-
const [messages, setMessages] = useState([]);
|
|
19
|
-
const [tokens, setTokens] = useState({ in: 0, out: 0 });
|
|
20
|
-
const selectionRef = useRef(selection);
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
selectionRef.current = selection;
|
|
23
|
-
}, [selection]);
|
|
24
|
-
const messagesRef = useRef(messages);
|
|
25
|
-
useEffect(() => {
|
|
26
|
-
messagesRef.current = messages;
|
|
27
|
-
}, [messages]);
|
|
28
|
-
const router = useRouter();
|
|
29
|
-
function commandHandler(text, callback) {
|
|
30
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
const newMessages = [
|
|
32
|
-
...messagesRef.current,
|
|
33
|
-
{ content: text, role: "user", name: "user" },
|
|
34
|
-
];
|
|
35
|
-
let lastRefresh = new Date().getTime();
|
|
36
|
-
const response = yield prompt(newMessages, selectionRef.current, searchParams.get("session"), searchParams.get("itemid"), searchParams.get("language"), searchParams.get("version"), (response) => {
|
|
37
|
-
console.log(response);
|
|
38
|
-
setTokens({
|
|
39
|
-
in: response.numInputTokens,
|
|
40
|
-
out: response.numOutputTokens,
|
|
41
|
-
});
|
|
42
|
-
handleResponse(response, callback, false);
|
|
43
|
-
if (response.editOperations.length) {
|
|
44
|
-
if (new Date().getTime() - lastRefresh > 500) {
|
|
45
|
-
requestRefresh("delayed");
|
|
46
|
-
router.refresh();
|
|
47
|
-
lastRefresh = new Date().getTime();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
if (response) {
|
|
52
|
-
handleResponse(response, callback, true);
|
|
53
|
-
setTokens({ in: response.numInputTokens, out: response.numOutputTokens });
|
|
54
|
-
router.refresh();
|
|
55
|
-
}
|
|
56
|
-
// if (response) {
|
|
57
|
-
// messages.push({content: text, 'role': 'assistant', 'name': 'assistant'});
|
|
58
|
-
// if(response.editOperations) {
|
|
59
|
-
// const newEditOperations = [...editOperationsRef.current, {
|
|
60
|
-
// type:'composite',
|
|
61
|
-
// name: 'ghostwriter',
|
|
62
|
-
// date: new Date(),
|
|
63
|
-
// operations: response.editOperations
|
|
64
|
-
// }];
|
|
65
|
-
// setEditOperations(newEditOperations);
|
|
66
|
-
// }
|
|
67
|
-
if (response === null || response === void 0 ? void 0 : response.responseText)
|
|
68
|
-
newMessages.push({
|
|
69
|
-
content: response.responseText,
|
|
70
|
-
role: "assistant",
|
|
71
|
-
name: "assistant",
|
|
72
|
-
});
|
|
73
|
-
// TerminalService.emit('response', response.responseText);
|
|
74
|
-
// }
|
|
75
|
-
// // else
|
|
76
|
-
// // TerminalService.emit('clear');
|
|
77
|
-
setMessages(newMessages);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
useEffect(() => {
|
|
81
|
-
TerminalService.on("command", commandHandler);
|
|
82
|
-
return () => {
|
|
83
|
-
TerminalService.off("command", commandHandler);
|
|
84
|
-
};
|
|
85
|
-
}, []);
|
|
86
|
-
return (_jsxs("div", { className: "a-h-full a-flex a-flex-col a-relative a-flex-1", children: [_jsx("div", { className: "a-flex-1 a-relative", children: _jsx("div", { className: "a-inset-0 a-absolute", children: _jsx(Terminal, { onReset: () => setMessages([]), commandHandler: (v, callback) => {
|
|
87
|
-
commandHandler(v, callback);
|
|
88
|
-
} }) }) }), _jsxs("div", { className: "a-text-xs", children: ["Tokens in: ", tokens.in, " out: ", tokens.out] })] }));
|
|
89
|
-
}
|
|
90
|
-
function prompt(messages, selection, session, itemid, language, version, callback) {
|
|
91
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
-
const response = yield fetch("/alpaca/headless/ai/prompt", {
|
|
93
|
-
method: "POST",
|
|
94
|
-
body: JSON.stringify({
|
|
95
|
-
messages,
|
|
96
|
-
itemid,
|
|
97
|
-
language,
|
|
98
|
-
version,
|
|
99
|
-
selection,
|
|
100
|
-
sessionId: session,
|
|
101
|
-
}),
|
|
102
|
-
credentials: "omit",
|
|
103
|
-
headers: {
|
|
104
|
-
"Content-Type": "application/json",
|
|
105
|
-
//Cookie: 'test'// new Cookies().getAll(),
|
|
106
|
-
},
|
|
107
|
-
next: {
|
|
108
|
-
revalidate: 0,
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
if (!(response === null || response === void 0 ? void 0 : response.body))
|
|
112
|
-
return null;
|
|
113
|
-
const reader = response.body.getReader();
|
|
114
|
-
const decoder = new TextDecoder();
|
|
115
|
-
let buffer = "";
|
|
116
|
-
let result = null;
|
|
117
|
-
while (true) {
|
|
118
|
-
const { done, value } = yield reader.read();
|
|
119
|
-
if (done) {
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
buffer += decoder.decode(value, { stream: true }); // 'stream: true' ensures that any incomplete multi-byte characters aren't malformed.
|
|
123
|
-
// Split the buffer by newline and keep the last partial line for the next iteration.
|
|
124
|
-
const lines = buffer.split("\n");
|
|
125
|
-
if (lines.length > 0) {
|
|
126
|
-
buffer = lines.pop() || ""; // Incomplete line (if any) is kept for the next iteration.
|
|
127
|
-
for (let line of lines) {
|
|
128
|
-
if (line.trim() === "")
|
|
129
|
-
continue; // Skip empty lines if any.
|
|
130
|
-
try {
|
|
131
|
-
const jsonData = JSON.parse(line);
|
|
132
|
-
callback(jsonData);
|
|
133
|
-
result = jsonData;
|
|
134
|
-
}
|
|
135
|
-
catch (e) {
|
|
136
|
-
console.error("Error parsing line:" + line, e);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// If there's any remaining content in the buffer after processing all chunks, try to process it.
|
|
142
|
-
if (buffer.trim() !== "") {
|
|
143
|
-
try {
|
|
144
|
-
const jsonData = JSON.parse(buffer);
|
|
145
|
-
result = jsonData;
|
|
146
|
-
}
|
|
147
|
-
catch (e) {
|
|
148
|
-
console.error("Error parsing the final buffer content:", e);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return result;
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
function handleResponse(response, terminalCallback, isFinished) {
|
|
155
|
-
console.log(response.responseText);
|
|
156
|
-
terminalCallback(response.responseText, isFinished);
|
|
157
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
export function ComponentInfo({ component, }) {
|
|
4
|
-
var _a;
|
|
5
|
-
if (!(component === null || component === void 0 ? void 0 : component.fields))
|
|
6
|
-
return;
|
|
7
|
-
const hostingPageItem = component.hostingPageItem ? (_jsx("div", { children: _jsxs("div", { className: "a-text-xs", children: ["Source: ", component.hostingPageItem.path, "( ID:", " ", component.hostingPageItem.id, ")"] }) })) : null;
|
|
8
|
-
const linkedComponent = component.linkedComponentItem ? (_jsx("div", { children: _jsxs("div", { className: "a-text-xs", children: ["Source: ", component.linkedComponentItem.path] }) })) : null;
|
|
9
|
-
return (_jsxs("div", { className: "a-p-1", children: [_jsx("h2", { className: "a-text-xl a-font-bold a-my-2", children: component.name }), _jsxs("div", { className: "a-text-xs", children: ["ID: ", component.id] }), _jsxs("div", { className: "a-text-xs", children: ["Languages: ", (_a = component.translations) === null || _a === void 0 ? void 0 : _a.join(", ")] }), hostingPageItem, linkedComponent] }));
|
|
10
|
-
}
|
|
@@ -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
|
-
}
|
package/dist/esm/editor/Debug.js
DELETED
|
@@ -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
|
-
}
|