@alpaca-headless/alpaca-headless-nextjs 1.0.246 → 1.0.253

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 (115) hide show
  1. package/dist/editor.css +0 -4
  2. package/dist/esm/Editor.js +13 -0
  3. package/dist/esm/client-components/ClientLink.js +2 -1
  4. package/dist/esm/client-components/MultiComponentEditor.js +1 -1
  5. package/dist/esm/components/Image.js +1 -1
  6. package/dist/esm/components/Link.js +3 -5
  7. package/dist/esm/components/Picture.js +3 -4
  8. package/dist/esm/components/PictureEditor.js +1 -1
  9. package/dist/esm/components/PictureEditorWrapper.js +1 -0
  10. package/dist/esm/components/Placeholder.js +114 -90
  11. package/dist/esm/components/RichText.js +2 -3
  12. package/dist/esm/components/Slot.js +2 -2
  13. package/dist/esm/components/Text.js +2 -3
  14. package/dist/esm/components/Translate.js +4 -7
  15. package/dist/esm/components/TranslateEditorWrapper.js +7 -0
  16. package/dist/esm/editor/ContentTree.js +10 -4
  17. package/dist/esm/editor/DictionaryEditor.js +1 -1
  18. package/dist/esm/editor/EditFrame.js +1 -1
  19. package/dist/esm/editor/EditorClient.js +27 -15
  20. package/dist/esm/editor/EditorClientHost.js +2 -2
  21. package/dist/esm/editor/FieldList.js +2 -2
  22. package/dist/esm/editor/FieldListField.js +13 -64
  23. package/dist/esm/editor/FieldListFieldWithFallbacks.js +79 -0
  24. package/dist/esm/editor/PictureEditorDialog.js +1 -1
  25. package/dist/esm/editor/PlaceholderDropZone.js +1 -1
  26. package/dist/esm/editor/PreviewClient.js +1 -0
  27. package/dist/esm/editor/ai/AiPopup.js +2 -2
  28. package/dist/esm/editor/ai/AiTerminal.js +17 -5
  29. package/dist/esm/editor/ai/EditorAiTerminal.js +5 -0
  30. package/dist/esm/editor/component-designer/ComponentDesigner.js +7 -0
  31. package/dist/esm/editor/component-designer/ComponentDesignerAiTerminal.js +5 -0
  32. package/dist/esm/editor/component-designer/ComponentDesignerMenu.js +39 -0
  33. package/dist/esm/editor/component-designer/ComponentPreview.js +20 -0
  34. package/dist/esm/editor/component-designer/ComponentRenderingEditor.js +38 -0
  35. package/dist/esm/editor/component-designer/ComponentSelectionTree.js +56 -0
  36. package/dist/esm/editor/component-designer/componentDesignerContext.js +22 -0
  37. package/dist/esm/editor/config/config.js +81 -15
  38. package/dist/esm/editor/config/types.js +1 -0
  39. package/dist/esm/editor/fieldTypes/CheckboxEditor.js +1 -1
  40. package/dist/esm/editor/fieldTypes/DropLinkEditor.js +1 -1
  41. package/dist/esm/editor/fieldTypes/MultiLineText.js +1 -1
  42. package/dist/esm/editor/fieldTypes/RawEditor.js +1 -1
  43. package/dist/esm/editor/fieldTypes/RichTextEditorComponent.js +1 -1
  44. package/dist/esm/editor/fieldTypes/SingleLineText.js +2 -4
  45. package/dist/esm/editor/fieldTypes/TreeListEditor.js +1 -1
  46. package/dist/esm/editor/menubar/Menu.js +1 -1
  47. package/dist/esm/editor/services/aiService.js +20 -0
  48. package/dist/esm/editor/services/componentDesignerService.js +23 -0
  49. package/dist/esm/editor/services/contentService.js +2 -4
  50. package/dist/esm/editor/services/editService.js +1 -35
  51. package/dist/esm/editor/services/serviceHelper.js +45 -0
  52. package/dist/esm/editor/sidebar/ComponentPalette.js +1 -1
  53. package/dist/esm/editor/sidebar/MainContentTree.js +3 -3
  54. package/dist/esm/editor/sidebar/Sidebar.js +1 -1
  55. package/dist/esm/editor/sidebar/SidebarView.js +17 -13
  56. package/dist/esm/editor/sidebar/Workbox.js +1 -1
  57. package/dist/esm/editor/{ItemNameDialog.js → ui/ItemNameDialog.js} +3 -2
  58. package/dist/esm/index.js +3 -2
  59. package/dist/esm/loadRouteData.js +1 -22
  60. package/dist/esm/middleware/handleRequest.js +1 -1
  61. package/dist/esm/public.js +10 -0
  62. package/dist/esm/renderContext.js +49 -0
  63. package/dist/esm/renderings.js +87 -0
  64. package/dist/esm/translate.js +7 -0
  65. package/package.json +2 -1
  66. package/types/Editor.d.ts +9 -0
  67. package/types/components/Image.d.ts +2 -0
  68. package/types/components/Link.d.ts +3 -2
  69. package/types/components/LockedFieldIndicator.d.ts +1 -1
  70. package/types/components/Picture.d.ts +2 -1
  71. package/types/components/Placeholder.d.ts +5 -8
  72. package/types/components/RichText.d.ts +3 -1
  73. package/types/components/Slot.d.ts +3 -1
  74. package/types/components/Text.d.ts +3 -1
  75. package/types/components/Translate.d.ts +3 -1
  76. package/types/components/TranslateEditorWrapper.d.ts +3 -0
  77. package/types/editor/ContentTree.d.ts +2 -1
  78. package/types/editor/ContextMenu.d.ts +1 -1
  79. package/types/editor/EditorClient.d.ts +5 -6
  80. package/types/editor/EditorClientHost.d.ts +5 -8
  81. package/types/editor/FieldListField.d.ts +3 -1
  82. package/types/editor/FieldListFieldWithFallbacks.d.ts +8 -0
  83. package/types/editor/PreviewClient.d.ts +1 -0
  84. package/types/editor/ai/EditorAiTerminal.d.ts +4 -0
  85. package/types/editor/component-designer/ComponentDesigner.d.ts +1 -0
  86. package/types/editor/component-designer/ComponentDesignerAiTerminal.d.ts +1 -0
  87. package/types/editor/component-designer/ComponentDesignerMenu.d.ts +1 -0
  88. package/types/editor/component-designer/ComponentPreview.d.ts +1 -0
  89. package/types/editor/component-designer/ComponentRenderingEditor.d.ts +2 -0
  90. package/types/editor/component-designer/ComponentSelectionTree.d.ts +1 -0
  91. package/types/editor/component-designer/componentDesignerContext.d.ts +14 -0
  92. package/types/editor/config/config.d.ts +1 -1
  93. package/types/editor/{Editor.d.ts → config/types.d.ts} +7 -10
  94. package/types/editor/editContext.d.ts +5 -3
  95. package/types/editor/services/aiService.d.ts +8 -0
  96. package/types/editor/services/componentDesignerService.d.ts +2 -0
  97. package/types/editor/services/contentService.d.ts +1 -1
  98. package/types/editor/services/editService.d.ts +2 -6
  99. package/types/editor/services/serviceHelper.d.ts +7 -0
  100. package/types/editor/sidebar/MainContentTree.d.ts +2 -2
  101. package/types/editor/sidebar/Sidebar.d.ts +1 -1
  102. package/types/editor/sidebar/SidebarView.d.ts +1 -1
  103. package/types/editor/{ItemNameDialog.d.ts → ui/ItemNameDialog.d.ts} +1 -0
  104. package/types/index.d.ts +4 -2
  105. package/types/loadRouteData.d.ts +1 -0
  106. package/types/public.d.ts +12 -0
  107. package/types/renderContext.d.ts +41 -0
  108. package/types/renderings.d.ts +7 -0
  109. package/types/servertypes.d.ts +2 -0
  110. package/types/translate.d.ts +2 -0
  111. package/dist/esm/alpacaContext.js +0 -16
  112. package/dist/esm/editor/Editor.js +0 -15
  113. package/dist/esm/editor/index.js +0 -4
  114. package/types/alpacaContext.d.ts +0 -31
  115. package/types/editor/index.d.ts +0 -4
