@alpaca-headless/alpaca-headless-nextjs 1.0.129 → 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 (401) hide show
  1. package/dist/editor.css +435 -49
  2. package/dist/esm/Editor.js +13 -0
  3. package/dist/esm/client-components/ClientLink.js +35 -0
  4. package/dist/{cjs/components → esm/client-components}/LinkEditor.js +22 -19
  5. package/dist/esm/client-components/MultiComponentEditor.js +22 -0
  6. package/dist/esm/client-components/index.js +4 -0
  7. package/dist/esm/components/Error.js +10 -0
  8. package/dist/{cjs → esm}/components/Image.js +5 -8
  9. package/dist/esm/components/Link.js +30 -0
  10. package/dist/esm/components/LinkPreview.js +30 -0
  11. package/dist/esm/components/LockedFieldIndicator.js +21 -0
  12. package/dist/esm/components/Picture.js +132 -0
  13. package/dist/esm/components/PictureEditor.js +77 -0
  14. package/dist/esm/components/PictureEditorWrapper.js +7 -0
  15. package/dist/esm/components/Placeholder.js +141 -0
  16. package/dist/esm/components/RichText.js +29 -0
  17. package/dist/esm/components/RichTextEditor.js +92 -0
  18. package/dist/esm/components/RichTextEditorWrapper.js +7 -0
  19. package/dist/esm/components/Slot.js +6 -0
  20. package/dist/esm/components/Text.js +28 -0
  21. package/dist/esm/components/TextEditor.js +78 -0
  22. package/dist/esm/components/TextEditorWrapper.js +19 -0
  23. package/dist/esm/components/Translate.js +9 -0
  24. package/dist/esm/components/TranslateEditor.js +24 -0
  25. package/dist/esm/components/TranslateEditorWrapper.js +7 -0
  26. package/dist/esm/components/index.js +7 -0
  27. package/dist/esm/components/picture-shared.js +26 -0
  28. package/dist/esm/editor/ComponentInfo.js +12 -0
  29. package/dist/esm/editor/ConfirmationDialog.js +29 -0
  30. package/dist/{cjs → esm}/editor/ContentTree.js +61 -46
  31. package/dist/esm/editor/ContextMenu.js +90 -0
  32. package/dist/esm/editor/DialogButtons.js +4 -0
  33. package/dist/esm/editor/DictionaryEditor.js +37 -0
  34. package/dist/esm/editor/EditFrame.js +115 -0
  35. package/dist/esm/editor/EditFrameWrapper.js +7 -0
  36. package/dist/esm/editor/EditorClient.js +889 -0
  37. package/dist/esm/editor/EditorClientHost.js +15 -0
  38. package/dist/esm/editor/EditorWarning.js +10 -0
  39. package/dist/esm/editor/EditorWarnings.js +13 -0
  40. package/dist/esm/editor/FieldEditorPopup.js +23 -0
  41. package/dist/esm/editor/FieldList.js +48 -0
  42. package/dist/esm/editor/FieldListField.js +86 -0
  43. package/dist/esm/editor/FieldListFieldWithFallbacks.js +79 -0
  44. package/dist/{cjs → esm}/editor/FloatingToolbar.js +20 -23
  45. package/dist/esm/editor/ItemInfo.js +14 -0
  46. package/dist/esm/editor/LinkEditorDialog.js +61 -0
  47. package/dist/esm/editor/MainLayout.js +18 -0
  48. package/dist/esm/editor/MediaSelector.js +85 -0
  49. package/dist/esm/editor/Outline.js +82 -0
  50. package/dist/esm/editor/PageViewer.js +41 -0
  51. package/dist/esm/editor/PictureEditorDialog.js +201 -0
  52. package/dist/esm/editor/PlaceholderDropZone.js +130 -0
  53. package/dist/esm/editor/PlaceholderDropZoneHost.js +7 -0
  54. package/dist/esm/editor/PreviewClient.js +6 -0
  55. package/dist/esm/editor/PreviewClientHost.js +7 -0
  56. package/dist/esm/editor/PreviewPanel.js +7 -0
  57. package/dist/esm/editor/PublishDialog.js +15 -0
  58. package/dist/esm/editor/Terminal.js +55 -0
  59. package/dist/esm/editor/ai/AiPopup.js +28 -0
  60. package/dist/esm/editor/ai/AiResponseMessage.js +20 -0
  61. package/dist/esm/editor/ai/AiTerminal.js +216 -0
  62. package/dist/esm/editor/ai/AiToolCall.js +15 -0
  63. package/dist/esm/editor/ai/EditorAiTerminal.js +5 -0
  64. package/dist/esm/editor/commands/commands.js +1 -0
  65. package/dist/esm/editor/commands/componentCommands.js +287 -0
  66. package/dist/esm/editor/commands/createVersionCommand.js +26 -0
  67. package/dist/esm/editor/commands/undo.js +22 -0
  68. package/dist/esm/editor/component-designer/ComponentDesigner.js +7 -0
  69. package/dist/esm/editor/component-designer/ComponentDesignerAiTerminal.js +5 -0
  70. package/dist/esm/editor/component-designer/ComponentDesignerMenu.js +39 -0
  71. package/dist/esm/editor/component-designer/ComponentPreview.js +20 -0
  72. package/dist/esm/editor/component-designer/ComponentRenderingEditor.js +38 -0
  73. package/dist/esm/editor/component-designer/ComponentSelectionTree.js +56 -0
  74. package/dist/esm/editor/component-designer/componentDesignerContext.js +22 -0
  75. package/dist/esm/editor/componentTreeHelper.js +20 -0
  76. package/dist/esm/editor/config/config.js +327 -0
  77. package/dist/esm/editor/config/types.js +1 -0
  78. package/dist/esm/editor/editContext.js +11 -0
  79. package/dist/esm/editor/editor-warnings/ItemLocked.js +40 -0
  80. package/dist/esm/editor/editor-warnings/ValidationErrors.js +22 -0
  81. package/dist/esm/editor/fieldTypes/CheckboxEditor.js +21 -0
  82. package/dist/esm/editor/fieldTypes/DropLinkEditor.js +50 -0
  83. package/dist/esm/editor/fieldTypes/InternalLinkFieldEditor.js +41 -0
  84. package/dist/{cjs → esm}/editor/fieldTypes/LinkFieldEditor.js +14 -16
  85. package/dist/esm/editor/fieldTypes/MultiLineText.js +25 -0
  86. package/dist/esm/editor/fieldTypes/PictureFieldEditor.js +33 -0
  87. package/dist/esm/editor/fieldTypes/RawEditor.js +26 -0
  88. package/dist/esm/editor/fieldTypes/RichTextEditor.js +7 -0
  89. package/dist/esm/editor/fieldTypes/RichTextEditorComponent.js +46 -0
  90. package/dist/esm/editor/fieldTypes/SingleLineText.js +23 -0
  91. package/dist/esm/editor/fieldTypes/TreeListEditor.js +57 -0
  92. package/dist/esm/editor/itemCommands.js +27 -0
  93. package/dist/esm/editor/menubar/BrowseHistory.js +39 -0
  94. package/dist/esm/editor/menubar/ItemLanguageVersion.js +20 -0
  95. package/dist/esm/editor/menubar/LanguageSelector.js +18 -0
  96. package/dist/esm/editor/menubar/Menu.js +105 -0
  97. package/dist/esm/editor/menubar/PageViewerControls.js +66 -0
  98. package/dist/esm/editor/menubar/VersionSelector.js +18 -0
  99. package/dist/esm/editor/previewContext.js +5 -0
  100. package/dist/esm/editor/services/aiService.js +20 -0
  101. package/dist/esm/editor/services/componentDesignerService.js +23 -0
  102. package/dist/esm/editor/services/contentService.js +56 -0
  103. package/dist/esm/editor/services/editService.js +394 -0
  104. package/dist/esm/editor/services/serviceHelper.js +45 -0
  105. package/dist/esm/editor/sidebar/ComponentPalette.js +42 -0
  106. package/dist/esm/editor/sidebar/ComponentTree.js +237 -0
  107. package/dist/esm/editor/sidebar/Debug.js +46 -0
  108. package/dist/esm/editor/sidebar/EditHistory.js +66 -0
  109. package/dist/esm/editor/sidebar/EditorForm.js +24 -0
  110. package/dist/esm/editor/sidebar/GraphQL.js +85 -0
  111. package/dist/esm/editor/sidebar/Insert.js +7 -0
  112. package/dist/esm/editor/sidebar/MainContentTree.js +38 -0
  113. package/dist/esm/editor/sidebar/Sessions.js +11 -0
  114. package/dist/esm/editor/sidebar/Sidebar.js +13 -0
  115. package/dist/esm/editor/sidebar/SidebarView.js +73 -0
  116. package/dist/esm/editor/sidebar/Workbox.js +77 -0
  117. package/dist/esm/editor/ui/CopyToClipboardButton.js +14 -0
  118. package/dist/esm/editor/ui/Icons.js +19 -0
  119. package/dist/esm/editor/ui/ItemNameDialog.js +33 -0
  120. package/dist/esm/editor/ui/Section.js +8 -0
  121. package/dist/esm/editor/utils/insertOptions.js +39 -0
  122. package/dist/esm/editor/utils.js +71 -0
  123. package/dist/esm/editor/views/ItemEditor.js +18 -0
  124. package/dist/esm/fieldTypes.js +1 -0
  125. package/dist/esm/graphQL.js +50 -0
  126. package/dist/esm/graphQLTypes.js +1 -0
  127. package/dist/esm/index.js +9 -0
  128. package/dist/{cjs → esm}/loadRouteData.js +19 -37
  129. package/dist/{cjs → esm}/mediaProtection.js +4 -11
  130. package/dist/esm/middleware/handleRequest.js +45 -0
  131. package/dist/esm/middleware/index.js +1 -0
  132. package/dist/esm/public.js +10 -0
  133. package/dist/esm/renderContext.js +49 -0
  134. package/dist/esm/renderings.js +87 -0
  135. package/dist/esm/servertypes.js +1 -0
  136. package/dist/esm/translate.js +7 -0
  137. package/dist/primereact/resources/themes/arya-blue/theme.css +854 -790
  138. package/dist/primereact/resources/themes/arya-green/theme.css +854 -790
  139. package/dist/primereact/resources/themes/arya-orange/theme.css +854 -790
  140. package/dist/primereact/resources/themes/arya-purple/theme.css +854 -790
  141. package/dist/primereact/resources/themes/bootstrap4-dark-blue/theme.css +678 -615
  142. package/dist/primereact/resources/themes/bootstrap4-dark-purple/theme.css +678 -615
  143. package/dist/primereact/resources/themes/bootstrap4-light-blue/theme.css +679 -616
  144. package/dist/primereact/resources/themes/bootstrap4-light-purple/theme.css +679 -616
  145. package/dist/primereact/resources/themes/fluent-light/theme.css +686 -638
  146. package/dist/primereact/resources/themes/lara-dark-amber/theme.css +679 -630
  147. package/dist/primereact/resources/themes/lara-dark-blue/theme.css +679 -630
  148. package/dist/primereact/resources/themes/lara-dark-cyan/theme.css +679 -630
  149. package/dist/primereact/resources/themes/lara-dark-green/theme.css +679 -630
  150. package/dist/primereact/resources/themes/lara-dark-indigo/theme.css +679 -630
  151. package/dist/primereact/resources/themes/lara-dark-pink/theme.css +679 -630
  152. package/dist/primereact/resources/themes/lara-dark-purple/theme.css +679 -630
  153. package/dist/primereact/resources/themes/lara-dark-teal/theme.css +679 -630
  154. package/dist/primereact/resources/themes/lara-light-amber/theme.css +776 -725
  155. package/dist/primereact/resources/themes/lara-light-blue/theme.css +1011 -960
  156. package/dist/primereact/resources/themes/lara-light-cyan/theme.css +776 -725
  157. package/dist/primereact/resources/themes/lara-light-green/theme.css +820 -769
  158. package/dist/primereact/resources/themes/lara-light-indigo/theme.css +1016 -965
  159. package/dist/primereact/resources/themes/lara-light-pink/theme.css +776 -725
  160. package/dist/primereact/resources/themes/lara-light-purple/theme.css +1016 -965
  161. package/dist/primereact/resources/themes/lara-light-teal/theme.css +776 -725
  162. package/dist/primereact/resources/themes/luna-amber/theme.css +950 -887
  163. package/dist/primereact/resources/themes/luna-blue/theme.css +950 -887
  164. package/dist/primereact/resources/themes/luna-green/theme.css +950 -887
  165. package/dist/primereact/resources/themes/luna-pink/theme.css +950 -887
  166. package/dist/primereact/resources/themes/md-dark-deeppurple/theme.css +918 -950
  167. package/dist/primereact/resources/themes/md-dark-indigo/theme.css +918 -950
  168. package/dist/primereact/resources/themes/md-light-deeppurple/theme.css +878 -910
  169. package/dist/primereact/resources/themes/md-light-indigo/theme.css +878 -910
  170. package/dist/primereact/resources/themes/mdc-dark-deeppurple/theme.css +918 -950
  171. package/dist/primereact/resources/themes/mdc-dark-indigo/theme.css +918 -950
  172. package/dist/primereact/resources/themes/mdc-light-deeppurple/theme.css +878 -910
  173. package/dist/primereact/resources/themes/mdc-light-indigo/theme.css +878 -910
  174. package/dist/primereact/resources/themes/mira/theme.css +1562 -1532
  175. package/dist/primereact/resources/themes/nano/theme.css +707 -641
  176. package/dist/primereact/resources/themes/nova/theme.css +705 -643
  177. package/dist/primereact/resources/themes/nova-accent/theme.css +701 -636
  178. package/dist/primereact/resources/themes/nova-alt/theme.css +705 -643
  179. package/dist/primereact/resources/themes/rhea/theme.css +876 -811
  180. package/dist/primereact/resources/themes/saga-blue/theme.css +896 -832
  181. package/dist/primereact/resources/themes/saga-green/theme.css +896 -832
  182. package/dist/primereact/resources/themes/saga-orange/theme.css +896 -832
  183. package/dist/primereact/resources/themes/saga-purple/theme.css +896 -832
  184. package/dist/primereact/resources/themes/soho-dark/theme.css +701 -643
  185. package/dist/primereact/resources/themes/soho-light/theme.css +690 -634
  186. package/dist/primereact/resources/themes/tailwind-light/theme.css +1370 -1306
  187. package/dist/primereact/resources/themes/vela-blue/theme.css +862 -798
  188. package/dist/primereact/resources/themes/vela-green/theme.css +862 -798
  189. package/dist/primereact/resources/themes/vela-orange/theme.css +862 -798
  190. package/dist/primereact/resources/themes/vela-purple/theme.css +862 -798
  191. package/dist/primereact/resources/themes/viva-dark/theme.css +655 -612
  192. package/dist/primereact/resources/themes/viva-light/theme.css +737 -694
  193. package/package.json +26 -22
  194. package/types/Editor.d.ts +9 -0
  195. package/types/{components → client-components}/LinkEditor.d.ts +1 -1
  196. package/types/client-components/MultiComponentEditor.d.ts +4 -2
  197. package/types/client-components/index.d.ts +3 -2
  198. package/types/components/Image.d.ts +3 -0
  199. package/types/components/Link.d.ts +4 -2
  200. package/types/components/LinkPreview.d.ts +6 -0
  201. package/types/components/LockedFieldIndicator.d.ts +6 -0
  202. package/types/components/Picture.d.ts +6 -7
  203. package/types/components/PictureEditorWrapper.d.ts +3 -0
  204. package/types/components/Placeholder.d.ts +12 -14
  205. package/types/components/RichText.d.ts +5 -2
  206. package/types/components/RichTextEditor.d.ts +3 -290
  207. package/types/components/RichTextEditorWrapper.d.ts +2 -0
  208. package/types/components/Slot.d.ts +5 -2
  209. package/types/components/Text.d.ts +5 -2
  210. package/types/components/TextEditor.d.ts +3 -290
  211. package/types/components/TextEditorWrapper.d.ts +4 -0
  212. package/types/components/Translate.d.ts +4 -1
  213. package/types/components/TranslateEditorWrapper.d.ts +3 -0
  214. package/types/components/picture-shared.d.ts +16 -0
  215. package/types/editor/ComponentInfo.d.ts +1 -1
  216. package/types/editor/ContentTree.d.ts +4 -3
  217. package/types/editor/ContextMenu.d.ts +14 -0
  218. package/types/editor/DictionaryEditor.d.ts +1 -4
  219. package/types/editor/EditFrameWrapper.d.ts +6 -0
  220. package/types/editor/EditorClient.d.ts +18 -7
  221. package/types/editor/EditorClientHost.d.ts +5 -6
  222. package/types/editor/EditorWarning.d.ts +6 -0
  223. package/types/editor/EditorWarnings.d.ts +9 -0
  224. package/types/editor/FieldEditorPopup.d.ts +10 -0
  225. package/types/editor/FieldList.d.ts +6 -2
  226. package/types/editor/FieldListField.d.ts +8 -2
  227. package/types/editor/FieldListFieldWithFallbacks.d.ts +8 -0
  228. package/types/editor/ItemInfo.d.ts +1 -1
  229. package/types/editor/Outline.d.ts +11 -0
  230. package/types/editor/PageViewer.d.ts +1 -0
  231. package/types/editor/PictureEditorDialog.d.ts +4 -2
  232. package/types/editor/PlaceholderDropZone.d.ts +3 -2
  233. package/types/editor/PlaceholderDropZoneHost.d.ts +3 -2
  234. package/types/editor/PreviewClient.d.ts +5 -0
  235. package/types/editor/PreviewClientHost.d.ts +4 -0
  236. package/types/editor/PreviewPanel.d.ts +1 -0
  237. package/types/editor/PublishDialog.d.ts +7 -0
  238. package/types/editor/Terminal.d.ts +6 -2
  239. package/types/editor/{AiPopup.d.ts → ai/AiPopup.d.ts} +2 -3
  240. package/types/editor/ai/AiResponseMessage.d.ts +7 -0
  241. package/types/editor/ai/AiTerminal.d.ts +4 -0
  242. package/types/editor/ai/AiToolCall.d.ts +9 -0
  243. package/types/editor/ai/EditorAiTerminal.d.ts +4 -0
  244. package/types/editor/commands/commands.d.ts +21 -0
  245. package/types/editor/commands/componentCommands.d.ts +5 -0
  246. package/types/editor/commands/createVersionCommand.d.ts +2 -0
  247. package/types/editor/commands/undo.d.ts +15 -0
  248. package/types/editor/component-designer/ComponentDesigner.d.ts +1 -0
  249. package/types/editor/component-designer/ComponentDesignerAiTerminal.d.ts +1 -0
  250. package/types/editor/component-designer/ComponentDesignerMenu.d.ts +1 -0
  251. package/types/editor/component-designer/ComponentPreview.d.ts +1 -0
  252. package/types/editor/component-designer/ComponentRenderingEditor.d.ts +2 -0
  253. package/types/editor/component-designer/ComponentSelectionTree.d.ts +1 -0
  254. package/types/editor/component-designer/componentDesignerContext.d.ts +14 -0
  255. package/types/editor/componentTreeHelper.d.ts +2 -1
  256. package/types/editor/config/config.d.ts +2 -0
  257. package/types/editor/config/types.d.ts +66 -0
  258. package/types/editor/editContext.d.ts +72 -93
  259. package/types/editor/editor-warnings/ItemLocked.d.ts +2 -0
  260. package/types/editor/editor-warnings/ValidationErrors.d.ts +2 -0
  261. package/types/editor/fieldTypes/CheckboxEditor.d.ts +3 -2
  262. package/types/editor/fieldTypes/DropLinkEditor.d.ts +5 -0
  263. package/types/editor/fieldTypes/InternalLinkFieldEditor.d.ts +3 -2
  264. package/types/editor/fieldTypes/LinkFieldEditor.d.ts +3 -2
  265. package/types/editor/fieldTypes/MultiLineText.d.ts +3 -2
  266. package/types/editor/fieldTypes/PictureFieldEditor.d.ts +2 -1
  267. package/types/editor/fieldTypes/RawEditor.d.ts +5 -0
  268. package/types/editor/fieldTypes/RichTextEditor.d.ts +4 -3
  269. package/types/editor/fieldTypes/RichTextEditorComponent.d.ts +5 -0
  270. package/types/editor/fieldTypes/SingleLineText.d.ts +3 -2
  271. package/types/editor/fieldTypes/TreeListEditor.d.ts +2 -1
  272. package/types/editor/itemCommands.d.ts +3 -0
  273. package/types/editor/menubar/BrowseHistory.d.ts +4 -0
  274. package/types/editor/menubar/ItemLanguageVersion.d.ts +1 -0
  275. package/types/editor/menubar/LanguageSelector.d.ts +5 -0
  276. package/types/editor/menubar/Menu.d.ts +1 -0
  277. package/types/editor/menubar/PageViewerControls.d.ts +1 -0
  278. package/types/editor/menubar/VersionSelector.d.ts +5 -0
  279. package/types/editor/previewContext.d.ts +4 -0
  280. package/types/editor/services/aiService.d.ts +8 -0
  281. package/types/editor/services/componentDesignerService.d.ts +2 -0
  282. package/types/editor/{contentService.d.ts → services/contentService.d.ts} +2 -3
  283. package/types/editor/services/editService.d.ts +23 -0
  284. package/types/editor/services/serviceHelper.d.ts +7 -0
  285. package/types/editor/sidebar/ComponentPalette.d.ts +1 -0
  286. package/types/editor/sidebar/ComponentTree.d.ts +1 -0
  287. package/types/editor/sidebar/Debug.d.ts +1 -0
  288. package/types/editor/sidebar/EditHistory.d.ts +1 -0
  289. package/types/editor/sidebar/EditorForm.d.ts +1 -0
  290. package/types/editor/sidebar/GraphQL.d.ts +1 -0
  291. package/types/editor/sidebar/Insert.d.ts +1 -0
  292. package/types/editor/sidebar/MainContentTree.d.ts +3 -0
  293. package/types/editor/sidebar/Sessions.d.ts +1 -0
  294. package/types/editor/sidebar/Sidebar.d.ts +4 -0
  295. package/types/editor/sidebar/SidebarView.d.ts +8 -0
  296. package/types/editor/sidebar/Workbox.d.ts +1 -0
  297. package/types/editor/ui/CopyToClipboardButton.d.ts +3 -0
  298. package/types/editor/ui/Icons.d.ts +16 -0
  299. package/types/editor/{ItemNameDialog.d.ts → ui/ItemNameDialog.d.ts} +1 -0
  300. package/types/editor/utils/insertOptions.d.ts +3 -0
  301. package/types/editor/utils.d.ts +8 -0
  302. package/types/editor/views/ItemEditor.d.ts +1 -0
  303. package/types/fieldTypes.d.ts +39 -11
  304. package/types/graphQL.d.ts +12 -0
  305. package/types/index.d.ts +7 -4
  306. package/types/loadRouteData.d.ts +8 -85
  307. package/types/middleware/handleRequest.d.ts +5 -0
  308. package/types/middleware/index.d.ts +1 -1
  309. package/types/public.d.ts +12 -0
  310. package/types/renderContext.d.ts +41 -0
  311. package/types/renderings.d.ts +7 -0
  312. package/types/servertypes.d.ts +308 -0
  313. package/types/translate.d.ts +2 -0
  314. package/dist/cjs/alpacaContext.js +0 -12
  315. package/dist/cjs/client-components/ClientLink.js +0 -36
  316. package/dist/cjs/client-components/MultiComponentEditor.js +0 -26
  317. package/dist/cjs/client-components/index.js +0 -19
  318. package/dist/cjs/components/Error.js +0 -15
  319. package/dist/cjs/components/Link.js +0 -36
  320. package/dist/cjs/components/Picture.js +0 -124
  321. package/dist/cjs/components/PictureEditor.js +0 -49
  322. package/dist/cjs/components/Placeholder.js +0 -118
  323. package/dist/cjs/components/RichText.js +0 -47
  324. package/dist/cjs/components/RichTextEditor.js +0 -94
  325. package/dist/cjs/components/Slot.js +0 -8
  326. package/dist/cjs/components/Text.js +0 -46
  327. package/dist/cjs/components/TextEditor.js +0 -77
  328. package/dist/cjs/components/Translate.js +0 -14
  329. package/dist/cjs/components/TranslateEditor.js +0 -28
  330. package/dist/cjs/components/index.js +0 -23
  331. package/dist/cjs/editor/AiPopup.js +0 -33
  332. package/dist/cjs/editor/AiTerminal.js +0 -185
  333. package/dist/cjs/editor/ComponentInfo.js +0 -15
  334. package/dist/cjs/editor/ComponentPalette.js +0 -23
  335. package/dist/cjs/editor/ComponentTree.js +0 -217
  336. package/dist/cjs/editor/ConfirmationDialog.js +0 -31
  337. package/dist/cjs/editor/Debug.js +0 -26
  338. package/dist/cjs/editor/DialogButtons.js +0 -7
  339. package/dist/cjs/editor/DictionaryEditor.js +0 -41
  340. package/dist/cjs/editor/EditFrame.js +0 -129
  341. package/dist/cjs/editor/EditHistory.js +0 -43
  342. package/dist/cjs/editor/Editor.js +0 -27
  343. package/dist/cjs/editor/EditorClient.js +0 -753
  344. package/dist/cjs/editor/EditorClientHost.js +0 -37
  345. package/dist/cjs/editor/FieldList.js +0 -51
  346. package/dist/cjs/editor/FieldListField.js +0 -75
  347. package/dist/cjs/editor/GraphQL.js +0 -87
  348. package/dist/cjs/editor/ItemEditor.js +0 -9
  349. package/dist/cjs/editor/ItemInfo.js +0 -17
  350. package/dist/cjs/editor/ItemNameDialog.js +0 -37
  351. package/dist/cjs/editor/LanguageSelector.js +0 -21
  352. package/dist/cjs/editor/LinkEditorDialog.js +0 -67
  353. package/dist/cjs/editor/MainLayout.js +0 -24
  354. package/dist/cjs/editor/MediaSelector.js +0 -92
  355. package/dist/cjs/editor/PictureEditorDialog.js +0 -93
  356. package/dist/cjs/editor/PlaceholderDropZone.js +0 -93
  357. package/dist/cjs/editor/PlaceholderDropZoneHost.js +0 -37
  358. package/dist/cjs/editor/SidebarTabs.js +0 -47
  359. package/dist/cjs/editor/Terminal.js +0 -61
  360. package/dist/cjs/editor/Utils.js +0 -43
  361. package/dist/cjs/editor/VersionSelector.js +0 -21
  362. package/dist/cjs/editor/Workbox.js +0 -41
  363. package/dist/cjs/editor/componentCommands.js +0 -141
  364. package/dist/cjs/editor/componentTreeHelper.js +0 -18
  365. package/dist/cjs/editor/contentService.js +0 -80
  366. package/dist/cjs/editor/editContext.js +0 -40
  367. package/dist/cjs/editor/editService.js +0 -334
  368. package/dist/cjs/editor/fieldTypes/CheckboxEditor.js +0 -21
  369. package/dist/cjs/editor/fieldTypes/InternalLinkFieldEditor.js +0 -46
  370. package/dist/cjs/editor/fieldTypes/MultiLineText.js +0 -25
  371. package/dist/cjs/editor/fieldTypes/PictureFieldEditor.js +0 -19
  372. package/dist/cjs/editor/fieldTypes/RichTextEditor.js +0 -24
  373. package/dist/cjs/editor/fieldTypes/SingleLineText.js +0 -25
  374. package/dist/cjs/editor/fieldTypes/TreeListEditor.js +0 -59
  375. package/dist/cjs/editor/index.js +0 -18
  376. package/dist/cjs/editor/ui/Section.js +0 -8
  377. package/dist/cjs/fieldTypes.js +0 -2
  378. package/dist/cjs/graphQLTypes.js +0 -2
  379. package/dist/cjs/index.js +0 -36
  380. package/dist/cjs/layoutData.js +0 -2
  381. package/dist/cjs/middleware/authorization.js +0 -52
  382. package/dist/cjs/middleware/index.js +0 -17
  383. package/types/alpacaContext.d.ts +0 -25
  384. package/types/editor/AiTerminal.d.ts +0 -5
  385. package/types/editor/ComponentPalette.d.ts +0 -6
  386. package/types/editor/ComponentTree.d.ts +0 -5
  387. package/types/editor/Debug.d.ts +0 -6
  388. package/types/editor/EditHistory.d.ts +0 -4
  389. package/types/editor/Editor.d.ts +0 -6
  390. package/types/editor/GraphQL.d.ts +0 -5
  391. package/types/editor/ItemEditor.d.ts +0 -4
  392. package/types/editor/LanguageSelector.d.ts +0 -5
  393. package/types/editor/SidebarTabs.d.ts +0 -8
  394. package/types/editor/Utils.d.ts +0 -3
  395. package/types/editor/VersionSelector.d.ts +0 -5
  396. package/types/editor/Workbox.d.ts +0 -6
  397. package/types/editor/componentCommands.d.ts +0 -4
  398. package/types/editor/editService.d.ts +0 -20
  399. package/types/editor/index.d.ts +0 -2
  400. package/types/layoutData.d.ts +0 -92
  401. package/types/middleware/authorization.d.ts +0 -2
