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

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 (364) hide show
  1. package/dist/editor.css +439 -49
  2. package/dist/esm/alpacaContext.js +16 -0
  3. package/dist/esm/client-components/ClientLink.js +34 -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 +4 -7
  9. package/dist/esm/components/Link.js +32 -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 +133 -0
  13. package/dist/esm/components/PictureEditor.js +77 -0
  14. package/dist/esm/components/PictureEditorWrapper.js +6 -0
  15. package/dist/esm/components/Placeholder.js +117 -0
  16. package/dist/esm/components/RichText.js +30 -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 +29 -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 +12 -0
  24. package/dist/esm/components/TranslateEditor.js +24 -0
  25. package/dist/esm/components/index.js +7 -0
  26. package/dist/esm/components/picture-shared.js +26 -0
  27. package/dist/esm/editor/ComponentInfo.js +12 -0
  28. package/dist/esm/editor/ConfirmationDialog.js +29 -0
  29. package/dist/{cjs → esm}/editor/ContentTree.js +55 -46
  30. package/dist/esm/editor/ContextMenu.js +90 -0
  31. package/dist/esm/editor/DialogButtons.js +4 -0
  32. package/dist/esm/editor/DictionaryEditor.js +37 -0
  33. package/dist/esm/editor/EditFrame.js +115 -0
  34. package/dist/esm/editor/EditFrameWrapper.js +7 -0
  35. package/dist/esm/editor/Editor.js +15 -0
  36. package/dist/esm/editor/EditorClient.js +877 -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 +137 -0
  43. package/dist/{cjs → esm}/editor/FloatingToolbar.js +20 -23
  44. package/dist/esm/editor/ItemInfo.js +14 -0
  45. package/dist/esm/editor/ItemNameDialog.js +32 -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 +5 -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/{cjs/editor → esm/editor/ai}/AiTerminal.js +67 -48
  62. package/dist/esm/editor/ai/AiToolCall.js +15 -0
  63. package/dist/esm/editor/commands/commands.js +1 -0
  64. package/dist/esm/editor/commands/componentCommands.js +287 -0
  65. package/dist/esm/editor/commands/createVersionCommand.js +26 -0
  66. package/dist/esm/editor/commands/undo.js +22 -0
  67. package/dist/esm/editor/componentTreeHelper.js +20 -0
  68. package/dist/esm/editor/config/config.js +261 -0
  69. package/dist/esm/editor/editContext.js +11 -0
  70. package/dist/esm/editor/editor-warnings/ItemLocked.js +40 -0
  71. package/dist/esm/editor/editor-warnings/ValidationErrors.js +22 -0
  72. package/dist/esm/editor/fieldTypes/CheckboxEditor.js +21 -0
  73. package/dist/esm/editor/fieldTypes/DropLinkEditor.js +50 -0
  74. package/dist/esm/editor/fieldTypes/InternalLinkFieldEditor.js +41 -0
  75. package/dist/{cjs → esm}/editor/fieldTypes/LinkFieldEditor.js +14 -16
  76. package/dist/esm/editor/fieldTypes/MultiLineText.js +25 -0
  77. package/dist/esm/editor/fieldTypes/PictureFieldEditor.js +33 -0
  78. package/dist/esm/editor/fieldTypes/RawEditor.js +26 -0
  79. package/dist/esm/editor/fieldTypes/RichTextEditor.js +7 -0
  80. package/dist/esm/editor/fieldTypes/RichTextEditorComponent.js +46 -0
  81. package/dist/esm/editor/fieldTypes/SingleLineText.js +25 -0
  82. package/dist/esm/editor/fieldTypes/TreeListEditor.js +57 -0
  83. package/dist/esm/editor/index.js +4 -0
  84. package/dist/esm/editor/itemCommands.js +27 -0
  85. package/dist/esm/editor/menubar/BrowseHistory.js +39 -0
  86. package/dist/esm/editor/menubar/ItemLanguageVersion.js +20 -0
  87. package/dist/esm/editor/menubar/LanguageSelector.js +18 -0
  88. package/dist/esm/editor/menubar/Menu.js +105 -0
  89. package/dist/esm/editor/menubar/PageViewerControls.js +66 -0
  90. package/dist/esm/editor/menubar/VersionSelector.js +18 -0
  91. package/dist/esm/editor/previewContext.js +5 -0
  92. package/dist/esm/editor/services/contentService.js +58 -0
  93. package/dist/esm/editor/services/editService.js +428 -0
  94. package/dist/esm/editor/sidebar/ComponentPalette.js +42 -0
  95. package/dist/esm/editor/sidebar/ComponentTree.js +237 -0
  96. package/dist/esm/editor/sidebar/Debug.js +46 -0
  97. package/dist/esm/editor/sidebar/EditHistory.js +66 -0
  98. package/dist/esm/editor/sidebar/EditorForm.js +24 -0
  99. package/dist/esm/editor/sidebar/GraphQL.js +85 -0
  100. package/dist/esm/editor/sidebar/Insert.js +7 -0
  101. package/dist/esm/editor/sidebar/MainContentTree.js +38 -0
  102. package/dist/esm/editor/sidebar/Sessions.js +11 -0
  103. package/dist/esm/editor/sidebar/Sidebar.js +13 -0
  104. package/dist/esm/editor/sidebar/SidebarView.js +69 -0
  105. package/dist/esm/editor/sidebar/Workbox.js +77 -0
  106. package/dist/esm/editor/ui/CopyToClipboardButton.js +14 -0
  107. package/dist/esm/editor/ui/Icons.js +19 -0
  108. package/dist/esm/editor/ui/Section.js +8 -0
  109. package/dist/esm/editor/utils/insertOptions.js +39 -0
  110. package/dist/esm/editor/utils.js +71 -0
  111. package/dist/esm/editor/views/ItemEditor.js +18 -0
  112. package/dist/esm/fieldTypes.js +1 -0
  113. package/dist/esm/graphQL.js +50 -0
  114. package/dist/esm/graphQLTypes.js +1 -0
  115. package/dist/esm/index.js +8 -0
  116. package/dist/{cjs → esm}/loadRouteData.js +23 -20
  117. package/dist/{cjs → esm}/mediaProtection.js +4 -11
  118. package/dist/esm/middleware/handleRequest.js +45 -0
  119. package/dist/esm/middleware/index.js +1 -0
  120. package/dist/esm/servertypes.js +1 -0
  121. package/dist/primereact/resources/themes/arya-blue/theme.css +854 -790
  122. package/dist/primereact/resources/themes/arya-green/theme.css +854 -790
  123. package/dist/primereact/resources/themes/arya-orange/theme.css +854 -790
  124. package/dist/primereact/resources/themes/arya-purple/theme.css +854 -790
  125. package/dist/primereact/resources/themes/bootstrap4-dark-blue/theme.css +678 -615
  126. package/dist/primereact/resources/themes/bootstrap4-dark-purple/theme.css +678 -615
  127. package/dist/primereact/resources/themes/bootstrap4-light-blue/theme.css +679 -616
  128. package/dist/primereact/resources/themes/bootstrap4-light-purple/theme.css +679 -616
  129. package/dist/primereact/resources/themes/fluent-light/theme.css +686 -638
  130. package/dist/primereact/resources/themes/lara-dark-amber/theme.css +679 -630
  131. package/dist/primereact/resources/themes/lara-dark-blue/theme.css +679 -630
  132. package/dist/primereact/resources/themes/lara-dark-cyan/theme.css +679 -630
  133. package/dist/primereact/resources/themes/lara-dark-green/theme.css +679 -630
  134. package/dist/primereact/resources/themes/lara-dark-indigo/theme.css +679 -630
  135. package/dist/primereact/resources/themes/lara-dark-pink/theme.css +679 -630
  136. package/dist/primereact/resources/themes/lara-dark-purple/theme.css +679 -630
  137. package/dist/primereact/resources/themes/lara-dark-teal/theme.css +679 -630
  138. package/dist/primereact/resources/themes/lara-light-amber/theme.css +776 -725
  139. package/dist/primereact/resources/themes/lara-light-blue/theme.css +1011 -960
  140. package/dist/primereact/resources/themes/lara-light-cyan/theme.css +776 -725
  141. package/dist/primereact/resources/themes/lara-light-green/theme.css +820 -769
  142. package/dist/primereact/resources/themes/lara-light-indigo/theme.css +1016 -965
  143. package/dist/primereact/resources/themes/lara-light-pink/theme.css +776 -725
  144. package/dist/primereact/resources/themes/lara-light-purple/theme.css +1016 -965
  145. package/dist/primereact/resources/themes/lara-light-teal/theme.css +776 -725
  146. package/dist/primereact/resources/themes/luna-amber/theme.css +950 -887
  147. package/dist/primereact/resources/themes/luna-blue/theme.css +950 -887
  148. package/dist/primereact/resources/themes/luna-green/theme.css +950 -887
  149. package/dist/primereact/resources/themes/luna-pink/theme.css +950 -887
  150. package/dist/primereact/resources/themes/md-dark-deeppurple/theme.css +918 -950
  151. package/dist/primereact/resources/themes/md-dark-indigo/theme.css +918 -950
  152. package/dist/primereact/resources/themes/md-light-deeppurple/theme.css +878 -910
  153. package/dist/primereact/resources/themes/md-light-indigo/theme.css +878 -910
  154. package/dist/primereact/resources/themes/mdc-dark-deeppurple/theme.css +918 -950
  155. package/dist/primereact/resources/themes/mdc-dark-indigo/theme.css +918 -950
  156. package/dist/primereact/resources/themes/mdc-light-deeppurple/theme.css +878 -910
  157. package/dist/primereact/resources/themes/mdc-light-indigo/theme.css +878 -910
  158. package/dist/primereact/resources/themes/mira/theme.css +1562 -1532
  159. package/dist/primereact/resources/themes/nano/theme.css +707 -641
  160. package/dist/primereact/resources/themes/nova/theme.css +705 -643
  161. package/dist/primereact/resources/themes/nova-accent/theme.css +701 -636
  162. package/dist/primereact/resources/themes/nova-alt/theme.css +705 -643
  163. package/dist/primereact/resources/themes/rhea/theme.css +876 -811
  164. package/dist/primereact/resources/themes/saga-blue/theme.css +896 -832
  165. package/dist/primereact/resources/themes/saga-green/theme.css +896 -832
  166. package/dist/primereact/resources/themes/saga-orange/theme.css +896 -832
  167. package/dist/primereact/resources/themes/saga-purple/theme.css +896 -832
  168. package/dist/primereact/resources/themes/soho-dark/theme.css +701 -643
  169. package/dist/primereact/resources/themes/soho-light/theme.css +690 -634
  170. package/dist/primereact/resources/themes/tailwind-light/theme.css +1370 -1306
  171. package/dist/primereact/resources/themes/vela-blue/theme.css +862 -798
  172. package/dist/primereact/resources/themes/vela-green/theme.css +862 -798
  173. package/dist/primereact/resources/themes/vela-orange/theme.css +862 -798
  174. package/dist/primereact/resources/themes/vela-purple/theme.css +862 -798
  175. package/dist/primereact/resources/themes/viva-dark/theme.css +655 -612
  176. package/dist/primereact/resources/themes/viva-light/theme.css +737 -694
  177. package/package.json +25 -22
  178. package/types/alpacaContext.d.ts +14 -8
  179. package/types/{components → client-components}/LinkEditor.d.ts +1 -1
  180. package/types/client-components/MultiComponentEditor.d.ts +4 -2
  181. package/types/client-components/index.d.ts +3 -2
  182. package/types/components/Image.d.ts +1 -0
  183. package/types/components/Link.d.ts +1 -0
  184. package/types/components/LinkPreview.d.ts +6 -0
  185. package/types/components/LockedFieldIndicator.d.ts +6 -0
  186. package/types/components/Picture.d.ts +4 -6
  187. package/types/components/PictureEditorWrapper.d.ts +3 -0
  188. package/types/components/Placeholder.d.ts +12 -11
  189. package/types/components/RichText.d.ts +2 -1
  190. package/types/components/RichTextEditor.d.ts +3 -290
  191. package/types/components/RichTextEditorWrapper.d.ts +2 -0
  192. package/types/components/Slot.d.ts +2 -1
  193. package/types/components/Text.d.ts +2 -1
  194. package/types/components/TextEditor.d.ts +3 -290
  195. package/types/components/TextEditorWrapper.d.ts +4 -0
  196. package/types/components/Translate.d.ts +1 -0
  197. package/types/components/picture-shared.d.ts +16 -0
  198. package/types/editor/ComponentInfo.d.ts +1 -1
  199. package/types/editor/ContentTree.d.ts +2 -2
  200. package/types/editor/ContextMenu.d.ts +14 -0
  201. package/types/editor/DictionaryEditor.d.ts +1 -4
  202. package/types/editor/EditFrameWrapper.d.ts +6 -0
  203. package/types/editor/Editor.d.ts +68 -5
  204. package/types/editor/EditorClient.d.ts +17 -5
  205. package/types/editor/EditorClientHost.d.ts +4 -2
  206. package/types/editor/EditorWarning.d.ts +6 -0
  207. package/types/editor/EditorWarnings.d.ts +9 -0
  208. package/types/editor/FieldEditorPopup.d.ts +10 -0
  209. package/types/editor/FieldList.d.ts +6 -2
  210. package/types/editor/FieldListField.d.ts +6 -2
  211. package/types/editor/ItemInfo.d.ts +1 -1
  212. package/types/editor/Outline.d.ts +11 -0
  213. package/types/editor/PageViewer.d.ts +1 -0
  214. package/types/editor/PictureEditorDialog.d.ts +4 -2
  215. package/types/editor/PlaceholderDropZone.d.ts +3 -2
  216. package/types/editor/PlaceholderDropZoneHost.d.ts +3 -2
  217. package/types/editor/PreviewClient.d.ts +4 -0
  218. package/types/editor/PreviewClientHost.d.ts +4 -0
  219. package/types/editor/PreviewPanel.d.ts +1 -0
  220. package/types/editor/PublishDialog.d.ts +7 -0
  221. package/types/editor/Terminal.d.ts +6 -2
  222. package/types/editor/{AiPopup.d.ts → ai/AiPopup.d.ts} +2 -3
  223. package/types/editor/ai/AiResponseMessage.d.ts +7 -0
  224. package/types/editor/ai/AiTerminal.d.ts +4 -0
  225. package/types/editor/ai/AiToolCall.d.ts +9 -0
  226. package/types/editor/commands/commands.d.ts +21 -0
  227. package/types/editor/commands/componentCommands.d.ts +5 -0
  228. package/types/editor/commands/createVersionCommand.d.ts +2 -0
  229. package/types/editor/commands/undo.d.ts +15 -0
  230. package/types/editor/componentTreeHelper.d.ts +2 -1
  231. package/types/editor/config/config.d.ts +2 -0
  232. package/types/editor/editContext.d.ts +70 -93
  233. package/types/editor/editor-warnings/ItemLocked.d.ts +2 -0
  234. package/types/editor/editor-warnings/ValidationErrors.d.ts +2 -0
  235. package/types/editor/fieldTypes/CheckboxEditor.d.ts +3 -2
  236. package/types/editor/fieldTypes/DropLinkEditor.d.ts +5 -0
  237. package/types/editor/fieldTypes/InternalLinkFieldEditor.d.ts +3 -2
  238. package/types/editor/fieldTypes/LinkFieldEditor.d.ts +3 -2
  239. package/types/editor/fieldTypes/MultiLineText.d.ts +3 -2
  240. package/types/editor/fieldTypes/PictureFieldEditor.d.ts +2 -1
  241. package/types/editor/fieldTypes/RawEditor.d.ts +5 -0
  242. package/types/editor/fieldTypes/RichTextEditor.d.ts +4 -3
  243. package/types/editor/fieldTypes/RichTextEditorComponent.d.ts +5 -0
  244. package/types/editor/fieldTypes/SingleLineText.d.ts +3 -2
  245. package/types/editor/fieldTypes/TreeListEditor.d.ts +2 -1
  246. package/types/editor/index.d.ts +2 -0
  247. package/types/editor/itemCommands.d.ts +3 -0
  248. package/types/editor/menubar/BrowseHistory.d.ts +4 -0
  249. package/types/editor/menubar/ItemLanguageVersion.d.ts +1 -0
  250. package/types/editor/menubar/LanguageSelector.d.ts +5 -0
  251. package/types/editor/menubar/Menu.d.ts +1 -0
  252. package/types/editor/menubar/PageViewerControls.d.ts +1 -0
  253. package/types/editor/menubar/VersionSelector.d.ts +5 -0
  254. package/types/editor/previewContext.d.ts +4 -0
  255. package/types/editor/{contentService.d.ts → services/contentService.d.ts} +2 -3
  256. package/types/editor/services/editService.d.ts +27 -0
  257. package/types/editor/sidebar/ComponentPalette.d.ts +1 -0
  258. package/types/editor/sidebar/ComponentTree.d.ts +1 -0
  259. package/types/editor/sidebar/Debug.d.ts +1 -0
  260. package/types/editor/sidebar/EditHistory.d.ts +1 -0
  261. package/types/editor/sidebar/EditorForm.d.ts +1 -0
  262. package/types/editor/sidebar/GraphQL.d.ts +1 -0
  263. package/types/editor/sidebar/Insert.d.ts +1 -0
  264. package/types/editor/sidebar/MainContentTree.d.ts +3 -0
  265. package/types/editor/sidebar/Sessions.d.ts +1 -0
  266. package/types/editor/sidebar/Sidebar.d.ts +4 -0
  267. package/types/editor/sidebar/SidebarView.d.ts +8 -0
  268. package/types/editor/sidebar/Workbox.d.ts +1 -0
  269. package/types/editor/ui/CopyToClipboardButton.d.ts +3 -0
  270. package/types/editor/ui/Icons.d.ts +16 -0
  271. package/types/editor/utils/insertOptions.d.ts +3 -0
  272. package/types/editor/utils.d.ts +8 -0
  273. package/types/editor/views/ItemEditor.d.ts +1 -0
  274. package/types/fieldTypes.d.ts +39 -11
  275. package/types/graphQL.d.ts +12 -0
  276. package/types/index.d.ts +4 -3
  277. package/types/loadRouteData.d.ts +7 -85
  278. package/types/middleware/handleRequest.d.ts +5 -0
  279. package/types/middleware/index.d.ts +1 -1
  280. package/types/servertypes.d.ts +306 -0
  281. package/dist/cjs/alpacaContext.js +0 -12
  282. package/dist/cjs/client-components/ClientLink.js +0 -36
  283. package/dist/cjs/client-components/MultiComponentEditor.js +0 -26
  284. package/dist/cjs/client-components/index.js +0 -19
  285. package/dist/cjs/components/Error.js +0 -15
  286. package/dist/cjs/components/Link.js +0 -36
  287. package/dist/cjs/components/Picture.js +0 -124
  288. package/dist/cjs/components/PictureEditor.js +0 -49
  289. package/dist/cjs/components/Placeholder.js +0 -118
  290. package/dist/cjs/components/RichText.js +0 -47
  291. package/dist/cjs/components/RichTextEditor.js +0 -94
  292. package/dist/cjs/components/Slot.js +0 -8
  293. package/dist/cjs/components/Text.js +0 -46
  294. package/dist/cjs/components/TextEditor.js +0 -77
  295. package/dist/cjs/components/Translate.js +0 -14
  296. package/dist/cjs/components/TranslateEditor.js +0 -28
  297. package/dist/cjs/components/index.js +0 -23
  298. package/dist/cjs/editor/AiPopup.js +0 -33
  299. package/dist/cjs/editor/ComponentInfo.js +0 -15
  300. package/dist/cjs/editor/ComponentPalette.js +0 -23
  301. package/dist/cjs/editor/ComponentTree.js +0 -217
  302. package/dist/cjs/editor/ConfirmationDialog.js +0 -31
  303. package/dist/cjs/editor/Debug.js +0 -26
  304. package/dist/cjs/editor/DialogButtons.js +0 -7
  305. package/dist/cjs/editor/DictionaryEditor.js +0 -41
  306. package/dist/cjs/editor/EditFrame.js +0 -129
  307. package/dist/cjs/editor/EditHistory.js +0 -43
  308. package/dist/cjs/editor/Editor.js +0 -27
  309. package/dist/cjs/editor/EditorClient.js +0 -753
  310. package/dist/cjs/editor/EditorClientHost.js +0 -37
  311. package/dist/cjs/editor/FieldList.js +0 -51
  312. package/dist/cjs/editor/FieldListField.js +0 -75
  313. package/dist/cjs/editor/GraphQL.js +0 -87
  314. package/dist/cjs/editor/ItemEditor.js +0 -9
  315. package/dist/cjs/editor/ItemInfo.js +0 -17
  316. package/dist/cjs/editor/ItemNameDialog.js +0 -37
  317. package/dist/cjs/editor/LanguageSelector.js +0 -21
  318. package/dist/cjs/editor/LinkEditorDialog.js +0 -67
  319. package/dist/cjs/editor/MainLayout.js +0 -24
  320. package/dist/cjs/editor/MediaSelector.js +0 -92
  321. package/dist/cjs/editor/PictureEditorDialog.js +0 -93
  322. package/dist/cjs/editor/PlaceholderDropZone.js +0 -93
  323. package/dist/cjs/editor/PlaceholderDropZoneHost.js +0 -37
  324. package/dist/cjs/editor/SidebarTabs.js +0 -47
  325. package/dist/cjs/editor/Terminal.js +0 -61
  326. package/dist/cjs/editor/Utils.js +0 -43
  327. package/dist/cjs/editor/VersionSelector.js +0 -21
  328. package/dist/cjs/editor/Workbox.js +0 -41
  329. package/dist/cjs/editor/componentCommands.js +0 -141
  330. package/dist/cjs/editor/componentTreeHelper.js +0 -18
  331. package/dist/cjs/editor/contentService.js +0 -80
  332. package/dist/cjs/editor/editContext.js +0 -40
  333. package/dist/cjs/editor/editService.js +0 -334
  334. package/dist/cjs/editor/fieldTypes/CheckboxEditor.js +0 -21
  335. package/dist/cjs/editor/fieldTypes/InternalLinkFieldEditor.js +0 -46
  336. package/dist/cjs/editor/fieldTypes/MultiLineText.js +0 -25
  337. package/dist/cjs/editor/fieldTypes/PictureFieldEditor.js +0 -19
  338. package/dist/cjs/editor/fieldTypes/RichTextEditor.js +0 -24
  339. package/dist/cjs/editor/fieldTypes/SingleLineText.js +0 -25
  340. package/dist/cjs/editor/fieldTypes/TreeListEditor.js +0 -59
  341. package/dist/cjs/editor/index.js +0 -18
  342. package/dist/cjs/editor/ui/Section.js +0 -8
  343. package/dist/cjs/fieldTypes.js +0 -2
  344. package/dist/cjs/graphQLTypes.js +0 -2
  345. package/dist/cjs/index.js +0 -36
  346. package/dist/cjs/layoutData.js +0 -2
  347. package/dist/cjs/middleware/authorization.js +0 -52
  348. package/dist/cjs/middleware/index.js +0 -17
  349. package/types/editor/AiTerminal.d.ts +0 -5
  350. package/types/editor/ComponentPalette.d.ts +0 -6
  351. package/types/editor/ComponentTree.d.ts +0 -5
  352. package/types/editor/Debug.d.ts +0 -6
  353. package/types/editor/EditHistory.d.ts +0 -4
  354. package/types/editor/GraphQL.d.ts +0 -5
  355. package/types/editor/ItemEditor.d.ts +0 -4
  356. package/types/editor/LanguageSelector.d.ts +0 -5
  357. package/types/editor/SidebarTabs.d.ts +0 -8
  358. package/types/editor/Utils.d.ts +0 -3
  359. package/types/editor/VersionSelector.d.ts +0 -5
  360. package/types/editor/Workbox.d.ts +0 -6
  361. package/types/editor/componentCommands.d.ts +0 -4
  362. package/types/editor/editService.d.ts +0 -20
  363. package/types/layoutData.d.ts +0 -92
  364. package/types/middleware/authorization.d.ts +0 -2