package/dist/esm/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  export * from "./servertypes";
2
2
  export * from "./loadRouteData";
3
3
  export * from "./components";
4
- export * from "./alpacaContext";
5
- export * from "./editor/Editor";
4
+ export * from "./renderContext";
5
+ export * from "./Editor";
6
6
  export * from "./middleware";
7
7
  export * as GraphQLTypes from "./graphQLTypes";
8
8
  export * from "./graphQL";
9
+ export { translate } from "./translate";
@@ -7,7 +7,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { useAlpacaContext } from "./alpacaContext";
11
10
  import { cookies, headers } from "next/headers";
12
11
  const fetchRouteData = (path, host, mode, itemId, language, session, version) => __awaiter(void 0, void 0, void 0, function* () {
13
12
  const request = {
@@ -69,25 +68,6 @@ const fetchRouteData = (path, host, mode, itemId, language, session, version) =>
69
68
  };
70
69
  }
71
70
  const data = yield response.json();
72
- //console.log(JSON.stringify(data, null, 2));
73
- const context = useAlpacaContext();
74
- context.pageContext = {
75
- itemId: data.page.id,
76
- language: data.page.language,
77
- site: data.site,
78
- pageEditing: data.page._editor,
79
- previewing: data.page.previewing,
80
- pageState: "",
81
- database: data.page.database,
82
- };
83
- context.fields = data.page.fields;
84
- context.edit = data.edit;
85
- const dictionary = yield loadDictionary(context.pageContext.site.name, context.pageContext.language, mode, session);
86
- context.dictionary = dictionary;
87
- context.translate = (text) => {
88
- return context.dictionary[text] || text;
89
- };
90
- data.page.site = data.site;
91
71
  return Object.assign(Object.assign({}, data.page), { type: "page" });
92
72
  });
