@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,889 @@
1
+ "use client";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
12
+ import React, { useState, useEffect, useRef, useCallback, } from "react";
13
+ import uuid from "react-uuid";
14
+ import { PrimeReactProvider } from "primereact/api";
15
+ import { ProgressSpinner } from "primereact/progressspinner";
16
+ import { Toast } from "primereact/toast";
17
+ import { BlockUI } from "primereact/blockui";
18
+ import { ConfirmDialog } from "primereact/confirmdialog";
19
+ import { EditContextProvider } from "./editContext";
20
+ import { useRouter, useSearchParams, usePathname } from "next/navigation";
21
+ import { findComponent, getComponentById } from "./componentTreeHelper";
22
+ import { executeRedo, executeUndo, executeEditOperation, createVersion, executeWorkflowCommand, executeFieldAction, validateItems, connectSocket, lockField, lockItems, unlockItems, getEditHistory, releaseFieldLocks, } from "./services/editService";
23
+ import "../../editor.css";
24
+ import "../../primeicons/primeicons.css";
25
+ import "../../primereact/resources/themes/md-light-indigo/theme.css";
26
+ import "react-json-view-lite/dist/index.css";
27
+ import { MediaSelector } from "./MediaSelector";
28
+ import { getComponentCommands } from "./commands/componentCommands";
29
+ import { getItem } from "./services/contentService";
30
+ import ConfirmationDialog from "./ConfirmationDialog";
31
+ import MainLayout from "./MainLayout";
32
+ import { getItemDescriptor, getSelectedText, useEventListenerExt, } from "./utils";
33
+ import { PublishDialog } from "./PublishDialog";
34
+ import { EditContextMenu } from "./ContextMenu";
35
+ import { FieldEditorPopup } from "./FieldEditorPopup";
36
+ import { Sidebar } from "./sidebar/Sidebar";
37
+ import { Menu } from "./menubar/Menu";
38
+ import { AiPopup } from "./ai/AiPopup";
39
+ import { getComponentDesignerContext } from "./component-designer/componentDesignerContext";
40
+ export function EditorClient({ context, children, configuration, }) {
41
+ var _a, _b, _c;
42
+ const page = context.page;
43
+ const dictionaryObject = context.dictionary;
44
+ //const editData = context.ed;
45
+ const router = useRouter();
46
+ const pathname = usePathname();
47
+ const searchParams = useSearchParams();
48
+ const [selection, setSelection] = useState([]);
49
+ const [selectedForInsertion, setSelectedForInsertion] = useState("");
50
+ const [currentEditOperation, setCurrentEditOperation] = useState();
51
+ const [dictionary, setDictionary] = useState(dictionaryObject);
52
+ const [unresolvedDictionaryKeys, setUnresolvedDictionaryKeys] = useState([]);
53
+ const [refreshCompletedFlag, setRefreshCompletedFlag] = useState(false);
54
+ const [editOperationExecutedFlag, setEditOperationExecutedFlag] = useState(false);
55
+ //const [refreshing, setRefreshing] = useState(false);
56
+ const [updateContentEditingFields, setUpdateContentEditingFields] = useState(false);
57
+ const [dragObject, setDragObject] = useState();
58
+ const [mediaResolver, setMediaResolver] = useState();
59
+ const [mediaSelectorVisible, setMediaSelectorVisible] = useState(false);
60
+ const [selectedMediaIdPath, setSelectedMediaIdPath] = useState("");
61
+ const [scrollIntoView, setScrollIntoView] = useState();
62
+ const [nextSelection, setNextSelection] = useState();
63
+ const [zoom, setZoom] = useState(1);
64
+ const [device, setDevice] = useState("desktop");
65
+ const [windowSize, setWindowSize] = useState();
66
+ const confirmationDialogRef = useRef(null);
67
+ const contextMenuRef = useRef(null);
68
+ const [secondaryItem, setSecondaryItem] = useState();
69
+ const [focusedField, setFocusedField] = useState();
70
+ const [fullscreen, setFullscreen] = useState(false);
71
+ const [scroll, setScroll] = useState(0);
72
+ const [viewportRect, setViewportRect] = React.useState({
73
+ width: 0,
74
+ height: 0,
75
+ });
76
+ const editorContainerRef = useRef(null);
77
+ const [showFullscreenHint, setShowFullscreenHint] = useState(false);
78
+ const [showPublishDialog, setShowPublishDialog] = useState(false);
79
+ const [activeFieldActions, setActiveFieldActions] = useState([]);
80
+ const [renderedFields, setRenderedFields] = useState([]);
81
+ const aiPopupRef = React.useRef(null);
82
+ const fieldEditorPopupRef = React.useRef(null);
83
+ const [pageValidationResult, setPageValidationResult] = useState();
84
+ const [editHistory, setEditHistory] = useState([]);
85
+ const sessionId = sessionStorage.getItem("sessionId") || uuid();
86
+ const [activeSessions, setActiveSessions] = useState([]);
87
+ sessionStorage.setItem("sessionId", sessionId);
88
+ const [view, setView] = useState(configuration.chrome.editor.views[0]);
89
+ const [centerPanelView, setCenterPanelView] = useState("edit");
90
+ const validate = () => __awaiter(this, void 0, void 0, function* () {
91
+ if (page._editor.workbox.items.length === 0)
92
+ return;
93
+ const result = yield validateItems(page._editor.workbox.items.map((x) => x.item), sessionId);
94
+ if (result.type === "success")
95
+ setPageValidationResult(yield result.response.json());
96
+ });
97
+ useEffect(() => {
98
+ validate();
99
+ }, [page._editor.workbox]);
100
+ const sendClientInfo = () => {
101
+ const socket = globalThis.editorSocket;
102
+ if (socket.readyState !== WebSocket.OPEN)
103
+ return;
104
+ socket.send(JSON.stringify({
105
+ type: "client-info",
106
+ sessionId: sessionId,
107
+ url: window.location.href,
108
+ userAgent: navigator.userAgent,
109
+ page: getPageItemDescriptor(),
110
+ item: secondaryItem ? getItemDescriptor(secondaryItem) : null,
111
+ }));
112
+ };
113
+ const messageHandler = useCallback((event) => {
114
+ if (!event.data.startsWith("{"))
115
+ return;
116
+ const message = JSON.parse(event.data);
117
+ if (message.type === "active-sessions") {
118
+ setActiveSessions(() => {
119
+ return message.payload;
120
+ });
121
+ }
122
+ if (message.type === "edit-operation") {
123
+ const op = message.payload;
124
+ if (op.type === "edit-field") {
125
+ const editFieldOperation = op;
126
+ const liveField = getLiveFieldIfExists({
127
+ item: editFieldOperation.item,
128
+ fieldId: editFieldOperation.fieldId,
129
+ });
130
+ if (liveField) {
131
+ liveField.value = editFieldOperation.value;
132
+ liveField.rawValue = editFieldOperation.value;
133
+ setSelection([...selection]);
134
+ }
135
+ }
136
+ else
137
+ requestRefresh("waitForQuietPeriod");
138
+ addToEditHistory(op);
139
+ loadHistory(secondaryItem || page);
140
+ }
141
+ }, []);
142
+ useEffect(() => {
143
+ if (view.centerPanelView) {
144
+ setCenterPanelView(view.centerPanelView);
145
+ }
146
+ }, [view]);
147
+ useEffect(() => {
148
+ let socket = globalThis.editorSocket;
149
+ if (socket &&
150
+ (socket.readyState === WebSocket.OPEN ||
151
+ socket.readyState === WebSocket.CONNECTING))
152
+ return;
153
+ socket = connectSocket(sessionId);
154
+ // Connection opened
155
+ socket.addEventListener("open", () => {
156
+ console.log("Connected!");
157
+ sendClientInfo();
158
+ requestRefresh("immediate");
159
+ });
160
+ // Listen for messages
161
+ socket.addEventListener("message", messageHandler);
162
+ globalThis.editorSocket = socket;
163
+ }, []);
164
+ if (!globalThis.editorLiveUpdatingFields)
165
+ globalThis.editorLiveUpdatingFields = [];
166
+ function loadUrl(url) {
167
+ //setRefreshing(true);
168
+ releaseFieldLocks(sessionId);
169
+ router.push(url, { scroll: false });
170
+ }
171
+ function switchLanguage(language) {
172
+ return __awaiter(this, void 0, void 0, function* () {
173
+ const current = new URLSearchParams(Array.from(searchParams.entries()));
174
+ current.set("language", language);
175
+ current.delete("version");
176
+ const newUrl = `${pathname}?${current.toString()}`;
177
+ loadUrl(newUrl);
178
+ });
179
+ }
180
+ function switchVersion(version) {
181
+ return __awaiter(this, void 0, void 0, function* () {
182
+ const current = new URLSearchParams(Array.from(searchParams.entries()));
183
+ current.set("version", version.toString());
184
+ const newUrl = `${pathname}?${current.toString()}`;
185
+ loadUrl(newUrl);
186
+ });
187
+ }
188
+ function navigateToPage(pageId) {
189
+ return __awaiter(this, void 0, void 0, function* () {
190
+ console.log("navigate to page: " + pageId);
191
+ const current = new URLSearchParams(Array.from(searchParams.entries()));
192
+ current.set("itemid", pageId);
193
+ current.delete("version");
194
+ const newUrl = `${pathname}?${current.toString()}`;
195
+ setNextSelection([]);
196
+ setSecondaryItem(undefined);
197
+ loadUrl(newUrl);
198
+ });
199
+ }
200
+ function createAndSwitchToNewVersion() {
201
+ return __awaiter(this, void 0, void 0, function* () {
202
+ yield createVersion(getPageItemDescriptor(), sessionId);
203
+ const current = new URLSearchParams(Array.from(searchParams.entries()));
204
+ current.delete("version");
205
+ const newUrl = `${pathname}?${current.toString()}`;
206
+ router.push(newUrl, { scroll: false });
207
+ });
208
+ }
209
+ function loadItem(itemToLoad) {
210
+ return __awaiter(this, void 0, void 0, function* () {
211
+ if (itemToLoad.hasLayout) {
212
+ if (itemToLoad.id !== page.id) {
213
+ navigateToPage(itemToLoad.id);
214
+ return;
215
+ }
216
+ if (itemToLoad.language !== page.language) {
217
+ switchLanguage(itemToLoad.language);
218
+ return;
219
+ }
220
+ switchVersion(itemToLoad.version);
221
+ return;
222
+ }
223
+ const result = yield getItem(itemToLoad);
224
+ setSecondaryItem(result);
225
+ setSelection([]);
226
+ setEditHistory([]);
227
+ loadHistory(itemToLoad);
228
+ });
229
+ }
230
+ function handleErrorResult(result) {
231
+ var _a;
232
+ if (result.type === "error") {
233
+ showErrorToast(result);
234
+ return true;
235
+ }
236
+ if (result.type === "unauthenticated") {
237
+ (_a = confirmationDialogRef.current) === null || _a === void 0 ? void 0 : _a.confirm({
238
+ header: "Not logged in",
239
+ message: "You are not logged in anymore. Proceed to login page?",
240
+ accept: () => {
241
+ //window.location.href = editData.loginUrl;
242
+ },
243
+ });
244
+ showErrorToast(result);
245
+ return true;
246
+ }
247
+ }
248
+ useEffect(() => {
249
+ if (selection.length)
250
+ setSelectedForInsertion("");
251
+ }, [selection]);
252
+ const addToEditHistory = (currentEditOperation) => {
253
+ setEditHistory((history) => {
254
+ const existing = history.find((x) => x.id == currentEditOperation.id);
255
+ if (!existing)
256
+ return [currentEditOperation, ...history];
257
+ else {
258
+ existing.date = currentEditOperation.date;
259
+ return history;
260
+ }
261
+ });
262
+ };
263
+ const handleResult = (result) => {
264
+ if (handleErrorResult(result))
265
+ return;
266
+ if (result.type == "move-component" ||
267
+ result.type === "add-component" ||
268
+ result.type === "link-component" ||
269
+ result.type === "duplicate-components") {
270
+ setNextSelection(result.components.map((x) => x.id));
271
+ requestRefresh("immediate");
272
+ return;
273
+ }
274
+ };
275
+ useEffect(() => {
276
+ const sync = () => __awaiter(this, void 0, void 0, function* () {
277
+ if (currentEditOperation) {
278
+ const result = yield executeEditOperation(currentEditOperation, sessionId);
279
+ addToEditHistory(currentEditOperation);
280
+ handleResult(result);
281
+ if (!currentEditOperation.noRefresh)
282
+ requestRefresh(currentEditOperation.refreshAfterQuietPeriod
283
+ ? "waitForQuietPeriod"
284
+ : "immediate");
285
+ setEditOperationExecutedFlag((state) => !state);
286
+ }
287
+ });
288
+ sync();
289
+ }, [currentEditOperation]);
290
+ const ensureLock = (field) => __awaiter(this, void 0, void 0, function* () {
291
+ var _d;
292
+ if (!field || !field.item)
293
+ return;
294
+ const result = yield lockField(field.item, field.fieldId, sessionId);
295
+ const status = yield ((_d = result.response) === null || _d === void 0 ? void 0 : _d.json());
296
+ if (status.success) {
297
+ const existingField = getLiveFieldIfExists(field);
298
+ if (!existingField)
299
+ return;
300
+ updateLockedBy(existingField);
301
+ return true;
302
+ }
303
+ else {
304
+ toast.current.show({
305
+ severity: "error",
306
+ summary: "Could not lock field",
307
+ detail: status.error,
308
+ life: 3000,
309
+ });
310
+ return false;
311
+ }
312
+ });
313
+ const lockItemsAndRefresh = (items) => __awaiter(this, void 0, void 0, function* () {
314
+ yield lockItems(items);
315
+ if (items.length == 1 && items[0].id == (secondaryItem === null || secondaryItem === void 0 ? void 0 : secondaryItem.id)) {
316
+ yield loadItem(items[0]);
317
+ }
318
+ else
319
+ requestRefresh("immediate");
320
+ });
321
+ const unlockItemsAndRefresh = (items) => __awaiter(this, void 0, void 0, function* () {
322
+ yield unlockItems(items);
323
+ if (items.length == 1 && items[0].id == (secondaryItem === null || secondaryItem === void 0 ? void 0 : secondaryItem.id)) {
324
+ yield loadItem(items[0]);
325
+ }
326
+ else
327
+ requestRefresh("immediate");
328
+ });
329
+ const executeWorkflowCommandAndRefresh = (item, commandId) => __awaiter(this, void 0, void 0, function* () {
330
+ yield executeWorkflowCommand(item, commandId, "");
331
+ requestRefresh("immediate");
332
+ });
333
+ useEffect(() => {
334
+ if (focusedField === null || focusedField === void 0 ? void 0 : focusedField.item) {
335
+ if (!getComponentById(focusedField.item.id, page))
336
+ loadItem(focusedField.item);
337
+ }
338
+ }, [focusedField]);
339
+ const addParentComponentReferencesToPlaceholders = (component) => {
340
+ component.placeholders.forEach((p) => {
341
+ p.parentComponent = component;
342
+ p.components.forEach((c) => {
343
+ c._editor.placeholderReference = p;
344
+ addParentComponentReferencesToPlaceholders(c);
345
+ });
346
+ });
347
+ };
348
+ useEffect(() => {
349
+ var _a, _b;
350
+ setRefreshCompletedFlag(!refreshCompletedFlag);
351
+ page.hasLayout = true;
352
+ if (nextSelection) {
353
+ setSelection(nextSelection);
354
+ setNextSelection(undefined);
355
+ }
356
+ globalThis.editorLiveUpdatingFields = [];
357
+ addParentComponentReferencesToPlaceholders(page);
358
+ if (((_a = page === null || page === void 0 ? void 0 : page._editor) === null || _a === void 0 ? void 0 : _a.versions.length) === 0) {
359
+ (_b = confirmationDialogRef.current) === null || _b === void 0 ? void 0 : _b.confirm({
360
+ message: "This page has no version in language " +
361
+ (page === null || page === void 0 ? void 0 : page.language) +
362
+ ". Do you want to create a new version?",
363
+ header: "Create Version?",
364
+ icon: "pi pi-exclamation-triangle",
365
+ acceptLabel: "Yes, create version",
366
+ rejectLabel: "No",
367
+ accept: () => createAndSwitchToNewVersion(),
368
+ });
369
+ }
370
+ loadHistory(page);
371
+ sendClientInfo();
372
+ }, [page]);
373
+ useEffect(() => {
374
+ if (searchParams.get("fullscreen")) {
375
+ setFullscreen(true);
376
+ }
377
+ }, []);
378
+ function loadHistory(item) {
379
+ return __awaiter(this, void 0, void 0, function* () {
380
+ const operations = yield getEditHistory(item);
381
+ setEditHistory(operations);
382
+ });
383
+ }
384
+ const requestRefresh = (mode) => {
385
+ const refreshTimer = globalThis.editorRefreshTimer;
386
+ const doRefresh = () => {
387
+ //setRefreshing(true);
388
+ if (secondaryItem)
389
+ loadItem(secondaryItem);
390
+ router.refresh();
391
+ globalThis.editorRefreshTimer = undefined;
392
+ };
393
+ if (mode === "immediate") {
394
+ console.log("Immediate refresh requested");
395
+ doRefresh();
396
+ return;
397
+ }
398
+ console.log("request refresh with mode: " + mode);
399
+ if (mode === "waitForQuietPeriod" && refreshTimer) {
400
+ clearTimeout(refreshTimer);
401
+ }
402
+ if (!refreshTimer || mode === "waitForQuietPeriod") {
403
+ globalThis.editorRefreshTimer = setTimeout(() => {
404
+ console.log("refreshing");
405
+ doRefresh();
406
+ }, mode === "waitForQuietPeriod" ? 1200 : 700);
407
+ }
408
+ };
409
+ useEffect(() => {
410
+ if (fullscreen && !searchParams.get("fullscreen"))
411
+ setShowFullscreenHint(true);
412
+ }, [fullscreen]);
413
+ // function requestPageLock(page: Item) {
414
+ // if (page.lockedBy) {
415
+ // const message =
416
+ // "This page is currently locked by " +
417
+ // page.lockedBy +
418
+ // ". Do you want to take over the lock and edit the page?";
419
+ // confirmationDialogRef.current?.confirm({
420
+ // message: message,
421
+ // header: "Take over lock?",
422
+ // icon: "pi pi-exclamation-triangle",
423
+ // acceptLabel: "Yes, take over lock",
424
+ // showCancel: true,
425
+ // accept: () => {
426
+ // lockItemsAndRefresh([getItemDescriptor(page)]);
427
+ // },
428
+ // });
429
+ // } else {
430
+ // confirmationDialogRef.current?.confirm({
431
+ // message: "Do you want to lock and edit this page?",
432
+ // header: "Lock page",
433
+ // icon: "pi pi-exclamation-triangle",
434
+ // acceptLabel: "Lock end edit page",
435
+ // showCancel: true,
436
+ // accept: () => lockItemsAndRefresh([getItemDescriptor(page)]),
437
+ // reject: () => {},
438
+ // });
439
+ // }
440
+ // }
441
+ function handleKeyDown(event) {
442
+ return __awaiter(this, void 0, void 0, function* () {
443
+ if (event.ctrlKey && event.key === "z") {
444
+ event.preventDefault();
445
+ yield undo();
446
+ }
447
+ if (event.ctrlKey && event.key === "y") {
448
+ event.preventDefault();
449
+ yield redo();
450
+ }
451
+ if (event.ctrlKey && event.key === "F11") {
452
+ event.preventDefault();
453
+ setFullscreen(!fullscreen);
454
+ }
455
+ });
456
+ }
457
+ useEffect(() => {
458
+ setWindowSize({ width: window.innerWidth, height: window.innerHeight });
459
+ }, []);
460
+ if (typeof window !== "undefined")
461
+ useEventListenerExt("keydown", handleKeyDown, window);
462
+ useEventListenerExt("resize", () => {
463
+ setWindowSize({ width: window.innerWidth, height: window.innerHeight });
464
+ }, window);
465
+ useEventListenerExt("click", () => {
466
+ var _a;
467
+ (_a = contextMenuRef.current) === null || _a === void 0 ? void 0 : _a.close({});
468
+ }, window, true);
469
+ const toast = useRef();
470
+ useEffect(() => {
471
+ var _a;
472
+ const rect = (_a = editorContainerRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
473
+ if (rect)
474
+ setViewportRect({ width: rect.width, height: rect.height });
475
+ }, [windowSize]);
476
+ function redo() {
477
+ return __awaiter(this, void 0, void 0, function* () {
478
+ setUpdateContentEditingFields(!updateContentEditingFields);
479
+ let result = yield executeRedo(sessionId, secondaryItem || page);
480
+ handleResult(result);
481
+ if (result.type === "success") {
482
+ router.refresh();
483
+ //setRefreshing(true);
484
+ return true;
485
+ }
486
+ else {
487
+ showErrorToast(result);
488
+ return false;
489
+ }
490
+ });
491
+ }
492
+ function showErrorToast(result) {
493
+ toast.current.show({
494
+ severity: "error",
495
+ summary: result.summary,
496
+ detail: result.details,
497
+ life: 3000,
498
+ });
499
+ }
500
+ function undo(numOperations) {
501
+ return __awaiter(this, void 0, void 0, function* () {
502
+ setUpdateContentEditingFields(!updateContentEditingFields);
503
+ let result = yield executeUndo(sessionId, secondaryItem || page, numOperations);
504
+ if (result.type === "success") {
505
+ router.refresh();
506
+ //setRefreshing(true);
507
+ setCurrentEditOperation(undefined);
508
+ return true;
509
+ }
510
+ else {
511
+ showErrorToast(result);
512
+ return false;
513
+ }
514
+ });
515
+ }
516
+ const getLiveFieldIfExists = (field) => {
517
+ const liveUpdatingFields = globalThis.editorLiveUpdatingFields;
518
+ const existingField = liveUpdatingFields.find((f) => {
519
+ var _a, _b, _c, _d, _e, _f, _g;
520
+ return ((_a = f._editor) === null || _a === void 0 ? void 0 : _a.descriptor.fieldId) === field.fieldId &&
521
+ ((_c = (_b = f._editor) === null || _b === void 0 ? void 0 : _b.descriptor.item) === null || _c === void 0 ? void 0 : _c.language) === field.item.language &&
522
+ ((_e = (_d = f._editor) === null || _d === void 0 ? void 0 : _d.descriptor.item) === null || _e === void 0 ? void 0 : _e.version) === field.item.version &&
523
+ ((_g = (_f = f._editor) === null || _f === void 0 ? void 0 : _f.descriptor.item) === null || _g === void 0 ? void 0 : _g.id) === field.item.id;
524
+ });
525
+ if (!existingField)
526
+ return null;
527
+ updateLockedBy(existingField);
528
+ return existingField;
529
+ };
530
+ const getLiveField = (field) => {
531
+ if (!field._editor)
532
+ return field;
533
+ const descriptor = field._editor.descriptor;
534
+ const liveUpdatingFields = globalThis.editorLiveUpdatingFields;
535
+ let liveField = liveUpdatingFields.find((f) => {
536
+ var _a, _b, _c, _d, _e, _f, _g;
537
+ return ((_a = f._editor) === null || _a === void 0 ? void 0 : _a.descriptor.fieldId) === descriptor.fieldId &&
538
+ ((_c = (_b = f._editor) === null || _b === void 0 ? void 0 : _b.descriptor.item) === null || _c === void 0 ? void 0 : _c.language) === descriptor.item.language &&
539
+ ((_e = (_d = f._editor) === null || _d === void 0 ? void 0 : _d.descriptor.item) === null || _e === void 0 ? void 0 : _e.version) === descriptor.item.version &&
540
+ ((_g = (_f = f._editor) === null || _f === void 0 ? void 0 : _f.descriptor.item) === null || _g === void 0 ? void 0 : _g.id) === descriptor.item.id;
541
+ });
542
+ if (!liveField) {
543
+ var component = findComponent(field._editor.descriptor.item.id, page.placeholders);
544
+ if (component) {
545
+ const existingField = Object.values(component.fields).find((f) => f.id === field.id);
546
+ if (existingField)
547
+ field = existingField;
548
+ }
549
+ liveUpdatingFields.push(field);
550
+ liveField = field;
551
+ }
552
+ updateLockedBy(liveField);
553
+ return liveField;
554
+ };
555
+ const editField = ({ field, value, rawValue, refresh = "immediate", }) => {
556
+ if (!page)
557
+ return;
558
+ setCurrentEditOperation((op) => {
559
+ const newOp = getEditOP(op, field, refresh, rawValue, value);
560
+ return Object.assign({}, newOp);
561
+ });
562
+ };
563
+ const selectMedia = useCallback(({ selectedIdPath }) => {
564
+ setSelectedMediaIdPath(selectedIdPath);
565
+ setMediaSelectorVisible(true);
566
+ return new Promise((resolve) => {
567
+ setMediaResolver(() => resolve);
568
+ });
569
+ }, []);
570
+ const onMediaSelect = useCallback((mediaUrl) => {
571
+ mediaResolver === null || mediaResolver === void 0 ? void 0 : mediaResolver(mediaUrl);
572
+ setMediaSelectorVisible(false);
573
+ setMediaResolver(undefined);
574
+ }, [mediaResolver]);
575
+ function getEditOP(currentOp, field, refresh, rawValue, value) {
576
+ var _a;
577
+ const fieldItem = field._editor.descriptor.item;
578
+ const component = findComponent(fieldItem.id, page.placeholders);
579
+ let op = currentOp;
580
+ if (!op ||
581
+ op.undone ||
582
+ op.type !== "edit-field" ||
583
+ op.item.id !== fieldItem.id ||
584
+ op.fieldId !== field.id ||
585
+ op.item.language !== fieldItem.language ||
586
+ op.item.version !== fieldItem.version) {
587
+ op = {
588
+ type: "edit-field",
589
+ item: {
590
+ id: fieldItem.id,
591
+ version: fieldItem.version,
592
+ language: fieldItem.language,
593
+ name: fieldItem.id == page.id ? "Page" : (_a = component === null || component === void 0 ? void 0 : component.name) !== null && _a !== void 0 ? _a : "<unknown>",
594
+ },
595
+ fieldId: field.id,
596
+ fieldName: field._editor.name,
597
+ pageItem: getPageItemDescriptor(),
598
+ date: new Date().toISOString(),
599
+ id: uuid(),
600
+ description: "Edit " + field._editor.name,
601
+ focus: fieldItem.id + ":" + field.id,
602
+ };
603
+ }
604
+ op.date = new Date().toISOString();
605
+ op.noRefresh = refresh === "none";
606
+ op.refreshAfterQuietPeriod = refresh === "waitForQuietPeriod";
607
+ op.value = rawValue !== null && rawValue !== void 0 ? rawValue : value;
608
+ const firstEditInheritedComponent = (component === null || component === void 0 ? void 0 : component._editor.isInheritedFromMasterLanguage) &&
609
+ op.item.language != page.language;
610
+ if (firstEditInheritedComponent)
611
+ op.item.language = page.language;
612
+ if (value || value === "") {
613
+ const liveField = getLiveField(field);
614
+ liveField.value = value;
615
+ liveField.rawValue = op.value;
616
+ }
617
+ return op;
618
+ }
619
+ function updateLockedBy(existingField) {
620
+ const fieldItem = existingField._editor.descriptor.item;
621
+ const lockedBy = activeSessions.find((x) => {
622
+ var _a, _b, _c, _d;
623
+ return ((_a = x.fieldLock) === null || _a === void 0 ? void 0 : _a.item.id) === fieldItem.id &&
624
+ ((_b = x.fieldLock) === null || _b === void 0 ? void 0 : _b.item.language) === fieldItem.language &&
625
+ ((_c = x.fieldLock) === null || _c === void 0 ? void 0 : _c.item.version) === fieldItem.version &&
626
+ ((_d = x.fieldLock) === null || _d === void 0 ? void 0 : _d.fieldId) === existingField.id;
627
+ });
628
+ if (existingField._editor)
629
+ existingField._editor.lockedBy = lockedBy;
630
+ }
631
+ function getPageItemDescriptor() {
632
+ return getItemDescriptor(page);
633
+ }
634
+ function addComponent(templateId, templateName, placeholderName, index, parentId) {
635
+ const op = {
636
+ type: "add-component",
637
+ pageItem: getPageItemDescriptor(),
638
+ parent: parentId && {
639
+ id: parentId,
640
+ language: page.language,
641
+ version: page.version,
642
+ },
643
+ placeholderName: placeholderName,
644
+ placeholderIndex: index,
645
+ templateId: templateId,
646
+ date: new Date().toISOString(),
647
+ id: uuid(),
648
+ description: "Add " + templateName,
649
+ };
650
+ setCurrentEditOperation(op);
651
+ }
652
+ const editContext = {
653
+ configuration,
654
+ currentEditOperation,
655
+ item: centerPanelView == "form" ? secondaryItem || page : page,
656
+ renderedPage: children,
657
+ sessionId: sessionId,
658
+ readonly: !page._editor.hasLock,
659
+ selection,
660
+ select: (ids) => {
661
+ setView(configuration.chrome.editor.views.find((x) => x.name == "edit"));
662
+ setSelection(ids);
663
+ setSecondaryItem(undefined);
664
+ },
665
+ selectedForInsertion,
666
+ setSelectedForInsertion,
667
+ editField,
668
+ dragObject,
669
+ dictionary,
670
+ setDictionary,
671
+ requestRefresh,
672
+ refreshCompletedFlag,
673
+ editOperationExecutedFlag,
674
+ unresolvedDictionaryKeys,
675
+ setUnresolvedDictionaryKeys,
676
+ updateContentEditingFields,
677
+ getLiveField,
678
+ getLiveFieldIfExists,
679
+ selectMedia,
680
+ showToast: (message) => {
681
+ toast.current.show(message);
682
+ },
683
+ scrollIntoView,
684
+ setScrollIntoView,
685
+ focusedField,
686
+ setFocusedField: (field, requestLock) => {
687
+ if (field)
688
+ setFocusedField(Object.assign({}, field));
689
+ else
690
+ setFocusedField(undefined);
691
+ if (field && requestLock)
692
+ ensureLock(field);
693
+ if (!field)
694
+ releaseFieldLocks(sessionId);
695
+ },
696
+ undo,
697
+ redo,
698
+ renderedFields,
699
+ registerAsRenderedField: (field) => {
700
+ setRenderedFields((prev) => {
701
+ if (!field._editor ||
702
+ prev.find((x) => {
703
+ var _a;
704
+ return x.fieldId === field.id &&
705
+ x.item.id === ((_a = field._editor) === null || _a === void 0 ? void 0 : _a.descriptor.item.id);
706
+ }))
707
+ return prev;
708
+ return [...prev, field._editor.descriptor];
709
+ });
710
+ },
711
+ getComponentCommands: (components) => {
712
+ return getComponentCommands(components, editContext);
713
+ },
714
+ dragStart: (dragObject) => {
715
+ // console.log("dragging " + JSON.stringify(dragObject));
716
+ setDragObject(dragObject);
717
+ },
718
+ dragEnd: () => {
719
+ setDragObject(undefined);
720
+ },
721
+ droppedInPlaceholder: (placeholderKey, index) => __awaiter(this, void 0, void 0, function* () {
722
+ if (!dragObject)
723
+ return;
724
+ console.log(dragObject.templateId + " dropped in " + placeholderKey + " " + index);
725
+ // console.log(JSON.stringify(page));
726
+ const placeholderKeyComponents = placeholderKey.split("_");
727
+ const parentId = placeholderKeyComponents.length === 1
728
+ ? undefined
729
+ : placeholderKeyComponents[0];
730
+ if (parentId)
731
+ setSelection([parentId]);
732
+ const placeholderName = placeholderKeyComponents.length === 1
733
+ ? placeholderKeyComponents[0]
734
+ : placeholderKeyComponents[1];
735
+ let op;
736
+ if (dragObject.type == "template") {
737
+ addComponent(dragObject.templateId, dragObject.name || "component", placeholderName, index, parentId);
738
+ return;
739
+ }
740
+ if (dragObject.type == "component" ||
741
+ (dragObject.type == "link-component" && dragObject.component)) {
742
+ const parentComponent = parentId
743
+ ? getComponentById(parentId, page)
744
+ : null;
745
+ if (dragObject.type == "link-component") {
746
+ op = {
747
+ type: "link-component",
748
+ pageItem: getPageItemDescriptor(),
749
+ parent: parentId && {
750
+ id: parentId,
751
+ language: page.language,
752
+ version: page.version,
753
+ name: parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent.name,
754
+ },
755
+ placeholderName: placeholderName,
756
+ placeholderIndex: index,
757
+ date: new Date().toISOString(),
758
+ id: uuid(),
759
+ linkedComponentItem: dragObject.component,
760
+ description: "Link component",
761
+ };
762
+ }
763
+ else {
764
+ op = {
765
+ type: "move-component",
766
+ pageItem: getPageItemDescriptor(),
767
+ parent: parentId && {
768
+ id: parentId,
769
+ language: page.language,
770
+ version: page.version,
771
+ name: parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent.name,
772
+ },
773
+ placeholderName: placeholderName,
774
+ placeholderIndex: index,
775
+ components: [dragObject.component],
776
+ date: new Date().toISOString(),
777
+ id: uuid(),
778
+ description: "Move component",
779
+ };
780
+ }
781
+ }
782
+ if (op)
783
+ setCurrentEditOperation(op);
784
+ setDragObject(undefined);
785
+ }),
786
+ addComponent,
787
+ executeEditOperation: (op) => {
788
+ setCurrentEditOperation(op);
789
+ },
790
+ page,
791
+ windowSize,
792
+ triggerFieldAction: (field, actionButton) => __awaiter(this, void 0, void 0, function* () {
793
+ const op = { field, actionButton, state: "running" };
794
+ const fieldItem = field._editor.descriptor.item;
795
+ setActiveFieldActions((prevFieldActions) => [
796
+ ...prevFieldActions.filter((x) => {
797
+ var _a, _b, _c;
798
+ return !(x.field.id == field.id &&
799
+ ((_a = x.field._editor) === null || _a === void 0 ? void 0 : _a.descriptor.item.id) == fieldItem.id &&
800
+ ((_b = x.field._editor) === null || _b === void 0 ? void 0 : _b.descriptor.item.language) == fieldItem.language &&
801
+ ((_c = x.field._editor) === null || _c === void 0 ? void 0 : _c.descriptor.item.version) == fieldItem.version);
802
+ }),
803
+ op,
804
+ ]);
805
+ yield executeFieldAction(field._editor.descriptor.item, field.id, { id: page.id, language: page.language, version: page.version }, actionButton.action, editContext.sessionId, getSelectedText(), (data) => {
806
+ op.message = data.responseText;
807
+ setActiveFieldActions((prevFieldActions) => [...prevFieldActions]);
808
+ });
809
+ op.state = "success";
810
+ requestRefresh("immediate");
811
+ }),
812
+ activeFieldActions,
813
+ showContextMenu: (event, items) => {
814
+ var _a;
815
+ (_a = contextMenuRef.current) === null || _a === void 0 ? void 0 : _a.show(event, items);
816
+ },
817
+ showAiPopup: (event) => {
818
+ var _a;
819
+ (_a = aiPopupRef.current) === null || _a === void 0 ? void 0 : _a.show(event);
820
+ },
821
+ showFieldEditorPopup: (fields, sections, ev) => {
822
+ var _a;
823
+ (_a = fieldEditorPopupRef.current) === null || _a === void 0 ? void 0 : _a.show(fields, sections, ev);
824
+ },
825
+ lockItems: lockItemsAndRefresh,
826
+ unlockItems: unlockItemsAndRefresh,
827
+ pageValidationResult,
828
+ secondaryItem,
829
+ loadItem,
830
+ editHistory,
831
+ activeSessions,
832
+ unlockField: () => __awaiter(this, void 0, void 0, function* () {
833
+ yield releaseFieldLocks(sessionId);
834
+ }),
835
+ executeWorkflowCommand: executeWorkflowCommandAndRefresh,
836
+ duplicateComponents: ({ componentIds, parent, placeholderName, }) => {
837
+ const op = {
838
+ type: "duplicate-components",
839
+ pageItem: getPageItemDescriptor(),
840
+ sourceComponentIds: componentIds,
841
+ date: new Date().toISOString(),
842
+ id: uuid(),
843
+ description: "Duplicate components",
844
+ placeholderName,
845
+ parent: getItemDescriptor(parent),
846
+ };
847
+ setCurrentEditOperation(op);
848
+ },
849
+ isCommandDisabled: (command) => {
850
+ if (!command.disabled)
851
+ return false;
852
+ return command.disabled({
853
+ editContext,
854
+ pathname,
855
+ router,
856
+ searchParams,
857
+ });
858
+ },
859
+ executeCommand: ({ command, event, }) => {
860
+ return command.execute({
861
+ editContext,
862
+ pathname,
863
+ router,
864
+ searchParams,
865
+ event,
866
+ });
867
+ },
868
+ setView,
869
+ view,
870
+ pageView: {
871
+ device,
872
+ setDevice,
873
+ scroll,
874
+ setScroll,
875
+ zoom,
876
+ setZoom,
877
+ viewport: viewportRect,
878
+ fullscreen,
879
+ setFullscreen,
880
+ editorContainerRef,
881
+ },
882
+ componentDesignerContext: getComponentDesignerContext(),
883
+ };
884
+ const spinner = _jsx(ProgressSpinner, {});
885
+ return (_jsx(EditContextProvider, { value: editContext, children: fullscreen ? (_jsxs("div", { onMouseMoveCapture: () => setTimeout(() => setShowFullscreenHint(false), 600), children: [children, showFullscreenHint && (_jsx("div", { className: "a-fixed a-left-1/2 a-top-3 a-transform \r\n -a-translate-x-1/2 a-p-12 a-bg-gray-200", children: "Press Ctrl + F11 to exit fullscreen mode" }))] })) : (_jsxs(_Fragment, { children: [_jsx(Toast, { ref: toast }), _jsxs(PrimeReactProvider, { children: [_jsx(ConfirmationDialog, { ref: confirmationDialogRef }), _jsx(ConfirmDialog, {}), _jsxs(BlockUI, { blocked: false, template: spinner, children: [_jsx(EditContextMenu, { ref: contextMenuRef }), (_a = view.menuBar) !== null && _a !== void 0 ? _a : _jsx(Menu, {}), _jsx(MainLayout, { content: ((_b = configuration.chrome.editor.centerPanelViews.find((x) => x.name === centerPanelView)) === null || _b === void 0 ? void 0 : _b.content) || "Unknown view " + centerPanelView, leftSidebar: _jsx(Sidebar, { views: (_c = configuration.chrome.editor.views) !== null && _c !== void 0 ? _c : [] }) })] }), _jsx(MediaSelector, { visible: mediaSelectorVisible, onHide: () => setMediaSelectorVisible(false), onMediaSelected: onMediaSelect, selectedIdPath: selectedMediaIdPath }), _jsx(PublishDialog, { visible: showPublishDialog, onHide: () => setShowPublishDialog(false), page: page,
886
+ // lockItems={lockItemsAndRefresh}
887
+ // unlockItems={unlockItemsAndRefresh}
888
+ executeWorkflowCommand: executeWorkflowCommandAndRefresh }), _jsx(AiPopup, { ref: aiPopupRef }), _jsx(FieldEditorPopup, { ref: fieldEditorPopupRef })] })] })) }));
889
+ }