@@ -1,753 +0,0 @@
1
- "use strict";
2
- "use client";
3
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
- return new (P || (P = Promise))(function (resolve, reject) {
6
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
- step((generator = generator.apply(thisArg, _arguments || [])).next());
10
- });
11
- };
12
- var __importDefault = (this && this.__importDefault) || function (mod) {
13
- return (mod && mod.__esModule) ? mod : { "default": mod };
14
- };
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.EditorClient = void 0;
17
- const jsx_runtime_1 = require("react/jsx-runtime");
18
- const react_1 = require("react");
19
- const react_uuid_1 = __importDefault(require("react-uuid"));
20
- const api_1 = require("primereact/api");
21
- const menubar_1 = require("primereact/menubar");
22
- const progressspinner_1 = require("primereact/progressspinner");
23
- const toast_1 = require("primereact/toast");
24
- const splitter_1 = require("primereact/splitter");
25
- const blockui_1 = require("primereact/blockui");
26
- const confirmdialog_1 = require("primereact/confirmdialog");
27
- const __1 = require("..");
28
- const navigation_1 = require("next/navigation");
29
- const ComponentTree_1 = require("./ComponentTree");
30
- const LanguageSelector_1 = require("./LanguageSelector");
31
- const componentTreeHelper_1 = require("./componentTreeHelper");
32
- const ComponentPalette_1 = require("./ComponentPalette");
33
- const AiTerminal_1 = require("./AiTerminal");
34
- const EditHistory_1 = require("./EditHistory");
35
- const VersionSelector_1 = require("./VersionSelector");
36
- const editService_1 = require("./editService");
37
- require("../../editor.css");
38
- require("../../primeicons/primeicons.css");
39
- //import "../../primereact/resources/themes/lara-light-indigo/theme.css";
40
- require("../../primereact/resources/themes/md-light-indigo/theme.css");
41
- const MediaSelector_1 = require("./MediaSelector");
42
- const componentCommands_1 = require("./componentCommands");
43
- const contentService_1 = require("./contentService");
44
- const ConfirmationDialog_1 = __importDefault(require("./ConfirmationDialog"));
45
- const SidebarTabs_1 = __importDefault(require("./SidebarTabs"));
46
- const MainLayout_1 = __importDefault(require("./MainLayout"));
47
- const button_1 = require("primereact/button");
48
- const Utils_1 = require("./Utils");
49
- const utils_1 = require("primereact/utils");
50
- const ContentTree_1 = __importDefault(require("./ContentTree"));
51
- const Workbox_1 = __importDefault(require("./Workbox"));
52
- function EditorClient({ page, dictionaryObject, edit, site, children, }) {
53
- const router = (0, navigation_1.useRouter)();
54
- const pathname = (0, navigation_1.usePathname)();
55
- const searchParams = (0, navigation_1.useSearchParams)();
56
- const [selection, setSelection] = (0, react_1.useState)([]);
57
- const [selectedForInsertion, setSelectedForInsertion] = (0, react_1.useState)("");
58
- const [liveUpdatingFields, setLiveUpdatingFields] = (0, react_1.useState)([]);
59
- const [currentEditOperation, setCurrentEditOperation] = (0, react_1.useState)();
60
- const [dictionary, setDictionary] = (0, react_1.useState)(dictionaryObject);
61
- const [unresolvedDictionaryKeys, setUnresolvedDictionaryKeys] = (0, react_1.useState)([]);
62
- const [editData, setEditData] = (0, react_1.useState)(edit);
63
- const [refreshCompletedFlag, setRefreshCompletedFlag] = (0, react_1.useState)(false);
64
- const [refreshing, setRefreshing] = (0, react_1.useState)(false);
65
- const [updateContentEditingFields, setUpdateContentEditingFields] = (0, react_1.useState)(false);
66
- const [uiBlocked, setUiBlocked] = (0, react_1.useState)(false);
67
- const [dragObject, setDragObject] = (0, react_1.useState)();
68
- const [refreshTimer, setRefreshTimer] = (0, react_1.useState)();
69
- const [mediaResolver, setMediaResolver] = (0, react_1.useState)();
70
- const [mediaSelectorVisible, setMediaSelectorVisible] = (0, react_1.useState)(false);
71
- const [selectedMediaIdPath, setSelectedMediaIdPath] = (0, react_1.useState)("");
72
- const [scrollIntoView, setScrollIntoView] = (0, react_1.useState)();
73
- const [nextSelection, setNextSelection] = (0, react_1.useState)();
74
- const editorContainerRef = (0, react_1.useRef)(null);
75
- const confirmationDialogRef = (0, react_1.useRef)(null);
76
- const [showRightSidebar, setShowRightSidebar] = (0, Utils_1.useLocalStorage)("alpaca-headless-editor-show-right-sidebar", false);
77
- const [showTabsCenter, setShowTabsCenter] = (0, react_1.useState)(false);
78
- const [item, setItem] = (0, react_1.useState)();
79
- const [focusedField, setFocusedField] = (0, react_1.useState)();
80
- const [device, setDevice] = (0, react_1.useState)("desktop");
81
- const [zoom, setZoom] = (0, react_1.useState)(1);
82
- const [scroll, setScroll] = (0, react_1.useState)(0);
83
- const [fullscreen, setFullscreen] = (0, react_1.useState)(false);
84
- const [showFullscreenHint, setShowFullscreenHint] = (0, react_1.useState)(false);
85
- const sessionId = searchParams.get("session");
86
- if (!sessionId)
87
- return;
88
- const hasUnsavedChanges = () => edit.operations.filter((op) => !op.isCommitted).length;
89
- function ensureSavedBeforeLeaving(callback, title) {
90
- var _a;
91
- if (!hasUnsavedChanges()) {
92
- callback();
93
- return;
94
- }
95
- (_a = confirmationDialogRef.current) === null || _a === void 0 ? void 0 : _a.confirm({
96
- message: "You have unsaved changes.",
97
- header: title || "Close document",
98
- icon: "pi pi-exclamation-triangle",
99
- acceptLabel: "Save changes",
100
- rejectLabel: "Discard changes",
101
- showCancel: true,
102
- accept: () => saveAndRefresh(callback),
103
- reject: () => {
104
- callback();
105
- },
106
- });
107
- }
108
- function loadUrl(url) {
109
- setRefreshing(true);
110
- router.push(url, { scroll: false });
111
- }
112
- function createAndSwitchToNewVersion() {
113
- ensureSavedBeforeLeaving(() => __awaiter(this, void 0, void 0, function* () {
114
- yield (0, editService_1.createVersion)(getPageItemDescriptor(), sessionId);
115
- const current = new URLSearchParams(Array.from(searchParams.entries()));
116
- current.delete("version");
117
- current.set("session", (0, react_uuid_1.default)());
118
- const newUrl = `${pathname}?${current.toString()}`;
119
- router.push(newUrl, { scroll: false });
120
- }), "Create version");
121
- }
122
- function switchLanguage(language) {
123
- ensureSavedBeforeLeaving(() => __awaiter(this, void 0, void 0, function* () {
124
- const current = new URLSearchParams(Array.from(searchParams.entries()));
125
- current.set("language", language);
126
- current.delete("version");
127
- current.set("session", (0, react_uuid_1.default)());
128
- const newUrl = `${pathname}?${current.toString()}`;
129
- loadUrl(newUrl);
130
- }));
131
- }
132
- function switchVersion(version) {
133
- ensureSavedBeforeLeaving(() => __awaiter(this, void 0, void 0, function* () {
134
- const current = new URLSearchParams(Array.from(searchParams.entries()));
135
- current.set("version", version.toString());
136
- current.set("session", (0, react_uuid_1.default)());
137
- const newUrl = `${pathname}?${current.toString()}`;
138
- loadUrl(newUrl);
139
- }));
140
- }
141
- function navigateToPage(pageId) {
142
- ensureSavedBeforeLeaving(() => __awaiter(this, void 0, void 0, function* () {
143
- const current = new URLSearchParams(Array.from(searchParams.entries()));
144
- current.set("itemid", pageId);
145
- current.delete("version");
146
- current.set("session", (0, react_uuid_1.default)());
147
- const newUrl = `${pathname}?${current.toString()}`;
148
- setNextSelection([]);
149
- setItem(undefined);
150
- loadUrl(newUrl);
151
- }));
152
- }
153
- function loadItem(itemToLoad) {
154
- return __awaiter(this, void 0, void 0, function* () {
155
- const isNewItem = itemToLoad.id != (item === null || item === void 0 ? void 0 : item.id) ||
156
- itemToLoad.language != (item === null || item === void 0 ? void 0 : item.language) ||
157
- itemToLoad.version != (item === null || item === void 0 ? void 0 : item.version);
158
- const isPageItem = itemToLoad.id == page.id && itemToLoad.language == page.language;
159
- if (isNewItem && !isPageItem) {
160
- const result = yield (0, contentService_1.getItem)(page, itemToLoad, sessionId);
161
- setItem(result);
162
- }
163
- });
164
- }
165
- function handleErrorResult(result) {
166
- var _a;
167
- if (result.type === "error") {
168
- showErrorToast(result);
169
- return true;
170
- }
171
- if (result.type === "unauthenticated") {
172
- (_a = confirmationDialogRef.current) === null || _a === void 0 ? void 0 : _a.confirm({
173
- header: "Not logged in",
174
- message: "You are not logged in anymore. Proceed to login page?",
175
- accept: () => {
176
- window.location.href = edit.loginUrl;
177
- },
178
- });
179
- showErrorToast(result);
180
- return true;
181
- }
182
- }
183
- (0, react_1.useEffect)(() => {
184
- if (selection.length)
185
- setSelectedForInsertion("");
186
- }, [selection]);
187
- (0, react_1.useEffect)(() => {
188
- const sync = () => __awaiter(this, void 0, void 0, function* () {
189
- var _a;
190
- if (currentEditOperation) {
191
- const result = yield (0, editService_1.executeEditOperation)(currentEditOperation, sessionId);
192
- if (handleErrorResult(result))
193
- return;
194
- if ((result.id && edit.operations.length == 0) ||
195
- edit.operations[edit.operations.length - 1].id !=
196
- result.id) {
197
- edit.operations = edit.operations.filter((x) => !x.undone);
198
- edit.operations.push(result);
199
- }
200
- else {
201
- const lastOp = edit.operations.findLast((x) => x);
202
- if (lastOp === null || lastOp === void 0 ? void 0 : lastOp.isCommitted) {
203
- lastOp.isCommitted = false;
204
- }
205
- }
206
- setEditData(Object.assign({}, edit));
207
- if (result.type == "move-component" ||
208
- result.type === "add-component" ||
209
- result.type === "link-component") {
210
- setNextSelection([(_a = result.component) === null || _a === void 0 ? void 0 : _a.id]);
211
- requestRefresh("immediate");
212
- return;
213
- }
214
- if (!currentEditOperation.noRefresh)
215
- requestRefresh(currentEditOperation.refreshAfterQuietPeriod
216
- ? "waitForQuietPeriod"
217
- : "delayed");
218
- }
219
- });
220
- sync();
221
- }, [currentEditOperation]);
222
- const ensureLock = (field) => __awaiter(this, void 0, void 0, function* () {
223
- if (!field || !field.item)
224
- return;
225
- if (!field.hasLock) {
226
- lockItemAndRefresh(field.item);
227
- }
228
- });
229
- const lockItemAndRefresh = (item) => __awaiter(this, void 0, void 0, function* () {
230
- yield (0, editService_1.lockItem)(item);
231
- requestRefresh("immediate");
232
- });
233
- const executeWorkflowCommandAndRefresh = (item, commandId) => __awaiter(this, void 0, void 0, function* () {
234
- yield (0, editService_1.executeWorkflowCommand)(item, commandId, "");
235
- requestRefresh("immediate");
236
- });
237
- (0, react_1.useEffect)(() => {
238
- if (focusedField === null || focusedField === void 0 ? void 0 : focusedField.item) {
239
- if (!getComponentById(focusedField.item.id))
240
- loadItem(focusedField.item);
241
- ensureLock(focusedField);
242
- }
243
- }, [focusedField]);
244
- const addParentComponentReferencesToPlaceholders = (component) => {
245
- component.placeholders.forEach((p) => {
246
- p.parentComponent = component;
247
- });
248
- };
249
- (0, react_1.useEffect)(() => {
250
- var _a;
251
- setRefreshCompletedFlag(!refreshCompletedFlag);
252
- if (nextSelection) {
253
- setSelection(nextSelection);
254
- setNextSelection(undefined);
255
- }
256
- setLiveUpdatingFields([]);
257
- page === null || page === void 0 ? void 0 : page.placeholders.forEach((p) => {
258
- p.components.forEach((c) => {
259
- addParentComponentReferencesToPlaceholders(c);
260
- });
261
- });
262
- if ((page === null || page === void 0 ? void 0 : page.versions.length) === 0) {
263
- (_a = confirmationDialogRef.current) === null || _a === void 0 ? void 0 : _a.confirm({
264
- message: "This page has no version in language " +
265
- (page === null || page === void 0 ? void 0 : page.language) +
266
- ". Do you want to create a new version?",
267
- header: "Create Version?",
268
- icon: "pi pi-exclamation-triangle",
269
- acceptLabel: "Yes, create version",
270
- rejectLabel: "No",
271
- accept: () => createAndSwitchToNewVersion(),
272
- });
273
- }
274
- setRefreshing(false);
275
- }, [page]);
276
- const requestRefresh = (mode) => {
277
- if (mode === "immediate") {
278
- console.log("Immediate refresh requested");
279
- clearTimeout(refreshTimer);
280
- setRefreshing(true);
281
- router.refresh();
282
- setRefreshTimer(undefined);
283
- return;
284
- }
285
- console.log("request refresh with mode: " + mode);
286
- if (mode === "waitForQuietPeriod" && refreshTimer) {
287
- clearTimeout(refreshTimer);
288
- }
289
- if (!refreshTimer || mode === "waitForQuietPeriod") {
290
- setRefreshTimer(setTimeout(() => {
291
- console.log("refreshing");
292
- router.refresh();
293
- setRefreshing(true);
294
- setRefreshTimer(undefined);
295
- }, mode === "waitForQuietPeriod" ? 2000 : 700));
296
- }
297
- };
298
- const saveAndRefresh = (callback) => __awaiter(this, void 0, void 0, function* () {
299
- if (!edit.operations.length) {
300
- if (callback)
301
- callback();
302
- return;
303
- }
304
- setUiBlocked(true);
305
- if (!(yield (0, editService_1.commitChanges)(sessionId))) {
306
- setUiBlocked(false);
307
- return;
308
- }
309
- setCurrentEditOperation(undefined);
310
- router.refresh();
311
- setRefreshing(true);
312
- //setEditOperations([]);
313
- setUiBlocked(false);
314
- toast.current.show({
315
- severity: "success",
316
- summary: "Saved",
317
- detail: "Your changes were saved successfully.",
318
- life: 3000,
319
- });
320
- if (callback)
321
- callback();
322
- });
323
- (0, react_1.useEffect)(() => {
324
- if (fullscreen)
325
- setShowFullscreenHint(true);
326
- }, [fullscreen]);
327
- function handleKeyDown(event) {
328
- return __awaiter(this, void 0, void 0, function* () {
329
- if (event.ctrlKey && event.key === "s") {
330
- event.preventDefault();
331
- yield saveAndRefresh();
332
- }
333
- if (event.ctrlKey && event.key === "z") {
334
- event.preventDefault();
335
- yield undo();
336
- }
337
- if (event.ctrlKey && event.key === "y") {
338
- event.preventDefault();
339
- yield redo();
340
- }
341
- if (event.ctrlKey && event.key === "F11") {
342
- event.preventDefault();
343
- console.log("toggle fullscreen");
344
- setFullscreen(!fullscreen);
345
- }
346
- });
347
- }
348
- if (typeof window !== "undefined")
349
- (0, Utils_1.useEventListenerExt)("keydown", handleKeyDown, window);
350
- const toast = (0, react_1.useRef)();
351
- (0, react_1.useEffect)(() => {
352
- setEditData(edit);
353
- }, [edit]);
354
- function getComponentById(id) {
355
- if (!page)
356
- return null;
357
- return (0, componentTreeHelper_1.findComponent)(id, page.placeholders);
358
- }
359
- function redo() {
360
- return __awaiter(this, void 0, void 0, function* () {
361
- setUpdateContentEditingFields(!updateContentEditingFields);
362
- let result = yield (0, editService_1.executeRedo)(sessionId);
363
- if (result.type === "success") {
364
- router.refresh();
365
- setRefreshing(true);
366
- return true;
367
- }
368
- else {
369
- showErrorToast(result);
370
- return false;
371
- }
372
- });
373
- }
374
- function showErrorToast(result) {
375
- toast.current.show({
376
- severity: "error",
377
- summary: result.summary,
378
- detail: result.details,
379
- life: 3000,
380
- });
381
- }
382
- function undo(numOperations) {
383
- return __awaiter(this, void 0, void 0, function* () {
384
- setUpdateContentEditingFields(!updateContentEditingFields);
385
- let result = yield (0, editService_1.executeUndo)(sessionId, numOperations);
386
- if (result.type === "success") {
387
- router.refresh();
388
- setRefreshing(true);
389
- return true;
390
- }
391
- else {
392
- showErrorToast(result);
393
- return false;
394
- }
395
- });
396
- }
397
- const getLiveFieldIfExists = (field) => {
398
- const existingField = liveUpdatingFields.find((f) => {
399
- var _a, _b, _c, _d, _e, _f;
400
- return f.id === field.id &&
401
- ((_a = f.item) === null || _a === void 0 ? void 0 : _a.language) === ((_b = field.item) === null || _b === void 0 ? void 0 : _b.language) &&
402
- ((_c = f.item) === null || _c === void 0 ? void 0 : _c.version) === ((_d = field.item) === null || _d === void 0 ? void 0 : _d.version) &&
403
- ((_e = f.item) === null || _e === void 0 ? void 0 : _e.id) === ((_f = field.item) === null || _f === void 0 ? void 0 : _f.id);
404
- });
405
- if (existingField)
406
- return existingField;
407
- return null;
408
- };
409
- const getLiveField = (field) => {
410
- const existingField = liveUpdatingFields.find((f) => {
411
- var _a, _b, _c, _d, _e, _f;
412
- return f.id === field.id &&
413
- ((_a = f.item) === null || _a === void 0 ? void 0 : _a.language) === ((_b = field.item) === null || _b === void 0 ? void 0 : _b.language) &&
414
- ((_c = f.item) === null || _c === void 0 ? void 0 : _c.version) === ((_d = field.item) === null || _d === void 0 ? void 0 : _d.version) &&
415
- ((_e = f.item) === null || _e === void 0 ? void 0 : _e.id) === ((_f = field.item) === null || _f === void 0 ? void 0 : _f.id);
416
- });
417
- if (existingField)
418
- return existingField;
419
- liveUpdatingFields.push(field);
420
- return field;
421
- };
422
- const editField = ({ field, value, rawValue, refresh = "immediate", }) => {
423
- var _a, _b;
424
- if (!page)
425
- return;
426
- const component = (0, componentTreeHelper_1.findComponent)(field.item.id, page.placeholders);
427
- let op = editService_1.currentOperation;
428
- if (!op ||
429
- op.type !== "edit-field" ||
430
- op.itemId !== ((_a = field.item) === null || _a === void 0 ? void 0 : _a.id) ||
431
- op.fieldId !== field.id ||
432
- op.language !== field.item.language ||
433
- op.version !== field.item.version ||
434
- op.isCommitted) {
435
- op = {
436
- type: "edit-field",
437
- itemId: field.item.id,
438
- fieldId: field.id,
439
- version: field.item.version,
440
- language: field.item.language,
441
- fieldName: field.name,
442
- itemName: field.item.id == page.id ? "Page" : (_b = component === null || component === void 0 ? void 0 : component.name) !== null && _b !== void 0 ? _b : "<unknown>",
443
- pageItem: getPageItemDescriptor(),
444
- date: new Date(),
445
- id: (0, react_uuid_1.default)(),
446
- };
447
- }
448
- op.date = new Date();
449
- op.noRefresh = refresh === "none" || refresh === "immediate";
450
- op.refreshAfterQuietPeriod = refresh === "waitForQuietPeriod";
451
- op.value = rawValue !== null && rawValue !== void 0 ? rawValue : value;
452
- op.isCommitted = false;
453
- const firstEditInheritedComponent = (component === null || component === void 0 ? void 0 : component.isInheritedFromMasterLanguage) && op.language != page.language;
454
- if (firstEditInheritedComponent)
455
- op.language = page.language;
456
- if (value || value === "") {
457
- const liveField = getLiveField(field);
458
- liveField.value = value;
459
- liveField.rawValue = op.value;
460
- }
461
- (0, editService_1.setCurrentOperation)(op);
462
- setCurrentEditOperation(Object.assign({}, op));
463
- if (refresh == "immediate" || firstEditInheritedComponent)
464
- requestRefresh("immediate");
465
- };
466
- const selectMedia = (0, react_1.useCallback)(({ selectedIdPath }) => {
467
- setSelectedMediaIdPath(selectedIdPath);
468
- setMediaSelectorVisible(true);
469
- return new Promise((resolve) => {
470
- setMediaResolver(() => resolve);
471
- });
472
- }, []);
473
- const onMediaSelect = (0, react_1.useCallback)((mediaUrl) => {
474
- mediaResolver === null || mediaResolver === void 0 ? void 0 : mediaResolver(mediaUrl);
475
- setMediaSelectorVisible(false);
476
- setMediaResolver(undefined);
477
- }, [mediaResolver]);
478
- function getPageItemDescriptor() {
479
- return {
480
- id: page.id,
481
- language: page.language,
482
- version: page.version,
483
- };
484
- }
485
- const editContext = {
486
- sessionId: sessionId,
487
- editorContainerRef,
488
- selection,
489
- setSelection,
490
- selectedForInsertion,
491
- setSelectedForInsertion,
492
- editField,
493
- getComponentById,
494
- dragObject,
495
- dictionary,
496
- setDictionary,
497
- requestRefresh,
498
- refreshCompletedFlag,
499
- unresolvedDictionaryKeys,
500
- setUnresolvedDictionaryKeys,
501
- updateContentEditingFields,
502
- getLiveField,
503
- getLiveFieldIfExists,
504
- selectMedia,
505
- showToast: () => { },
506
- scrollIntoView,
507
- setScrollIntoView,
508
- focusedField,
509
- setFocusedField,
510
- zoom,
511
- fullscreen,
512
- undo,
513
- getPictureFieldValue: (field, rawValue) => __awaiter(this, void 0, void 0, function* () {
514
- return (0, editService_1.getPictureValue)(field, rawValue, site, sessionId);
515
- }),
516
- // removeComponents: deleteComponents,
517
- // removeSelectedComponents: deleteSelectedComponents,
518
- getComponentCommands: (components) => {
519
- return (0, componentCommands_1.getComponentCommands)(components, editContext);
520
- },
521
- dragStart: (dragObject) => {
522
- // console.log("dragging " + JSON.stringify(dragObject));
523
- setDragObject(dragObject);
524
- },
525
- droppedInPlaceholder: (placeholderKey, index) => __awaiter(this, void 0, void 0, function* () {
526
- if (!dragObject)
527
- return;
528
- console.log(dragObject.templateId + " dropped in " + placeholderKey + " " + index);
529
- // console.log(JSON.stringify(page));
530
- const placeholderKeyComponents = placeholderKey.split("_");
531
- const parentId = placeholderKeyComponents.length === 1
532
- ? null
533
- : placeholderKeyComponents[0];
534
- if (parentId)
535
- setSelection([parentId]);
536
- const placeholderName = placeholderKeyComponents.length === 1
537
- ? placeholderKeyComponents[0]
538
- : placeholderKeyComponents[1];
539
- let op;
540
- if (dragObject.type == "template") {
541
- op = {
542
- type: "add-component",
543
- pageItem: getPageItemDescriptor(),
544
- parent: parentId && {
545
- id: parentId,
546
- language: page.language,
547
- version: page.version,
548
- },
549
- placeholderName: placeholderName,
550
- placeholderIndex: index,
551
- templateId: dragObject === null || dragObject === void 0 ? void 0 : dragObject.templateId,
552
- date: new Date(),
553
- id: (0, react_uuid_1.default)(),
554
- };
555
- }
556
- if (dragObject.type == "component" ||
557
- (dragObject.type == "link-component" && dragObject.component)) {
558
- const parentComponent = parentId ? getComponentById(parentId) : null;
559
- if (dragObject.type == "link-component") {
560
- op = {
561
- type: "link-component",
562
- pageItem: getPageItemDescriptor(),
563
- parent: parentId && {
564
- id: parentId,
565
- language: page.language,
566
- version: page.version,
567
- name: parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent.name,
568
- },
569
- placeholderName: placeholderName,
570
- placeholderIndex: index,
571
- date: new Date(),
572
- id: (0, react_uuid_1.default)(),
573
- linkedComponentItem: dragObject.component,
574
- };
575
- }
576
- else {
577
- op = {
578
- type: "move-component",
579
- pageItem: getPageItemDescriptor(),
580
- parent: parentId && {
581
- id: parentId,
582
- language: page.language,
583
- version: page.version,
584
- name: parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent.name,
585
- },
586
- placeholderName: placeholderName,
587
- placeholderIndex: index,
588
- component: dragObject.component,
589
- date: new Date(),
590
- id: (0, react_uuid_1.default)(),
591
- };
592
- }
593
- }
594
- //const newOps = [...editOperations, op];
595
- //setEditOperations();
596
- // await sendEditOperationsToServer(newOps as EditOperation[]);
597
- // router.refresh();
598
- //setEditOperations(newOps);
599
- if (op)
600
- setCurrentEditOperation(op);
601
- setDragObject(undefined);
602
- }),
603
- executeEditOperation: (op) => {
604
- setCurrentEditOperation(op);
605
- },
606
- page,
607
- scroll,
608
- };
609
- const selectedComponents = selection
610
- .map((x) => getComponentById(x))
611
- .filter((x) => x);
612
- const selectedComponent = selectedComponents.length === 1 ? selectedComponents[0] : null;
613
- const componentCommands = (0, componentCommands_1.getComponentCommands)(selectedComponents, editContext);
614
- const insertingPlaceholderKeys = [editContext.selectedForInsertion]
615
- .map((x) => editContext.getComponentById(x))
616
- .filter((x) => x)
617
- .reduce((a, x) => a.concat(x.placeholders.map((y) => y.key)), []);
618
- const selectedPlaceholderKeys = [
619
- //...selection.filter((x) => x.indexOf("_") > 0),
620
- ...insertingPlaceholderKeys,
621
- ];
622
- const currentInsertOptions = collectInsertOptions(page, selectedPlaceholderKeys);
623
- function collectInsertOptions(page, placeholderKeys) {
624
- const insertOptionsMap = new Map();
625
- function traverse(placeholders) {
626
- for (const placeholder of placeholders) {
627
- if (placeholder.insertOptions &&
628
- (placeholderKeys.length === 0 ||
629
- placeholderKeys.includes(placeholder.key))) {
630
- for (const option of placeholder.insertOptions) {
631
- insertOptionsMap.set(option.id, option);
632
- }
633
- }
634
- for (const component of placeholder.components) {
635
- traverse(component.placeholders);
636
- }
637
- }
638
- }
639
- traverse(page.placeholders);
640
- // Convert the map back into an array of objects
641
- const insertOptionsArray = Array.from(insertOptionsMap.values());
642
- insertOptionsArray.sort((a, b) => a.name.localeCompare(b.name));
643
- return insertOptionsArray;
644
- }
645
- const componentCommandMenuItems = componentCommands.map((x) => {
646
- return {
647
- label: x.label,
648
- icon: x.icon,
649
- command: () => x.execute(),
650
- disabled: x.disabled,
651
- };
652
- });
653
- const menuItems = [
654
- {
655
- label: "Save",
656
- icon: "pi pi-fw pi-save text-red",
657
- command: () => saveAndRefresh(),
658
- disabled: !hasUnsavedChanges(),
659
- },
660
- {
661
- label: "Undo",
662
- icon: "pi pi-fw pi-undo",
663
- command: () => undo(),
664
- disabled: !editData.operations.filter((x) => !x.undone).length,
665
- },
666
- {
667
- label: "Redo",
668
- icon: "pi pi-fw pi-refresh",
669
- command: () => redo(),
670
- disabled: !editData.operations.filter((x) => x.undone).length,
671
- },
672
- {
673
- label: "Selection",
674
- icon: "pi pi-fw pi-bars",
675
- items: componentCommandMenuItems,
676
- },
677
- {
678
- label: "Create Version",
679
- icon: "pi pi-fw pi-plus",
680
- command: () => createAndSwitchToNewVersion(),
681
- },
682
- { separator: true },
683
- {
684
- label: "Preview",
685
- icon: "pi pi-fw pi-external-link",
686
- command: () => {
687
- if (page)
688
- window.open(page.previewUrl + "&session=" + sessionId, "_blank");
689
- },
690
- },
691
- { label: "Publish", icon: "pi pi-fw pi-upload" },
692
- { separator: true },
693
- ];
694
- const spinner = (0, jsx_runtime_1.jsx)(progressspinner_1.ProgressSpinner, {});
695
- const endContent = ((0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-gap-3 a-items-center", children: [(0, jsx_runtime_1.jsx)(LanguageSelector_1.LanguageSelector, { page: page, onLanguageSelected: (language) => {
696
- if (!language)
697
- return;
698
- //ensureSaved(() => switchLanguage(language));
699
- switchLanguage(language);
700
- } }), (0, jsx_runtime_1.jsx)(VersionSelector_1.VersionSelector, { page: page, onVersionSelected: (version) => {
701
- switchVersion(version);
702
- } }), (0, jsx_runtime_1.jsx)(button_1.Button, { size: "small", icon: "pi pi-arrows-h", onClick: () => setShowTabsCenter(!showTabsCenter) }), (0, jsx_runtime_1.jsx)(button_1.Button, { size: "small", icon: showRightSidebar ? "pi pi-chevron-right " : "pi pi-chevron-left", onClick: () => setShowRightSidebar(!showRightSidebar) }), (0, jsx_runtime_1.jsx)("i", { className: (0, utils_1.classNames)("pi pi-cog a-flex a-items-center a-text-xl a-m-2", refreshing ? "pi-spin" : "") })] }));
703
- const sidebarTabs = ((0, jsx_runtime_1.jsx)(SidebarTabs_1.default, { selectedComponent: selectedComponent, page: page, dictionary: dictionary, item: item }));
704
- const renderedPage = ((0, jsx_runtime_1.jsxs)("div", { onDragEndCapture: () => setDragObject(undefined), className: "a-flex a-flex-col a-w-full a-h-full a-items-center a-bg-gray-100", ref: editorContainerRef, children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-gap-1 a-bg-gray-50 a-w-full a-border-b a-items-center a-justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-p-1.5 a-items-center", children: [(0, jsx_runtime_1.jsx)("i", { className: "pi pi-search-plus a-p-2 a-cursor-pointer", onClick: () => {
705
- if (zoom < 50)
706
- setZoom(zoom * 1.2);
707
- } }), (0, jsx_runtime_1.jsx)("i", { className: "pi pi-search-minus a-p-2 a-cursor-pointer", onClick: () => {
708
- if (zoom > 0.1)
709
- setZoom(zoom / 1.2);
710
- } }), (0, jsx_runtime_1.jsx)("div", { className: "a-cursor-pointer a-text-xs a-p-1", onClick: () => {
711
- setZoom(0.5);
712
- }, children: "50%" }), (0, jsx_runtime_1.jsx)("div", { className: "a-cursor-pointer a-text-xs a-p-1", onClick: () => {
713
- setZoom(1);
714
- }, children: "1:1" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-p-1.5 a-items-center", children: [(0, jsx_runtime_1.jsx)("i", { className: (0, utils_1.classNames)(device === "desktop" ? "a-bg-gray-100" : "", "pi pi-desktop a-p-2 a-cursor-pointer"), onClick: () => {
715
- setDevice("desktop");
716
- } }), (0, jsx_runtime_1.jsx)("i", { className: (0, utils_1.classNames)(device === "mobile" ? "a-bg-gray-100" : "", "pi pi-tablet a-p-2 a-cursor-pointer"), onClick: () => {
717
- setDevice("mobile");
718
- } }), (0, jsx_runtime_1.jsx)("i", { className: "pi pi-external-link a-p-2 a-cursor-pointer", onClick: () => setFullscreen(true) })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "a-flex-1 a-relative a-h-full a-bg-white", style: { width: device == "desktop" ? "100%" : "640px" }, children: (0, jsx_runtime_1.jsx)("div", { className: "alpaca-editor-container a-absolute a-inset-0 a-overflow-auto", style: { zoom: zoom }, onScroll: (e) => {
719
- setScroll(e.currentTarget.scrollTop);
720
- }, children: children }) })] }));
721
- return ((0, jsx_runtime_1.jsx)(__1.EditContextProvider, { value: editContext, children: fullscreen ? ((0, jsx_runtime_1.jsxs)("div", { onMouseMoveCapture: () => setTimeout(() => setShowFullscreenHint(false), 600), children: [children, showFullscreenHint && ((0, jsx_runtime_1.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" }))] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(toast_1.Toast, { ref: toast }), (0, jsx_runtime_1.jsxs)(api_1.PrimeReactProvider, { children: [(0, jsx_runtime_1.jsx)(ConfirmationDialog_1.default, { ref: confirmationDialogRef }), (0, jsx_runtime_1.jsx)(confirmdialog_1.ConfirmDialog, {}), (0, jsx_runtime_1.jsxs)(blockui_1.BlockUI, { blocked: uiBlocked, template: spinner, children: [(0, jsx_runtime_1.jsx)(menubar_1.Menubar, { model: menuItems, end: endContent, className: "a-p-1 a-text-sm" }), (0, jsx_runtime_1.jsx)(MainLayout_1.default, { content: showTabsCenter ? sidebarTabs : renderedPage, rightSidebar: showRightSidebar && ((0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", className: "alpaca-editor a-h-full", children: [(0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "a-overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)(EditHistory_1.EditHistory, { operations: edit.operations }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "a-h-full a-flex a-flex-col", children: (0, jsx_runtime_1.jsx)(Workbox_1.default, { workbox: page.workbox, lockItem: lockItemAndRefresh, executeWorkflowCommand: executeWorkflowCommandAndRefresh }) }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { className: "a-overflow-hidden a-relative", children: (0, jsx_runtime_1.jsx)(AiTerminal_1.AiTerminal, { selection: selection }) })] })), leftSidebar: (0, jsx_runtime_1.jsxs)(splitter_1.Splitter, { layout: "vertical", className: "a-h-full", children: [(0, jsx_runtime_1.jsxs)(splitter_1.SplitterPanel, { size: 20, className: "a-h-full a-flex a-flex-col", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-p-3 a-bg-gray-50 a-text-gray-600 a-text-sm a-border-b-2", children: "Content" }), (0, jsx_runtime_1.jsx)("div", { className: "a-overflow-hidden a-relative a-flex-1", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute a-overflow-y-auto", children: (0, jsx_runtime_1.jsx)(ContentTree_1.default, { rootItemId: "{11111111-1111-1111-1111-111111111111}", expandIdPath: page.idPath, className: "a-p-1", selectionMode: "single", selectedItemIds: [page.id], secondarySelectedItemId: item === null || item === void 0 ? void 0 : item.id, onSelectionChange: (selection) => {
722
- const selectedItem = selection;
723
- if (selectedItem.hasLayout)
724
- navigateToPage(selectedItem.id);
725
- else
726
- loadItem({
727
- id: selectedItem.id,
728
- language: selectedItem.language,
729
- version: selectedItem.version,
730
- });
731
- }, isDraggable: (x) => (currentInsertOptions === null || currentInsertOptions === void 0 ? void 0 : currentInsertOptions.find((insertOption) => {
732
- var _a;
733
- return insertOption.id == x.templateId ||
734
- ((_a = insertOption.compatibleTemplates) === null || _a === void 0 ? void 0 : _a.find((compatibleTemplate) => compatibleTemplate == x.templateId)) !== undefined;
735
- })) !== undefined, dragStart: (itemNode) => {
736
- setDragObject({
737
- type: "link-component",
738
- templateId: itemNode.templateId,
739
- component: {
740
- id: itemNode.id,
741
- language: itemNode.language,
742
- version: itemNode.version,
743
- },
744
- });
745
- } }) }) })] }), (0, jsx_runtime_1.jsxs)(splitter_1.SplitterPanel, { size: 15, className: "a-h-full a-flex a-flex-col", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-p-3 a-bg-gray-50 a-text-gray-600 a-text-sm a-border-b-2", children: "Page Components" }), (0, jsx_runtime_1.jsx)("div", { className: "a-overflow-hidden a-relative a-flex-1", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute a-overflow-y-auto", children: (0, jsx_runtime_1.jsx)(ComponentTree_1.ComponentTree, { page: page, selection: selection }) }) })] }), (0, jsx_runtime_1.jsxs)(splitter_1.SplitterPanel, { size: 15, className: "a-h-full a-flex a-flex-col", children: [(0, jsx_runtime_1.jsx)("div", { className: "a-p-3 a-bg-gray-50 a-text-gray-600 a-text-sm a-border-b-2", children: "New Component" }), (0, jsx_runtime_1.jsx)("div", { className: "a-overflow-hidden a-relative a-flex-1", children: (0, jsx_runtime_1.jsx)("div", { className: "a-inset-0 a-absolute a-overflow-y-auto", children: (0, jsx_runtime_1.jsx)(ComponentPalette_1.ComponentPalette, { insertOptions: currentInsertOptions, dragStart: (dragObject) => {
746
- //console.log("dragging " + JSON.stringify(dragObject));
747
- setDragObject(dragObject);
748
- }, dragEnd: () => {
749
- setDragObject(undefined);
750
- setSelectedForInsertion("");
751
- } }) }) })] }), (0, jsx_runtime_1.jsx)(splitter_1.SplitterPanel, { size: 50, className: "a-overflow-hidden a-relative", children: !showTabsCenter ? sidebarTabs : renderedPage })] }) })] }), (0, jsx_runtime_1.jsx)(MediaSelector_1.MediaSelector, { visible: mediaSelectorVisible, onHide: () => setMediaSelectorVisible(false), onMediaSelected: onMediaSelect, selectedIdPath: selectedMediaIdPath })] })] })) }));
752
- }
753
- exports.EditorClient = EditorClient;