@alpaca-headless/alpaca-headless-nextjs 1.0.129 → 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.
- package/dist/editor.css +439 -49
- package/dist/esm/alpacaContext.js +16 -0
- package/dist/esm/client-components/ClientLink.js +34 -0
- package/dist/{cjs/components → esm/client-components}/LinkEditor.js +22 -19
- package/dist/esm/client-components/MultiComponentEditor.js +22 -0
- package/dist/esm/client-components/index.js +4 -0
- package/dist/esm/components/Error.js +10 -0
- package/dist/{cjs → esm}/components/Image.js +4 -7
- package/dist/esm/components/Link.js +32 -0
- package/dist/esm/components/LinkPreview.js +30 -0
- package/dist/esm/components/LockedFieldIndicator.js +21 -0
- package/dist/esm/components/Picture.js +133 -0
- package/dist/esm/components/PictureEditor.js +77 -0
- package/dist/esm/components/PictureEditorWrapper.js +6 -0
- package/dist/esm/components/Placeholder.js +117 -0
- package/dist/esm/components/RichText.js +30 -0
- package/dist/esm/components/RichTextEditor.js +92 -0
- package/dist/esm/components/RichTextEditorWrapper.js +7 -0
- package/dist/esm/components/Slot.js +6 -0
- package/dist/esm/components/Text.js +29 -0
- package/dist/esm/components/TextEditor.js +78 -0
- package/dist/esm/components/TextEditorWrapper.js +19 -0
- package/dist/esm/components/Translate.js +12 -0
- package/dist/esm/components/TranslateEditor.js +24 -0
- package/dist/esm/components/index.js +7 -0
- package/dist/esm/components/picture-shared.js +26 -0
- package/dist/esm/editor/ComponentInfo.js +12 -0
- package/dist/esm/editor/ConfirmationDialog.js +29 -0
- package/dist/{cjs → esm}/editor/ContentTree.js +55 -46
- package/dist/esm/editor/ContextMenu.js +90 -0
- package/dist/esm/editor/DialogButtons.js +4 -0
- package/dist/esm/editor/DictionaryEditor.js +37 -0
- package/dist/esm/editor/EditFrame.js +115 -0
- package/dist/esm/editor/EditFrameWrapper.js +7 -0
- package/dist/esm/editor/Editor.js +15 -0
- package/dist/esm/editor/EditorClient.js +877 -0
- package/dist/esm/editor/EditorClientHost.js +15 -0
- package/dist/esm/editor/EditorWarning.js +10 -0
- package/dist/esm/editor/EditorWarnings.js +13 -0
- package/dist/esm/editor/FieldEditorPopup.js +23 -0
- package/dist/esm/editor/FieldList.js +48 -0
- package/dist/esm/editor/FieldListField.js +137 -0
- package/dist/{cjs → esm}/editor/FloatingToolbar.js +20 -23
- package/dist/esm/editor/ItemInfo.js +14 -0
- package/dist/esm/editor/ItemNameDialog.js +32 -0
- package/dist/esm/editor/LinkEditorDialog.js +61 -0
- package/dist/esm/editor/MainLayout.js +18 -0
- package/dist/esm/editor/MediaSelector.js +85 -0
- package/dist/esm/editor/Outline.js +82 -0
- package/dist/esm/editor/PageViewer.js +41 -0
- package/dist/esm/editor/PictureEditorDialog.js +201 -0
- package/dist/esm/editor/PlaceholderDropZone.js +130 -0
- package/dist/esm/editor/PlaceholderDropZoneHost.js +7 -0
- package/dist/esm/editor/PreviewClient.js +5 -0
- package/dist/esm/editor/PreviewClientHost.js +7 -0
- package/dist/esm/editor/PreviewPanel.js +7 -0
- package/dist/esm/editor/PublishDialog.js +15 -0
- package/dist/esm/editor/Terminal.js +55 -0
- package/dist/esm/editor/ai/AiPopup.js +28 -0
- package/dist/esm/editor/ai/AiResponseMessage.js +20 -0
- package/dist/{cjs/editor → esm/editor/ai}/AiTerminal.js +67 -48
- package/dist/esm/editor/ai/AiToolCall.js +15 -0
- package/dist/esm/editor/commands/commands.js +1 -0
- package/dist/esm/editor/commands/componentCommands.js +287 -0
- package/dist/esm/editor/commands/createVersionCommand.js +26 -0
- package/dist/esm/editor/commands/undo.js +22 -0
- package/dist/esm/editor/componentTreeHelper.js +20 -0
- package/dist/esm/editor/config/config.js +261 -0
- package/dist/esm/editor/editContext.js +11 -0
- package/dist/esm/editor/editor-warnings/ItemLocked.js +40 -0
- package/dist/esm/editor/editor-warnings/ValidationErrors.js +22 -0
- package/dist/esm/editor/fieldTypes/CheckboxEditor.js +21 -0
- package/dist/esm/editor/fieldTypes/DropLinkEditor.js +50 -0
- package/dist/esm/editor/fieldTypes/InternalLinkFieldEditor.js +41 -0
- package/dist/{cjs → esm}/editor/fieldTypes/LinkFieldEditor.js +14 -16
- package/dist/esm/editor/fieldTypes/MultiLineText.js +25 -0
- package/dist/esm/editor/fieldTypes/PictureFieldEditor.js +33 -0
- package/dist/esm/editor/fieldTypes/RawEditor.js +26 -0
- package/dist/esm/editor/fieldTypes/RichTextEditor.js +7 -0
- package/dist/esm/editor/fieldTypes/RichTextEditorComponent.js +46 -0
- package/dist/esm/editor/fieldTypes/SingleLineText.js +25 -0
- package/dist/esm/editor/fieldTypes/TreeListEditor.js +57 -0
- package/dist/esm/editor/index.js +4 -0
- package/dist/esm/editor/itemCommands.js +27 -0
- package/dist/esm/editor/menubar/BrowseHistory.js +39 -0
- package/dist/esm/editor/menubar/ItemLanguageVersion.js +20 -0
- package/dist/esm/editor/menubar/LanguageSelector.js +18 -0
- package/dist/esm/editor/menubar/Menu.js +105 -0
- package/dist/esm/editor/menubar/PageViewerControls.js +66 -0
- package/dist/esm/editor/menubar/VersionSelector.js +18 -0
- package/dist/esm/editor/previewContext.js +5 -0
- package/dist/esm/editor/services/contentService.js +58 -0
- package/dist/esm/editor/services/editService.js +428 -0
- package/dist/esm/editor/sidebar/ComponentPalette.js +42 -0
- package/dist/esm/editor/sidebar/ComponentTree.js +237 -0
- package/dist/esm/editor/sidebar/Debug.js +46 -0
- package/dist/esm/editor/sidebar/EditHistory.js +66 -0
- package/dist/esm/editor/sidebar/EditorForm.js +24 -0
- package/dist/esm/editor/sidebar/GraphQL.js +85 -0
- package/dist/esm/editor/sidebar/Insert.js +7 -0
- package/dist/esm/editor/sidebar/MainContentTree.js +38 -0
- package/dist/esm/editor/sidebar/Sessions.js +11 -0
- package/dist/esm/editor/sidebar/Sidebar.js +13 -0
- package/dist/esm/editor/sidebar/SidebarView.js +69 -0
- package/dist/esm/editor/sidebar/Workbox.js +77 -0
- package/dist/esm/editor/ui/CopyToClipboardButton.js +14 -0
- package/dist/esm/editor/ui/Icons.js +19 -0
- package/dist/esm/editor/ui/Section.js +8 -0
- package/dist/esm/editor/utils/insertOptions.js +39 -0
- package/dist/esm/editor/utils.js +71 -0
- package/dist/esm/editor/views/ItemEditor.js +18 -0
- package/dist/esm/fieldTypes.js +1 -0
- package/dist/esm/graphQL.js +50 -0
- package/dist/esm/graphQLTypes.js +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/{cjs → esm}/loadRouteData.js +23 -20
- package/dist/{cjs → esm}/mediaProtection.js +4 -11
- package/dist/esm/middleware/handleRequest.js +45 -0
- package/dist/esm/middleware/index.js +1 -0
- package/dist/esm/servertypes.js +1 -0
- package/dist/primereact/resources/themes/arya-blue/theme.css +854 -790
- package/dist/primereact/resources/themes/arya-green/theme.css +854 -790
- package/dist/primereact/resources/themes/arya-orange/theme.css +854 -790
- package/dist/primereact/resources/themes/arya-purple/theme.css +854 -790
- package/dist/primereact/resources/themes/bootstrap4-dark-blue/theme.css +678 -615
- package/dist/primereact/resources/themes/bootstrap4-dark-purple/theme.css +678 -615
- package/dist/primereact/resources/themes/bootstrap4-light-blue/theme.css +679 -616
- package/dist/primereact/resources/themes/bootstrap4-light-purple/theme.css +679 -616
- package/dist/primereact/resources/themes/fluent-light/theme.css +686 -638
- package/dist/primereact/resources/themes/lara-dark-amber/theme.css +679 -630
- package/dist/primereact/resources/themes/lara-dark-blue/theme.css +679 -630
- package/dist/primereact/resources/themes/lara-dark-cyan/theme.css +679 -630
- package/dist/primereact/resources/themes/lara-dark-green/theme.css +679 -630
- package/dist/primereact/resources/themes/lara-dark-indigo/theme.css +679 -630
- package/dist/primereact/resources/themes/lara-dark-pink/theme.css +679 -630
- package/dist/primereact/resources/themes/lara-dark-purple/theme.css +679 -630
- package/dist/primereact/resources/themes/lara-dark-teal/theme.css +679 -630
- package/dist/primereact/resources/themes/lara-light-amber/theme.css +776 -725
- package/dist/primereact/resources/themes/lara-light-blue/theme.css +1011 -960
- package/dist/primereact/resources/themes/lara-light-cyan/theme.css +776 -725
- package/dist/primereact/resources/themes/lara-light-green/theme.css +820 -769
- package/dist/primereact/resources/themes/lara-light-indigo/theme.css +1016 -965
- package/dist/primereact/resources/themes/lara-light-pink/theme.css +776 -725
- package/dist/primereact/resources/themes/lara-light-purple/theme.css +1016 -965
- package/dist/primereact/resources/themes/lara-light-teal/theme.css +776 -725
- package/dist/primereact/resources/themes/luna-amber/theme.css +950 -887
- package/dist/primereact/resources/themes/luna-blue/theme.css +950 -887
- package/dist/primereact/resources/themes/luna-green/theme.css +950 -887
- package/dist/primereact/resources/themes/luna-pink/theme.css +950 -887
- package/dist/primereact/resources/themes/md-dark-deeppurple/theme.css +918 -950
- package/dist/primereact/resources/themes/md-dark-indigo/theme.css +918 -950
- package/dist/primereact/resources/themes/md-light-deeppurple/theme.css +878 -910
- package/dist/primereact/resources/themes/md-light-indigo/theme.css +878 -910
- package/dist/primereact/resources/themes/mdc-dark-deeppurple/theme.css +918 -950
- package/dist/primereact/resources/themes/mdc-dark-indigo/theme.css +918 -950
- package/dist/primereact/resources/themes/mdc-light-deeppurple/theme.css +878 -910
- package/dist/primereact/resources/themes/mdc-light-indigo/theme.css +878 -910
- package/dist/primereact/resources/themes/mira/theme.css +1562 -1532
- package/dist/primereact/resources/themes/nano/theme.css +707 -641
- package/dist/primereact/resources/themes/nova/theme.css +705 -643
- package/dist/primereact/resources/themes/nova-accent/theme.css +701 -636
- package/dist/primereact/resources/themes/nova-alt/theme.css +705 -643
- package/dist/primereact/resources/themes/rhea/theme.css +876 -811
- package/dist/primereact/resources/themes/saga-blue/theme.css +896 -832
- package/dist/primereact/resources/themes/saga-green/theme.css +896 -832
- package/dist/primereact/resources/themes/saga-orange/theme.css +896 -832
- package/dist/primereact/resources/themes/saga-purple/theme.css +896 -832
- package/dist/primereact/resources/themes/soho-dark/theme.css +701 -643
- package/dist/primereact/resources/themes/soho-light/theme.css +690 -634
- package/dist/primereact/resources/themes/tailwind-light/theme.css +1370 -1306
- package/dist/primereact/resources/themes/vela-blue/theme.css +862 -798
- package/dist/primereact/resources/themes/vela-green/theme.css +862 -798
- package/dist/primereact/resources/themes/vela-orange/theme.css +862 -798
- package/dist/primereact/resources/themes/vela-purple/theme.css +862 -798
- package/dist/primereact/resources/themes/viva-dark/theme.css +655 -612
- package/dist/primereact/resources/themes/viva-light/theme.css +737 -694
- package/package.json +25 -22
- package/types/alpacaContext.d.ts +14 -8
- package/types/{components → client-components}/LinkEditor.d.ts +1 -1
- package/types/client-components/MultiComponentEditor.d.ts +4 -2
- package/types/client-components/index.d.ts +3 -2
- package/types/components/Image.d.ts +1 -0
- package/types/components/Link.d.ts +1 -0
- package/types/components/LinkPreview.d.ts +6 -0
- package/types/components/LockedFieldIndicator.d.ts +6 -0
- package/types/components/Picture.d.ts +4 -6
- package/types/components/PictureEditorWrapper.d.ts +3 -0
- package/types/components/Placeholder.d.ts +12 -11
- package/types/components/RichText.d.ts +2 -1
- package/types/components/RichTextEditor.d.ts +3 -290
- package/types/components/RichTextEditorWrapper.d.ts +2 -0
- package/types/components/Slot.d.ts +2 -1
- package/types/components/Text.d.ts +2 -1
- package/types/components/TextEditor.d.ts +3 -290
- package/types/components/TextEditorWrapper.d.ts +4 -0
- package/types/components/Translate.d.ts +1 -0
- package/types/components/picture-shared.d.ts +16 -0
- package/types/editor/ComponentInfo.d.ts +1 -1
- package/types/editor/ContentTree.d.ts +2 -2
- package/types/editor/ContextMenu.d.ts +14 -0
- package/types/editor/DictionaryEditor.d.ts +1 -4
- package/types/editor/EditFrameWrapper.d.ts +6 -0
- package/types/editor/Editor.d.ts +68 -5
- package/types/editor/EditorClient.d.ts +17 -5
- package/types/editor/EditorClientHost.d.ts +4 -2
- package/types/editor/EditorWarning.d.ts +6 -0
- package/types/editor/EditorWarnings.d.ts +9 -0
- package/types/editor/FieldEditorPopup.d.ts +10 -0
- package/types/editor/FieldList.d.ts +6 -2
- package/types/editor/FieldListField.d.ts +6 -2
- package/types/editor/ItemInfo.d.ts +1 -1
- package/types/editor/Outline.d.ts +11 -0
- package/types/editor/PageViewer.d.ts +1 -0
- package/types/editor/PictureEditorDialog.d.ts +4 -2
- package/types/editor/PlaceholderDropZone.d.ts +3 -2
- package/types/editor/PlaceholderDropZoneHost.d.ts +3 -2
- package/types/editor/PreviewClient.d.ts +4 -0
- package/types/editor/PreviewClientHost.d.ts +4 -0
- package/types/editor/PreviewPanel.d.ts +1 -0
- package/types/editor/PublishDialog.d.ts +7 -0
- package/types/editor/Terminal.d.ts +6 -2
- package/types/editor/{AiPopup.d.ts → ai/AiPopup.d.ts} +2 -3
- package/types/editor/ai/AiResponseMessage.d.ts +7 -0
- package/types/editor/ai/AiTerminal.d.ts +4 -0
- package/types/editor/ai/AiToolCall.d.ts +9 -0
- package/types/editor/commands/commands.d.ts +21 -0
- package/types/editor/commands/componentCommands.d.ts +5 -0
- package/types/editor/commands/createVersionCommand.d.ts +2 -0
- package/types/editor/commands/undo.d.ts +15 -0
- package/types/editor/componentTreeHelper.d.ts +2 -1
- package/types/editor/config/config.d.ts +2 -0
- package/types/editor/editContext.d.ts +70 -93
- package/types/editor/editor-warnings/ItemLocked.d.ts +2 -0
- package/types/editor/editor-warnings/ValidationErrors.d.ts +2 -0
- package/types/editor/fieldTypes/CheckboxEditor.d.ts +3 -2
- package/types/editor/fieldTypes/DropLinkEditor.d.ts +5 -0
- package/types/editor/fieldTypes/InternalLinkFieldEditor.d.ts +3 -2
- package/types/editor/fieldTypes/LinkFieldEditor.d.ts +3 -2
- package/types/editor/fieldTypes/MultiLineText.d.ts +3 -2
- package/types/editor/fieldTypes/PictureFieldEditor.d.ts +2 -1
- package/types/editor/fieldTypes/RawEditor.d.ts +5 -0
- package/types/editor/fieldTypes/RichTextEditor.d.ts +4 -3
- package/types/editor/fieldTypes/RichTextEditorComponent.d.ts +5 -0
- package/types/editor/fieldTypes/SingleLineText.d.ts +3 -2
- package/types/editor/fieldTypes/TreeListEditor.d.ts +2 -1
- package/types/editor/index.d.ts +2 -0
- package/types/editor/itemCommands.d.ts +3 -0
- package/types/editor/menubar/BrowseHistory.d.ts +4 -0
- package/types/editor/menubar/ItemLanguageVersion.d.ts +1 -0
- package/types/editor/menubar/LanguageSelector.d.ts +5 -0
- package/types/editor/menubar/Menu.d.ts +1 -0
- package/types/editor/menubar/PageViewerControls.d.ts +1 -0
- package/types/editor/menubar/VersionSelector.d.ts +5 -0
- package/types/editor/previewContext.d.ts +4 -0
- package/types/editor/{contentService.d.ts → services/contentService.d.ts} +2 -3
- package/types/editor/services/editService.d.ts +27 -0
- package/types/editor/sidebar/ComponentPalette.d.ts +1 -0
- package/types/editor/sidebar/ComponentTree.d.ts +1 -0
- package/types/editor/sidebar/Debug.d.ts +1 -0
- package/types/editor/sidebar/EditHistory.d.ts +1 -0
- package/types/editor/sidebar/EditorForm.d.ts +1 -0
- package/types/editor/sidebar/GraphQL.d.ts +1 -0
- package/types/editor/sidebar/Insert.d.ts +1 -0
- package/types/editor/sidebar/MainContentTree.d.ts +3 -0
- package/types/editor/sidebar/Sessions.d.ts +1 -0
- package/types/editor/sidebar/Sidebar.d.ts +4 -0
- package/types/editor/sidebar/SidebarView.d.ts +8 -0
- package/types/editor/sidebar/Workbox.d.ts +1 -0
- package/types/editor/ui/CopyToClipboardButton.d.ts +3 -0
- package/types/editor/ui/Icons.d.ts +16 -0
- package/types/editor/utils/insertOptions.d.ts +3 -0
- package/types/editor/utils.d.ts +8 -0
- package/types/editor/views/ItemEditor.d.ts +1 -0
- package/types/fieldTypes.d.ts +39 -11
- package/types/graphQL.d.ts +12 -0
- package/types/index.d.ts +4 -3
- package/types/loadRouteData.d.ts +7 -85
- package/types/middleware/handleRequest.d.ts +5 -0
- package/types/middleware/index.d.ts +1 -1
- package/types/servertypes.d.ts +306 -0
- package/dist/cjs/alpacaContext.js +0 -12
- package/dist/cjs/client-components/ClientLink.js +0 -36
- package/dist/cjs/client-components/MultiComponentEditor.js +0 -26
- package/dist/cjs/client-components/index.js +0 -19
- package/dist/cjs/components/Error.js +0 -15
- package/dist/cjs/components/Link.js +0 -36
- package/dist/cjs/components/Picture.js +0 -124
- package/dist/cjs/components/PictureEditor.js +0 -49
- package/dist/cjs/components/Placeholder.js +0 -118
- package/dist/cjs/components/RichText.js +0 -47
- package/dist/cjs/components/RichTextEditor.js +0 -94
- package/dist/cjs/components/Slot.js +0 -8
- package/dist/cjs/components/Text.js +0 -46
- package/dist/cjs/components/TextEditor.js +0 -77
- package/dist/cjs/components/Translate.js +0 -14
- package/dist/cjs/components/TranslateEditor.js +0 -28
- package/dist/cjs/components/index.js +0 -23
- package/dist/cjs/editor/AiPopup.js +0 -33
- package/dist/cjs/editor/ComponentInfo.js +0 -15
- package/dist/cjs/editor/ComponentPalette.js +0 -23
- package/dist/cjs/editor/ComponentTree.js +0 -217
- package/dist/cjs/editor/ConfirmationDialog.js +0 -31
- package/dist/cjs/editor/Debug.js +0 -26
- package/dist/cjs/editor/DialogButtons.js +0 -7
- package/dist/cjs/editor/DictionaryEditor.js +0 -41
- package/dist/cjs/editor/EditFrame.js +0 -129
- package/dist/cjs/editor/EditHistory.js +0 -43
- package/dist/cjs/editor/Editor.js +0 -27
- package/dist/cjs/editor/EditorClient.js +0 -753
- package/dist/cjs/editor/EditorClientHost.js +0 -37
- package/dist/cjs/editor/FieldList.js +0 -51
- package/dist/cjs/editor/FieldListField.js +0 -75
- package/dist/cjs/editor/GraphQL.js +0 -87
- package/dist/cjs/editor/ItemEditor.js +0 -9
- package/dist/cjs/editor/ItemInfo.js +0 -17
- package/dist/cjs/editor/ItemNameDialog.js +0 -37
- package/dist/cjs/editor/LanguageSelector.js +0 -21
- package/dist/cjs/editor/LinkEditorDialog.js +0 -67
- package/dist/cjs/editor/MainLayout.js +0 -24
- package/dist/cjs/editor/MediaSelector.js +0 -92
- package/dist/cjs/editor/PictureEditorDialog.js +0 -93
- package/dist/cjs/editor/PlaceholderDropZone.js +0 -93
- package/dist/cjs/editor/PlaceholderDropZoneHost.js +0 -37
- package/dist/cjs/editor/SidebarTabs.js +0 -47
- package/dist/cjs/editor/Terminal.js +0 -61
- package/dist/cjs/editor/Utils.js +0 -43
- package/dist/cjs/editor/VersionSelector.js +0 -21
- package/dist/cjs/editor/Workbox.js +0 -41
- package/dist/cjs/editor/componentCommands.js +0 -141
- package/dist/cjs/editor/componentTreeHelper.js +0 -18
- package/dist/cjs/editor/contentService.js +0 -80
- package/dist/cjs/editor/editContext.js +0 -40
- package/dist/cjs/editor/editService.js +0 -334
- package/dist/cjs/editor/fieldTypes/CheckboxEditor.js +0 -21
- package/dist/cjs/editor/fieldTypes/InternalLinkFieldEditor.js +0 -46
- package/dist/cjs/editor/fieldTypes/MultiLineText.js +0 -25
- package/dist/cjs/editor/fieldTypes/PictureFieldEditor.js +0 -19
- package/dist/cjs/editor/fieldTypes/RichTextEditor.js +0 -24
- package/dist/cjs/editor/fieldTypes/SingleLineText.js +0 -25
- package/dist/cjs/editor/fieldTypes/TreeListEditor.js +0 -59
- package/dist/cjs/editor/index.js +0 -18
- package/dist/cjs/editor/ui/Section.js +0 -8
- package/dist/cjs/fieldTypes.js +0 -2
- package/dist/cjs/graphQLTypes.js +0 -2
- package/dist/cjs/index.js +0 -36
- package/dist/cjs/layoutData.js +0 -2
- package/dist/cjs/middleware/authorization.js +0 -52
- package/dist/cjs/middleware/index.js +0 -17
- package/types/editor/AiTerminal.d.ts +0 -5
- package/types/editor/ComponentPalette.d.ts +0 -6
- package/types/editor/ComponentTree.d.ts +0 -5
- package/types/editor/Debug.d.ts +0 -6
- package/types/editor/EditHistory.d.ts +0 -4
- package/types/editor/GraphQL.d.ts +0 -5
- package/types/editor/ItemEditor.d.ts +0 -4
- package/types/editor/LanguageSelector.d.ts +0 -5
- package/types/editor/SidebarTabs.d.ts +0 -8
- package/types/editor/Utils.d.ts +0 -3
- package/types/editor/VersionSelector.d.ts +0 -5
- package/types/editor/Workbox.d.ts +0 -6
- package/types/editor/componentCommands.d.ts +0 -4
- package/types/editor/editService.d.ts +0 -20
- package/types/layoutData.d.ts +0 -92
- package/types/middleware/authorization.d.ts +0 -2
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
"use client";
|
|
3
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -9,33 +8,33 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
9
|
});
|
|
11
10
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
11
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
import { useEffect, useRef, useState } from "react";
|
|
13
|
+
import { TerminalService } from "primereact/terminalservice";
|
|
14
|
+
import { useRouter, useSearchParams } from "next/navigation";
|
|
15
|
+
import { Terminal } from "../Terminal";
|
|
16
|
+
import { useEditContext } from "../editContext";
|
|
17
|
+
import { Dropdown } from "primereact/dropdown";
|
|
18
|
+
import { getSelectedText } from "../utils";
|
|
19
|
+
import Cookies from "universal-cookie";
|
|
20
|
+
import { WizardIcon } from "../ui/Icons";
|
|
21
|
+
import { AiResponseMessage } from "./AiResponseMessage";
|
|
22
|
+
export function AiTerminal({ closeButton }) {
|
|
23
|
+
const searchParams = useSearchParams();
|
|
24
|
+
const editContext = useEditContext();
|
|
25
|
+
const [showPredefined, setShowPredefined] = useState(false);
|
|
25
26
|
if (!editContext)
|
|
26
27
|
return null;
|
|
27
|
-
const [messages, setMessages] =
|
|
28
|
-
const [response, setResponse] =
|
|
29
|
-
const [model, setModel] =
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const messagesRef = (0, react_1.useRef)(messages);
|
|
35
|
-
(0, react_1.useEffect)(() => {
|
|
28
|
+
const [messages, setMessages] = useState([]);
|
|
29
|
+
const [response, setResponse] = useState();
|
|
30
|
+
const [model, setModel] = useState("gpt-3.5-turbo-0125");
|
|
31
|
+
const [prompt, setPrompt] = useState("");
|
|
32
|
+
const selection = editContext.selection;
|
|
33
|
+
const messagesRef = useRef(messages);
|
|
34
|
+
useEffect(() => {
|
|
36
35
|
messagesRef.current = messages;
|
|
37
36
|
}, [messages]);
|
|
38
|
-
const router =
|
|
37
|
+
const router = useRouter();
|
|
39
38
|
function commandHandler(text, callback) {
|
|
40
39
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
40
|
const newMessages = [
|
|
@@ -43,30 +42,29 @@ function AiTerminal({ selection, newEditOperations, }) {
|
|
|
43
42
|
{ content: text, role: "user", name: "user" },
|
|
44
43
|
];
|
|
45
44
|
let lastOps = 0;
|
|
46
|
-
const
|
|
45
|
+
const selectedText = getSelectedText();
|
|
46
|
+
const response = yield executePrompt(newMessages, selection, editContext.sessionId, searchParams.get("itemid"), searchParams.get("language"), searchParams.get("version"), model, selectedText, (response) => {
|
|
47
47
|
setResponse(response);
|
|
48
48
|
handleResponse(response, callback, false);
|
|
49
49
|
if (response.editOperations.length) {
|
|
50
|
-
if (newEditOperations)
|
|
51
|
-
newEditOperations(response.editOperations);
|
|
52
50
|
if (lastOps != response.editOperations.length) {
|
|
53
51
|
lastOps = response.editOperations.length;
|
|
54
52
|
editContext.requestRefresh("immediate");
|
|
55
53
|
}
|
|
56
54
|
else {
|
|
57
55
|
response.editOperations.forEach((op) => {
|
|
56
|
+
var _a;
|
|
58
57
|
if (op.type === "edit-field") {
|
|
59
58
|
const editFieldOp = op;
|
|
60
59
|
const liveField = editContext.getLiveFieldIfExists({
|
|
61
|
-
|
|
62
|
-
item:
|
|
63
|
-
id: editFieldOp.itemId,
|
|
64
|
-
language: editFieldOp.language,
|
|
65
|
-
version: editFieldOp.version,
|
|
66
|
-
},
|
|
60
|
+
fieldId: editFieldOp.fieldId,
|
|
61
|
+
item: editFieldOp.item,
|
|
67
62
|
});
|
|
68
|
-
if (liveField != null)
|
|
63
|
+
if (liveField != null) {
|
|
69
64
|
liveField.value = editFieldOp.value;
|
|
65
|
+
liveField._editor.rawValue = editFieldOp.value;
|
|
66
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.setFocusedField((_a = liveField._editor) === null || _a === void 0 ? void 0 : _a.descriptor, false);
|
|
67
|
+
}
|
|
70
68
|
}
|
|
71
69
|
});
|
|
72
70
|
}
|
|
@@ -74,6 +72,7 @@ function AiTerminal({ selection, newEditOperations, }) {
|
|
|
74
72
|
});
|
|
75
73
|
if (response) {
|
|
76
74
|
handleResponse(response, callback, true);
|
|
75
|
+
//if (newEditOperations) newEditOperations(response.editOperations);
|
|
77
76
|
router.refresh();
|
|
78
77
|
}
|
|
79
78
|
// if (response) {
|
|
@@ -97,24 +96,34 @@ function AiTerminal({ selection, newEditOperations, }) {
|
|
|
97
96
|
// }
|
|
98
97
|
// // else
|
|
99
98
|
// // TerminalService.emit('clear');
|
|
99
|
+
setResponse(response ? response : undefined);
|
|
100
100
|
setMessages(newMessages);
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
TerminalService.on("command", commandHandler);
|
|
105
105
|
return () => {
|
|
106
|
-
|
|
106
|
+
TerminalService.off("command", commandHandler);
|
|
107
107
|
};
|
|
108
108
|
}, []);
|
|
109
|
-
return ((
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
109
|
+
return (_jsx("div", { className: "a-h-full a-flex a-flex-col a-relative a-flex-1", children: _jsx("div", { className: "a-flex-1 a-relative", children: _jsx("div", { className: "a-inset-0 a-absolute", children: _jsx(Terminal, { onReset: () => {
|
|
110
|
+
setMessages([]);
|
|
111
|
+
setResponse(undefined);
|
|
112
|
+
}, infobar: (response === null || response === void 0 ? void 0 : response.numInputTokens) && (_jsxs("div", { className: "a-text-gray-400 a-text-right", style: { fontSize: "10px" }, children: ["Tokens in: ", response === null || response === void 0 ? void 0 : response.numInputTokens, " out:", " ", response === null || response === void 0 ? void 0 : response.numOutputTokens, " ", response === null || response === void 0 ? void 0 : response.state, " "] })), prompt: prompt, setPrompt: setPrompt, statusbar: _jsxs("div", { className: "a-flex a-items-center a-justify-between a-gap-1", children: [_jsxs("a", { className: "a-text-xs a-text-blue-300 a-cursor-pointer a-flex a-items-center a-gap-1", onClick: () => {
|
|
113
|
+
setShowPredefined(!showPredefined);
|
|
114
|
+
}, children: [_jsx(WizardIcon, { className: "a-w-5 a-h-5" }), "Predefined prompts"] }), showPredefined && (_jsx("div", { className: "a-absolute a-right-0 a-left-0 a-bottom-8 a-text-sm a-overflow-y-auto a-bg-white a-p-3 a-pb-1 a-flex a-flex-col a-gap-1 ", children: editContext.editData.aiPrompts.map((p, index) => (_jsx("div", { className: "a-p-1.5 a-mb-1 a-border a-border-gray-200 a-rounded-lg a-cursor-pointer a-text-gray-700 a-text-xs", onClick: () => {
|
|
115
|
+
setPrompt(p.prompt);
|
|
116
|
+
setShowPredefined(false);
|
|
117
|
+
}, children: p.title }, index))) }))] }), toolbar: _jsxs("div", { className: "a-flex a-items-center", children: [_jsx(Dropdown, { className: "a-text-sm", value: model, onChange: (e) => setModel(e.value), options: [
|
|
118
|
+
"gpt-3.5-turbo-0125",
|
|
119
|
+
"gpt-4-0125-preview",
|
|
120
|
+
"gpt-3.5-turbo-1106",
|
|
121
|
+
"gpt-4-1106-preview",
|
|
122
|
+
] }), closeButton] }), commandHandler: (v, callback) => {
|
|
123
|
+
commandHandler(v, callback);
|
|
124
|
+
} }) }) }) }));
|
|
115
125
|
}
|
|
116
|
-
|
|
117
|
-
function prompt(messages, selection, session, itemid, language, version, model, callback) {
|
|
126
|
+
function executePrompt(messages, selection, session, itemid, language, version, model, selectedText, callback) {
|
|
118
127
|
return __awaiter(this, void 0, void 0, function* () {
|
|
119
128
|
const response = yield fetch("/alpaca/headless/ai/prompt", {
|
|
120
129
|
method: "POST",
|
|
@@ -124,13 +133,14 @@ function prompt(messages, selection, session, itemid, language, version, model,
|
|
|
124
133
|
language,
|
|
125
134
|
version,
|
|
126
135
|
selection,
|
|
136
|
+
selectedText,
|
|
127
137
|
model,
|
|
128
138
|
sessionId: session,
|
|
129
139
|
}),
|
|
130
|
-
credentials: "
|
|
140
|
+
credentials: "include",
|
|
131
141
|
headers: {
|
|
132
142
|
"Content-Type": "application/json",
|
|
133
|
-
|
|
143
|
+
Cookie: new Cookies().getAll(),
|
|
134
144
|
},
|
|
135
145
|
next: {
|
|
136
146
|
revalidate: 0,
|
|
@@ -181,5 +191,14 @@ function prompt(messages, selection, session, itemid, language, version, model,
|
|
|
181
191
|
});
|
|
182
192
|
}
|
|
183
193
|
function handleResponse(response, terminalCallback, isFinished) {
|
|
184
|
-
|
|
194
|
+
var _a;
|
|
195
|
+
const toolcalls = ((_a = response === null || response === void 0 ? void 0 : response.toolCalls) === null || _a === void 0 ? void 0 : _a.map((tool_call) => {
|
|
196
|
+
var _a, _b;
|
|
197
|
+
return {
|
|
198
|
+
func: (_a = tool_call.function) === null || _a === void 0 ? void 0 : _a.name,
|
|
199
|
+
arguments: (_b = tool_call.function) === null || _b === void 0 ? void 0 : _b.arguments,
|
|
200
|
+
result: tool_call.result,
|
|
201
|
+
};
|
|
202
|
+
})) || [];
|
|
203
|
+
terminalCallback(_jsx(AiResponseMessage, { responseText: response.responseText, toolcalls: toolcalls, editOperations: response.editOperations }), isFinished);
|
|
185
204
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { JsonView, defaultStyles } from "react-json-view-lite";
|
|
4
|
+
export function AiToolCall({ toolCall }) {
|
|
5
|
+
const [expanded, setExpaded] = useState(false);
|
|
6
|
+
return (_jsxs("div", { className: "a-mt-2", children: [_jsxs("div", { onClick: () => setExpaded(!expanded), className: "a-flex a-items-center a-cursor-pointer", children: [_jsx("i", { className: "pi pi-angle-right" }), " ", toolCall.func] }), expanded && (_jsxs("div", { className: "a-ml-4", children: [_jsx("div", { className: "a-italic", children: "Args:" }), _jsx("div", { children: renderJsonOrText(toolCall.arguments) }), _jsx("div", { className: "a-italic a-mt-1", children: "Result:" }), _jsxs("div", { className: "a-mb-4", children: [toolCall.error && (_jsx("div", { className: "a-text-red", children: toolCall.error })), renderJsonOrText(toolCall.result)] })] }))] }));
|
|
7
|
+
}
|
|
8
|
+
function renderJsonOrText(json) {
|
|
9
|
+
try {
|
|
10
|
+
return _jsx(JsonView, { data: JSON.parse(json), style: defaultStyles });
|
|
11
|
+
}
|
|
12
|
+
catch (e) {
|
|
13
|
+
return _jsx("div", { children: json });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { confirmDialog } from "primereact/confirmdialog";
|
|
11
|
+
import uuid from "react-uuid";
|
|
12
|
+
import { getComponentById } from "../componentTreeHelper";
|
|
13
|
+
const isPlaceholder = (x) => x.components !== undefined;
|
|
14
|
+
export function getSelectedComponentCommands(editContext) {
|
|
15
|
+
const selection = editContext.selection;
|
|
16
|
+
const selectedComponents = selection
|
|
17
|
+
.map((x) => getComponentById(x, editContext.page))
|
|
18
|
+
.filter((x) => x);
|
|
19
|
+
const componentCommands = getComponentCommands(selectedComponents, editContext);
|
|
20
|
+
const componentCommandMenuItems = componentCommands.filter((x) => x.visibilityScopes.indexOf("menu") >= 0);
|
|
21
|
+
return componentCommandMenuItems;
|
|
22
|
+
}
|
|
23
|
+
export function getComponentCommands(entities, editContext) {
|
|
24
|
+
const components = entities.filter((x) => x && !isPlaceholder(x));
|
|
25
|
+
const commands = [
|
|
26
|
+
getInsertCommand(components, editContext),
|
|
27
|
+
getDeleteCommand(components, editContext),
|
|
28
|
+
getDuplicateCommand(components, editContext),
|
|
29
|
+
getSyncCommand(entities, editContext),
|
|
30
|
+
getAiCommand(editContext),
|
|
31
|
+
getDesignCommand(components, editContext),
|
|
32
|
+
getLinkToMasterCommand(components, editContext),
|
|
33
|
+
getInheritChildrenFromMasterCommand(components, editContext),
|
|
34
|
+
];
|
|
35
|
+
return commands.filter((x) => x !== null);
|
|
36
|
+
}
|
|
37
|
+
function getInsertCommand(components, editContext) {
|
|
38
|
+
if (components.length !== 1 || isPlaceholder(components[0]))
|
|
39
|
+
return null;
|
|
40
|
+
if (components[0].placeholders.length == 0)
|
|
41
|
+
return null;
|
|
42
|
+
return {
|
|
43
|
+
id: "insert",
|
|
44
|
+
icon: "pi pi-plus",
|
|
45
|
+
label: "Insert component",
|
|
46
|
+
visibilityScopes: ["editFrame", "contextMenu"],
|
|
47
|
+
execute: (ev) => {
|
|
48
|
+
editContext.setSelectedForInsertion(components[0].id);
|
|
49
|
+
ev.stopPropagation();
|
|
50
|
+
ev.preventDefault();
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function getDuplicateCommand(components, editContext) {
|
|
55
|
+
if (components.length < 1)
|
|
56
|
+
return null;
|
|
57
|
+
return {
|
|
58
|
+
id: "duplicate",
|
|
59
|
+
icon: "pi pi-copy",
|
|
60
|
+
label: "Duplicate",
|
|
61
|
+
visibilityScopes: ["contextMenu", "menu"],
|
|
62
|
+
execute: (ev) => {
|
|
63
|
+
var _a;
|
|
64
|
+
if (!((_a = components[0]._editor.placeholderReference) === null || _a === void 0 ? void 0 : _a.parentComponent))
|
|
65
|
+
return null;
|
|
66
|
+
editContext.duplicateComponents({
|
|
67
|
+
componentIds: components.map((x) => x.id),
|
|
68
|
+
parent: components[0]._editor.placeholderReference.parentComponent,
|
|
69
|
+
placeholderName: components[0]._editor.placeholderReference.key,
|
|
70
|
+
});
|
|
71
|
+
ev.stopPropagation();
|
|
72
|
+
ev.preventDefault();
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function getAiCommand(editContext) {
|
|
77
|
+
return {
|
|
78
|
+
name: "ai",
|
|
79
|
+
icon: "pi pi-comments",
|
|
80
|
+
label: "AI",
|
|
81
|
+
disabled: () => false,
|
|
82
|
+
execute: (context) => __awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
const event = context.event;
|
|
84
|
+
editContext.showAiPopup(event);
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
event.stopPropagation();
|
|
87
|
+
}),
|
|
88
|
+
visibilityScopes: ["editFrame", "contextMenu"],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function getDesignCommand(components, editContext) {
|
|
92
|
+
if (components.length !== 1 || isPlaceholder(components[0]))
|
|
93
|
+
return null;
|
|
94
|
+
if (!Object.values(components[0].fields).find((x) => { var _a; return ((_a = x._editor) === null || _a === void 0 ? void 0 : _a.section) === "Design"; }))
|
|
95
|
+
return null;
|
|
96
|
+
return {
|
|
97
|
+
name: "design",
|
|
98
|
+
icon: "pi pi-palette",
|
|
99
|
+
label: "Design",
|
|
100
|
+
disabled: () => false,
|
|
101
|
+
execute: (context) => __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
editContext.showFieldEditorPopup(components[0].fields, ["Design"], context.event);
|
|
103
|
+
}),
|
|
104
|
+
visibilityScopes: ["menu", "editFrame", "contextMenu"],
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function getLinkToMasterCommand(components, editContext) {
|
|
108
|
+
var _a, _b, _c;
|
|
109
|
+
if (!components.length)
|
|
110
|
+
return null;
|
|
111
|
+
if (((_c = (_b = (_a = editContext.page) === null || _a === void 0 ? void 0 : _a._editor) === null || _b === void 0 ? void 0 : _b.masterLanguages) === null || _c === void 0 ? void 0 : _c.length) === 0)
|
|
112
|
+
return null;
|
|
113
|
+
return getCheckboxCommand(components, editContext, "componentLinkedToMasterLanguage", "Linked To Master Language");
|
|
114
|
+
}
|
|
115
|
+
function getCheckboxCommand(components, editContext, fieldName, label) {
|
|
116
|
+
const someLinked = components.find((x) => { var _a, _b; return ((_b = (_a = x.fields[fieldName]) === null || _a === void 0 ? void 0 : _a._editor) === null || _b === void 0 ? void 0 : _b.rawValue) === "1"; });
|
|
117
|
+
const allLinked = !components.find((x) => { var _a, _b; return ((_b = (_a = x.fields[fieldName]) === null || _a === void 0 ? void 0 : _a._editor) === null || _b === void 0 ? void 0 : _b.rawValue) !== "1"; });
|
|
118
|
+
return {
|
|
119
|
+
name: fieldName,
|
|
120
|
+
icon: "pi pi-" +
|
|
121
|
+
(allLinked ? "check-square" : someLinked ? "stop-circle" : "stop"),
|
|
122
|
+
label,
|
|
123
|
+
disabled: () => false,
|
|
124
|
+
execute: () => __awaiter(this, void 0, void 0, function* () {
|
|
125
|
+
components.forEach((c) => {
|
|
126
|
+
editContext.editField({
|
|
127
|
+
field: c.fields[fieldName],
|
|
128
|
+
rawValue: allLinked ? "" : "1",
|
|
129
|
+
refresh: "immediate",
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}),
|
|
133
|
+
visibilityScopes: ["menu", "contextMenu"],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function getInheritChildrenFromMasterCommand(components, editContext) {
|
|
137
|
+
var _a, _b, _c;
|
|
138
|
+
if (!components.length)
|
|
139
|
+
return null;
|
|
140
|
+
if (((_c = (_b = (_a = editContext.page) === null || _a === void 0 ? void 0 : _a._editor) === null || _b === void 0 ? void 0 : _b.masterLanguages) === null || _c === void 0 ? void 0 : _c.length) === 0)
|
|
141
|
+
return null;
|
|
142
|
+
if (components.find((x) => x.placeholders.length === 0))
|
|
143
|
+
return null;
|
|
144
|
+
return getCheckboxCommand(components, editContext, "inheritChildrenFromMasterLanguage", "Inherit Children From Master");
|
|
145
|
+
}
|
|
146
|
+
function isLocked(c, editContext) {
|
|
147
|
+
if (editContext.activeSessions.find((x) => {
|
|
148
|
+
var _a;
|
|
149
|
+
return ((_a = x.fieldLock) === null || _a === void 0 ? void 0 : _a.item.id) === c.id &&
|
|
150
|
+
x.fieldLock.item.language == c.language &&
|
|
151
|
+
x.fieldLock.item.version === c.version &&
|
|
152
|
+
x.sessionId !== editContext.sessionId;
|
|
153
|
+
}) !== undefined) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
else
|
|
157
|
+
return (c.placeholders.find((x) => x.components.find((child) => isLocked(child, editContext)) !==
|
|
158
|
+
undefined) !== undefined);
|
|
159
|
+
}
|
|
160
|
+
function getDeleteCommand(components, editContext) {
|
|
161
|
+
const applicableComponents = components.filter((c) => {
|
|
162
|
+
var _a, _b, _c, _d;
|
|
163
|
+
return ((!isPlaceholder(c) && !((_a = c._editor) === null || _a === void 0 ? void 0 : _a.hostingPageItem)) ||
|
|
164
|
+
((_c = (_b = c._editor) === null || _b === void 0 ? void 0 : _b.hostingPageItem) === null || _c === void 0 ? void 0 : _c.id) === ((_d = editContext.page) === null || _d === void 0 ? void 0 : _d.id)) &&
|
|
165
|
+
!isLocked(c, editContext);
|
|
166
|
+
});
|
|
167
|
+
if (applicableComponents.length === 0)
|
|
168
|
+
return null;
|
|
169
|
+
return {
|
|
170
|
+
name: "delete",
|
|
171
|
+
label: "Delete",
|
|
172
|
+
icon: "pi pi-fw pi-trash",
|
|
173
|
+
execute: (context) => __awaiter(this, void 0, void 0, function* () { return deleteComponents(applicableComponents, context.editContext); }),
|
|
174
|
+
disabled: () => applicableComponents.length === 0 ||
|
|
175
|
+
applicableComponents.length !== components.length,
|
|
176
|
+
visibilityScopes: ["editFrame", "menu", "contextMenu"],
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
function canSynchronize(placeholderData) {
|
|
180
|
+
var _a;
|
|
181
|
+
if ((_a = placeholderData._editor) === null || _a === void 0 ? void 0 : _a.canSynchronize)
|
|
182
|
+
return true;
|
|
183
|
+
placeholderData.components.forEach((c) => {
|
|
184
|
+
if (c.placeholders.find((x) => canSynchronize(x)))
|
|
185
|
+
return true;
|
|
186
|
+
});
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
function getSyncCommand(components, editContext) {
|
|
190
|
+
var _a, _b;
|
|
191
|
+
const placeholders = [];
|
|
192
|
+
for (const component of components) {
|
|
193
|
+
if (isPlaceholder(component) && canSynchronize(component)) {
|
|
194
|
+
placeholders.push({
|
|
195
|
+
item: component.parentComponent
|
|
196
|
+
? getItemDescriptor(component.parentComponent, editContext)
|
|
197
|
+
: undefined,
|
|
198
|
+
name: component.name,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
if ((_a = component.placeholders) === null || _a === void 0 ? void 0 : _a.find((x) => canSynchronize(x))) {
|
|
203
|
+
placeholders.push({
|
|
204
|
+
item: getItemDescriptor(component, editContext),
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const canSync = placeholders.length > 0 ||
|
|
210
|
+
(components.length === 0 &&
|
|
211
|
+
((_b = editContext.page) === null || _b === void 0 ? void 0 : _b.placeholders.find((x) => canSynchronize(x))));
|
|
212
|
+
return {
|
|
213
|
+
name: "synchronize",
|
|
214
|
+
label: "Synchronize",
|
|
215
|
+
icon: "pi pi-fw pi-sync",
|
|
216
|
+
disabled: () => !canSync,
|
|
217
|
+
visibilityScopes: ["menu", "editFrame", "contextMenu"],
|
|
218
|
+
execute: () => __awaiter(this, void 0, void 0, function* () {
|
|
219
|
+
const op = {
|
|
220
|
+
type: "synchronize-components",
|
|
221
|
+
date: new Date().toISOString(),
|
|
222
|
+
delete: false,
|
|
223
|
+
id: uuid(),
|
|
224
|
+
placeholders: placeholders,
|
|
225
|
+
pageItem: getPageItemDescriptor(editContext),
|
|
226
|
+
description: "Synchronize components",
|
|
227
|
+
};
|
|
228
|
+
editContext.executeEditOperation(op);
|
|
229
|
+
}),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function getItemDescriptors(components, editContext) {
|
|
233
|
+
const items = components
|
|
234
|
+
.map((c) => getItemDescriptor(c, editContext))
|
|
235
|
+
.flatMap((f) => (f ? [f] : []));
|
|
236
|
+
return items;
|
|
237
|
+
}
|
|
238
|
+
function deleteComponents(components, editContext) {
|
|
239
|
+
const items = getItemDescriptors(components, editContext);
|
|
240
|
+
if (!items.length)
|
|
241
|
+
return;
|
|
242
|
+
confirmDialog({
|
|
243
|
+
message: (items.length > 1
|
|
244
|
+
? "Are you sure you want to remove these components? "
|
|
245
|
+
: "Are you sure you want to remove this component? ") +
|
|
246
|
+
items.map((x) => x.name).join(", "),
|
|
247
|
+
header: items.length > 1 ? "Remove components" : "Remove component",
|
|
248
|
+
icon: "pi pi-exclamation-triangle",
|
|
249
|
+
accept: () => {
|
|
250
|
+
const op = {
|
|
251
|
+
type: "remove-component",
|
|
252
|
+
date: new Date().toISOString(),
|
|
253
|
+
id: uuid(),
|
|
254
|
+
components: items,
|
|
255
|
+
pageItem: getPageItemDescriptor(editContext),
|
|
256
|
+
description: "Remove components: " + items.map((x) => x.name).join(", "),
|
|
257
|
+
};
|
|
258
|
+
editContext.executeEditOperation(op);
|
|
259
|
+
components.forEach((c) => {
|
|
260
|
+
if (c)
|
|
261
|
+
c._editor.isRemoved = true;
|
|
262
|
+
});
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function getItemDescriptor(component, editContext) {
|
|
267
|
+
var _a, _b;
|
|
268
|
+
if (component.type === "page")
|
|
269
|
+
return {
|
|
270
|
+
id: component.id,
|
|
271
|
+
language: component.language,
|
|
272
|
+
version: component.version,
|
|
273
|
+
};
|
|
274
|
+
return {
|
|
275
|
+
id: component.id,
|
|
276
|
+
language: ((_a = component._editor.hostingPageItem) === null || _a === void 0 ? void 0 : _a.language) || editContext.page.language,
|
|
277
|
+
version: ((_b = component._editor.hostingPageItem) === null || _b === void 0 ? void 0 : _b.version) || editContext.page.version,
|
|
278
|
+
name: component.name,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
function getPageItemDescriptor(editContext) {
|
|
282
|
+
return {
|
|
283
|
+
id: editContext.page.id,
|
|
284
|
+
language: editContext.page.language,
|
|
285
|
+
version: editContext.page.version,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { createVersion } from "../services/editService";
|
|
11
|
+
import { getItemDescriptor } from "../utils";
|
|
12
|
+
export function getCreateAndSwitchToNewVersionCommand() {
|
|
13
|
+
return {
|
|
14
|
+
name: "createAndSwitchToNewVersion",
|
|
15
|
+
execute: execute,
|
|
16
|
+
label: "Add Version",
|
|
17
|
+
icon: "pi pi-fw pi-plus",
|
|
18
|
+
disabled: (context) => !context.editContext.item._editor.canLock,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function execute(context) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
yield createVersion(getItemDescriptor(context.editContext.item), context.editContext.sessionId);
|
|
24
|
+
context.editContext.loadItem(Object.assign(Object.assign({}, context.editContext.item), { version: context.editContext.item.version + 1 }));
|
|
25
|
+
});
|
|
26
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function getUndoCommand() {
|
|
2
|
+
return {
|
|
3
|
+
name: "undo",
|
|
4
|
+
label: "Undo",
|
|
5
|
+
icon: "pi pi-fw pi-undo",
|
|
6
|
+
execute: (context) => context.editContext.undo(),
|
|
7
|
+
disabled: (context) => context.editContext.editHistory.length === 0 ||
|
|
8
|
+
!context.editContext.editHistory.find((x) => x.sessionId === context.editContext.sessionId && x.canUndo),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function getRedoCommand() {
|
|
12
|
+
return {
|
|
13
|
+
name: "redo",
|
|
14
|
+
label: "Redo",
|
|
15
|
+
icon: "pi pi-fw pi-refresh",
|
|
16
|
+
execute: (context) => context.editContext.redo(),
|
|
17
|
+
disabled: (context) => {
|
|
18
|
+
return (context.editContext.editHistory.length === 0 ||
|
|
19
|
+
!context.editContext.editHistory.find((x) => x.sessionId === context.editContext.sessionId && x.canRedo));
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function findComponent(id, placeholders) {
|
|
2
|
+
var _a;
|
|
3
|
+
for (const p of placeholders) {
|
|
4
|
+
for (const c of p.components) {
|
|
5
|
+
if (c.id === id || ((_a = c._editor.linkedComponentItem) === null || _a === void 0 ? void 0 : _a.id) === id) {
|
|
6
|
+
return c;
|
|
7
|
+
}
|
|
8
|
+
const match = findComponent(id, c.placeholders);
|
|
9
|
+
if (match) {
|
|
10
|
+
return match;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
export function getComponentById(id, page) {
|
|
17
|
+
if (!page)
|
|
18
|
+
return null;
|
|
19
|
+
return findComponent(id, page.placeholders);
|
|
20
|
+
}
|