@alpaca-editor/core 1.0.4112 → 1.0.4118

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 (289) hide show
  1. package/dist/components/FilterInput.js +3 -7
  2. package/dist/components/FilterInput.js.map +1 -1
  3. package/dist/components/ui/context-menu.js +3 -0
  4. package/dist/components/ui/context-menu.js.map +1 -1
  5. package/dist/components/ui/input.js +1 -1
  6. package/dist/components/ui/input.js.map +1 -1
  7. package/dist/config/config.js +3 -3
  8. package/dist/config/config.js.map +1 -1
  9. package/dist/editor/AspectRatioSelector.js +3 -3
  10. package/dist/editor/AspectRatioSelector.js.map +1 -1
  11. package/dist/editor/EditorWarning.js +2 -2
  12. package/dist/editor/EditorWarning.js.map +1 -1
  13. package/dist/editor/FieldEditorPopup.js +7 -6
  14. package/dist/editor/FieldEditorPopup.js.map +1 -1
  15. package/dist/editor/FieldHistory.js +2 -1
  16. package/dist/editor/FieldHistory.js.map +1 -1
  17. package/dist/editor/LinkEditorDialog.d.ts +3 -1
  18. package/dist/editor/LinkEditorDialog.js +7 -3
  19. package/dist/editor/LinkEditorDialog.js.map +1 -1
  20. package/dist/editor/MainLayout.js +3 -3
  21. package/dist/editor/MainLayout.js.map +1 -1
  22. package/dist/editor/PictureCropper.js +3 -3
  23. package/dist/editor/PictureCropper.js.map +1 -1
  24. package/dist/editor/PictureEditorDialog.js +55 -50
  25. package/dist/editor/PictureEditorDialog.js.map +1 -1
  26. package/dist/editor/Terminal.js +4 -4
  27. package/dist/editor/Terminal.js.map +1 -1
  28. package/dist/editor/ai/AgentTerminal.js +137 -6
  29. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  30. package/dist/editor/ai/Agents.js +2 -2
  31. package/dist/editor/ai/Agents.js.map +1 -1
  32. package/dist/editor/ai/ContextInfoBar.js +1 -1
  33. package/dist/editor/ai/ContextInfoBar.js.map +1 -1
  34. package/dist/editor/client/EditorShell.js +2 -0
  35. package/dist/editor/client/EditorShell.js.map +1 -1
  36. package/dist/editor/client/GenericDialog.js +3 -3
  37. package/dist/editor/client/GenericDialog.js.map +1 -1
  38. package/dist/editor/client/hooks/useGlobalEditorKeyDown.d.ts +1 -0
  39. package/dist/editor/client/hooks/useGlobalEditorKeyDown.js +12 -0
  40. package/dist/editor/client/hooks/useGlobalEditorKeyDown.js.map +1 -0
  41. package/dist/editor/client/ui/EditorChrome.js +8 -2
  42. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  43. package/dist/editor/commands/localizeItem/LocalizeItemDialog.js +9 -7
  44. package/dist/editor/commands/localizeItem/LocalizeItemDialog.js.map +1 -1
  45. package/dist/editor/context-menu/CopyMoveMenu.js +3 -3
  46. package/dist/editor/context-menu/CopyMoveMenu.js.map +1 -1
  47. package/dist/editor/control-center/IndexOverview.js +39 -17
  48. package/dist/editor/control-center/IndexOverview.js.map +1 -1
  49. package/dist/editor/field-types/CheckboxEditor.js +2 -2
  50. package/dist/editor/field-types/CheckboxEditor.js.map +1 -1
  51. package/dist/editor/field-types/DateFieldEditor.js +2 -2
  52. package/dist/editor/field-types/DateFieldEditor.js.map +1 -1
  53. package/dist/editor/field-types/DateTimeFieldEditor.js.map +1 -1
  54. package/dist/editor/field-types/ImageFieldEditor.js +2 -2
  55. package/dist/editor/field-types/ImageFieldEditor.js.map +1 -1
  56. package/dist/editor/field-types/InternalLinkFieldEditor.js +2 -2
  57. package/dist/editor/field-types/InternalLinkFieldEditor.js.map +1 -1
  58. package/dist/editor/field-types/LinkFieldEditor.js +8 -3
  59. package/dist/editor/field-types/LinkFieldEditor.js.map +1 -1
  60. package/dist/editor/field-types/MultiLineText.js +2 -2
  61. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  62. package/dist/editor/field-types/PictureFieldEditor.js +3 -2
  63. package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
  64. package/dist/editor/field-types/RawEditor.js +2 -2
  65. package/dist/editor/field-types/RawEditor.js.map +1 -1
  66. package/dist/editor/field-types/SingleLineText.js +2 -2
  67. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  68. package/dist/editor/field-types/richtext/components/ReactSlate.js +2 -2
  69. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  70. package/dist/editor/field-types/richtext/components/SimpleRichTextEditor.js +2 -2
  71. package/dist/editor/field-types/richtext/components/SimpleRichTextEditor.js.map +1 -1
  72. package/dist/editor/fieldTypes.d.ts +1 -0
  73. package/dist/editor/media-selector/AiImageSearch.js +5 -4
  74. package/dist/editor/media-selector/AiImageSearch.js.map +1 -1
  75. package/dist/editor/media-selector/MediaFolderBrowser.js +8 -8
  76. package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -1
  77. package/dist/editor/media-selector/Thumbnails.js +2 -2
  78. package/dist/editor/media-selector/Thumbnails.js.map +1 -1
  79. package/dist/editor/media-selector/TreeSelector.js +2 -2
  80. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  81. package/dist/editor/media-selector/UploadZone.js +2 -2
  82. package/dist/editor/media-selector/UploadZone.js.map +1 -1
  83. package/dist/editor/menubar/NavButtons.js +3 -5
  84. package/dist/editor/menubar/NavButtons.js.map +1 -1
  85. package/dist/editor/menubar/Separator.js +2 -2
  86. package/dist/editor/menubar/Separator.js.map +1 -1
  87. package/dist/editor/menubar/SiteInfo.js +9 -9
  88. package/dist/editor/menubar/SiteInfo.js.map +1 -1
  89. package/dist/editor/page-editor-chrome/CommentHighlighting.js +2 -2
  90. package/dist/editor/page-editor-chrome/CommentHighlighting.js.map +1 -1
  91. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +2 -2
  92. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  93. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +6 -1
  94. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  95. package/dist/editor/page-editor-chrome/SuggestionHighlighting.js +2 -2
  96. package/dist/editor/page-editor-chrome/SuggestionHighlighting.js.map +1 -1
  97. package/dist/editor/page-viewer/DeviceToolbar.js +3 -3
  98. package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
  99. package/dist/editor/reviews/CommentView.js +5 -3
  100. package/dist/editor/reviews/CommentView.js.map +1 -1
  101. package/dist/editor/reviews/Reviews.js +55 -54
  102. package/dist/editor/reviews/Reviews.js.map +1 -1
  103. package/dist/editor/services/agentService.d.ts +3 -3
  104. package/dist/editor/services/agentService.js.map +1 -1
  105. package/dist/editor/services/aiService.js +5 -5
  106. package/dist/editor/services/aiService.js.map +1 -1
  107. package/dist/editor/sidebar/ComponentPalette.js +3 -3
  108. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  109. package/dist/editor/sidebar/ComponentTree.js +6 -1
  110. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  111. package/dist/editor/sidebar/DictionaryEditor.js +9 -9
  112. package/dist/editor/sidebar/DictionaryEditor.js.map +1 -1
  113. package/dist/editor/sidebar/EditHistory.js +4 -3
  114. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  115. package/dist/editor/sidebar/SEOInfo.js +3 -2
  116. package/dist/editor/sidebar/SEOInfo.js.map +1 -1
  117. package/dist/editor/sidebar/SidebarView.js +13 -8
  118. package/dist/editor/sidebar/SidebarView.js.map +1 -1
  119. package/dist/editor/sidebar/Translations.js +5 -2
  120. package/dist/editor/sidebar/Translations.js.map +1 -1
  121. package/dist/editor/sidebar/Validation.js +2 -2
  122. package/dist/editor/sidebar/Validation.js.map +1 -1
  123. package/dist/editor/sidebar/ViewSelector.js +22 -5
  124. package/dist/editor/sidebar/ViewSelector.js.map +1 -1
  125. package/dist/editor/sidebar/Workbox.js +14 -13
  126. package/dist/editor/sidebar/Workbox.js.map +1 -1
  127. package/dist/editor/ui/ItemNameDialogNew.js +2 -2
  128. package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
  129. package/dist/editor/ui/PerfectTree.js +2 -2
  130. package/dist/editor/ui/PerfectTree.js.map +1 -1
  131. package/dist/editor/ui/Section.js +3 -3
  132. package/dist/editor/ui/Section.js.map +1 -1
  133. package/dist/editor/ui/SimpleTable.js +3 -3
  134. package/dist/editor/ui/SimpleTable.js.map +1 -1
  135. package/dist/editor/utils/keyboardNavigation.js +1 -0
  136. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  137. package/dist/editor/views/ItemEditor.js +1 -1
  138. package/dist/editor/views/ItemEditor.js.map +1 -1
  139. package/dist/index.d.ts +1 -0
  140. package/dist/index.js +1 -0
  141. package/dist/index.js.map +1 -1
  142. package/dist/page-wizard/WizardSteps.js +2 -3
  143. package/dist/page-wizard/WizardSteps.js.map +1 -1
  144. package/dist/page-wizard/steps/CollectStep.js +2 -2
  145. package/dist/page-wizard/steps/CollectStep.js.map +1 -1
  146. package/dist/page-wizard/steps/ContentStep.js +3 -4
  147. package/dist/page-wizard/steps/ContentStep.js.map +1 -1
  148. package/dist/page-wizard/steps/Generate.js +2 -2
  149. package/dist/page-wizard/steps/Generate.js.map +1 -1
  150. package/dist/page-wizard/steps/ImagesStep.js +17 -15
  151. package/dist/page-wizard/steps/ImagesStep.js.map +1 -1
  152. package/dist/page-wizard/steps/MetaDataStep.js +2 -2
  153. package/dist/page-wizard/steps/MetaDataStep.js.map +1 -1
  154. package/dist/page-wizard/steps/SelectStep.js +5 -5
  155. package/dist/page-wizard/steps/SelectStep.js.map +1 -1
  156. package/dist/page-wizard/steps/StructureStep.js +3 -3
  157. package/dist/page-wizard/steps/StructureStep.js.map +1 -1
  158. package/dist/page-wizard/steps/TranslateStep.js +2 -2
  159. package/dist/page-wizard/steps/TranslateStep.js.map +1 -1
  160. package/dist/revision.d.ts +2 -2
  161. package/dist/revision.js +2 -2
  162. package/dist/splash-screen/NewPage.js +2 -2
  163. package/dist/splash-screen/NewPage.js.map +1 -1
  164. package/dist/splash-screen/SectionHeadline.js +2 -2
  165. package/dist/splash-screen/SectionHeadline.js.map +1 -1
  166. package/dist/styles.css +9 -26
  167. package/package.json +1 -1
  168. package/src/components/FilterInput.tsx +13 -16
  169. package/src/components/ui/context-menu.tsx +3 -0
  170. package/src/components/ui/input.tsx +1 -1
  171. package/src/config/config.tsx +3 -3
  172. package/src/editor/AspectRatioSelector.tsx +3 -3
  173. package/src/editor/EditorWarning.tsx +6 -6
  174. package/src/editor/FieldEditorPopup.tsx +36 -26
  175. package/src/editor/FieldHistory.tsx +2 -1
  176. package/src/editor/LinkEditorDialog.tsx +20 -0
  177. package/src/editor/MainLayout.tsx +3 -3
  178. package/src/editor/PictureCropper.tsx +3 -3
  179. package/src/editor/PictureEditorDialog.tsx +167 -145
  180. package/src/editor/Terminal.tsx +5 -6
  181. package/src/editor/ai/AgentTerminal.tsx +187 -23
  182. package/src/editor/ai/Agents.tsx +2 -2
  183. package/src/editor/ai/ContextInfoBar.tsx +8 -6
  184. package/src/editor/client/EditorShell.tsx +3 -0
  185. package/src/editor/client/GenericDialog.tsx +13 -9
  186. package/src/editor/client/hooks/useGlobalEditorKeyDown.ts +11 -0
  187. package/src/editor/client/ui/EditorChrome.tsx +8 -4
  188. package/src/editor/commands/localizeItem/LocalizeItemDialog.tsx +30 -11
  189. package/src/editor/context-menu/CopyMoveMenu.tsx +5 -3
  190. package/src/editor/control-center/IndexOverview.tsx +63 -34
  191. package/src/editor/field-types/CheckboxEditor.tsx +2 -2
  192. package/src/editor/field-types/DateFieldEditor.tsx +2 -2
  193. package/src/editor/field-types/DateTimeFieldEditor.tsx +0 -1
  194. package/src/editor/field-types/ImageFieldEditor.tsx +3 -4
  195. package/src/editor/field-types/InternalLinkFieldEditor.tsx +2 -2
  196. package/src/editor/field-types/LinkFieldEditor.tsx +8 -2
  197. package/src/editor/field-types/MultiLineText.tsx +4 -5
  198. package/src/editor/field-types/PictureFieldEditor.tsx +5 -5
  199. package/src/editor/field-types/RawEditor.tsx +4 -5
  200. package/src/editor/field-types/SingleLineText.tsx +4 -6
  201. package/src/editor/field-types/richtext/components/ReactSlate.tsx +2 -2
  202. package/src/editor/field-types/richtext/components/SimpleRichTextEditor.tsx +2 -2
  203. package/src/editor/fieldTypes.ts +1 -0
  204. package/src/editor/media-selector/AiImageSearch.tsx +11 -14
  205. package/src/editor/media-selector/MediaFolderBrowser.tsx +42 -35
  206. package/src/editor/media-selector/Thumbnails.tsx +3 -3
  207. package/src/editor/media-selector/TreeSelector.tsx +2 -2
  208. package/src/editor/media-selector/UploadZone.tsx +2 -2
  209. package/src/editor/menubar/NavButtons.tsx +12 -14
  210. package/src/editor/menubar/Separator.tsx +2 -2
  211. package/src/editor/menubar/SiteInfo.tsx +29 -23
  212. package/src/editor/page-editor-chrome/CommentHighlighting.tsx +2 -2
  213. package/src/editor/page-editor-chrome/FieldActionIndicator.tsx +2 -2
  214. package/src/editor/page-editor-chrome/PlaceholderDropZone.tsx +6 -1
  215. package/src/editor/page-editor-chrome/SuggestionHighlighting.tsx +2 -2
  216. package/src/editor/page-viewer/DeviceToolbar.tsx +4 -3
  217. package/src/editor/reviews/CommentView.tsx +34 -10
  218. package/src/editor/reviews/Reviews.tsx +116 -106
  219. package/src/editor/services/agentService.ts +3 -3
  220. package/src/editor/services/aiService.ts +5 -5
  221. package/src/editor/sidebar/ComponentPalette.tsx +3 -3
  222. package/src/editor/sidebar/ComponentTree.tsx +10 -1
  223. package/src/editor/sidebar/DictionaryEditor.tsx +12 -13
  224. package/src/editor/sidebar/EditHistory.tsx +4 -3
  225. package/src/editor/sidebar/SEOInfo.tsx +9 -7
  226. package/src/editor/sidebar/SidebarView.tsx +16 -9
  227. package/src/editor/sidebar/Translations.tsx +9 -5
  228. package/src/editor/sidebar/Validation.tsx +2 -2
  229. package/src/editor/sidebar/ViewSelector.tsx +32 -6
  230. package/src/editor/sidebar/Workbox.tsx +81 -63
  231. package/src/editor/ui/ItemNameDialogNew.tsx +2 -2
  232. package/src/editor/ui/PerfectTree.tsx +2 -5
  233. package/src/editor/ui/Section.tsx +4 -4
  234. package/src/editor/ui/SimpleTable.tsx +3 -3
  235. package/src/editor/utils/keyboardNavigation.ts +1 -0
  236. package/src/editor/views/ItemEditor.tsx +1 -1
  237. package/src/index.ts +6 -0
  238. package/src/page-wizard/WizardSteps.tsx +2 -3
  239. package/src/page-wizard/steps/CollectStep.tsx +3 -3
  240. package/src/page-wizard/steps/ContentStep.tsx +4 -5
  241. package/src/page-wizard/steps/Generate.tsx +2 -2
  242. package/src/page-wizard/steps/ImagesStep.tsx +43 -24
  243. package/src/page-wizard/steps/MetaDataStep.tsx +5 -5
  244. package/src/page-wizard/steps/SelectStep.tsx +8 -6
  245. package/src/page-wizard/steps/StructureStep.tsx +9 -8
  246. package/src/page-wizard/steps/TranslateStep.tsx +5 -3
  247. package/src/revision.ts +2 -2
  248. package/src/splash-screen/NewPage.tsx +2 -2
  249. package/src/splash-screen/SectionHeadline.tsx +4 -4
  250. package/dist/editor/component-designer/ComponentDesigner.d.ts +0 -1
  251. package/dist/editor/component-designer/ComponentDesigner.js +0 -51
  252. package/dist/editor/component-designer/ComponentDesigner.js.map +0 -1
  253. package/dist/editor/component-designer/ComponentDesignerMenu.d.ts +0 -1
  254. package/dist/editor/component-designer/ComponentDesignerMenu.js +0 -65
  255. package/dist/editor/component-designer/ComponentDesignerMenu.js.map +0 -1
  256. package/dist/editor/component-designer/ComponentEditor.d.ts +0 -4
  257. package/dist/editor/component-designer/ComponentEditor.js +0 -55
  258. package/dist/editor/component-designer/ComponentEditor.js.map +0 -1
  259. package/dist/editor/component-designer/ComponentRenderingCodeEditor.d.ts +0 -5
  260. package/dist/editor/component-designer/ComponentRenderingCodeEditor.js +0 -11
  261. package/dist/editor/component-designer/ComponentRenderingCodeEditor.js.map +0 -1
  262. package/dist/editor/component-designer/ComponentRenderingEditor.d.ts +0 -1
  263. package/dist/editor/component-designer/ComponentRenderingEditor.js +0 -69
  264. package/dist/editor/component-designer/ComponentRenderingEditor.js.map +0 -1
  265. package/dist/editor/component-designer/ComponentsDropdown.d.ts +0 -4
  266. package/dist/editor/component-designer/ComponentsDropdown.js +0 -20
  267. package/dist/editor/component-designer/ComponentsDropdown.js.map +0 -1
  268. package/dist/editor/component-designer/PlaceholdersEditor.d.ts +0 -4
  269. package/dist/editor/component-designer/PlaceholdersEditor.js +0 -63
  270. package/dist/editor/component-designer/PlaceholdersEditor.js.map +0 -1
  271. package/dist/editor/component-designer/RenderingsDropdown.d.ts +0 -1
  272. package/dist/editor/component-designer/RenderingsDropdown.js +0 -23
  273. package/dist/editor/component-designer/RenderingsDropdown.js.map +0 -1
  274. package/dist/editor/component-designer/TemplateEditor.d.ts +0 -1
  275. package/dist/editor/component-designer/TemplateEditor.js +0 -142
  276. package/dist/editor/component-designer/TemplateEditor.js.map +0 -1
  277. package/dist/editor/component-designer/aiContext.d.ts +0 -5
  278. package/dist/editor/component-designer/aiContext.js +0 -14
  279. package/dist/editor/component-designer/aiContext.js.map +0 -1
  280. package/src/editor/component-designer/ComponentDesigner.tsx +0 -66
  281. package/src/editor/component-designer/ComponentDesignerMenu.tsx +0 -91
  282. package/src/editor/component-designer/ComponentEditor.tsx +0 -95
  283. package/src/editor/component-designer/ComponentRenderingCodeEditor.tsx +0 -31
  284. package/src/editor/component-designer/ComponentRenderingEditor.tsx +0 -104
  285. package/src/editor/component-designer/ComponentsDropdown.tsx +0 -39
  286. package/src/editor/component-designer/PlaceholdersEditor.tsx +0 -179
  287. package/src/editor/component-designer/RenderingsDropdown.tsx +0 -36
  288. package/src/editor/component-designer/TemplateEditor.tsx +0 -236
  289. package/src/editor/component-designer/aiContext.ts +0 -21
