@alpaca-editor/core 1.0.3938 → 1.0.3941

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 (357) hide show
  1. package/dist/components/ActionButton.d.ts +1 -0
  2. package/dist/components/ActionButton.js +2 -2
  3. package/dist/components/ActionButton.js.map +1 -1
  4. package/dist/editor/ContentTree.js +12 -8
  5. package/dist/editor/ContentTree.js.map +1 -1
  6. package/dist/editor/ContextMenu.d.ts +1 -1
  7. package/dist/editor/ContextMenu.js +17 -3
  8. package/dist/editor/ContextMenu.js.map +1 -1
  9. package/dist/editor/FieldActionsOverlay.d.ts +18 -0
  10. package/dist/editor/FieldActionsOverlay.js +139 -0
  11. package/dist/editor/FieldActionsOverlay.js.map +1 -0
  12. package/dist/editor/FieldHistory.d.ts +2 -1
  13. package/dist/editor/FieldHistory.js +11 -8
  14. package/dist/editor/FieldHistory.js.map +1 -1
  15. package/dist/editor/FieldListField.js +14 -17
  16. package/dist/editor/FieldListField.js.map +1 -1
  17. package/dist/editor/PictureCropper.js +65 -23
  18. package/dist/editor/PictureCropper.js.map +1 -1
  19. package/dist/editor/PictureEditor.js +43 -3
  20. package/dist/editor/PictureEditor.js.map +1 -1
  21. package/dist/editor/Titlebar.js +19 -10
  22. package/dist/editor/Titlebar.js.map +1 -1
  23. package/dist/editor/ai/AiTerminal.js +27 -41
  24. package/dist/editor/ai/AiTerminal.js.map +1 -1
  25. package/dist/editor/ai/GhostWriter.js +21 -2
  26. package/dist/editor/ai/GhostWriter.js.map +1 -1
  27. package/dist/editor/client/EditorClient.js +48 -18
  28. package/dist/editor/client/EditorClient.js.map +1 -1
  29. package/dist/editor/client/editContext.d.ts +1 -1
  30. package/dist/editor/client/editContext.js.map +1 -1
  31. package/dist/editor/client/itemsRepository.js +126 -90
  32. package/dist/editor/client/itemsRepository.js.map +1 -1
  33. package/dist/editor/commands/componentCommands.js +7 -3
  34. package/dist/editor/commands/componentCommands.js.map +1 -1
  35. package/dist/editor/media-selector/MediaFolderBrowser.d.ts +5 -0
  36. package/dist/editor/media-selector/MediaFolderBrowser.js +77 -0
  37. package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -0
  38. package/dist/editor/media-selector/MediaSelector.js +1 -1
  39. package/dist/editor/media-selector/MediaSelector.js.map +1 -1
  40. package/dist/editor/media-selector/Thumbnails.js +2 -2
  41. package/dist/editor/media-selector/index.d.ts +8 -0
  42. package/dist/editor/media-selector/index.js +9 -0
  43. package/dist/editor/media-selector/index.js.map +1 -0
  44. package/dist/editor/menubar/BrowseHistory.js +3 -4
  45. package/dist/editor/menubar/BrowseHistory.js.map +1 -1
  46. package/dist/editor/menubar/PageSelector.js +62 -10
  47. package/dist/editor/menubar/PageSelector.js.map +1 -1
  48. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +1 -1
  49. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  50. package/dist/editor/page-editor-chrome/useInlineAICompletion.js +37 -11
  51. package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +1 -1
  52. package/dist/editor/page-viewer/PageViewerFrame.js +98 -2
  53. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  54. package/dist/editor/pageModel.d.ts +14 -0
  55. package/dist/editor/reviews/Comment.js +3 -2
  56. package/dist/editor/reviews/Comment.js.map +1 -1
  57. package/dist/editor/services/aiService.js +0 -1
  58. package/dist/editor/services/aiService.js.map +1 -1
  59. package/dist/editor/services/editService.d.ts +1 -1
  60. package/dist/editor/services/editService.js +2 -1
  61. package/dist/editor/services/editService.js.map +1 -1
  62. package/dist/editor/sidebar/ComponentTree.js +3 -4
  63. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  64. package/dist/editor/ui/Icons.js +1 -1
  65. package/dist/editor/ui/Icons.js.map +1 -1
  66. package/dist/editor/ui/ItemList.d.ts +16 -0
  67. package/dist/editor/ui/ItemList.js +19 -0
  68. package/dist/editor/ui/ItemList.js.map +1 -0
  69. package/dist/editor/ui/ItemSearch.js +2 -12
  70. package/dist/editor/ui/ItemSearch.js.map +1 -1
  71. package/dist/editor/ui/SimpleTabs.d.ts +1 -0
  72. package/dist/editor/ui/SimpleTabs.js +3 -3
  73. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  74. package/dist/editor/ui/Splitter.js +61 -6
  75. package/dist/editor/ui/Splitter.js.map +1 -1
  76. package/dist/editor/views/MediaFolderEditView.d.ts +4 -0
  77. package/dist/editor/views/MediaFolderEditView.js +40 -0
  78. package/dist/editor/views/MediaFolderEditView.js.map +1 -0
  79. package/dist/editor/views/SingleEditView.js +9 -1
  80. package/dist/editor/views/SingleEditView.js.map +1 -1
  81. package/dist/revision.d.ts +2 -2
  82. package/dist/revision.js +2 -2
  83. package/dist/styles.css +64 -13
  84. package/package.json +8 -2
  85. package/.prettierrc +0 -3
  86. package/build.css +0 -3
  87. package/components.json +0 -21
  88. package/eslint.config.mjs +0 -4
  89. package/images/bg-shape-black.webp +0 -0
  90. package/images/wizard-bg.png +0 -0
  91. package/images/wizard-tour.png +0 -0
  92. package/images/wizard.png +0 -0
  93. package/src/client-components/api.ts +0 -6
  94. package/src/client-components/index.ts +0 -19
  95. package/src/components/ActionButton.tsx +0 -41
  96. package/src/components/Error.tsx +0 -57
  97. package/src/components/ui/CardConnector.tsx +0 -56
  98. package/src/components/ui/button.tsx +0 -62
  99. package/src/components/ui/card.tsx +0 -372
  100. package/src/components/ui/context-menu.tsx +0 -250
  101. package/src/config/config.tsx +0 -917
  102. package/src/config/types.ts +0 -286
  103. package/src/editor/ComponentInfo.tsx +0 -90
  104. package/src/editor/ConfirmationDialog.tsx +0 -103
  105. package/src/editor/ContentTree.tsx +0 -727
  106. package/src/editor/ContextMenu.tsx +0 -212
  107. package/src/editor/Editor.tsx +0 -90
  108. package/src/editor/EditorWarning.tsx +0 -34
  109. package/src/editor/EditorWarnings.tsx +0 -33
  110. package/src/editor/FieldEditorPopup.tsx +0 -65
  111. package/src/editor/FieldHistory.tsx +0 -74
  112. package/src/editor/FieldList.tsx +0 -190
  113. package/src/editor/FieldListField.tsx +0 -391
  114. package/src/editor/FieldListFieldWithFallbacks.tsx +0 -217
  115. package/src/editor/FloatingToolbar.tsx +0 -163
  116. package/src/editor/ImageEditor.tsx +0 -128
  117. package/src/editor/ItemInfo.tsx +0 -90
  118. package/src/editor/LinkEditorDialog.tsx +0 -196
  119. package/src/editor/MainLayout.tsx +0 -95
  120. package/src/editor/MobileLayout.tsx +0 -68
  121. package/src/editor/NewEditorClient.tsx +0 -11
  122. package/src/editor/PictureCropper.tsx +0 -503
  123. package/src/editor/PictureEditor.tsx +0 -212
  124. package/src/editor/PictureEditorDialog.tsx +0 -381
  125. package/src/editor/PublishDialog.ignore +0 -74
  126. package/src/editor/ScrollingContentTree.tsx +0 -67
  127. package/src/editor/Terminal.tsx +0 -227
  128. package/src/editor/Titlebar.tsx +0 -93
  129. package/src/editor/ai/AiPopup.tsx +0 -59
  130. package/src/editor/ai/AiResponseMessage.tsx +0 -106
  131. package/src/editor/ai/AiTerminal.tsx +0 -514
  132. package/src/editor/ai/AiToolCall.tsx +0 -61
  133. package/src/editor/ai/EditorAiTerminal.tsx +0 -20
  134. package/src/editor/ai/GhostWriter.tsx +0 -432
  135. package/src/editor/ai/aiPageModel.ts +0 -108
  136. package/src/editor/ai/editorAiContext.ts +0 -18
  137. package/src/editor/client/AboutDialog.tsx +0 -44
  138. package/src/editor/client/EditorClient.tsx +0 -2197
  139. package/src/editor/client/GenericDialog.tsx +0 -50
  140. package/src/editor/client/editContext.ts +0 -412
  141. package/src/editor/client/helpers.ts +0 -44
  142. package/src/editor/client/itemsRepository.ts +0 -538
  143. package/src/editor/client/operations.ts +0 -768
  144. package/src/editor/client/pageModelBuilder.ts +0 -219
  145. package/src/editor/commands/commands.ts +0 -22
  146. package/src/editor/commands/componentCommands.tsx +0 -424
  147. package/src/editor/commands/createVersionCommand.ts +0 -33
  148. package/src/editor/commands/deleteVersionCommand.ts +0 -71
  149. package/src/editor/commands/itemCommands.tsx +0 -351
  150. package/src/editor/commands/localizeItem/LocalizeItemDialog.tsx +0 -201
  151. package/src/editor/commands/localizeItem/LocalizeItemUtils.ts +0 -27
  152. package/src/editor/commands/undo.ts +0 -39
  153. package/src/editor/component-designer/ComponentDesigner.tsx +0 -70
  154. package/src/editor/component-designer/ComponentDesignerAiTerminal.tsx +0 -11
  155. package/src/editor/component-designer/ComponentDesignerMenu.tsx +0 -91
  156. package/src/editor/component-designer/ComponentEditor.tsx +0 -97
  157. package/src/editor/component-designer/ComponentRenderingCodeEditor.tsx +0 -31
  158. package/src/editor/component-designer/ComponentRenderingEditor.tsx +0 -104
  159. package/src/editor/component-designer/ComponentsDropdown.tsx +0 -39
  160. package/src/editor/component-designer/PlaceholdersEditor.tsx +0 -179
  161. package/src/editor/component-designer/RenderingsDropdown.tsx +0 -36
  162. package/src/editor/component-designer/TemplateEditor.tsx +0 -236
  163. package/src/editor/component-designer/aiContext.ts +0 -23
  164. package/src/editor/componentTreeHelper.tsx +0 -116
  165. package/src/editor/context-menu/CopyMoveMenu.tsx +0 -103
  166. package/src/editor/context-menu/InsertMenu.tsx +0 -347
  167. package/src/editor/control-center/About.tsx +0 -342
  168. package/src/editor/control-center/ControlCenterMenu.tsx +0 -76
  169. package/src/editor/control-center/IndexOverview.tsx +0 -50
  170. package/src/editor/control-center/IndexSettings.tsx +0 -266
  171. package/src/editor/control-center/Info.tsx +0 -104
  172. package/src/editor/control-center/QuotaInfo.tsx +0 -301
  173. package/src/editor/control-center/Status.tsx +0 -113
  174. package/src/editor/control-center/WebSocketMessages.tsx +0 -155
  175. package/src/editor/editor-warnings/ItemLocked.tsx +0 -63
  176. package/src/editor/editor-warnings/NoLanguageWriteAccess.tsx +0 -22
  177. package/src/editor/editor-warnings/NoWorkflowWriteAccess.tsx +0 -23
  178. package/src/editor/editor-warnings/NoWriteAccess.tsx +0 -16
  179. package/src/editor/editor-warnings/ValidationErrors.tsx +0 -54
  180. package/src/editor/field-types/AttachmentEditor.tsx +0 -9
  181. package/src/editor/field-types/CheckboxEditor.tsx +0 -47
  182. package/src/editor/field-types/DropLinkEditor.tsx +0 -80
  183. package/src/editor/field-types/DropListEditor.tsx +0 -84
  184. package/src/editor/field-types/ImageFieldEditor.tsx +0 -65
  185. package/src/editor/field-types/InternalLinkFieldEditor.tsx +0 -117
  186. package/src/editor/field-types/LinkFieldEditor.tsx +0 -85
  187. package/src/editor/field-types/MultiLineText.tsx +0 -82
  188. package/src/editor/field-types/PictureFieldEditor.tsx +0 -121
  189. package/src/editor/field-types/RawEditor.tsx +0 -53
  190. package/src/editor/field-types/ReactQuill.tsx +0 -580
  191. package/src/editor/field-types/RichTextEditor.tsx +0 -22
  192. package/src/editor/field-types/RichTextEditorComponent.tsx +0 -127
  193. package/src/editor/field-types/SingleLineText.tsx +0 -174
  194. package/src/editor/field-types/TreeListEditor.tsx +0 -261
  195. package/src/editor/fieldTypes.ts +0 -140
  196. package/src/editor/media-selector/AiImageSearch.tsx +0 -185
  197. package/src/editor/media-selector/AiImageSearchPrompt.tsx +0 -94
  198. package/src/editor/media-selector/MediaSelector.tsx +0 -42
  199. package/src/editor/media-selector/Preview.tsx +0 -14
  200. package/src/editor/media-selector/Thumbnails.tsx +0 -48
  201. package/src/editor/media-selector/TreeSelector.tsx +0 -292
  202. package/src/editor/media-selector/UploadZone.tsx +0 -137
  203. package/src/editor/menubar/ActionsMenu.tsx +0 -94
  204. package/src/editor/menubar/ActiveUsers.tsx +0 -17
  205. package/src/editor/menubar/ApproveAndPublish.tsx +0 -18
  206. package/src/editor/menubar/BrowseHistory.tsx +0 -37
  207. package/src/editor/menubar/ItemLanguageVersion.tsx +0 -76
  208. package/src/editor/menubar/LanguageSelector.tsx +0 -226
  209. package/src/editor/menubar/Menu.tsx +0 -83
  210. package/src/editor/menubar/NavButtons.tsx +0 -74
  211. package/src/editor/menubar/PageSelector.tsx +0 -141
  212. package/src/editor/menubar/PageViewerControls.tsx +0 -120
  213. package/src/editor/menubar/PreviewSecondaryControls.tsx +0 -18
  214. package/src/editor/menubar/SecondaryControls.tsx +0 -45
  215. package/src/editor/menubar/Separator.tsx +0 -12
  216. package/src/editor/menubar/SiteInfo.tsx +0 -53
  217. package/src/editor/menubar/User.tsx +0 -27
  218. package/src/editor/menubar/VersionSelector.tsx +0 -142
  219. package/src/editor/page-editor-chrome/CommentHighlighting.tsx +0 -307
  220. package/src/editor/page-editor-chrome/CommentHighlightings.tsx +0 -35
  221. package/src/editor/page-editor-chrome/FieldActionIndicator.tsx +0 -59
  222. package/src/editor/page-editor-chrome/FieldActionIndicators.tsx +0 -23
  223. package/src/editor/page-editor-chrome/FieldEditedIndicator.tsx +0 -64
  224. package/src/editor/page-editor-chrome/FieldEditedIndicators.tsx +0 -35
  225. package/src/editor/page-editor-chrome/FrameMenu.tsx +0 -338
  226. package/src/editor/page-editor-chrome/FrameMenus.tsx +0 -48
  227. package/src/editor/page-editor-chrome/InlineEditor.tsx +0 -765
  228. package/src/editor/page-editor-chrome/LockedFieldIndicator.tsx +0 -61
  229. package/src/editor/page-editor-chrome/NoLayout.tsx +0 -36
  230. package/src/editor/page-editor-chrome/PageEditorChrome.tsx +0 -122
  231. package/src/editor/page-editor-chrome/PictureEditorOverlay.tsx +0 -161
  232. package/src/editor/page-editor-chrome/PlaceholderDropZone.tsx +0 -169
  233. package/src/editor/page-editor-chrome/PlaceholderDropZones.tsx +0 -315
  234. package/src/editor/page-editor-chrome/SuggestionHighlighting.tsx +0 -300
  235. package/src/editor/page-editor-chrome/SuggestionHighlightings.tsx +0 -40
  236. package/src/editor/page-editor-chrome/useInlineAICompletion.tsx +0 -791
  237. package/src/editor/page-viewer/DeviceToolbar.tsx +0 -70
  238. package/src/editor/page-viewer/EditorForm.tsx +0 -258
  239. package/src/editor/page-viewer/MiniMap.tsx +0 -362
  240. package/src/editor/page-viewer/PageViewer.tsx +0 -169
  241. package/src/editor/page-viewer/PageViewerFrame.tsx +0 -879
  242. package/src/editor/page-viewer/pageModelSkeletonBuilder.ts +0 -412
  243. package/src/editor/page-viewer/pageViewContext.ts +0 -186
  244. package/src/editor/pageModel.ts +0 -208
  245. package/src/editor/picture-shared.tsx +0 -53
  246. package/src/editor/reviews/Comment.tsx +0 -308
  247. package/src/editor/reviews/Comments.tsx +0 -125
  248. package/src/editor/reviews/DiffView.tsx +0 -109
  249. package/src/editor/reviews/PreviewInfo.tsx +0 -35
  250. package/src/editor/reviews/Reviews.tsx +0 -280
  251. package/src/editor/reviews/SuggestedEdit.tsx +0 -316
  252. package/src/editor/reviews/reviewCommands.tsx +0 -47
  253. package/src/editor/reviews/useReviews.tsx +0 -70
  254. package/src/editor/services/aiService.ts +0 -174
  255. package/src/editor/services/componentDesignerService.ts +0 -151
  256. package/src/editor/services/contentService.ts +0 -180
  257. package/src/editor/services/editService.ts +0 -486
  258. package/src/editor/services/indexService.ts +0 -24
  259. package/src/editor/services/reviewsService.ts +0 -53
  260. package/src/editor/services/serviceHelper.ts +0 -95
  261. package/src/editor/services/suggestedEditsService.ts +0 -39
  262. package/src/editor/services/systemService.ts +0 -5
  263. package/src/editor/services/translationService.ts +0 -21
  264. package/src/editor/services-server/api.ts +0 -150
  265. package/src/editor/services-server/graphQL.ts +0 -106
  266. package/src/editor/sidebar/ComponentPalette.tsx +0 -161
  267. package/src/editor/sidebar/ComponentTree.tsx +0 -548
  268. package/src/editor/sidebar/ComponentTree2.tsxx +0 -490
  269. package/src/editor/sidebar/Debug.tsx +0 -111
  270. package/src/editor/sidebar/DictionaryEditor.tsx +0 -261
  271. package/src/editor/sidebar/EditHistory.tsx +0 -134
  272. package/src/editor/sidebar/GraphQL.tsx +0 -164
  273. package/src/editor/sidebar/Insert.tsx +0 -35
  274. package/src/editor/sidebar/MainContentTree.tsx +0 -102
  275. package/src/editor/sidebar/Performance.tsx +0 -53
  276. package/src/editor/sidebar/Sessions.tsx +0 -35
  277. package/src/editor/sidebar/Sidebar.tsx +0 -20
  278. package/src/editor/sidebar/SidebarView.tsx +0 -152
  279. package/src/editor/sidebar/Translations.tsx +0 -295
  280. package/src/editor/sidebar/Validation.tsx +0 -102
  281. package/src/editor/sidebar/ViewSelector.tsx +0 -60
  282. package/src/editor/sidebar/Workbox.tsx +0 -209
  283. package/src/editor/ui/CenteredMessage.tsx +0 -7
  284. package/src/editor/ui/CopyMoveTargetSelectorDialog.tsx +0 -81
  285. package/src/editor/ui/CopyToClipboardButton.tsx +0 -24
  286. package/src/editor/ui/DialogButtons.tsx +0 -11
  287. package/src/editor/ui/Icons.tsx +0 -708
  288. package/src/editor/ui/ItemNameDialogNew.tsx +0 -118
  289. package/src/editor/ui/ItemSearch.tsx +0 -190
  290. package/src/editor/ui/PerfectTree.tsx +0 -571
  291. package/src/editor/ui/Section.tsx +0 -35
  292. package/src/editor/ui/SimpleIconButton.tsx +0 -54
  293. package/src/editor/ui/SimpleMenu.tsx +0 -40
  294. package/src/editor/ui/SimpleTable.tsx +0 -60
  295. package/src/editor/ui/SimpleTabs.tsx +0 -55
  296. package/src/editor/ui/SimpleToolbar.tsx +0 -7
  297. package/src/editor/ui/Spinner.tsx +0 -9
  298. package/src/editor/ui/Splitter.tsx +0 -314
  299. package/src/editor/ui/StackedPanels.tsx +0 -134
  300. package/src/editor/ui/Toolbar.tsx +0 -7
  301. package/src/editor/utils/id-helper.ts +0 -3
  302. package/src/editor/utils/insertOptions.ts +0 -69
  303. package/src/editor/utils/itemutils.ts +0 -29
  304. package/src/editor/utils/useMemoDebug.ts +0 -28
  305. package/src/editor/utils.ts +0 -486
  306. package/src/editor/views/CompareView.tsx +0 -245
  307. package/src/editor/views/EditView.tsx +0 -27
  308. package/src/editor/views/ItemEditor.tsx +0 -58
  309. package/src/editor/views/SingleEditView.tsx +0 -46
  310. package/src/fonts/Geist-Black.woff2 +0 -0
  311. package/src/fonts/Geist-Bold.woff2 +0 -0
  312. package/src/fonts/Geist-ExtraBold.woff2 +0 -0
  313. package/src/fonts/Geist-ExtraLight.woff2 +0 -0
  314. package/src/fonts/Geist-Light.woff2 +0 -0
  315. package/src/fonts/Geist-Medium.woff2 +0 -0
  316. package/src/fonts/Geist-Regular.woff2 +0 -0
  317. package/src/fonts/Geist-SemiBold.woff2 +0 -0
  318. package/src/fonts/Geist-Thin.woff2 +0 -0
  319. package/src/fonts/Geist[wght].woff2 +0 -0
  320. package/src/fonts/index.ts +0 -10
  321. package/src/index.ts +0 -23
  322. package/src/lib/safelist.tsx +0 -16
  323. package/src/lib/utils.ts +0 -6
  324. package/src/page-wizard/PageWizard.tsx +0 -139
  325. package/src/page-wizard/WizardBox.tsx +0 -4
  326. package/src/page-wizard/WizardBoxConnector.tsx +0 -56
  327. package/src/page-wizard/WizardSteps.tsx +0 -458
  328. package/src/page-wizard/service.ts +0 -35
  329. package/src/page-wizard/startPageWizardCommand.ts +0 -26
  330. package/src/page-wizard/steps/BuildPageStep.tsx +0 -259
  331. package/src/page-wizard/steps/CollectStep.tsx +0 -296
  332. package/src/page-wizard/steps/ComponentTypesSelector.tsx +0 -454
  333. package/src/page-wizard/steps/Components.tsx +0 -193
  334. package/src/page-wizard/steps/ContentStep.tsx +0 -890
  335. package/src/page-wizard/steps/EditButton.tsx +0 -34
  336. package/src/page-wizard/steps/FieldEditor.tsx +0 -102
  337. package/src/page-wizard/steps/Generate.tsx +0 -60
  338. package/src/page-wizard/steps/ImagesStep.tsx +0 -382
  339. package/src/page-wizard/steps/LayoutStep.tsx +0 -227
  340. package/src/page-wizard/steps/MetaDataStep.tsx +0 -173
  341. package/src/page-wizard/steps/SelectStep.tsx +0 -281
  342. package/src/page-wizard/steps/schema.ts +0 -180
  343. package/src/page-wizard/steps/usePageCreator.ts +0 -325
  344. package/src/page-wizard/usePageWizard.ts +0 -79
  345. package/src/revision.ts +0 -2
  346. package/src/splash-screen/NewPage.tsx +0 -294
  347. package/src/splash-screen/OpenPage.tsx +0 -113
  348. package/src/splash-screen/RecentPages.tsx +0 -123
  349. package/src/splash-screen/SectionHeadline.tsx +0 -21
  350. package/src/splash-screen/SplashScreen.tsx +0 -195
  351. package/src/tour/Tour.tsx +0 -566
  352. package/src/tour/default-tour.tsx +0 -301
  353. package/src/tour/preview-tour.tsx +0 -128
  354. package/src/types.ts +0 -335
  355. package/styles.css +0 -765
  356. package/tsconfig.build.json +0 -31
  357. package/tsconfig.json +0 -14
