@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
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
3
+ import dynamic from "next/dynamic";
4
+ import { configuration } from "./config/config";
5
+ const EditorClient = dynamic(() => import("./EditorClient").then((dnd) => dnd.EditorClient), { ssr: false });
6
+ export function EditorClientHost({ content, dictionaryObject, children, edit, clientBuilder, }) {
7
+ const ClientBuilder = clientBuilder;
8
+ const buildClient = (configuration) => {
9
+ return (_jsx(EditorClient, { page: content, dictionaryObject: dictionaryObject, editData: edit, configuration: configuration, children: _jsx(_Fragment, { children: children }) }));
10
+ };
11
+ if (!ClientBuilder)
12
+ return buildClient(configuration);
13
+ else
14
+ return (_jsx(ClientBuilder, { configuration: configuration, buildClient: buildClient }));
15
+ }
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { classNames } from "primereact/utils";
3
+ export function EditorWarning({ title, severity = "warning", children, }) {
4
+ const background = severity === "info"
5
+ ? "a-bg-blue-100"
6
+ : severity === "error"
7
+ ? "a-bg-red-100"
8
+ : "a-bg-yellow-100";
9
+ return (_jsxs("div", { className: classNames(background, "a-p-2 a-text-sm a-text-gray-500 a-border-b a-border-yellow-300"), children: [_jsx("div", { className: "a-font-bold", children: title }), _jsx("div", { className: "a-text-xs", children: children })] }));
10
+ }
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { useEditContext } from "./editContext";
4
+ export function EditorWarnings({ item: Item, }) {
5
+ var context = useEditContext();
6
+ if (!context)
7
+ return;
8
+ return (_jsx("div", { children: context.configuration.editorWarnings.map((x, i) => React.createElement(x, {
9
+ item: Item,
10
+ key: "warning" + i,
11
+ editContext: context,
12
+ })) }));
13
+ }
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { OverlayPanel } from "primereact/overlaypanel";
4
+ import { forwardRef, useImperativeHandle, useRef, useState, } from "react";
5
+ import { FieldList } from "./FieldList";
6
+ export const FieldEditorPopup = forwardRef((_, ref) => {
7
+ const overlayRef = useRef(null);
8
+ const [fields, setFields] = useState();
9
+ const [sections, setSections] = useState([]);
10
+ useImperativeHandle(ref, () => ({
11
+ show: (fields, sections, ev) => {
12
+ var _a;
13
+ setFields(fields);
14
+ setSections(sections);
15
+ (_a = overlayRef.current) === null || _a === void 0 ? void 0 : _a.toggle(ev);
16
+ },
17
+ close: () => {
18
+ var _a;
19
+ (_a = overlayRef.current) === null || _a === void 0 ? void 0 : _a.hide();
20
+ },
21
+ }));
22
+ return (_jsx(OverlayPanel, { ref: overlayRef, children: _jsxs("div", { className: "a-w-96 a-h-96 a-flex a-flex-col a-gap-2 a-overflow-auto", onClick: (ev) => ev.stopPropagation(), children: [_jsx("div", { className: "a-flex a-justify-end", children: _jsx("i", { className: "pi pi-times a-cursor-pointer", onClick: () => { var _a; return (_a = overlayRef === null || overlayRef === void 0 ? void 0 : overlayRef.current) === null || _a === void 0 ? void 0 : _a.hide(); } }) }), fields && (_jsx(FieldList, { fields: fields, sections: sections, validators: [] }))] }) }));
23
+ });
@@ -0,0 +1,48 @@
1
+ "use client";
2
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
3
+ import { useEffect, useState } from "react";
4
+ import FieldListField from "./FieldListField";
5
+ import { Section } from "./ui/Section";
6
+ import { useEditContext } from "./editContext";
7
+ export function FieldList({ fields, sections, validators, filter, simplified, }) {
8
+ const editContext = useEditContext();
9
+ const [liveFields, setLiveFields] = useState();
10
+ if (!editContext)
11
+ return;
12
+ if (!fields)
13
+ return;
14
+ let fieldsArray = Array.isArray(fields)
15
+ ? fields
16
+ : Object.values(fields);
17
+ if (filter)
18
+ fieldsArray = fieldsArray.filter(filter);
19
+ useEffect(() => {
20
+ if (!editContext)
21
+ return;
22
+ setLiveFields(fieldsArray.map((x) => x._editor.type === "rich text" || x._editor.type === "text"
23
+ ? editContext.getLiveField(x)
24
+ : x));
25
+ }, [fields]);
26
+ if (!liveFields)
27
+ return _jsx(_Fragment, {});
28
+ const sectionsGrouping = liveFields.reduce((acc, value) => {
29
+ var _a, _b, _c;
30
+ // Group initialization
31
+ if (!acc[((_a = value._editor) === null || _a === void 0 ? void 0 : _a.section) || "Default"]) {
32
+ acc[((_b = value._editor) === null || _b === void 0 ? void 0 : _b.section) || "Default"] = [];
33
+ }
34
+ // Grouping
35
+ acc[((_c = value._editor) === null || _c === void 0 ? void 0 : _c.section) || "Default"].push(value);
36
+ return acc;
37
+ }, {});
38
+ const sectionList = Object.values(sectionsGrouping);
39
+ sectionList.sort((a, b) => a[0]._editor.sectionSortOrder - b[0]._editor.sectionSortOrder);
40
+ function getSectionFields(fields) {
41
+ fields.sort((a, b) => a.sortOrder - b.sortOrder);
42
+ return fields.map((field) => (_jsx(FieldListField, { field: field, simplified: simplified, validators: validators.filter((x) => x.fieldId === field.id) }, field.id)));
43
+ }
44
+ return (_jsx("div", { className: "a-h-fill-available", children: sectionList
45
+ .map((x) => { var _a; return (_a = x[0]._editor) === null || _a === void 0 ? void 0 : _a.section; })
46
+ .filter((x) => !sections || sections.includes(x))
47
+ .map((section) => simplified ? (getSectionFields(sectionsGrouping[section])) : (_jsx(Section, { title: section, children: getSectionFields(sectionsGrouping[section]) }, section))) }));
48
+ }
@@ -0,0 +1,137 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
+ import { Tooltip } from "primereact/tooltip";
12
+ import { useEditContext } from ".";
13
+ import { useEffect, useRef, useState } from "react";
14
+ import { WizardIcon } from "./ui/Icons";
15
+ import { OverlayPanel } from "primereact/overlaypanel";
16
+ import { loadFallbackChain } from "./services/editService";
17
+ export default function FieldListField({ field, validators, simplified, title, }) {
18
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
19
+ const editContext = useEditContext();
20
+ if (!editContext)
21
+ return;
22
+ const ref = useRef(null);
23
+ const fieldItem = field._editor.descriptor.item;
24
+ const isFocusedField = ((_a = editContext === null || editContext === void 0 ? void 0 : editContext.focusedField) === null || _a === void 0 ? void 0 : _a.fieldId) === field.id &&
25
+ editContext.focusedField.item.id === fieldItem.id &&
26
+ editContext.focusedField.item.language === fieldItem.language;
27
+ const [showRawValue, setShowRawValue] = useState(false);
28
+ const generatorsOverlay = useRef(null);
29
+ const [fallbackChain, setFallbackChain] = useState();
30
+ const [showFallback, setShowFallback] = useState(false);
31
+ useEffect(() => {
32
+ var _a;
33
+ if (ref.current && isFocusedField) {
34
+ ref.current.scrollIntoView({
35
+ behavior: "smooth",
36
+ block: "center",
37
+ inline: "center",
38
+ });
39
+ if ((_a = liveField._editor) === null || _a === void 0 ? void 0 : _a.isFallback) {
40
+ loadFallback();
41
+ }
42
+ }
43
+ }, [editContext.focusedField]);
44
+ function loadFallback() {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const chain = yield loadFallbackChain(field._editor.descriptor);
47
+ const liveChain = chain.map((x) => editContext.getLiveField(x));
48
+ setFallbackChain(liveChain);
49
+ });
50
+ }
51
+ useEffect(() => {
52
+ if (ref.current && isFocusedField) {
53
+ ref.current.scrollIntoView({
54
+ behavior: "smooth",
55
+ block: "center",
56
+ inline: "center",
57
+ });
58
+ }
59
+ }, [editContext.focusedField]);
60
+ const liveField = editContext.getLiveField(field);
61
+ useEffect(() => {
62
+ var _a;
63
+ if ((_a = liveField._editor) === null || _a === void 0 ? void 0 : _a.isFallback) {
64
+ editContext.requestRefresh("waitForQuietPeriod");
65
+ }
66
+ }, [fallbackChain === null || fallbackChain === void 0 ? void 0 : fallbackChain.map((x) => x.value).join("")]);
67
+ function editButtonClicked(x) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ editContext === null || editContext === void 0 ? void 0 : editContext.triggerFieldAction(field, x);
70
+ });
71
+ }
72
+ let classNames = "[&:not(:first-child)]:a-mt-5 a-flex a-items-stretch";
73
+ if (isFocusedField)
74
+ classNames += " a-focused-field ";
75
+ let validationBarClassNames = undefined;
76
+ if (validators.find((x) => x.result > 1))
77
+ validationBarClassNames = " a-pl-2 a-border-l-4 a-border-red-500";
78
+ const executingAction = editContext.activeFieldActions.find((x) => {
79
+ var _a, _b, _c, _d, _e, _f;
80
+ return x.field.id == field.id &&
81
+ ((_b = (_a = x.field._editor) === null || _a === void 0 ? void 0 : _a.descriptor.item) === null || _b === void 0 ? void 0 : _b.id) == fieldItem.id &&
82
+ ((_d = (_c = x.field._editor) === null || _c === void 0 ? void 0 : _c.descriptor.item) === null || _d === void 0 ? void 0 : _d.language) == fieldItem.language &&
83
+ ((_f = (_e = x.field._editor) === null || _e === void 0 ? void 0 : _e.descriptor.item) === null || _f === void 0 ? void 0 : _f.version) == fieldItem.version;
84
+ });
85
+ if ((executingAction === null || executingAction === void 0 ? void 0 : executingAction.state) == "running")
86
+ classNames += " a-executing-action ";
87
+ const isLocked = (((_b = liveField._editor) === null || _b === void 0 ? void 0 : _b.lockedBy) &&
88
+ ((_d = (_c = liveField._editor) === null || _c === void 0 ? void 0 : _c.lockedBy) === null || _d === void 0 ? void 0 : _d.sessionId) != editContext.sessionId) ||
89
+ false;
90
+ const isReadOnly = !((_e = field._editor) === null || _e === void 0 ? void 0 : _e.canWrite) || isLocked;
91
+ const renderButtons = () => {
92
+ var _a, _b, _c, _d;
93
+ if (((_b = (_a = field._editor) === null || _a === void 0 ? void 0 : _a.buttons) === null || _b === void 0 ? void 0 : _b.length) || 0 > 0)
94
+ return (_jsxs(_Fragment, { children: [(!executingAction || executingAction.state !== "running") && (_jsx("div", { className: "a-w-4 a-h-4 a-ml-auto a-cursor-pointer", onClick: (e) => {
95
+ var _a;
96
+ (_a = generatorsOverlay.current) === null || _a === void 0 ? void 0 : _a.toggle(e);
97
+ e.preventDefault();
98
+ e.stopPropagation();
99
+ }, children: _jsx(WizardIcon, {}) })), executingAction && executingAction.state === "running" && (_jsxs("div", { className: "a-ml-auto a-text-xs", children: [_jsx("i", { className: "pi pi-spin pi-spinner a-text-xs a-flex a-items-center" }), " ", executingAction === null || executingAction === void 0 ? void 0 : executingAction.actionButton.label] })), _jsx(OverlayPanel, { ref: generatorsOverlay, className: "a-p-1", children: (_d = (_c = field._editor) === null || _c === void 0 ? void 0 : _c.buttons) === null || _d === void 0 ? void 0 : _d.map((x) => (_jsxs("button", { className: "a-text-xs a-p-1 a-block hover:a-text-gray-400", onClick: () => {
100
+ var _a;
101
+ editButtonClicked(x);
102
+ (_a = generatorsOverlay.current) === null || _a === void 0 ? void 0 : _a.hide();
103
+ }, children: [x.icon && _jsx("i", { className: x.icon + " a-mr-2 a-text-xs" }), x.label] }, x.id))) })] }));
104
+ return null;
105
+ };
106
+ return (_jsxs("div", { ref: ref, className: classNames, onClick: () => {
107
+ var _a;
108
+ editContext.setFocusedField((_a = field._editor) === null || _a === void 0 ? void 0 : _a.descriptor, true);
109
+ }, children: [validationBarClassNames && (_jsxs(_Fragment, { children: [_jsx("div", { className: validationBarClassNames, id: "validation_" + field.id }), _jsx(Tooltip, { target: "#validation_" + field.id, children: validators
110
+ .filter((x) => x.result > 1)
111
+ .map((x) => (_jsx("div", { children: x.message }, x.validator))) })] })), _jsxs("div", { className: "a-flex-1", children: [_jsxs("div", { className: "a-flex a-justify-between", children: [_jsx("label", { className: "a-font-bold a-block a-mb-1 a-text-sm", children: title || ((_f = field._editor) === null || _f === void 0 ? void 0 : _f.name) }), _jsxs("div", { className: "a-flex a-gap-2", children: [renderButtons(), isLocked && (_jsxs("div", { className: "a-text-xs a-bg-pink-400 a-text-white a-p-1", children: ["locked by ", (_h = (_g = liveField._editor) === null || _g === void 0 ? void 0 : _g.lockedBy) === null || _h === void 0 ? void 0 : _h.user.name] }))] })] }), isFocusedField && (_jsxs("div", { className: "a-flex a-gap-3 a-gap-y-1 a-flex-wrap", children: [!((_j = field._editor) === null || _j === void 0 ? void 0 : _j.isFallback) &&
112
+ ((_k = liveField._editor) === null || _k === void 0 ? void 0 : _k.rawValue) !== null ? (_jsxs("button", { className: "a-text-xs a-p-0 ", onClick: () => {
113
+ editContext === null || editContext === void 0 ? void 0 : editContext.editField({ field: field, rawValue: null });
114
+ }, children: ["Reset", " "] })) : (_jsxs("button", { className: "a-text-xs a-p-0", onClick: () => setShowFallback(!showFallback), children: [_jsx("i", { className: "a-text-xs pi " +
115
+ (showFallback ? "pi-check-square" : "pi-stop") }), " ", "Fallback"] })), !simplified && (_jsxs("button", { className: "a-text-xs a-p-0", onClick: () => {
116
+ setShowRawValue(!showRawValue);
117
+ }, children: [_jsx("i", { className: "a-text-xs pi " +
118
+ (showRawValue ? "pi-check-square" : "pi-stop") }), " ", "Raw"] }))] })), (executingAction === null || executingAction === void 0 ? void 0 : executingAction.message) && (_jsx("div", { className: "a-text-xs a-p-0 a-mt-1 a-mb-1", children: executingAction === null || executingAction === void 0 ? void 0 : executingAction.message })), _jsx("div", { className: "a-text-xs a-p-0 a-mt-1", children: getFieldEditor(liveField, showRawValue, isReadOnly, editContext.configuration) }), liveField._editor.isFallback && isFocusedField && showFallback && (_jsxs("div", { children: [_jsx("div", { className: "a-text-center a-relative a-top-3.5", children: _jsx("i", { className: "pi pi-arrow-up a-text-xl a-font-bold a-text-blue-300 a-fallback-arrow-animation" }) }), fallbackChain &&
119
+ fallbackChain.map((x, i) => {
120
+ var _a, _b;
121
+ return (_jsx("div", { className: "a-ml-3", children: _jsx(FieldListField, { field: x, validators: validators, simplified: true, title: _jsxs("div", { className: "a-text-xs", children: [(_a = x._editor) === null || _a === void 0 ? void 0 : _a.name, " (", x._editor.descriptor.item.language, ")", x._editor.descriptor.item.id !=
122
+ ((_b = liveField._editor) === null || _b === void 0 ? void 0 : _b.descriptor.item.id) && (_jsxs("span", { className: "a-text-gray-400", children: ["- Item: ", x._editor.descriptor.item.id] }))] }) }, i) }));
123
+ })] }))] })] }, field.id +
124
+ "_" +
125
+ fieldItem.id +
126
+ "_" +
127
+ fieldItem.language +
128
+ "_" +
129
+ fieldItem.version));
130
+ }
131
+ function getFieldEditor(field, showRawValue, isReadOnly, configuration) {
132
+ let fieldType = showRawValue ? "raw" : field._editor.type;
133
+ var typeConfig = configuration.fieldTypes[fieldType];
134
+ if (!typeConfig)
135
+ typeConfig = configuration.fieldTypes["single-line text"];
136
+ return _jsx(typeConfig.editor, { field: field, readOnly: isReadOnly });
137
+ }
@@ -1,19 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const jsx_runtime_1 = require("react/jsx-runtime");
4
- const react_1 = require("react");
5
- function FloatingToolbar({ children, onPin, height, width, }) {
6
- const [position, setPosition] = (0, react_1.useState)({ x: 0, y: 95 });
7
- const [size, setSize] = (0, react_1.useState)({ width: 400, height: 70 });
8
- const [dragging, setDragging] = (0, react_1.useState)(false);
9
- const [resizing, setResizing] = (0, react_1.useState)(false);
10
- const [offset, setOffset] = (0, react_1.useState)({ x: 0, y: 0 });
11
- const [hidden, setHidden] = (0, react_1.useState)(false);
12
- (0, react_1.useEffect)(() => {
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ export default function FloatingToolbar({ children, onPin, height, width, }) {
4
+ const [position, setPosition] = useState({ x: 0, y: 95 });
5
+ const [size, setSize] = useState({ width: 400, height: 70 });
6
+ const [dragging, setDragging] = useState(false);
7
+ const [resizing, setResizing] = useState(false);
8
+ const [offset, setOffset] = useState({ x: 0, y: 0 });
9
+ const [hidden, setHidden] = useState(false);
10
+ useEffect(() => {
13
11
  console.log("WIDTH: ", width, "Height: ", height);
14
12
  setSize({ width: width || 400, height: height || 70 });
15
13
  }, []);
16
- const handleMouseDown = (0, react_1.useCallback)((e) => {
14
+ const handleMouseDown = useCallback((e) => {
17
15
  // Start dragging and calculate the offset from the mouse to the sidebar top-left corner
18
16
  setDragging(true);
19
17
  setOffset({
@@ -21,7 +19,7 @@ function FloatingToolbar({ children, onPin, height, width, }) {
21
19
  y: e.clientY - position.y,
22
20
  });
23
21
  }, [position]);
24
- const handleMouseMove = (0, react_1.useCallback)((e) => {
22
+ const handleMouseMove = useCallback((e) => {
25
23
  if (dragging) {
26
24
  // Update the position state based on mouse movement, adjusted by the initial offset
27
25
  setPosition({
@@ -30,11 +28,11 @@ function FloatingToolbar({ children, onPin, height, width, }) {
30
28
  });
31
29
  }
32
30
  }, [dragging, offset]);
33
- const handleMouseUp = (0, react_1.useCallback)(() => {
31
+ const handleMouseUp = useCallback(() => {
34
32
  // Stop dragging
35
33
  setDragging(false);
36
34
  }, []);
37
- const handleResizeMouseDown = (0, react_1.useCallback)((e) => {
35
+ const handleResizeMouseDown = useCallback((e) => {
38
36
  e.preventDefault();
39
37
  setResizing(true);
40
38
  setOffset({
@@ -42,7 +40,7 @@ function FloatingToolbar({ children, onPin, height, width, }) {
42
40
  y: e.clientY,
43
41
  });
44
42
  }, []);
45
- const handleResizeMouseMove = (0, react_1.useCallback)((e) => {
43
+ const handleResizeMouseMove = useCallback((e) => {
46
44
  if (resizing) {
47
45
  const newWidth = size.width + (e.clientX - offset.x);
48
46
  const newHeight = size.height + (e.clientY - offset.y);
@@ -56,10 +54,10 @@ function FloatingToolbar({ children, onPin, height, width, }) {
56
54
  });
57
55
  }
58
56
  }, [resizing, offset, size]);
59
- const handleResizeMouseUp = (0, react_1.useCallback)(() => {
57
+ const handleResizeMouseUp = useCallback(() => {
60
58
  setResizing(false);
61
59
  }, []);
62
- (0, react_1.useEffect)(() => {
60
+ useEffect(() => {
63
61
  if (resizing) {
64
62
  document.addEventListener("mousemove", handleResizeMouseMove);
65
63
  document.addEventListener("mouseup", handleResizeMouseUp);
@@ -70,7 +68,7 @@ function FloatingToolbar({ children, onPin, height, width, }) {
70
68
  };
71
69
  }, [resizing, handleResizeMouseMove, handleResizeMouseUp]);
72
70
  // Add event listeners to the document when the sidebar is being dragged
73
- (0, react_1.useEffect)(() => {
71
+ useEffect(() => {
74
72
  if (dragging) {
75
73
  document.addEventListener("mousemove", handleMouseMove);
76
74
  document.addEventListener("mouseup", handleMouseUp);
@@ -81,12 +79,11 @@ function FloatingToolbar({ children, onPin, height, width, }) {
81
79
  document.removeEventListener("mouseup", handleMouseUp);
82
80
  };
83
81
  }, [dragging, handleMouseMove, handleMouseUp]);
84
- return ((0, jsx_runtime_1.jsxs)("div", { className: "a-border a-border-gray-200 a-drop-shadow a-z-10 a-flex a-flex-col", onMouseMove: handleMouseMove, onMouseUp: handleMouseUp, style: {
82
+ return (_jsxs("div", { className: "a-border a-border-gray-200 a-drop-shadow a-z-10 a-flex a-flex-col", onMouseMove: handleMouseMove, onMouseUp: handleMouseUp, style: {
85
83
  left: `${position.x}px`,
86
84
  top: `${position.y}px`,
87
85
  position: "absolute", // Use 'fixed' or 'absolute' depending on your layout needs
88
86
  height: `${hidden ? 30 : size.height}px`,
89
87
  width: `${size.width}px`,
90
- }, children: [(0, jsx_runtime_1.jsxs)("div", { className: "a-bg-gray-100 a-w-full a-flex a-justify-between a-items-between a-p-2 a-text-sm", style: { cursor: "move", userSelect: "none" }, onMouseDown: handleMouseDown, children: ["Toolbar", (0, jsx_runtime_1.jsxs)("div", { className: "a-flex a-gap-2", children: [hidden && ((0, jsx_runtime_1.jsx)("div", { className: "a-border-2 a-border-gray-800 a-w-4 a-h-4 a-cusor-pointer", onClick: () => setHidden(false) })), !hidden && ((0, jsx_runtime_1.jsx)("div", { className: "a-border-b-2 a-border-gray-800 a-w-4 a-h-4 a-cusor-pointer", onClick: () => setHidden(true) })), onPin && ((0, jsx_runtime_1.jsx)("i", { className: "pi pi-arrow-down-left a-cursor-pointer", onClick: onPin }))] })] }), (0, jsx_runtime_1.jsx)("div", { className: "a-flex-1", children: !hidden && children }), (0, jsx_runtime_1.jsx)("div", { className: "a-h-4 a-bg-gray-100" }), (0, jsx_runtime_1.jsx)("div", { className: "a-cursor-nwse-resize a-w-4 a-h-4 a-absolute -a-bottom-1 -a-right-2 a-text-gray-500", onMouseDown: handleResizeMouseDown, children: (0, jsx_runtime_1.jsx)("i", { className: "pi pi-sort-down -a-rotate-45 a-w-4 a-h-4" }) })] }));
88
+ }, children: [_jsxs("div", { className: "a-bg-gray-100 a-w-full a-flex a-justify-between a-items-between a-p-2 a-text-sm", style: { cursor: "move", userSelect: "none" }, onMouseDown: handleMouseDown, children: ["Toolbar", _jsxs("div", { className: "a-flex a-gap-2", children: [hidden && (_jsx("div", { className: "a-border-2 a-border-gray-800 a-w-4 a-h-4 a-cusor-pointer", onClick: () => setHidden(false) })), !hidden && (_jsx("div", { className: "a-border-b-2 a-border-gray-800 a-w-4 a-h-4 a-cusor-pointer", onClick: () => setHidden(true) })), onPin && (_jsx("i", { className: "pi pi-arrow-down-left a-cursor-pointer", onClick: onPin }))] })] }), _jsx("div", { className: "a-flex-1", children: !hidden && children }), _jsx("div", { className: "a-h-4 a-bg-gray-100" }), _jsx("div", { className: "a-cursor-nwse-resize a-w-4 a-h-4 a-absolute -a-bottom-1 -a-right-2 a-text-gray-500", onMouseDown: handleResizeMouseDown, children: _jsx("i", { className: "pi pi-sort-down -a-rotate-45 a-w-4 a-h-4" }) })] }));
91
89
  }
92
- exports.default = FloatingToolbar;
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { CopyToClipboardButton } from "./ui/CopyToClipboardButton";
4
+ import { Section } from "./ui/Section";
5
+ export function ItemInfo({ item }) {
6
+ var _a, _b, _c, _d, _e;
7
+ if (!(item === null || item === void 0 ? void 0 : item.fields))
8
+ return;
9
+ function formatRow(label, value) {
10
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "a-font-bold", children: label }), _jsx("div", { children: value })] }));
11
+ }
12
+ return (_jsxs("div", { children: [_jsx("h2", { className: "a-py-3 a-px-3 a-text-l a-font-bold a-my-2", children: item.name }), _jsx(Section, { title: "Info", children: _jsxs("div", { className: "a-grid a-grid-cols-[min-content_1fr] a-gap-3 a-text-xs", children: [_jsx("div", { className: "a-font-bold", children: "ID:" }), _jsxs("div", { children: [item.id, " ", _jsx(CopyToClipboardButton, { text: item.id })] }), _jsx("div", { className: "a-font-bold", children: "Path:" }), _jsx("div", { children: (_a = item._editor) === null || _a === void 0 ? void 0 : _a.path }), _jsx("div", { className: "a-font-bold", children: "Language:" }), _jsx("div", { children: item.language }), _jsx("div", { className: "a-font-bold", children: "Version:" }), _jsx("div", { children: item.version }), _jsx("div", { className: "a-font-bold", children: "Template:" }), _jsxs("div", { children: [item.templateName, " (", item.templateId, " ", _jsx(CopyToClipboardButton, { text: item.templateId }), ")"] }), ((_b = item._editor) === null || _b === void 0 ? void 0 : _b.masterLanguages) &&
13
+ formatRow("Master languages", (_c = item._editor) === null || _c === void 0 ? void 0 : _c.masterLanguages.join(", ")), ((_d = item._editor) === null || _d === void 0 ? void 0 : _d.translations) && (_jsxs("div", { className: "a-text-xs", children: ["Languages: ", (_e = item._editor.translations) === null || _e === void 0 ? void 0 : _e.join(", ")] }))] }) })] }));
14
+ }
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Dialog } from "primereact/dialog";
3
+ import { InputText } from "primereact/inputtext";
4
+ import { forwardRef, useEffect, useImperativeHandle, useState } from "react";
5
+ import DialogButtons from "./DialogButtons";
6
+ import { Button } from "primereact/button";
7
+ const ItemNameDialog = forwardRef((_props, ref) => {
8
+ const [visible, setVisible] = useState(false);
9
+ const [props, setProps] = useState();
10
+ const [name, setName] = useState("");
11
+ useEffect(() => {
12
+ setName((props === null || props === void 0 ? void 0 : props.name) || "");
13
+ }, [props]);
14
+ useImperativeHandle(ref, () => ({
15
+ show: (props) => {
16
+ setVisible(true);
17
+ setProps(props);
18
+ },
19
+ }));
20
+ const isValidName = name.trim().length > 0;
21
+ const handleOk = () => {
22
+ setVisible(false);
23
+ props === null || props === void 0 ? void 0 : props.accept(name);
24
+ };
25
+ return (_jsxs(Dialog, { visible: visible, onHide: () => {
26
+ setVisible(false);
27
+ }, header: "Choose item name", children: [_jsx("div", { className: "a-pt-3", children: _jsx(InputText, { autoFocus: true, value: name, onChange: (e) => setName(e.target.value), onKeyDown: (ev) => {
28
+ if (ev.key === "Enter" && isValidName)
29
+ handleOk();
30
+ } }) }), _jsxs(DialogButtons, { children: [_jsx(Button, { onClick: handleOk, label: "Ok", disabled: !isValidName }), _jsx(Button, { onClick: () => setVisible(false), label: "Cancel" })] })] }));
31
+ });
32
+ export default ItemNameDialog;
@@ -0,0 +1,61 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Dialog } from "primereact/dialog";
3
+ import { TabPanel, TabView } from "primereact/tabview";
4
+ import ContentTree from "./ContentTree";
5
+ import { InputText } from "primereact/inputtext";
6
+ import { useEffect, useState } from "react";
7
+ import { Dropdown } from "primereact/dropdown";
8
+ import { Divider } from "primereact/divider";
9
+ import { Button } from "primereact/button";
10
+ export function LinkEditorDialog({ linkValue, onCancel, onOk, }) {
11
+ const [url, setUrl] = useState();
12
+ const [targetWindow, setTargetWindow] = useState();
13
+ const [customTarget, setCustomTarget] = useState();
14
+ const [queryString, setQueryString] = useState();
15
+ const [activeTabIndex, setActiveTabIndex] = useState();
16
+ const [selectedItemId, setSelectedItemId] = useState("");
17
+ useEffect(() => {
18
+ setUrl(linkValue.url);
19
+ setTargetWindow(linkValue.target);
20
+ if (linkValue.type == "external")
21
+ setActiveTabIndex(1);
22
+ else
23
+ setActiveTabIndex(0);
24
+ if (linkValue.target && linkValue.target != "_blank") {
25
+ setTargetWindow("custom");
26
+ setCustomTarget(linkValue.target);
27
+ }
28
+ if (linkValue.itemId)
29
+ setSelectedItemId(linkValue.itemId);
30
+ if (linkValue.queryString)
31
+ setQueryString(linkValue.queryString);
32
+ }, [linkValue]);
33
+ const targetWindows = [
34
+ { name: "Active browser", code: "" },
35
+ { name: "New browser", code: "_blank" },
36
+ { name: "Custom", code: "custom" },
37
+ ];
38
+ function getTargetWindow() {
39
+ if (targetWindow == "custom")
40
+ return customTarget;
41
+ return targetWindow;
42
+ }
43
+ return (_jsx(Dialog, { style: { width: "50%", height: "50%" }, onHide: onCancel, header: "Select link target", visible: true, children: _jsxs("div", { className: "a-flex a-flex-col a-h-full", children: [_jsxs(TabView, { onTabChange: (e) => setActiveTabIndex(e.index), activeIndex: activeTabIndex, className: "a-flex-1 a-mb-3", pt: { panelContainer: { className: "a-h-full" } }, children: [_jsx(TabPanel, { header: "Internal", className: "a-relative a-h-[calc(100%-25px)] a-p-0 ", children: _jsx("div", { className: "a-overflow-auto a-absolute a-inset-0", children: _jsx(ContentTree, { className: "a-h-full", expandIdPath: linkValue.targetItemLongId ||
44
+ "0DE95AE4-41AB-4D01-9EB0-67441B7C2450", selectedItemIds: [selectedItemId], selectionMode: "single", rootItemId: "0DE95AE4-41AB-4D01-9EB0-67441B7C2450", onSelectionChange: (selection) => {
45
+ setSelectedItemId(selection.id);
46
+ } }) }) }), _jsxs(TabPanel, { header: "External", children: [_jsx("label", { className: "a-block a-text-sm", children: "Url:" }), _jsx(InputText, { value: url || "", onChange: (e) => {
47
+ setUrl(e.target.value);
48
+ }, className: "a-w-full a-text-sm" })] })] }), _jsx(Divider, {}), _jsx("label", { className: "a-text-sm", children: "QueryString" }), _jsx(InputText, { value: queryString, onChange: (e) => setQueryString(e.target.value), className: "a-text-sm" }), _jsx("label", { className: "a-text-sm", children: "Window" }), _jsx(Dropdown, { options: targetWindows, optionLabel: "name", optionValue: "code", value: targetWindow, onChange: (e) => setTargetWindow(e.value), className: "a-text-sm" }), targetWindow === "custom" && (_jsxs("div", { className: "a-m-2", children: [_jsx("label", { className: "a-block a-text-sm", children: "Custom:" }), _jsx(InputText, { value: customTarget || "", onChange: (e) => {
49
+ setCustomTarget(e.target.value);
50
+ }, className: "a-text-sm" })] })), _jsx(Divider, {}), _jsxs("div", { className: "a-flex a-justify-end a-gap-3 a-mt-3", children: [_jsx(Button, { onClick: () => {
51
+ console.log(activeTabIndex);
52
+ onOk({
53
+ url,
54
+ target: getTargetWindow(),
55
+ customTarget: customTarget,
56
+ itemId: selectedItemId,
57
+ queryString: queryString,
58
+ type: activeTabIndex === 1 ? "external" : "internal",
59
+ });
60
+ }, children: "Select" }), _jsx(Button, { onClick: onCancel, children: "Cancel" })] })] }) }));
61
+ }
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Splitter, SplitterPanel } from "primereact/splitter";
3
+ import { useState } from "react";
4
+ import FloatingToolbar from "./FloatingToolbar";
5
+ import React from "react";
6
+ export default function MainLayout({ leftSidebar, content, rightSidebar, }) {
7
+ var _a, _b;
8
+ const panels = [];
9
+ const [floatingLeftSidebar, setFloatingLeftSidebar] = useState(false);
10
+ const leftSidebarRef = React.useRef(null);
11
+ if (leftSidebar && !floatingLeftSidebar)
12
+ panels.push(_jsx(SplitterPanel, { size: 15, className: "a-overflow-hidden a-relative", children: _jsx("div", { className: "a-w-full a-h-full", ref: leftSidebarRef, children: leftSidebar }) }, "left"));
13
+ panels.push(_jsx(SplitterPanel, { size: 60, className: "alpaca-editor-content a-relative ", children: content }, "center"));
14
+ if (rightSidebar)
15
+ panels.push(_jsx(SplitterPanel, { size: 15, children: rightSidebar }, "right"));
16
+ return (_jsxs(_Fragment, { children: [_jsx(Splitter, { className: "a-border-none", children: panels }, (leftSidebar ? "left" : "no-left") +
17
+ (rightSidebar ? "right" : "no-right")), leftSidebar && floatingLeftSidebar && (_jsx(FloatingToolbar, { onPin: () => setFloatingLeftSidebar(false), height: (((_a = leftSidebarRef.current) === null || _a === void 0 ? void 0 : _a.clientHeight) || 300) - 70, width: ((_b = leftSidebarRef.current) === null || _b === void 0 ? void 0 : _b.clientWidth) || 300, children: leftSidebar }))] }));
18
+ }
@@ -0,0 +1,85 @@
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 } from "react/jsx-runtime";
12
+ import ContentTree from "./ContentTree";
13
+ import { Splitter, SplitterPanel } from "primereact/splitter";
14
+ import { useEffect, useState } from "react";
15
+ import { getChildren } from "./services/contentService";
16
+ import { useEditContext } from "./editContext";
17
+ import { Button } from "primereact/button";
18
+ import { Dialog } from "primereact/dialog";
19
+ import { FileUpload } from "primereact/fileupload";
20
+ import { classNames } from "primereact/utils";
21
+ import DialogButtons from "./DialogButtons";
22
+ export const MediaSelector = ({ visible, onHide, onMediaSelected, selectedIdPath, }) => {
23
+ const [selectedFolderId, setSelectedFolderId] = useState();
24
+ const [images, setImages] = useState();
25
+ const [selectedImage, setSelectedImage] = useState();
26
+ const [selectedImageId, setSelectedImageId] = useState();
27
+ const selection = selectedFolderId ? [selectedFolderId] : [];
28
+ const editContext = useEditContext();
29
+ useEffect(() => {
30
+ if (selectedIdPath) {
31
+ const path = selectedIdPath.split("/");
32
+ if (path.length > 1) {
33
+ setSelectedFolderId(path[path.length - 2]);
34
+ setSelectedImageId(path[path.length - 1].toLowerCase().substring(1, 37));
35
+ }
36
+ }
37
+ }, [selectedIdPath, visible]);
38
+ useEffect(() => {
39
+ loadThumbnailsAndSelectImage();
40
+ }, [selectedFolderId]);
41
+ function loadThumbnailsAndSelectImage() {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ setSelectedImage(undefined);
44
+ setImages([]);
45
+ const images = yield loadThumbnails(selectedFolderId);
46
+ if (selectedImageId)
47
+ setSelectedImage(images === null || images === void 0 ? void 0 : images.find((x) => x.id === selectedImageId));
48
+ });
49
+ }
50
+ function loadThumbnails(selectedFolderId) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ if (!selectedFolderId)
53
+ setImages([]);
54
+ else {
55
+ const children = yield getChildren(selectedFolderId, editContext.sessionId, [
56
+ "C97BA923-8009-4858-BDD5-D8BE5FCCECF7",
57
+ "F1828A2C-7E5D-4BBD-98CA-320474871548",
58
+ ], false);
59
+ setImages(children);
60
+ return children;
61
+ }
62
+ });
63
+ }
64
+ return (_jsx(Dialog, { style: { width: "80%", height: "80%" }, visible: visible, onHide: onHide, header: "Select image", children: _jsxs("div", { className: "a-flex a-flex-col a-h-full", children: [_jsxs(Splitter, { className: "a-flex-1 a-border-0", children: [_jsx(SplitterPanel, { size: 35, className: "alpaca-overflow-scroll", children: _jsxs(Splitter, { layout: "vertical", children: [_jsx(SplitterPanel, { size: 70, className: "a-relative", children: _jsx("div", { className: "a-absolute a-inset-0 a-overflow-auto a-p-2", children: _jsx(ContentTree, { rootItemId: "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", selectionMode: "single", selectedItemIds: selection, templateIds: ["FE5DD826-48C6-436D-B87A-7C4210C7413B"], expandIdPath: selectedIdPath !== null && selectedIdPath !== void 0 ? selectedIdPath : "3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1", onSelectionChange: (selection) => {
65
+ const selectedNode = selection;
66
+ if (selectedNode)
67
+ setSelectedFolderId(selectedNode.id);
68
+ else
69
+ setSelectedFolderId(undefined);
70
+ } }) }) }), _jsx(SplitterPanel, { className: "a-flex a-justify-center a-align-center", children: _jsx("div", { className: "a-p-3 a-m-2 a-border a-w-full a-flex a-justify-center a-align-center", children: _jsx("img", { src: selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.previewUrl, className: "a-object-contain", fetchPriority: "high" }) }) })] }) }), _jsx(SplitterPanel, { className: "a-relative", children: _jsx("div", { className: "a-flex a-flex-wrap a-content-start a-items-start a-gap-2 a-absolute a-inset-0 a-overflow-auto a-p-2", children: images === null || images === void 0 ? void 0 : images.map((t) => {
71
+ return (_jsxs("div", { className: classNames((selectedImage === null || selectedImage === void 0 ? void 0 : selectedImage.id) == t.id ? "a-shadow-md" : "", "a-w-24 a-flex a-flex-col a-justify-between hover:a-shadow-md a-cursor-pointer a-p-1"), onDoubleClick: () => {
72
+ onMediaSelected(t.id);
73
+ onHide();
74
+ }, onClick: () => setSelectedImage(t), children: [_jsx("div", { className: "a-h-24 a-w-24 a-flex a-justify-center a-items-center", children: _jsx("img", { src: t.imageUrl }) }), _jsx("div", { className: "a-text-xs a-break-all", children: t.name })] }, t.id));
75
+ }) }) })] }), _jsxs(DialogButtons, { children: [_jsx(FileUpload, { mode: "basic",
76
+ // disabled={electedFolderId}
77
+ auto: true, chooseLabel: "Upload", accept: "image/*", url: "/alpaca/headless/editor/upload?folder=" + selection[0], onUpload: ({ xhr }) => __awaiter(void 0, void 0, void 0, function* () {
78
+ const response = JSON.parse(xhr.responseText);
79
+ const thumbs = yield loadThumbnails(selectedFolderId);
80
+ setSelectedImage(thumbs === null || thumbs === void 0 ? void 0 : thumbs.find((x) => x.id === response.id));
81
+ }) }), _jsx(Button, { disabled: !selectedImage, onClick: () => {
82
+ onMediaSelected(selectedImage.id);
83
+ onHide();
84
+ }, children: "Select" }), _jsx(Button, { onClick: () => onHide(), children: "Cancel" })] })] }) }));
85
+ };