@@ -0,0 +1,216 @@
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 { jsxs as _jsxs, jsx as _jsx } 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
+ import { useEditContext } from "../editContext";
17
+ import { Dropdown } from "primereact/dropdown";
18
+ import { getItemDescriptor, getSelectedText } from "../utils";
19
+ import Cookies from "universal-cookie";
20
+ import { WizardIcon } from "../ui/Icons";
21
+ import { AiResponseMessage } from "./AiResponseMessage";
22
+ import { loadAiConfig } from "../services/aiService";
23
+ export function AiTerminal({ closeButton }) {
24
+ const searchParams = useSearchParams();
25
+ const editContext = useEditContext();
26
+ const [showPredefined, setShowPredefined] = useState(false);
27
+ if (!editContext)
28
+ return null;
29
+ const [messages, setMessages] = useState([]);
30
+ const [response, setResponse] = useState();
31
+ const [model, setModel] = useState("gpt-3.5-turbo-0125");
32
+ const [prompt, setPrompt] = useState("");
33
+ const [config, setConfig] = useState();
34
+ const selection = editContext.selection;
35
+ useEffect(() => {
36
+ function fetchConfig() {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ const config = yield loadAiConfig(getItemDescriptor(editContext.page));
39
+ setConfig(config);
40
+ });
41
+ }
42
+ fetchConfig();
43
+ }, []);
44
+ const messagesRef = useRef(messages);
45
+ useEffect(() => {
46
+ messagesRef.current = messages;
47
+ }, [messages]);
48
+ const router = useRouter();
49
+ function commandHandler(text, callback) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ const newMessages = [
52
+ ...messagesRef.current,
53
+ { content: text, role: "user", name: "user" },
54
+ ];
55
+ let lastOps = 0;
56
+ const selectedText = getSelectedText();
57
+ const response = yield executePrompt(newMessages, selection, editContext.sessionId, searchParams.get("itemid"), searchParams.get("language"), searchParams.get("version"), model, selectedText, (response) => {
58
+ setResponse(response);
59
+ handleResponse(response, callback, false);
60
+ if (response.editOperations.length) {
61
+ if (lastOps != response.editOperations.length) {
62
+ lastOps = response.editOperations.length;
63
+ editContext.requestRefresh("immediate");
64
+ }
65
+ else {
66
+ response.editOperations.forEach((op) => {
67
+ var _a;
68
+ if (op.type === "edit-field") {
69
+ const editFieldOp = op;
70
+ const liveField = editContext.getLiveFieldIfExists({
71
+ fieldId: editFieldOp.fieldId,
72
+ item: editFieldOp.item,
73
+ });
74
+ if (liveField != null) {
75
+ liveField.value = editFieldOp.value;
76
+ liveField._editor.rawValue = editFieldOp.value;
77
+ editContext === null || editContext === void 0 ? void 0 : editContext.setFocusedField((_a = liveField._editor) === null || _a === void 0 ? void 0 : _a.descriptor, false);
78
+ }
79
+ }
80
+ });
81
+ }
82
+ }
83
+ });
84
+ if (response) {
85
+ handleResponse(response, callback, true);
86
+ //if (newEditOperations) newEditOperations(response.editOperations);
87
+ router.refresh();
88
+ }
89
+ // if (response) {
90
+ // messages.push({content: text, 'role': 'assistant', 'name': 'assistant'});
91
+ // if(response.editOperations) {
92
+ // const newEditOperations = [...editOperationsRef.current, {
93
+ // type:'composite',
94
+ // name: 'ghostwriter',
95
+ // date: new Date(),
96
+ // operations: response.editOperations
97
+ // }];
98
+ // setEditOperations(newEditOperations);
99
+ // }
100
+ if (response === null || response === void 0 ? void 0 : response.responseText)
101
+ newMessages.push({
102
+ content: response.responseText,
103
+ role: "assistant",
104
+ name: "assistant",
105
+ });
106
+ // TerminalService.emit('response', response.responseText);
107
+ // }
108
+ // // else
109
+ // // TerminalService.emit('clear');
110
+ setResponse(response ? response : undefined);
111
+ setMessages(newMessages);
112
+ });
113
+ }
114
+ useEffect(() => {
115
+ TerminalService.on("command", commandHandler);
116
+ return () => {
117
+ TerminalService.off("command", commandHandler);
118
+ };
119
+ }, []);
120
+ return (_jsx("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: () => {
121
+ setMessages([]);
122
+ setResponse(undefined);
123
+ }, infobar: (response === null || response === void 0 ? void 0 : response.numInputTokens) && (_jsxs("div", { className: "a-text-gray-400 a-text-right", style: { fontSize: "10px" }, children: ["Tokens in: ", response === null || response === void 0 ? void 0 : response.numInputTokens, " out:", " ", response === null || response === void 0 ? void 0 : response.numOutputTokens, " ", response === null || response === void 0 ? void 0 : response.state, " "] })), prompt: prompt, setPrompt: setPrompt, statusbar: _jsxs("div", { className: "a-flex a-items-center a-justify-between a-gap-1", children: [_jsxs("a", { className: "a-text-xs a-text-blue-300 a-cursor-pointer a-flex a-items-center a-gap-1", onClick: () => {
124
+ setShowPredefined(!showPredefined);
125
+ }, children: [_jsx(WizardIcon, { className: "a-w-5 a-h-5" }), "Predefined prompts"] }), showPredefined && (_jsx("div", { className: "a-absolute a-right-0 a-left-0 a-bottom-8 a-text-sm a-overflow-y-auto a-bg-white a-p-3 a-pb-1 a-flex a-flex-col a-gap-1 ", children: config &&
126
+ config.prompts.map((p, index) => (_jsx("div", { className: "a-p-1.5 a-mb-1 a-border a-border-gray-200 a-rounded-lg a-cursor-pointer a-text-gray-700 a-text-xs", onClick: () => {
127
+ setPrompt(p.prompt);
128
+ setShowPredefined(false);
129
+ }, children: p.title }, index))) }))] }), toolbar: _jsxs("div", { className: "a-flex a-items-center", children: [_jsx(Dropdown, { className: "a-text-sm", value: model, onChange: (e) => setModel(e.value), options: [
130
+ "gpt-3.5-turbo-0125",
131
+ "gpt-4-0125-preview",
132
+ "gpt-3.5-turbo-1106",
133
+ "gpt-4-1106-preview",
134
+ ] }), closeButton] }), commandHandler: (v, callback) => {
135
+ commandHandler(v, callback);
136
+ } }) }) }) }));
137
+ }
138
+ function executePrompt(messages, selection, session, itemid, language, version, model, selectedText, callback) {
139
+ return __awaiter(this, void 0, void 0, function* () {
140
+ const response = yield fetch("/alpaca/headless/ai/prompt", {
141
+ method: "POST",
142
+ body: JSON.stringify({
143
+ messages,
144
+ itemid,
145
+ language,
146
+ version,
147
+ selection,
148
+ selectedText,
149
+ model,
150
+ sessionId: session,
151
+ }),
152
+ credentials: "include",
153
+ headers: {
154
+ "Content-Type": "application/json",
155
+ Cookie: new Cookies().getAll(),
156
+ },
157
+ next: {
158
+ revalidate: 0,
159
+ },
160
+ });
161
+ if (!(response === null || response === void 0 ? void 0 : response.body))
162
+ return null;
163
+ const reader = response.body.getReader();
164
+ const decoder = new TextDecoder();
165
+ let buffer = "";
166
+ let result = null;
167
+ while (true) {
168
+ const { done, value } = yield reader.read();
169
+ if (done) {
170
+ break;
171
+ }
172
+ buffer += decoder.decode(value, { stream: true }); // 'stream: true' ensures that any incomplete multi-byte characters aren't malformed.
173
+ // Split the buffer by newline and keep the last partial line for the next iteration.
174
+ const lines = buffer.split("\n");
175
+ if (lines.length > 0) {
176
+ buffer = lines.pop() || ""; // Incomplete line (if any) is kept for the next iteration.
177
+ for (let line of lines) {
178
+ if (line.trim() === "")
179
+ continue; // Skip empty lines if any.
180
+ try {
181
+ const jsonData = JSON.parse(line);
182
+ callback(jsonData);
183
+ result = jsonData;
184
+ }
185
+ catch (e) {
186
+ console.error("Error parsing line:" + line, e);
187
+ }
188
+ }
189
+ }
190
+ }
191
+ // If there's any remaining content in the buffer after processing all chunks, try to process it.
192
+ if (buffer.trim() !== "") {
193
+ try {
194
+ const jsonData = JSON.parse(buffer);
195
+ result = jsonData;
196
+ }
197
+ catch (e) {
198
+ console.error("Error parsing the final buffer content:", e);
199
+ }
200
+ }
201
+ console.log(result);
202
+ return result;
203
+ });
204
+ }
205
+ function handleResponse(response, terminalCallback, isFinished) {
206
+ var _a;
207
+ const toolcalls = ((_a = response === null || response === void 0 ? void 0 : response.toolCalls) === null || _a === void 0 ? void 0 : _a.map((tool_call) => {
208
+ var _a, _b;
209
+ return {
210
+ func: (_a = tool_call.function) === null || _a === void 0 ? void 0 : _a.name,
211
+ arguments: (_b = tool_call.function) === null || _b === void 0 ? void 0 : _b.arguments,
212
+ result: tool_call.result,
213
+ };
214
+ })) || [];
215
+ terminalCallback(_jsx(AiResponseMessage, { responseText: response.responseText, toolcalls: toolcalls, editOperations: response.editOperations }), isFinished);
216
+ }
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { JsonView, defaultStyles } from "react-json-view-lite";
4
+ export function AiToolCall({ toolCall }) {
5
+ const [expanded, setExpaded] = useState(false);
6
+ return (_jsxs("div", { className: "a-mt-2", children: [_jsxs("div", { onClick: () => setExpaded(!expanded), className: "a-flex a-items-center a-cursor-pointer", children: [_jsx("i", { className: "pi pi-angle-right" }), " ", toolCall.func] }), expanded && (_jsxs("div", { className: "a-ml-4", children: [_jsx("div", { className: "a-italic", children: "Args:" }), _jsx("div", { children: renderJsonOrText(toolCall.arguments) }), _jsx("div", { className: "a-italic a-mt-1", children: "Result:" }), _jsxs("div", { className: "a-mb-4", children: [toolCall.error && (_jsx("div", { className: "a-text-red", children: toolCall.error })), renderJsonOrText(toolCall.result)] })] }))] }));
7
+ }
8
+ function renderJsonOrText(json) {
9
+ try {
10
+ return _jsx(JsonView, { data: JSON.parse(json), style: defaultStyles });
11
+ }
12
+ catch (e) {
13
+ return _jsx("div", { children: json });
14
+ }
15
+ }
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AiTerminal } from "./AiTerminal";
3
+ export function EditorAiTerminal({ closeButton, }) {
4
+ return _jsx(AiTerminal, { closeButton: closeButton });
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,287 @@
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 { confirmDialog } from "primereact/confirmdialog";
11
+ import uuid from "react-uuid";
12
+ import { getComponentById } from "../componentTreeHelper";
13
+ const isPlaceholder = (x) => x.components !== undefined;
14
+ export function getSelectedComponentCommands(editContext) {
15
+ const selection = editContext.selection;
16
+ const selectedComponents = selection
17
+ .map((x) => getComponentById(x, editContext.page))
18
+ .filter((x) => x);
19
+ const componentCommands = getComponentCommands(selectedComponents, editContext);
20
+ const componentCommandMenuItems = componentCommands.filter((x) => x.visibilityScopes.indexOf("menu") >= 0);
21
+ return componentCommandMenuItems;
22
+ }
23
+ export function getComponentCommands(entities, editContext) {
24
+ const components = entities.filter((x) => x && !isPlaceholder(x));
25
+ const commands = [
26
+ getInsertCommand(components, editContext),
27
+ getDeleteCommand(components, editContext),
28
+ getDuplicateCommand(components, editContext),
29
+ getSyncCommand(entities, editContext),
30
+ getAiCommand(editContext),
31
+ getDesignCommand(components, editContext),
32
+ getLinkToMasterCommand(components, editContext),
33
+ getInheritChildrenFromMasterCommand(components, editContext),
34
+ ];
35
+ return commands.filter((x) => x !== null);
36
+ }
37
+ function getInsertCommand(components, editContext) {
38
+ if (components.length !== 1 || isPlaceholder(components[0]))
39
+ return null;
40
+ if (components[0].placeholders.length == 0)
41
+ return null;
42
+ return {
43
+ id: "insert",
44
+ icon: "pi pi-plus",
45
+ label: "Insert component",
46
+ visibilityScopes: ["editFrame", "contextMenu"],
47
+ execute: (ev) => {
48
+ editContext.setSelectedForInsertion(components[0].id);
49
+ ev.stopPropagation();
50
+ ev.preventDefault();
51
+ },
52
+ };
53
+ }
54
+ function getDuplicateCommand(components, editContext) {
55
+ if (components.length < 1)
56
+ return null;
57
+ return {
58
+ id: "duplicate",
59
+ icon: "pi pi-copy",
60
+ label: "Duplicate",
61
+ visibilityScopes: ["contextMenu", "menu"],
62
+ execute: (ev) => {
63
+ var _a;
64
+ if (!((_a = components[0]._editor.placeholderReference) === null || _a === void 0 ? void 0 : _a.parentComponent))
65
+ return null;
66
+ editContext.duplicateComponents({
67
+ componentIds: components.map((x) => x.id),
68
+ parent: components[0]._editor.placeholderReference.parentComponent,
69
+ placeholderName: components[0]._editor.placeholderReference.key,
70
+ });
71
+ ev.stopPropagation();
72
+ ev.preventDefault();
73
+ },
74
+ };
75
+ }
76
+ function getAiCommand(editContext) {
77
+ return {
78
+ name: "ai",
79
+ icon: "pi pi-comments",
80
+ label: "AI",
81
+ disabled: () => false,
82
+ execute: (context) => __awaiter(this, void 0, void 0, function* () {
83
+ const event = context.event;
84
+ editContext.showAiPopup(event);
85
+ event.preventDefault();
86
+ event.stopPropagation();
87
+ }),
88
+ visibilityScopes: ["editFrame", "contextMenu"],
89
+ };
90
+ }
91
+ function getDesignCommand(components, editContext) {
92
+ if (components.length !== 1 || isPlaceholder(components[0]))
93
+ return null;
94
+ if (!Object.values(components[0].fields).find((x) => { var _a; return ((_a = x._editor) === null || _a === void 0 ? void 0 : _a.section) === "Design"; }))
95
+ return null;
96
+ return {
97
+ name: "design",
98
+ icon: "pi pi-palette",
99
+ label: "Design",
100
+ disabled: () => false,
101
+ execute: (context) => __awaiter(this, void 0, void 0, function* () {
102
+ editContext.showFieldEditorPopup(components[0].fields, ["Design"], context.event);
103
+ }),
104
+ visibilityScopes: ["menu", "editFrame", "contextMenu"],
105
+ };
106
+ }
107
+ function getLinkToMasterCommand(components, editContext) {
108
+ var _a, _b, _c;
109
+ if (!components.length)
110
+ return null;
111
+ if (((_c = (_b = (_a = editContext.page) === null || _a === void 0 ? void 0 : _a._editor) === null || _b === void 0 ? void 0 : _b.masterLanguages) === null || _c === void 0 ? void 0 : _c.length) === 0)
112
+ return null;
113
+ return getCheckboxCommand(components, editContext, "componentLinkedToMasterLanguage", "Linked To Master Language");
114
+ }
115
+ function getCheckboxCommand(components, editContext, fieldName, label) {
116
+ const someLinked = components.find((x) => { var _a, _b; return ((_b = (_a = x.fields[fieldName]) === null || _a === void 0 ? void 0 : _a._editor) === null || _b === void 0 ? void 0 : _b.rawValue) === "1"; });
117
+ const allLinked = !components.find((x) => { var _a, _b; return ((_b = (_a = x.fields[fieldName]) === null || _a === void 0 ? void 0 : _a._editor) === null || _b === void 0 ? void 0 : _b.rawValue) !== "1"; });
118
+ return {
119
+ name: fieldName,
120
+ icon: "pi pi-" +
121
+ (allLinked ? "check-square" : someLinked ? "stop-circle" : "stop"),
122
+ label,
123
+ disabled: () => false,
124
+ execute: () => __awaiter(this, void 0, void 0, function* () {
125
+ components.forEach((c) => {
126
+ editContext.editField({
127
+ field: c.fields[fieldName],
128
+ rawValue: allLinked ? "" : "1",
129
+ refresh: "immediate",
130
+ });
131
+ });
132
+ }),
133
+ visibilityScopes: ["menu", "contextMenu"],
134
+ };
135
+ }
136
+ function getInheritChildrenFromMasterCommand(components, editContext) {
137
+ var _a, _b, _c;
138
+ if (!components.length)
139
+ return null;
140
+ if (((_c = (_b = (_a = editContext.page) === null || _a === void 0 ? void 0 : _a._editor) === null || _b === void 0 ? void 0 : _b.masterLanguages) === null || _c === void 0 ? void 0 : _c.length) === 0)
141
+ return null;
142
+ if (components.find((x) => x.placeholders.length === 0))
143
+ return null;
144
+ return getCheckboxCommand(components, editContext, "inheritChildrenFromMasterLanguage", "Inherit Children From Master");
145
+ }
146
+ function isLocked(c, editContext) {
147
+ if (editContext.activeSessions.find((x) => {
148
+ var _a;
149
+ return ((_a = x.fieldLock) === null || _a === void 0 ? void 0 : _a.item.id) === c.id &&
150
+ x.fieldLock.item.language == c.language &&
151
+ x.fieldLock.item.version === c.version &&
152
+ x.sessionId !== editContext.sessionId;
153
+ }) !== undefined) {
154
+ return true;
155
+ }
156
+ else
157
+ return (c.placeholders.find((x) => x.components.find((child) => isLocked(child, editContext)) !==
158
+ undefined) !== undefined);
159
+ }
160
+ function getDeleteCommand(components, editContext) {
161
+ const applicableComponents = components.filter((c) => {
162
+ var _a, _b, _c, _d;
163
+ return ((!isPlaceholder(c) && !((_a = c._editor) === null || _a === void 0 ? void 0 : _a.hostingPageItem)) ||
164
+ ((_c = (_b = c._editor) === null || _b === void 0 ? void 0 : _b.hostingPageItem) === null || _c === void 0 ? void 0 : _c.id) === ((_d = editContext.page) === null || _d === void 0 ? void 0 : _d.id)) &&
165
+ !isLocked(c, editContext);
166
+ });
167
+ if (applicableComponents.length === 0)
168
+ return null;
169
+ return {
170
+ name: "delete",
171
+ label: "Delete",
172
+ icon: "pi pi-fw pi-trash",
173
+ execute: (context) => __awaiter(this, void 0, void 0, function* () { return deleteComponents(applicableComponents, context.editContext); }),
174
+ disabled: () => applicableComponents.length === 0 ||
175
+ applicableComponents.length !== components.length,
176
+ visibilityScopes: ["editFrame", "menu", "contextMenu"],
177
+ };
178
+ }
179
+ function canSynchronize(placeholderData) {
180
+ var _a;
181
+ if ((_a = placeholderData._editor) === null || _a === void 0 ? void 0 : _a.canSynchronize)
182
+ return true;
183
+ placeholderData.components.forEach((c) => {
184
+ if (c.placeholders.find((x) => canSynchronize(x)))
185
+ return true;
186
+ });
187
+ return false;
188
+ }
189
+ function getSyncCommand(components, editContext) {
190
+ var _a, _b;
191
+ const placeholders = [];
192
+ for (const component of components) {
193
+ if (isPlaceholder(component) && canSynchronize(component)) {
194
+ placeholders.push({
195
+ item: component.parentComponent
196
+ ? getItemDescriptor(component.parentComponent, editContext)
197
+ : undefined,
198
+ name: component.name,
199
+ });
200
+ }
201
+ else {
202
+ if ((_a = component.placeholders) === null || _a === void 0 ? void 0 : _a.find((x) => canSynchronize(x))) {
203
+ placeholders.push({
204
+ item: getItemDescriptor(component, editContext),
205
+ });
206
+ }
207
+ }
208
+ }
209
+ const canSync = placeholders.length > 0 ||
210
+ (components.length === 0 &&
211
+ ((_b = editContext.page) === null || _b === void 0 ? void 0 : _b.placeholders.find((x) => canSynchronize(x))));
212
+ return {
213
+ name: "synchronize",
214
+ label: "Synchronize",
215
+ icon: "pi pi-fw pi-sync",
216
+ disabled: () => !canSync,
217
+ visibilityScopes: ["menu", "editFrame", "contextMenu"],
218
+ execute: () => __awaiter(this, void 0, void 0, function* () {
219
+ const op = {
220
+ type: "synchronize-components",
221
+ date: new Date().toISOString(),
222
+ delete: false,
223
+ id: uuid(),
224
+ placeholders: placeholders,
225
+ pageItem: getPageItemDescriptor(editContext),
226
+ description: "Synchronize components",
227
+ };
228
+ editContext.executeEditOperation(op);
229
+ }),
230
+ };
231
+ }
232
+ function getItemDescriptors(components, editContext) {
233
+ const items = components
234
+ .map((c) => getItemDescriptor(c, editContext))
235
+ .flatMap((f) => (f ? [f] : []));
236
+ return items;
237
+ }
238
+ function deleteComponents(components, editContext) {
239
+ const items = getItemDescriptors(components, editContext);
240
+ if (!items.length)
241
+ return;
242
+ confirmDialog({
243
+ message: (items.length > 1
244
+ ? "Are you sure you want to remove these components? "
245
+ : "Are you sure you want to remove this component? ") +
246
+ items.map((x) => x.name).join(", "),
247
+ header: items.length > 1 ? "Remove components" : "Remove component",
248
+ icon: "pi pi-exclamation-triangle",
249
+ accept: () => {
250
+ const op = {
251
+ type: "remove-component",
252
+ date: new Date().toISOString(),
253
+ id: uuid(),
254
+ components: items,
255
+ pageItem: getPageItemDescriptor(editContext),
256
+ description: "Remove components: " + items.map((x) => x.name).join(", "),
257
+ };
258
+ editContext.executeEditOperation(op);
259
+ components.forEach((c) => {
260
+ if (c)
261
+ c._editor.isRemoved = true;
262
+ });
263
+ },
264
+ });
265
+ }
266
+ function getItemDescriptor(component, editContext) {
267
+ var _a, _b;
268
+ if (component.type === "page")
269
+ return {
270
+ id: component.id,
271
+ language: component.language,
272
+ version: component.version,
273
+ };
274
+ return {
275
+ id: component.id,
276
+ language: ((_a = component._editor.hostingPageItem) === null || _a === void 0 ? void 0 : _a.language) || editContext.page.language,
277
+ version: ((_b = component._editor.hostingPageItem) === null || _b === void 0 ? void 0 : _b.version) || editContext.page.version,
278
+ name: component.name,
279
+ };
280
+ }
281
+ function getPageItemDescriptor(editContext) {
282
+ return {
283
+ id: editContext.page.id,
284
+ language: editContext.page.language,
285
+ version: editContext.page.version,
286
+ };
287
+ }
@@ -0,0 +1,26 @@
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 { createVersion } from "../services/editService";
11
+ import { getItemDescriptor } from "../utils";
12
+ export function getCreateAndSwitchToNewVersionCommand() {
13
+ return {
14
+ name: "createAndSwitchToNewVersion",
15
+ execute: execute,
16
+ label: "Add Version",
17
+ icon: "pi pi-fw pi-plus",
18
+ disabled: (context) => !context.editContext.item._editor.canLock,
19
+ };
20
+ }
21
+ function execute(context) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ yield createVersion(getItemDescriptor(context.editContext.item), context.editContext.sessionId);
24
+ context.editContext.loadItem(Object.assign(Object.assign({}, context.editContext.item), { version: context.editContext.item.version + 1 }));
25
+ });
26
+ }
@@ -0,0 +1,22 @@
1
+ export function getUndoCommand() {
2
+ return {
3
+ name: "undo",
4
+ label: "Undo",
5
+ icon: "pi pi-fw pi-undo",
6
+ execute: (context) => context.editContext.undo(),
7
+ disabled: (context) => context.editContext.editHistory.length === 0 ||
8
+ !context.editContext.editHistory.find((x) => x.sessionId === context.editContext.sessionId && x.canUndo),
9
+ };
10
+ }
11
+ export function getRedoCommand() {
12
+ return {
13
+ name: "redo",
14
+ label: "Redo",
15
+ icon: "pi pi-fw pi-refresh",
16
+ execute: (context) => context.editContext.redo(),
17
+ disabled: (context) => {
18
+ return (context.editContext.editHistory.length === 0 ||
19
+ !context.editContext.editHistory.find((x) => x.sessionId === context.editContext.sessionId && x.canRedo));
20
+ },
21
+ };
22
+ }
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ComponentPreview } from "./ComponentPreview";
3
+ import { ComponentRenderingEditor } from "./ComponentRenderingEditor";
4
+ import { Splitter, SplitterPanel } from "primereact/splitter";
5
+ export function ComponentDesigner() {
6
+ return (_jsxs(Splitter, { className: "a-h-full", children: [_jsx(SplitterPanel, { children: _jsx(ComponentRenderingEditor, {}) }), _jsx(SplitterPanel, { children: _jsx(ComponentPreview, {}) })] }));
7
+ }
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AiTerminal } from "../ai/AiTerminal";
3
+ export function ComponentDesignerAiTerminal() {
4
+ return _jsx(AiTerminal, {});
5
+ }
@@ -0,0 +1,39 @@
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 { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
11
+ import { Menubar } from "primereact/menubar";
12
+ import { useComponentDesignerContext } from "./componentDesignerContext";
13
+ import { createNewComponent } from "../services/componentDesignerService";
14
+ import ItemNameDialog from "../ui/ItemNameDialog";
15
+ import { useRef } from "react";
16
+ export function ComponentDesignerMenu() {
17
+ const context = useComponentDesignerContext();
18
+ if (!context)
19
+ return;
20
+ const menuItems = [
21
+ {
22
+ label: "New Component",
23
+ icon: "pi pi-fw pi-plus",
24
+ command: () => createNew(),
25
+ disabled: !context.componentRenderingFolder,
26
+ },
27
+ ];
28
+ const itemNameDialogRef = useRef(null);
29
+ const createNew = () => __awaiter(this, void 0, void 0, function* () {
30
+ var _a;
31
+ (_a = itemNameDialogRef.current) === null || _a === void 0 ? void 0 : _a.show({
32
+ title: "Choose component name",
33
+ accept: (name) => __awaiter(this, void 0, void 0, function* () {
34
+ yield createNewComponent(context.componentRenderingFolder, name);
35
+ }),
36
+ });
37
+ });
38
+ return (_jsxs(_Fragment, { children: [_jsx(Menubar, { model: menuItems, className: "a-p-1 a-text-sm a-rounded-none a-border-0 a-border-b a-bg-gray-50" }), _jsx(ItemNameDialog, { ref: itemNameDialogRef })] }));
39
+ }
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { usePathname } from "next/navigation";
3
+ import { useComponentDesignerContext } from "./componentDesignerContext";
4
+ import { useEffect, useState } from "react";
5
+ import { useEditContext } from "../editContext";
6
+ export function ComponentPreview() {
7
+ const context = useComponentDesignerContext();
8
+ const editContext = useEditContext();
9
+ if (!context)
10
+ return null;
11
+ const pathname = usePathname();
12
+ // State to hold the iframe src URL
13
+ const [iframeSrc, setIframeSrc] = useState("");
14
+ useEffect(() => {
15
+ var _a;
16
+ const newSrc = `${pathname}?itemid=${(_a = context.sampleItem) === null || _a === void 0 ? void 0 : _a.id}&language=en&mode=edit&codeVersion=${Date.now()}&fullscreen=true`;
17
+ setIframeSrc(newSrc);
18
+ }, [editContext === null || editContext === void 0 ? void 0 : editContext.editOperationExecutedFlag]);
19
+ return (_jsx("iframe", { className: "a-w-full a-h-full", src: iframeSrc, title: "Component Preview" }));
20
+ }