93
73
  export function loadRouteData({ path, searchParams, host, }) {
@@ -97,7 +77,7 @@ export function loadRouteData({ path, searchParams, host, }) {
97
77
  return result;
98
78
  });
99
79
  }
100
- function loadDictionary(siteName, language, mode, session) {
80
+ export function loadDictionary(siteName, language, mode, session) {
101
81
  return __awaiter(this, void 0, void 0, function* () {
102
82
  let url = process.env.LAYOUT_SERVICE_URL +
103
83
  "/alpaca/headless/dictionary" +
@@ -128,7 +108,6 @@ function loadDictionary(siteName, language, mode, session) {
128
108
  return {};
129
109
  }
130
110
  const data = yield response.json();
131
- //console.log(data);
132
111
  return data;
133
112
  });
134
113
  }
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { loadRouteData } from "..";
10
+ import { loadRouteData } from "../loadRouteData";
11
11
  export function handleRequest({ request, mapHost, }) {
12
12
  return __awaiter(this, void 0, void 0, function* () {
13
13
  const urlSearchParams = new URLSearchParams(request.nextUrl.search);
@@ -0,0 +1,10 @@
1
+ import { RichText, Text, Placeholder, Image, Translate } from "./components";
2
+ import { translate } from "./translate";
3
+ export default {
4
+ Text,
5
+ RichText,
6
+ Image,
7
+ Placeholder,
8
+ Translate,
9
+ translate,
10
+ };
@@ -0,0 +1,49 @@
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 { loadDictionary, loadRouteData } from "./loadRouteData";
11
+ export function createRenderContext({ path, searchParams, host, renderings, }) {
12
+ return __awaiter(this, void 0, void 0, function* () {
13
+ const page = yield loadRouteData({
14
+ path,
15
+ searchParams,
16
+ host,
17
+ });
18
+ if (page.type !== "page") {
19
+ return {
20
+ isError: true,
21
+ message: `Error loading page data: ${path}`,
22
+ error: page,
23
+ };
24
+ }
25
+ const mode = searchParams["mode"] || "normal";
26
+ const session = searchParams["session"];
27
+ const dictionary = yield loadDictionary(page.site.name, page.language, mode, session);
28
+ const context = {
29
+ dictionary: dictionary,
30
+ page: page,
31
+ mode,
32
+ isEditing: mode === "edit",
33
+ isPreview: mode === "preview",
34
+ renderings,
35
+ isError: false,
36
+ };
37
+ return context;
38
+ });
39
+ }
40
+ export function createClientContext(context) {
41
+ const clientContext = {
42
+ page: context.page,
43
+ dictionary: context.dictionary,
44
+ isEditing: context.isEditing,
45
+ isPreview: context.isPreview,
46
+ mode: context.mode,
47
+ };
48
+ return clientContext;
49
+ }
@@ -0,0 +1,87 @@
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 { writeFile } from "fs/promises";
11
+ // import path from "path";
12
+ // import { tmpdir } from "os";
13
+ // import uuid from "react-uuid";
14
+ import React from "react";
15
+ import ts from "typescript";
16
+ import AlpacaHeadlessNextjs from "./public";
17
+ export function getRenderingById(id) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const rendering = yield getRendering(id);
20
+ if (!rendering)
21
+ return () => {
22
+ return "Nix gefunden";
23
+ };
24
+ console.log("C O D E " + rendering.code);
25
+ // const dynamicComponentCode = compileTSX(`
26
+ // import React from 'react';
27
+ // const DynamicComponent = () => <div>Hello, dynamic world!</div>;
28
+ // export default DynamicComponent;
29
+ // `);
30
+ const dynamicComponentCode = compileTSX(rendering.code);
31
+ console.log("Compiled: " + dynamicComponentCode);
32
+ const requires = (name) => {
33
+ if (name === "react")
34
+ return React;
35
+ if (name === "@alpaca-headless/alpaca-headless-nextjs")
36
+ return AlpacaHeadlessNextjs;
37
+ throw new Error(`Unresolved dependency: ${name}`);
38
+ };
39
+ const exports = {};
40
+ const module = { exports };
41
+ const func = new Function("require", "module", "exports", dynamicComponentCode);
42
+ func(requires, module, exports);
43
+ return exports.default;
44
+ //return fn as React.ComponentType<any>;
45
+ //const result = await importModuleFromString(rendering.code);
46
+ //return result.default as React.ComponentType<any>;
47
+ });
48
+ }
49
+ export function getRendering(id) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ let url = process.env.LAYOUT_SERVICE_URL + "/alpaca/headless/component?id=" + id;
52
+ const response = yield fetch(url, {
53
+ method: "GET",
54
+ credentials: "include",
55
+ headers: {
56
+ "Content-Type": "application/json",
57
+ },
58
+ next: {
59
+ revalidate: 0,
60
+ },
61
+ });
62
+ console.log(response.status);
63
+ const json = yield response.json();
64
+ return json;
65
+ });
66
+ }
67
+ // async function importModuleFromString(code: string) {
68
+ // // const moduleId = uuid();
69
+ // // const filePath = path.join(tmpdir(), `${moduleId}.js`);
70
+ // // await writeFile(filePath, code, "utf8");
71
+ // //console.log(code + "üüüüü");
72
+ // // const module = await import(
73
+ // // "C:\\Hinnerk\\Alpaca-103\\Headless\\next-headless\\src\\app\\[[...path]]\\2609ed48-b9ef-7d82-29b9-6422c935c514.js"
74
+ // // );
75
+ // // Use the imported module here
76
+ // return module;
77
+ // }
78
+ function compileTSX(tsxCode) {
79
+ const result = ts.transpileModule(tsxCode, {
80
+ compilerOptions: {
81
+ jsx: ts.JsxEmit.React,
82
+ esModuleInterop: true,
83
+ module: ts.ModuleKind.CommonJS,
84
+ },
85
+ });
86
+ return result.outputText;
87
+ }
@@ -0,0 +1,7 @@
1
+ export function translate(text, context) {
2
+ const dictionary = context.dictionary;
3
+ const value = dictionary[text];
4
+ if (typeof value === "string")
5
+ return value;
6
+ return context.dictionary[text].value || text;
7
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@alpaca-headless/alpaca-headless-nextjs",
3
3
  "sideEffects": false,
4
4
  "type": "module",
5
- "version": "1.0.246",
5
+ "version": "1.0.253",
6
6
  "description": "Alpaca Headless NextJs Integration",
7
7
  "main": "dist/cjs/index.js",
8
8
  "types": "types/index.d.ts",
@@ -39,6 +39,7 @@
39
39
  "author": "Canvas REPLY DE GmbH",
40
40
  "license": "MIT",
41
41
  "dependencies": {
42
+ "@uiw/react-textarea-code-editor": "^1.4.4",
42
43
  "allotment": "^1.20.0",
43
44
  "autoprefixer": "10.4.17",
44
45
  "copyfiles": "^2.4.1",
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import "server-only";
3
+ import { RenderContext } from "./renderContext";
4
+ import { EditorClientBuilderProps } from "./editor/config/types";
5
+ export declare function Editor({ children, context, clientBuilder, }: {
6
+ children: React.ReactNode;
7
+ context: RenderContext;
8
+ clientBuilder: React.ComponentType<EditorClientBuilderProps>;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,11 @@
1
1
  import "server-only";
2
2
  import React from "react";
3
3
  import { ImageField } from "../fieldTypes";
4
+ import { RenderContext } from "../renderContext";
4
5
  export interface ImageProps {
5
6
  [attributeName: string]: unknown;
6
7
  field?: ImageField;
8
+ context: RenderContext;
7
9
  imageParams?: {
8
10
  [paramName: string]: string | number;
9
11
  };
@@ -1,7 +1,8 @@
1
1
  import "server-only";
2
2
  import React from "react";
3
3
  import { LinkField } from "../fieldTypes";
4
- export declare function Link({ field, children, ...props }: {
4
+ import { RenderContextProps } from "../renderContext";
5
+ export declare function Link({ field, children, context, ...props }: {
5
6
  field: LinkField;
6
7
  children: React.ReactNode;
7
- } & React.AnchorHTMLAttributes<HTMLAnchorElement>): import("react/jsx-runtime").JSX.Element | undefined;
8
+ } & React.AnchorHTMLAttributes<HTMLAnchorElement> & RenderContextProps): import("react/jsx-runtime").JSX.Element | undefined;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { Field } from "..";
2
+ import { Field } from "../servertypes";
3
3
  export declare function LockedFieldIndicator({ elementRef, field, }: {
4
4
  elementRef: React.RefObject<HTMLElement>;
5
5
  field: Field;
@@ -2,6 +2,7 @@ import "server-only";
2
2
  import React from "react";
3
3
  import { PictureField } from "../fieldTypes";
4
4
  import { MediaPictureParams, PictureParams } from "./picture-shared";
5
+ import { RenderContextProps } from "../renderContext";
5
6
  export interface PictureSource {
6
7
  media: string;
7
8
  variant: string;
@@ -16,4 +17,4 @@ export interface PictureProps {
16
17
  renderEditButton?: boolean;
17
18
  renderJsonLinkedData?: boolean;
18
19
  }
19
- export declare const Picture: React.FC<PictureProps>;
20
+ export declare const Picture: React.FC<PictureProps & RenderContextProps>;
@@ -1,13 +1,10 @@
1
1
  import "server-only";
2
2
  import { ComponentData, Page, Redirect, NotFound, Error } from "../servertypes";
3
3
  import { JSX } from "react/jsx-runtime";
4
- export type DefaultComponentProps = {
5
- component: ComponentData;
6
- index: number;
7
- count: number;
8
- };
9
- export declare function Placeholder({ name, description, content, tag, className, mapComponent, getComponentProps, }: {
4
+ import { RenderContext, RenderingProps } from "../renderContext";
5
+ export declare function Placeholder({ name, description, content, tag, className, mapComponent, getComponentProps, context, }: {
10
6
  name: string;
7
+ context: RenderContext;
11
8
  description?: string;
12
9
  mapComponent?: ({ data, index, }: {
13
10
  data: ComponentData;
@@ -16,5 +13,5 @@ export declare function Placeholder({ name, description, content, tag, className
16
13
  tag?: string;
17
14
  className?: string;
18
15
  content: Error | Page | Redirect | NotFound | ComponentData;
19
- getComponentProps?: ({ component, index, count, }: DefaultComponentProps) => any;
20
- }): JSX.Element | undefined;
16
+ getComponentProps?: ({ component, context, index, count, }: RenderingProps) => any;
17
+ }): Promise<JSX.Element | undefined>;
@@ -1,8 +1,10 @@
1
1
  import "server-only";
2
2
  import React from "react";
3
3
  import { TextField } from "../fieldTypes";
4
- export declare function RichText({ field, tag, editable, ...props }: {
4
+ import { RenderContext } from "../renderContext";
5
+ export declare function RichText({ field, tag, editable, context, ...props }: {
5
6
  field: TextField;
6
7
  tag?: string;
7
8
  editable?: boolean;
9
+ context: RenderContext;
8
10
  } & React.HTMLAttributes<HTMLElement>): import("react/jsx-runtime").JSX.Element | undefined;
@@ -1,5 +1,7 @@
1
1
  import "server-only";
2
2
  import { ComponentData } from "../servertypes";
3
- export default function Section({ component }: {
3
+ import { RenderContext } from "../renderContext";
4
+ export default function Section({ component, context, }: {
4
5
  component: ComponentData;
6
+ context: RenderContext;
5
7
  }): import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,11 @@
1
1
  import "server-only";
2
2
  import React from "react";
3
3
  import { TextField } from "../fieldTypes";
4
- export declare function Text({ field, tag, editable, ...props }: {
4
+ import { RenderContext } from "../renderContext";
5
+ export declare function Text({ field, tag, editable, context, ...props }: {
5
6
  field: TextField;
6
7
  tag?: string;
7
8
  className?: string;
8
9
  editable?: boolean;
10
+ context: RenderContext;
9
11
  } & React.HTMLAttributes<HTMLElement>): import("react/jsx-runtime").JSX.Element | undefined;
@@ -1,4 +1,6 @@
1
1
  import "server-only";
2
- export declare function Translate({ text }: {
2
+ import { RenderContext } from "../renderContext";
3
+ export declare function Translate({ text, context, }: {
3
4
  text: string;
5
+ context: RenderContext;
4
6
  }): string | import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export declare function TranslateEditorWrapper({ text }: {
2
+ text: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { ItemTreeNodeData } from "./services/contentService";
2
- export default function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionMode, selectedItemIds, rootItemId, onSelectionChange, filter, templateIds, className, includeEmbeddedItems, onDoubleClick, secondarySelectedItemId, }: {
2
+ export default function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionMode, selectedItemIds, rootItemId, onSelectionChange, filter, templateIds, className, includeEmbeddedItems, onDoubleClick, secondarySelectedItemId, selectPagesOnly, }: {
3
3
  isDraggable?: (item: ItemTreeNodeData) => boolean;
4
4
  dragStart?: (item: ItemTreeNodeData) => void;
5
5
  dragEnd?: () => void;
@@ -14,4 +14,5 @@ export default function ContentTree({ isDraggable, dragStart, dragEnd, expandIdP
14
14
  includeEmbeddedItems?: boolean;
15
15
  onDoubleClick?: (item: ItemTreeNodeData) => void;
16
16
  secondarySelectedItemId?: string;
17
+ selectPagesOnly?: boolean;
17
18
  }): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { MenuItem } from "primereact/menuitem";
3
3
  import { Field, ComponentData } from "../servertypes";
4
- import { EditContextType, EditButton } from ".";
4
+ import { EditContextType, EditButton } from "./editContext";
5
5
  export declare function getFieldContextMenu(field: Field, editContext: EditContextType, customButtons?: EditButton[]): (e: any) => void;
6
6
  export declare function showComponentContextMenu(component: ComponentData, editContext: EditContextType): (e: any) => void;
7
7
  export interface EditContextMenuRef {
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
- import { Page, Field, EditData, FieldButton } from "../servertypes";
3
- import { EditorConfiguration } from ".";
2
+ import { Field, FieldButton } from "../servertypes";
3
+ import { EditorConfiguration } from "./config/types";
4
4
  import "../../editor.css";
5
5
  import "../../primeicons/primeicons.css";
6
6
  import "../../primereact/resources/themes/md-light-indigo/theme.css";
7
7
  import "react-json-view-lite/dist/index.css";
8
+ import { ClientRenderContext } from "../renderContext";
8
9
  export type FieldAction = {
9
10
  field: Field;
10
11
  actionButton: FieldButton;
@@ -15,10 +16,8 @@ export type WindowSize = {
15
16
  width: number;
16
17
  height: number;
17
18
  };
18
- export declare function EditorClient({ page, dictionaryObject, editData, children, configuration, }: {
19
- page: Page;
20
- dictionaryObject: any;
21
- editData: EditData;
19
+ export declare function EditorClient({ context, children, configuration, }: {
20
+ context: ClientRenderContext;
22
21
  children: React.ReactNode;
23
22
  configuration: EditorConfiguration;
24
23
  }): import("react/jsx-runtime").JSX.Element;
@@ -1,11 +1,8 @@
1
1
  /// <reference types="react" />
2
- import { EditData, EditableDictionary } from "../servertypes";
3
- import { EditorClientBuilderProps } from ".";
4
- export declare function EditorClientHost({ content, dictionaryObject, children, edit, clientBuilder, }: {
5
- content: any;
6
- dictionaryObject: EditableDictionary;
7
- children: React.ReactNode;
8
- site: string;
9
- edit: EditData;
2
+ import { EditorClientBuilderProps } from "./config/types";
3
+ import { ClientRenderContext } from "../renderContext";
4
+ export declare function EditorClientHost({ context, clientBuilder, children, }: {
5
+ context: ClientRenderContext;
10
6
  clientBuilder?: React.ComponentType<EditorClientBuilderProps>;
7
+ children: React.ReactNode;
11
8
  }): import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import { Field, SingleValidatorResult } from "../servertypes";
3
- export default function FieldListField({ field, validators, simplified, title, }: {
3
+ export default function FieldListField({ field, validators, simplified, title, isFocusedField, showFallbackButton, }: {
4
4
  field: Field;
5
5
  validators: SingleValidatorResult[];
6
6
  simplified?: boolean;
7
7
  title?: React.ReactNode;
8
+ isFocusedField: boolean;
9
+ showFallbackButton?: React.ReactNode;
8
10
  }): import("react/jsx-runtime").JSX.Element | undefined;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { Field, SingleValidatorResult } from "../servertypes";
3
+ export declare function FieldListFieldWithFallbacks({ field, validators, simplified, title, }: {
4
+ field: Field;
5
+ validators: SingleValidatorResult[];
6
+ simplified?: boolean;
7
+ title?: React.ReactNode;
8
+ }): import("react/jsx-runtime").JSX.Element | undefined;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import "../../editor.css";
2
3
  export declare function PreviewClient({ children }: {
3
4
  children: React.ReactNode;
4
5
  }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ export declare function EditorAiTerminal({ closeButton, }: {
3
+ closeButton?: React.ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function ComponentDesigner(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function ComponentDesignerAiTerminal(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function ComponentDesignerMenu(): import("react/jsx-runtime").JSX.Element | undefined;
@@ -0,0 +1 @@
1
+ export declare function ComponentPreview(): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ import "@uiw/react-textarea-code-editor/dist.css";
2
+ export declare function ComponentRenderingEditor(): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1 @@
1
+ export declare function ComponentSelectionTree(): import("react/jsx-runtime").JSX.Element | undefined;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { Item, ItemDescriptor } from "../../servertypes";
3
+ export type ComponentDesignerContext = {
4
+ componentRenderingItem?: Item;
5
+ setComponentRenderingItem: React.Dispatch<React.SetStateAction<Item | undefined>>;
6
+ componentRenderingFolder?: ItemDescriptor;
7
+ setComponentRenderingFolder: React.Dispatch<React.SetStateAction<ItemDescriptor | undefined>>;
8
+ sampleItem?: ItemDescriptor;
9
+ setSampleItem: React.Dispatch<React.SetStateAction<ItemDescriptor | undefined>>;
10
+ code?: string;
11
+ setCode: React.Dispatch<React.SetStateAction<string | undefined>>;
12
+ };
13
+ export declare function getComponentDesignerContext(): ComponentDesignerContext;
14
+ export declare function useComponentDesignerContext(): ComponentDesignerContext | undefined;
@@ -1,2 +1,2 @@
1
- import { EditorConfiguration } from "..";
1
+ import { EditorConfiguration } from "./types";
2
2
  export declare const configuration: EditorConfiguration;
@@ -1,8 +1,7 @@
1
1
  import { ComponentType, ReactNode } from "react";
2
- import { Error, Page, Redirect, NotFound, ComponentData } from "../servertypes";
3
- import { EditorWarningProps } from "./EditorWarnings";
4
- import { EditContextType } from "./editContext";
5
- import { Command } from "./commands/commands";
2
+ import { EditContextType } from "../editContext";
3
+ import { Command } from "../commands/commands";
4
+ import { EditorWarningProps } from "../EditorWarnings";
6
5
  export type RichTextEditorProfile = {
7
6
  toolbar: {
8
7
  groups: RichTextEditorToolbarGroup[];
@@ -25,12 +24,15 @@ export type Panel = {
25
24
  initialSize: number;
26
25
  };
27
26
  export type PanelFactory = (editContext: EditContextType) => Panel;
27
+ export type Sidebar = (Panel | PanelFactory)[];
28
28
  export type EditorView = {
29
29
  name: string;
30
30
  title: string;
31
31
  icon: string | React.JSX.Element;
32
32
  centerPanelView?: string;
33
- leftSidebar: (Panel | PanelFactory)[];
33
+ menuBar?: ReactNode;
34
+ leftSidebar: Sidebar;
35
+ rightSidebar?: Sidebar;
34
36
  };
35
37
  export type ViewPanel = {
36
38
  name: string;
@@ -62,8 +64,3 @@ export type FieldTypeConfiguration = {
62
64
  editor: React.ComponentType<any>;
63
65
  custom?: any;
64
66
  };
65
- export declare function Editor({ children, content, clientBuilder, }: {
66
- children: React.ReactNode;
67
- content: Error | Page | Redirect | NotFound | ComponentData;
68
- clientBuilder: React.ComponentType<EditorClientBuilderProps>;
69
- }): import("react/jsx-runtime").JSX.Element | undefined;
@@ -1,10 +1,11 @@
1
1
  import React, { MouseEvent, ReactNode } from "react";
2
2
  import { ToastMessage } from "primereact/toast";
3
- import { ComponentData, EditableDictionary, Field, ItemDescriptor, FieldButton, Fields, Page, ValidationResult, EditOperation, Item, EditSession, EditData, FieldDescriptor } from "../servertypes";
4
- import { EditorConfiguration, EditorView } from ".";
3
+ import { ComponentData, EditableDictionary, Field, ItemDescriptor, FieldButton, Fields, Page, ValidationResult, EditOperation, Item, EditSession, FieldDescriptor } from "../servertypes";
4
+ import { EditorConfiguration, EditorView } from "./config/types";
5
5
  import { FieldAction, WindowSize } from "./EditorClient";
6
6
  import { MenuItem } from "primereact/menuitem";
7
7
  import { Command, ComponentCommand } from "./commands/commands";
8
+ import { ComponentDesignerContext } from "./component-designer/componentDesignerContext";
8
9
  export type DragObject = {
9
10
  type: "template" | "component" | "link-component";
10
11
  templateId: string;
@@ -56,6 +57,7 @@ export type EditContextType = {
56
57
  dragEnd: () => void;
57
58
  dragObject?: DragObject;
58
59
  refreshCompletedFlag: boolean;
60
+ editOperationExecutedFlag: boolean;
59
61
  updateContentEditingFields: boolean;
60
62
  dictionary: EditableDictionary;
61
63
  unresolvedDictionaryKeys: string[];
@@ -91,7 +93,6 @@ export type EditContextType = {
91
93
  editHistory: EditOperation[];
92
94
  activeSessions: EditSession[];
93
95
  executeWorkflowCommand: (item: ItemDescriptor, commandId: string) => Promise<void>;
94
- editData: EditData;
95
96
  isCommandDisabled: (command: Command) => boolean;
96
97
  executeCommand({ command, event, }: {
97
98
  command: Command;
@@ -103,6 +104,7 @@ export type EditContextType = {
103
104
  placeholderName: string;
104
105
  }) => void;
105
106
  pageView: PageViewContext;
107
+ componentDesignerContext: ComponentDesignerContext;
106
108
  };
107
109
  export declare const EditContextProvider: React.Provider<EditContextType | undefined>;
108
110
  export declare const useEditContext: () => EditContextType | undefined;
@@ -0,0 +1,8 @@
1
+ import { ItemDescriptor } from "../../servertypes";
2
+ export type AiConfig = {
3
+ prompts: {
4
+ prompt: string;
5
+ title: string;
6
+ }[];
7
+ };
8
+ export declare function loadAiConfig(item: ItemDescriptor): Promise<AiConfig>;
@@ -0,0 +1,2 @@
1
+ import { ItemDescriptor } from "../../servertypes";
2
+ export declare function createNewComponent(parent: ItemDescriptor, name: string): Promise<string | Error>;
@@ -16,4 +16,4 @@ export type ItemTreeNodeData = {
16
16
  hasLayout: boolean;
17
17
  };
18
18
  export declare function getChildren(itemId: string, sessionId: string, templateIds: string[] | undefined, includeEmbeddedItems: boolean): Promise<ItemTreeNodeData[]>;
19
- export declare function getItem(item: ItemDescriptor, sessionId: string): Promise<Item | undefined>;
19
+ export declare function getItem(item: ItemDescriptor): Promise<Item | undefined>;