@@ -1,179 +0,0 @@
1
- import { useEditContext } from "../client/editContext";
2
- import {
3
- Component,
4
- PlaceholderDefinition,
5
- saveComponentDetails,
6
- } from "../services/componentDesignerService";
7
- import { ArrowDownIcon } from "../ui/Icons";
8
- import { Toolbar } from "../ui/Toolbar";
9
- import { Button } from "primereact/button";
10
- import { ItemNameDialog } from "../ui/ItemNameDialogNew";
11
-
12
- import { InsertOption } from "../../types";
13
-
14
- export function PlaceholdersEditor({
15
- allComponents,
16
- }: {
17
- allComponents: Component[];
18
- }) {
19
- const context = useEditContext()!;
20
- const component = context.componentDesignerComponent;
21
- // const itemNameDialogRef = useRef<ItemNameDialogHandle>(null);
22
-
23
- const handleDragStart = (
24
- event: React.DragEvent<HTMLDivElement>,
25
- component: Component | InsertOption,
26
- ) => {
27
- event.dataTransfer.setData("text/plain", JSON.stringify(component));
28
- };
29
-
30
- const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {
31
- event.preventDefault();
32
- };
33
-
34
- const handleDrop = (
35
- event: React.DragEvent<HTMLDivElement>,
36
- placeholderName: string,
37
- ) => {
38
- event.preventDefault();
39
- const componentData = JSON.parse(event.dataTransfer.getData("text/plain"));
40
- const placeholder = component?.placeholders.find(
41
- (x) => x.name == placeholderName,
42
- );
43
- if (!placeholder) return;
44
- console.log(placeholder, componentData);
45
-
46
- if (placeholder.components.find((x) => x.typeId === componentData.typeId))
47
- return;
48
- placeholder.components.push(componentData);
49
- context.setComponentDesignerComponent({
50
- ...context.componentDesignerComponent!,
51
- });
52
- };
53
-
54
- const removeInsertOption = (
55
- placeholder: PlaceholderDefinition,
56
- insertOption: InsertOption,
57
- ) => {
58
- placeholder.components = placeholder.components.filter(
59
- (x) => x.typeId !== insertOption.typeId,
60
- );
61
- context.setComponentDesignerComponent({
62
- ...context.componentDesignerComponent!,
63
- });
64
- };
65
-
66
- // const addNewPlaceholder = async () => {
67
- // itemNameDialogRef.current?.show({
68
- // title: "Choose Placeholder Name",
69
- // accept: async (name: string) => {
70
- // if (!context.componentDesignerComponent) return;
71
- // const placeholder = {
72
- // name: name,
73
- // components: [],
74
- // };
75
- // context.componentDesignerComponent.placeholders.push(placeholder);
76
- // context.setComponentDesignerComponent({
77
- // ...context.componentDesignerComponent!,
78
- // });
79
- // },
80
- // });
81
- // };
82
-
83
- if (!component)
84
- return (
85
- <div className="flex h-full items-center justify-center text-xs">
86
- Select a component
87
- </div>
88
- );
89
- else
90
- return (
91
- <div className="flex h-full flex-col">
92
- <Toolbar>
93
- {/* <Button
94
- icon="pi pi-fw pi-plus"
95
- label="New Placeholder"
96
- text
97
- size="small"
98
- className="text-xs font-normal text-gray-800"
99
- disabled={!component}
100
- onClick={() => {
101
- addNewPlaceholder();
102
- }}
103
- /> */}
104
- <Button
105
- icon="pi pi-fw pi-save"
106
- label="Save"
107
- text
108
- size="small"
109
- className="text-xs font-normal text-gray-800"
110
- disabled={!component}
111
- onClick={() => {
112
- saveComponentDetails(component, context.page!.item);
113
- }}
114
- />
115
- </Toolbar>
116
- <div className="flex flex-1">
117
- <div className="relative h-full flex-1">
118
- <div className="absolute inset-1 overflow-y-auto">
119
- {component.placeholders.map((x) => (
120
- <div
121
- key={x.name}
122
- className="mb-2"
123
- onDragOver={handleDragOver}
124
- onDrop={(event) => handleDrop(event, x.name)}
125
- >
126
- <div className="flex items-center gap-1 text-xs">
127
- <ArrowDownIcon /> {x.name}
128
- </div>
129
- <div className="mt-1.5 flex flex-wrap gap-4 p-1 text-xs">
130
- {x.components.map((y) => (
131
- <div className="relative" key={y.typeId}>
132
- <div
133
- className="absolute top-[-12px] right-[-12px] cursor-pointer rounded-full border bg-white p-1"
134
- onClick={() => removeInsertOption(x, y)}
135
- >
136
- <i className="pi pi-times text-xs" />
137
- </div>
138
- {renderComponent(y)}
139
- </div>
140
- ))}
141
- </div>
142
- </div>
143
- ))}
144
- </div>
145
- </div>
146
- <div className="relative w-24">
147
- <div className="absolute inset-0 overflow-y-auto border-l text-xs">
148
- {allComponents.map((x) => (
149
- <div
150
- key={x.templateId}
151
- className="mb-2 cursor-grab"
152
- draggable
153
- onDragStart={(event) => handleDragStart(event, x)}
154
- >
155
- {renderComponent(x)}
156
- </div>
157
- ))}
158
- </div>
159
- </div>
160
- </div>
161
- {/* <ItemNameDialog ref={itemNameDialogRef} /> */}
162
- </div>
163
- );
164
- }
165
-
166
- function renderComponent(y: Component | InsertOption) {
167
- return (
168
- <div className="flex flex-col items-center border border-gray-200 p-2">
169
- {y.svg && (
170
- <div
171
- className="h-8 w-8"
172
- dangerouslySetInnerHTML={{ __html: y.svg }}
173
- ></div>
174
- )}
175
- {!y.svg && <img src={y.icon} width="32" height="32"></img>}
176
- {y.name}
177
- </div>
178
- );
179
- }
@@ -1,36 +0,0 @@
1
- import { useEditContext } from "../client/editContext";
2
- import { Dropdown } from "primereact/dropdown";
3
-
4
- import { Rendering } from "../../types";
5
-
6
- export function RenderingsDropdown() {
7
- const context = useEditContext()!;
8
-
9
- if (!context.componentDesignerComponent) return null;
10
-
11
- const compatibleRenderings = [
12
- ...context.componentDesignerComponent.compatibleRenderings,
13
- ];
14
-
15
- if (!compatibleRenderings) return null;
16
-
17
- const loadRendering = async (value: Rendering) => {
18
- const item = await context.itemsRepository.getItem({
19
- id: value.id,
20
- language: "en",
21
- version: 0,
22
- });
23
- context.setComponentDesignerRendering(item);
24
- };
25
-
26
- return (
27
- <Dropdown
28
- options={compatibleRenderings}
29
- optionLabel="name"
30
- value={compatibleRenderings.find(
31
- (x) => x.id === (context.componentDesignerRendering?.id || "")
32
- )}
33
- onChange={(e) => loadRendering(e.value as Rendering)}
34
- />
35
- );
36
- }
@@ -1,236 +0,0 @@
1
- import { useEditContext } from "../client/editContext";
2
-
3
- import { InputText } from "primereact/inputtext";
4
- import {
5
- FieldTypeGroup,
6
- TemplateField,
7
- TemplateSection,
8
- getFieldTypes,
9
- } from "../services/componentDesignerService";
10
- import { useEffect, useState } from "react";
11
- import { Dropdown } from "primereact/dropdown";
12
-
13
- export function TemplateEditor() {
14
- const context = useEditContext();
15
- if (!context) return null;
16
-
17
- const [sections, setSections] = useState<TemplateSection[]>([]);
18
- const [fieldTypes, setFieldTypes] = useState<FieldTypeGroup[]>([]);
19
-
20
- useEffect(() => {
21
- const newSections = [
22
- ...(context.componentDesignerComponent?.template?.sections.map((s) => ({
23
- ...s,
24
- })) || []),
25
- ];
26
- if (
27
- newSections.length === 0 ||
28
- newSections[newSections.length - 1].fields.length > 0
29
- )
30
- newSections.push({
31
- name: "",
32
- fields: [],
33
- key: Math.random().toString(),
34
- });
35
- newSections.forEach((section) => {
36
- const fields = [...section.fields];
37
- if (
38
- section.id ||
39
- (section.name != "" &&
40
- (!fields.length ||
41
- fields[fields.length - 1].id ||
42
- fields[fields.length - 1].name != ""))
43
- ) {
44
- fields.push({
45
- name: "",
46
- type: "",
47
- source: "",
48
- key: Math.random().toString(),
49
- });
50
- }
51
- section.fields = fields;
52
- });
53
- setSections(newSections);
54
- }, [context.componentDesignerComponent]);
55
-
56
- useEffect(() => {
57
- const load = async () => {
58
- const types = await getFieldTypes();
59
- setFieldTypes(types);
60
- };
61
- load();
62
- }, []);
63
-
64
- const template = context.componentDesignerComponent?.template;
65
-
66
- if (!template) return null;
67
-
68
- const updateComponent = (sections: TemplateSection[]) => {
69
- const newSections = sections.filter((x) => x.id || x.name);
70
- newSections.forEach((section) => {
71
- section.fields = section.fields.filter((x) => x.id || x.name);
72
- });
73
-
74
- const newTemplate = {
75
- ...template,
76
- sections: newSections,
77
- };
78
-
79
- const newComponent = {
80
- ...context.componentDesignerComponent!,
81
- template: newTemplate,
82
- };
83
-
84
- console.log("Updating component", newComponent);
85
-
86
- context.setComponentDesignerComponent(newComponent);
87
- };
88
-
89
- const update = () => {
90
- updateComponent(sections);
91
- };
92
-
93
- const removeField = (section: TemplateSection, field: TemplateField) => {
94
- section.fields = section.fields.filter((x) => x.id !== field.id);
95
- update();
96
- };
97
-
98
- const handleDragStart = (
99
- event: React.DragEvent,
100
- index: number,
101
- sectionIndex?: number
102
- ) => {
103
- event.dataTransfer.setData("text/plain", index.toString());
104
- event.dataTransfer.effectAllowed = "move";
105
- //event.currentTarget.style.opacity = "0.5";
106
- if (sectionIndex === undefined) {
107
- event.dataTransfer.setData("isSection", "true");
108
- } else {
109
- event.dataTransfer.setData("sectionIndex", sectionIndex.toString());
110
- event.dataTransfer.setData("isSection", "false");
111
- }
112
- };
113
-
114
- const handleDragOver = (event: React.DragEvent) => {
115
- event.preventDefault();
116
- event.dataTransfer.dropEffect = "move";
117
- };
118
-
119
- const handleDrop = (
120
- event: React.DragEvent,
121
- dropIndex: number,
122
- sectionIndex?: number
123
- ) => {
124
- event.preventDefault();
125
- const dragIndex = parseInt(event.dataTransfer.getData("text/plain"));
126
- const isSectionDrag = event.dataTransfer.getData("isSection") === "true";
127
-
128
- if (isSectionDrag && sectionIndex === undefined) {
129
- const newSections = sections;
130
- const [removed] = newSections.splice(dragIndex, 1);
131
- newSections.splice(dropIndex, 0, removed);
132
-
133
- updateComponent(newSections);
134
- } else if (!isSectionDrag) {
135
- const sourceSectionIndex = parseInt(
136
- event.dataTransfer.getData("sectionIndex")
137
- );
138
- const sourceSection = sections[sourceSectionIndex];
139
- const targetSection = sections[sectionIndex ?? dropIndex];
140
-
141
- const sourceFields = sourceSection.fields;
142
- const targetFields = targetSection.fields;
143
- const [removed] = sourceFields.splice(dragIndex, 1);
144
-
145
- if (sectionIndex === undefined) {
146
- targetFields.push(removed);
147
- } else {
148
- targetFields.splice(dropIndex, 0, removed);
149
- }
150
-
151
- updateComponent(sections);
152
- }
153
- };
154
-
155
- return (
156
- <div className="p-1">
157
- {sections.map((section, sectionIndex) => {
158
- return (
159
- <div key={section.id || section.key} className="mb-4">
160
- <div className=" flex gap-1">
161
- {dragHandle(sectionIndex)}
162
- <InputText
163
- className="text-xs"
164
- value={section.name}
165
- onChange={(e) => {
166
- section.name = e.target.value;
167
- update();
168
- }}
169
- />
170
- </div>
171
- {section.fields.map((field, fieldIndex) => {
172
- return (
173
- <div
174
- key={field.id || field.key}
175
- className="ml-4 flex gap-2 mt-1 items-center"
176
- >
177
- {dragHandle(fieldIndex, sectionIndex)}
178
- <InputText
179
- key="name"
180
- className="text-xs flex-1"
181
- value={field.name}
182
- onChange={(e) => {
183
- field.name = e.target.value;
184
- update();
185
- }}
186
- />
187
- <Dropdown
188
- key="type"
189
- filter
190
- options={fieldTypes}
191
- optionGroupLabel="name"
192
- optionGroupChildren="fieldTypes"
193
- className="text-xs flex-1"
194
- value={field.type}
195
- onChange={(e) => {
196
- field.type = e.target.value;
197
- update();
198
- }}
199
- />
200
- <InputText
201
- key="source"
202
- className="text-xs flex-1"
203
- value={field.source}
204
- onChange={(e) => {
205
- field.source = e.target.value;
206
- update();
207
- }}
208
- />
209
- <i
210
- className="pi pi-fw pi-times cursor-pointer"
211
- onClick={() => removeField(section, field)}
212
- />
213
- </div>
214
- );
215
- })}
216
- </div>
217
- );
218
- })}
219
- </div>
220
- );
221
-
222
- function dragHandle(index: number, sectionIndex?: number) {
223
- return (
224
- <div
225
- draggable
226
- onDragStart={(event) => handleDragStart(event, index, sectionIndex)}
227
- onDragOver={handleDragOver}
228
- onDrop={(event) => handleDrop(event, index, sectionIndex)}
229
- // onDragEnd={handleDragEnd}
230
- className="cursor-grab text-xs bg-gray-50 text-center p-0.5 border flex justify-center items-center"
231
- >
232
- <i className="pi pi-ellipsis-v" />
233
- </div>
234
- );
235
- }
236
- }
@@ -1,21 +0,0 @@
1
- import { AiContext } from "../ai/types";
2
- //import { configuration } from "../config/config";
3
- import { EditContextType } from "../client/editContext";
4
- import { getItemDescriptor } from "../utils";
5
-
6
- export function createDesignerAiContext({
7
- editContext,
8
- }: {
9
- editContext: EditContextType;
10
- }): AiContext {
11
- return {
12
- callback: () => {
13
- editContext.requestRefresh();
14
- },
15
- promptData: {
16
- templateId: editContext.componentDesignerComponent?.templateId,
17
- renderingId: editContext.componentDesignerRendering?.id,
18
- contextItem: getItemDescriptor(editContext.page?.item!),
19
- },
20
- };
21
- }