@@ -1,212 +0,0 @@
1
- import { MouseEventHandler, useCallback, useState } from "react";
2
- import { useEditContext } from "./client/editContext";
3
- import { PictureCropper } from "./PictureCropper";
4
- import { PictureField, PictureRawValue } from "./fieldTypes";
5
- import { MediaSelectorMode } from "./media-selector/MediaSelector";
6
-
7
- export function PictureEditor({
8
- field,
9
- variantName,
10
- style,
11
- forwardScrollevents,
12
- isPageEditor,
13
- }: {
14
- field: PictureField;
15
- variantName: string;
16
- style?: React.CSSProperties;
17
- forwardScrollevents?: boolean;
18
- isPageEditor?: boolean;
19
- }) {
20
- const [showMenu, setShowMenu] = useState(false);
21
- const [showCropper, setShowCropper] = useState(false);
22
- const editContext = useEditContext();
23
-
24
- const variant = field.value?.variants?.find((v) => v.name === variantName);
25
- const raw = (() => {
26
- try {
27
- return field?.rawValue && field?.rawValue[0] === "{"
28
- ? (JSON.parse(field?.rawValue) as PictureRawValue)
29
- : ({ Variants: [] } as PictureRawValue);
30
- } catch (error) {
31
- console.warn("Failed to parse picture field raw value:", error);
32
- return { Variants: [] } as PictureRawValue;
33
- }
34
- })();
35
-
36
- const rawVariant = raw.Variants?.find((x) => x.Name == variantName);
37
-
38
- const reset = useCallback(() => {
39
- raw.Variants = raw.Variants.filter((x) => x.Name !== variantName);
40
- editContext!.operations.editField({
41
- field: field.descriptor,
42
- rawValue: JSON.stringify(raw),
43
- refresh: "immediate",
44
- });
45
- }, [field, variant]);
46
-
47
- const imageSelected = useCallback(
48
- async (imageId: string) => {
49
- const selected = raw.Variants?.find((x) => x.Name == variantName);
50
- if (!selected) {
51
- if (!raw.Variants) raw.Variants = [];
52
- raw.Variants.push({
53
- Name: variantName,
54
- MediaId: imageId,
55
- });
56
- } else {
57
- selected.MediaId = imageId;
58
- }
59
-
60
- editContext!.operations.editField({
61
- field: field.descriptor,
62
- rawValue: JSON.stringify(raw),
63
- refresh: "immediate",
64
- });
65
- },
66
- [field, variant],
67
- );
68
-
69
- const videoSelected = useCallback(
70
- async (videoId: string) => {
71
- const selected = raw.Variants?.find((x) => x.Name == variantName);
72
- if (!selected) {
73
- if (!raw.Variants) raw.Variants = [];
74
- raw.Variants.push({
75
- Name: variantName,
76
- VideoId: videoId,
77
- });
78
- } else {
79
- selected.VideoId = videoId;
80
- }
81
-
82
- editContext!.operations.editField({
83
- field: field.descriptor,
84
- rawValue: JSON.stringify(raw),
85
- refresh: "immediate",
86
- });
87
- },
88
- [field, variant],
89
- );
90
-
91
- async function selectMedia(mode: MediaSelectorMode) {
92
- const selectedImageId = await editContext?.selectMedia({
93
- selectedIdPath: variant?.idPath || "",
94
- mode: mode,
95
- });
96
- if (selectedImageId) imageSelected(selectedImageId);
97
- }
98
-
99
- async function selectVideo() {
100
- const selectedVideoId = await editContext?.selectMedia({
101
- selectedIdPath: variant?.idPath || "",
102
- mode: "video",
103
- });
104
- if (selectedVideoId) videoSelected(selectedVideoId);
105
- }
106
-
107
- const notEmpty = variant?.mediaId;
108
-
109
- return (
110
- <div
111
- className="absolute inset-0 flex items-center justify-center"
112
- onMouseEnter={() => setShowMenu(true)}
113
- onMouseLeave={() => setShowMenu(false)}
114
- onClick={() => {
115
- if (!isPageEditor) return;
116
- const itemId = field.descriptor.item?.id;
117
- if (itemId) editContext?.select([itemId]);
118
- }}
119
- onWheel={(e) => {
120
- if (forwardScrollevents)
121
- editContext?.pageView.editorIframeRef!.current?.contentWindow?.document.documentElement?.scrollBy(
122
- {
123
- behavior: "instant",
124
- left: 0,
125
- top: e.deltaY,
126
- },
127
- );
128
- editContext?.pageView.editorIframeRef!.current?.contentWindow?.document.body?.scrollBy(
129
- {
130
- behavior: "instant",
131
- left: 0,
132
- top: e.deltaY,
133
- },
134
- );
135
- }}
136
- style={style}
137
- data-testid="select-media"
138
- >
139
- {showMenu && (
140
- <div className="grid min-w-48 grid-cols-2 items-stretch justify-center gap-1.5 p-3 text-sm">
141
- <Btn
142
- label="Select"
143
- icon="pi pi-image"
144
- onClick={() => selectMedia("images")}
145
- testId="select-media-button"
146
- className="min-w-[80px]"
147
- />
148
- {field.value?.allowVideos && (
149
- <Btn
150
- label="Video"
151
- icon="pi pi-video"
152
- onClick={() => selectVideo()}
153
- testId="video-media-button"
154
- className="min-w-[80px]"
155
- />
156
- )}
157
- {notEmpty && (
158
- <Btn
159
- label="Crop"
160
- icon="pi pi-expand"
161
- onClick={() => {
162
- setShowCropper(true);
163
- }}
164
- testId="crop-media-button"
165
- className="min-w-[80px]"
166
- />
167
- )}
168
- {rawVariant && (
169
- <Btn
170
- label="Reset"
171
- icon="pi pi-times"
172
- onClick={() => reset()}
173
- testId="reset-media-button"
174
- className="min-w-[80px]"
175
- />
176
- )}
177
- </div>
178
- )}
179
- {showCropper && (
180
- <PictureCropper
181
- field={field}
182
- onClose={() => setShowCropper(false)}
183
- variantName={variantName}
184
- />
185
- )}
186
- </div>
187
- );
188
- }
189
-
190
- function Btn({
191
- label,
192
- icon,
193
- onClick,
194
- testId,
195
- className,
196
- }: {
197
- label: string;
198
- icon: string;
199
- onClick: MouseEventHandler<HTMLButtonElement>;
200
- testId?: string;
201
- className?: string;
202
- }) {
203
- return (
204
- <button
205
- className={`btn flex cursor-pointer items-center gap-1.5 rounded-lg border bg-gray-500 p-1.5 text-white opacity-70 hover:opacity-85 ${className}`}
206
- onClick={onClick}
207
- data-testid={testId}
208
- >
209
- <i className={icon} /> {label}
210
- </button>
211
- );
212
- }
@@ -1,381 +0,0 @@
1
- import { Dialog } from "primereact/dialog";
2
-
3
- import { useEditContext } from "./client/editContext";
4
-
5
- import { useCallback, useEffect, useState } from "react";
6
- import { Button } from "primereact/button";
7
- import DialogButtons from "./ui/DialogButtons";
8
-
9
- import { getPictureValue } from "./services/editService";
10
- import {
11
- PictureField,
12
- PictureRawValue,
13
- PictureRawVariant,
14
- PictureValue,
15
- } from "./fieldTypes";
16
-
17
- import {
18
- MediaPictureParams,
19
- PictureParams,
20
- getRenderedPictureVariant,
21
- } from "./picture-shared";
22
- import { Field } from "./pageModel";
23
-
24
- export function PictureEditorDialog({
25
- field,
26
- onCancel,
27
- onOk,
28
- params,
29
- }: {
30
- field: PictureField;
31
- onOk: (link: PictureValue) => void;
32
- onCancel: () => void;
33
- params?: PictureParams | MediaPictureParams;
34
- }) {
35
- const [selectedVariantName, setSelectedVariantName] = useState<string>();
36
- const [pictureValue, setPictureValue] = useState<PictureValue>();
37
- const [rawValue, setRawValue] = useState<PictureRawValue>();
38
- const emptyRect = () => ({
39
- width: 0,
40
- height: 0,
41
- top: 0,
42
- left: 0,
43
- });
44
- const [rect, setRect] = useState(emptyRect());
45
-
46
- const editContext = useEditContext();
47
- useEffect(() => {
48
- setSelectedVariantName(field?.value?.variants[0].name);
49
- }, []);
50
-
51
- useEffect(() => {
52
- const deepCopy = JSON.parse(JSON.stringify(field.value));
53
- setPictureValue(deepCopy);
54
- const raw = field?.rawValue
55
- ? (JSON.parse(field?.rawValue) as PictureRawValue)
56
- : ({ Variants: [] } as PictureRawValue);
57
- setRawValue(raw);
58
- if (!field?.value?.variants[0].src)
59
- selectMedia(field?.value?.variants[0].name, raw);
60
- }, [field]);
61
-
62
- async function selectMedia(variantName?: string, raw?: PictureRawValue) {
63
- const chosenImage = await editContext?.selectMedia({
64
- selectedIdPath: selectedVariant?.idPath || "",
65
- mode: "images",
66
- });
67
- if (chosenImage)
68
- imageSelected(
69
- chosenImage,
70
- variantName ?? selectedVariantName,
71
- raw ?? rawValue
72
- );
73
- }
74
-
75
- const selectedVariant =
76
- pictureValue && pictureValue.variants
77
- ? pictureValue.variants?.find((x) => x.name == selectedVariantName)
78
- : null;
79
-
80
- useEffect(() => {
81
- if (
82
- selectedVariant?.region &&
83
- (!selectedVariant.aspectRatioLock ||
84
- Math.abs(
85
- selectedVariant.aspectRatioLock -
86
- selectedVariant.region.width / selectedVariant.region.height
87
- ) < 0.1)
88
- )
89
- setRect({
90
- width: selectedVariant.region.width,
91
- height: selectedVariant.region.height,
92
- top: selectedVariant.region.y,
93
- left: selectedVariant.region.x,
94
- });
95
- else {
96
- setRect(emptyRect());
97
- }
98
- }, [selectedVariantName]);
99
-
100
- const getPictureFieldValue = async (
101
- field: Field,
102
- rawValue: PictureRawValue
103
- ): Promise<PictureValue | null> => {
104
- if (!editContext?.pageView.site) return null;
105
-
106
- return getPictureValue(
107
- field,
108
- rawValue,
109
- editContext.pageView.site?.name,
110
- editContext.sessionId
111
- );
112
- };
113
-
114
- const imageSelected = useCallback(
115
- async (
116
- imageId: string,
117
- variantName?: string,
118
- rawValue?: PictureRawValue
119
- ) => {
120
- if (!variantName || !rawValue) return;
121
-
122
- const selected = rawValue.Variants?.find((x) => x.Name == variantName);
123
- if (!selected) {
124
- if (!rawValue.Variants) rawValue.Variants = [];
125
- rawValue.Variants.push({
126
- Name: variantName,
127
- MediaId: imageId,
128
- });
129
- } else {
130
- selected.MediaId = imageId;
131
- }
132
- setRawValue(rawValue);
133
- const newValue = await getPictureFieldValue(field, rawValue);
134
- if (newValue) {
135
- setPictureValue(newValue);
136
- }
137
- },
138
- []
139
- );
140
- const updateRawValue = async (rawValue: PictureRawValue) => {
141
- setRawValue(rawValue);
142
- const newValue = await getPictureFieldValue(field, rawValue);
143
- if (newValue) {
144
- setPictureValue(newValue);
145
- }
146
- };
147
-
148
- const setVariantCrop = async () => {
149
- if (!rawValue) return;
150
- if (!selectedVariantName) return;
151
-
152
- if (selectedVariant) {
153
- let selected = rawValue.Variants?.find(
154
- (x: PictureRawVariant) => x.Name == selectedVariantName
155
- );
156
- if (!selected) {
157
- selected = {
158
- Name: selectedVariantName,
159
- MediaId: selectedVariant.mediaId!,
160
- };
161
- rawValue.Variants?.push(selected);
162
- }
163
- if (selected) {
164
- selected.Region = {
165
- X: rect.left,
166
- Y: rect.top,
167
- Width: rect.width,
168
- Height: rect.height,
169
- };
170
- await updateRawValue(rawValue);
171
- }
172
- }
173
- };
174
-
175
- const usage = getUsage(pictureValue, params);
176
-
177
- return (
178
- <>
179
- <Dialog
180
- header={"Edit " + field.name}
181
- visible={true}
182
- style={{ width: "70vw", height: "70vh" }}
183
- onHide={onCancel}
184
- >
185
- <div className="flex gap-1 flex-col justify h-full">
186
- <div className="flex-1 flex gap-2">
187
- <div className=" h-full border-r pt-3 w-48 relative">
188
- <div className="absolute inset-0 overflow-y-auto flex flex-col gap-6">
189
- {pictureValue &&
190
- pictureValue.variants?.map((variant) => (
191
- <div
192
- key={variant.name}
193
- onClick={() => setSelectedVariantName(variant.name)}
194
- className="text-xs flex flex-col items-center justify-center gap-1 cursor-pointer"
195
- >
196
- <div
197
- className={
198
- "flex justify-center items-center h-40 w-40 border relative" +
199
- (selectedVariantName == variant.name
200
- ? " shadow-xl "
201
- : "")
202
- }
203
- >
204
- {variant.src && <img src={variant.thumbSrc} />}
205
- </div>
206
- <div className="w-40">
207
- <div>{variant.name}</div>
208
- <div>{variant.aspectRatioLockText}</div>
209
- <div>
210
- <div className="break-all">
211
- Name: {variant.mediaItemName}
212
- </div>
213
- <div>
214
- Orig. size: {variant.width} x {variant.height}
215
- </div>
216
- {(variant.width < 1 || variant.height < 1) && (
217
- <span>
218
- {" "}
219
- <i className="pi pi-exclamation-triangle text-red-600 "></i>
220
- </span>
221
- )}
222
- </div>
223
- </div>
224
- </div>
225
- ))}
226
- </div>
227
- {usage && <div className="text-xs">{usage}</div>}
228
- </div>
229
- <div className="flex-1 relative p-3">
230
- <div className="absolute inset-0 top-3 overflow-auto select-none flex align-center justify-center">
231
- {selectedVariant && (
232
- <div
233
- className="relative"
234
- onDoubleClick={() => selectMedia()}
235
- onMouseDown={(ev) => {
236
- ev.preventDefault();
237
- ev.stopPropagation();
238
- const bounds = ev.currentTarget.getBoundingClientRect();
239
-
240
- setRect({
241
- left: (ev.clientX - bounds.left) / bounds.width,
242
- top: (ev.clientY - bounds.top) / bounds.height,
243
- width: 0,
244
- height: 0,
245
- });
246
- }}
247
- onMouseMoveCapture={(ev) => {
248
- if (ev.buttons === 1) {
249
- const bounds = ev.currentTarget.getBoundingClientRect();
250
-
251
- const width =
252
- (ev.clientX - bounds.left) / bounds.width - rect.left;
253
-
254
- const newRect = {
255
- ...rect,
256
- width,
257
- height: selectedVariant.aspectRatioLock
258
- ? width / selectedVariant.aspectRatioLock
259
- : (ev.clientY - bounds.top) / bounds.height -
260
- rect.top,
261
- };
262
-
263
- setRect(newRect);
264
- ev.preventDefault();
265
- ev.stopPropagation();
266
- }
267
- }}
268
- onMouseUp={() => setVariantCrop()}
269
- >
270
- <img
271
- src={selectedVariant.originalSrc ?? selectedVariant.src}
272
- className="object-contain h-full w-full"
273
- />
274
- <div
275
- className="absolute bg-opacity-70 bg-gray-300"
276
- style={{
277
- left: rect.left * 100 + "%",
278
- top: rect.top * 100 + "%",
279
- width: rect.width * 100 + "%",
280
- height: rect.height * 100 + "%",
281
- }}
282
- />
283
- </div>
284
- )}
285
- {selectedVariant && (
286
- <div
287
- className="absolute top-0 right-0 cursor-pointer text-sm flex flex-col gap-1 items-center p-2 bg-gray-100 bg-opacity-70"
288
- onClick={() => selectMedia()}
289
- >
290
- <i className="pi pi-pencil text-xl"></i>
291
- Choose
292
- </div>
293
- )}
294
- </div>
295
- </div>
296
- </div>
297
- <DialogButtons>
298
- <Button
299
- size="small"
300
- onClick={() => {
301
- if (pictureValue) {
302
- if (field) {
303
- editContext?.operations.editField({
304
- field: field.descriptor,
305
- rawValue: JSON.stringify(rawValue),
306
- refresh: "immediate",
307
- });
308
- }
309
- onOk(pictureValue);
310
- }
311
- }}
312
- >
313
- Ok
314
- </Button>
315
- <Button
316
- onClick={() => {
317
- onCancel();
318
- }}
319
- size="small"
320
- >
321
- Cancel
322
- </Button>
323
- </DialogButtons>
324
- </div>
325
- </Dialog>
326
- </>
327
- );
328
- }
329
- function getUsage(
330
- pictureValue: PictureValue | undefined,
331
- params: PictureParams | MediaPictureParams | undefined
332
- ) {
333
- if (!params) return;
334
- if (!pictureValue) return;
335
- if (pictureValue.variants.length <= 1) return;
336
- const mediaParams =
337
- typeof params === "object" && "default" in params ? params : undefined;
338
-
339
- if (mediaParams) {
340
- const sources = Object.keys(mediaParams ?? {});
341
- const variants = sources
342
- .map((source) => ({
343
- source,
344
- variant: getRenderedPictureVariant(
345
- mediaParams[source],
346
- pictureValue.variants
347
- ),
348
- }))
349
- .filter((x) => x.variant);
350
-
351
- return (
352
- <>
353
- This field rendering is using these variants:
354
- <table>
355
- {variants.map((v) => (
356
- <tr>
357
- <td>{v.source}</td>
358
- <td>
359
- <b>{v.variant.name}</b>
360
- </td>
361
- </tr>
362
- ))}
363
- </table>
364
- </>
365
- );
366
- }
367
- return (
368
- <>
369
- This field rendering is using the variant{" "}
370
- <b>
371
- {
372
- getRenderedPictureVariant(
373
- params as PictureParams,
374
- pictureValue.variants
375
- )?.name
376
- }
377
- .
378
- </b>
379
- </>
380
- );
381
- }
@@ -1,74 +0,0 @@
1
- import { Dialog } from "primereact/dialog";
2
-
3
- import { Workbox as WorkboxWidget } from "./sidebar/Workbox";
4
-
5
- import DialogButtons from "./DialogButtons";
6
- import { Button } from "primereact/button";
7
-
8
-
9
- export function PublishDialog({
10
- // lockItems,
11
- // unlockItems,
12
-
13
- visible,
14
- onHide,
15
- page,
16
- }: {
17
- // lockItems: (item: ItemDescriptor[]) => void;
18
- // unlockItems: (item: ItemDescriptor[]) => void;
19
- executeWorkflowCommand: (item: ItemDescriptor, commandId: string) => void;
20
- visible: boolean;
21
- onHide: () => void;
22
- page: Page;
23
- }) {
24
- const allUnlocked =
25
- page._editor!.workbox.items.filter((x) => x.hasLock).length > 0;
26
- const allInFinalState =
27
- page._editor!.workbox.items.filter((x) => !x.isFinalState).length > 0;
28
- return (
29
- <>
30
- <Dialog
31
- header={"Publish page " + page.name}
32
- style={{ width: "70vw", height: "70vh" }}
33
- onHide={onHide}
34
- visible={visible}
35
- >
36
- <div className="a-w-full a-h-full a-flex a-flex-col">
37
- <WorkboxWidget />
38
-
39
- <DialogButtons>
40
- {/* {allUnlocked && (
41
- <Button
42
- onClick={() => {
43
- unlockItems(
44
- page.workbox.items
45
- .filter((x) => x.hasLock)
46
- .map((x) => x.item)
47
- );
48
- }}
49
- size="small"
50
- >
51
- Unlock all
52
- </Button>
53
- )} */}
54
- {allInFinalState && (
55
- <Button size="small" onClick={() => {}}>
56
- Publish
57
- </Button>
58
- )}
59
- {!(allInFinalState || !allUnlocked) && (
60
- <Button
61
- onClick={() => {
62
- onHide();
63
- }}
64
- size="small"
65
- >
66
- Cancel
67
- </Button>
68
- )}
69
- </DialogButtons>
70
- </div>
71
- </Dialog>
72
- </>
73
- );
74
- }