@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
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useContext, useEffect, useRef } from "react";
|
|
3
|
+
import { useEditContext } from "./editContext";
|
|
4
|
+
const OutlineContext = React.createContext(undefined);
|
|
5
|
+
export const useOutlineContext = () => useContext(OutlineContext);
|
|
6
|
+
export const OutlineContextProvider = OutlineContext.Provider;
|
|
7
|
+
export function Outline({ children, editorContainerRef, }) {
|
|
8
|
+
var _a;
|
|
9
|
+
const editContext = useEditContext();
|
|
10
|
+
const [scale, setScale] = React.useState(1);
|
|
11
|
+
const outlineRef = useRef(null);
|
|
12
|
+
const outlineContainerRef = useRef(null);
|
|
13
|
+
const outlineWidth = (editContext === null || editContext === void 0 ? void 0 : editContext.configuration.outline.width) || 100;
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
var _a;
|
|
16
|
+
const viewport = editContext === null || editContext === void 0 ? void 0 : editContext.pageView.viewport;
|
|
17
|
+
if (!viewport)
|
|
18
|
+
return;
|
|
19
|
+
const width = viewport.width;
|
|
20
|
+
const scaleX = outlineWidth / width;
|
|
21
|
+
const scaleY = viewport.height / ((_a = editorContainerRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight);
|
|
22
|
+
const newScale = Math.min(scaleX, scaleY, 1);
|
|
23
|
+
setScale(newScale);
|
|
24
|
+
}, [
|
|
25
|
+
editorContainerRef,
|
|
26
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.windowSize,
|
|
27
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.pageView.zoom,
|
|
28
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.pageView.viewport,
|
|
29
|
+
]);
|
|
30
|
+
if (!editContext) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const scrollDocumentTo = (y) => {
|
|
34
|
+
var _a;
|
|
35
|
+
if (!editorContainerRef.current)
|
|
36
|
+
return;
|
|
37
|
+
if (!outlineRef.current)
|
|
38
|
+
return;
|
|
39
|
+
const rect = outlineRef.current.getBoundingClientRect();
|
|
40
|
+
(_a = editorContainerRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({
|
|
41
|
+
top: (y - rect.y) / scale,
|
|
42
|
+
behavior: "smooth",
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
const scrollHeight = (_a = editorContainerRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeight;
|
|
46
|
+
const scrollTop = editContext.pageView.scroll;
|
|
47
|
+
const viewport = editContext.pageView.viewport;
|
|
48
|
+
return (_jsxs("div", { className: "a-absolute", ref: outlineContainerRef, style: {
|
|
49
|
+
right: "2px",
|
|
50
|
+
top: "0",
|
|
51
|
+
width: outlineWidth + "px",
|
|
52
|
+
boxShadow: "5px 0 5px -5px #333",
|
|
53
|
+
}, children: [_jsx("div", { className: "a-fixed a-bg-opacity-50 a-overflow-hidden a-select-none", style: {
|
|
54
|
+
width: outlineWidth + "px",
|
|
55
|
+
padding: "0 6px",
|
|
56
|
+
boxShadow: "rgb(200, 200, 200) -10px 1px 13px -10px",
|
|
57
|
+
}, children: _jsx("div", { ref: outlineRef, onDragOverCapture: (e) => {
|
|
58
|
+
scrollDocumentTo(e.clientY);
|
|
59
|
+
e.stopPropagation();
|
|
60
|
+
e.preventDefault();
|
|
61
|
+
}, onContextMenuCapture: (e) => {
|
|
62
|
+
e.stopPropagation();
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
}, onClickCapture: (e) => {
|
|
65
|
+
scrollDocumentTo(e.clientY);
|
|
66
|
+
e.stopPropagation();
|
|
67
|
+
e.preventDefault();
|
|
68
|
+
}, onWheelCapture: (e) => {
|
|
69
|
+
var _a;
|
|
70
|
+
(_a = editorContainerRef.current) === null || _a === void 0 ? void 0 : _a.scrollBy(0, e.deltaY);
|
|
71
|
+
e.stopPropagation();
|
|
72
|
+
e.preventDefault();
|
|
73
|
+
}, style: {
|
|
74
|
+
cursor: "pointer",
|
|
75
|
+
transformOrigin: "top left",
|
|
76
|
+
transform: "scale(" + scale + ")",
|
|
77
|
+
width: viewport.width - 105 / editContext.pageView.zoom + "px",
|
|
78
|
+
}, children: _jsx(OutlineContextProvider, { value: { outlineContainerRef, scale }, children: children }) }) }), scrollTop !== undefined && scrollHeight !== undefined && (_jsx("div", { className: "a-absolute a-bg-opacity-40 a-bg-gray-200 a-w-full a-pointer-events-none", style: {
|
|
79
|
+
top: scrollTop * scale + "px",
|
|
80
|
+
height: viewport.height * scale + "px",
|
|
81
|
+
} }))] }));
|
|
82
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import { useEditContext } from "./editContext";
|
|
4
|
+
import { Outline } from "./Outline";
|
|
5
|
+
export function PageViewer() {
|
|
6
|
+
const editContext = useEditContext();
|
|
7
|
+
if (!editContext)
|
|
8
|
+
return null;
|
|
9
|
+
const children = editContext.renderedPage;
|
|
10
|
+
const device = editContext.pageView.device;
|
|
11
|
+
const zoom = editContext.pageView.zoom;
|
|
12
|
+
const setZoom = editContext.pageView.setZoom;
|
|
13
|
+
const containerRef = useRef(null);
|
|
14
|
+
const showOutline = (containerRef === null || containerRef === void 0 ? void 0 : containerRef.current) &&
|
|
15
|
+
containerRef.current.scrollHeight > containerRef.current.offsetHeight;
|
|
16
|
+
const paddingRight = showOutline
|
|
17
|
+
? editContext.configuration.outline.width / zoom + "px"
|
|
18
|
+
: "0";
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (!containerRef.current)
|
|
21
|
+
return;
|
|
22
|
+
containerRef.current.addEventListener("wheel", handleWheel, {
|
|
23
|
+
passive: false,
|
|
24
|
+
});
|
|
25
|
+
}, [containerRef]);
|
|
26
|
+
const handleWheel = (e) => {
|
|
27
|
+
if (e.ctrlKey) {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
if (e.deltaY < 0) {
|
|
30
|
+
setZoom((zoom) => (zoom > 50 ? zoom : zoom * 1.2));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
setZoom((zoom) => (zoom < 0.1 ? zoom : zoom / 1.2));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const renderedPage = (_jsx("div", { onDragEndCapture: () => editContext.dragEnd(), className: "a-flex a-flex-col a-w-full a-h-full a-items-center a-bg-gray-100", ref: editContext.pageView.editorContainerRef, children: _jsxs("div", { className: "a-flex-1 a-relative a-h-full a-bg-white", style: { width: device == "desktop" ? "100%" : "640px" }, children: [_jsx("div", { className: "alpaca-editor-container a-absolute a-inset-0 a-overflow-auto", style: { zoom: zoom, paddingRight }, ref: containerRef, onScroll: (e) => {
|
|
38
|
+
editContext.pageView.setScroll(e.currentTarget.scrollTop);
|
|
39
|
+
}, children: children }), showOutline && (_jsx(Outline, { editorContainerRef: containerRef, children: children }))] }) }));
|
|
40
|
+
return renderedPage;
|
|
41
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
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 { Dialog } from "primereact/dialog";
|
|
12
|
+
import { useEditContext } from ".";
|
|
13
|
+
import { useCallback, useEffect, useState } from "react";
|
|
14
|
+
import { Button } from "primereact/button";
|
|
15
|
+
import DialogButtons from "./DialogButtons";
|
|
16
|
+
import { getRenderedPictureVariant, } from "../components/picture-shared";
|
|
17
|
+
import { getPictureValue } from "./services/editService";
|
|
18
|
+
export function PictureEditorDialog({ field, onCancel, onOk, params, }) {
|
|
19
|
+
var _a, _b, _c, _d;
|
|
20
|
+
const [selectedVariantName, setSelectedVariantName] = useState();
|
|
21
|
+
const [pictureValue, setPictureValue] = useState();
|
|
22
|
+
const [rawValue, setRawValue] = useState();
|
|
23
|
+
const emptyRect = () => ({
|
|
24
|
+
width: 0,
|
|
25
|
+
height: 0,
|
|
26
|
+
top: 0,
|
|
27
|
+
left: 0,
|
|
28
|
+
});
|
|
29
|
+
const [rect, setRect] = useState(emptyRect());
|
|
30
|
+
const editContext = useEditContext();
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
var _a;
|
|
33
|
+
setSelectedVariantName((_a = field === null || field === void 0 ? void 0 : field.value) === null || _a === void 0 ? void 0 : _a.variants[0].name);
|
|
34
|
+
}, []);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
var _a, _b, _c, _d;
|
|
37
|
+
const deepCopy = JSON.parse(JSON.stringify(field.value));
|
|
38
|
+
setPictureValue(deepCopy);
|
|
39
|
+
const raw = ((_a = field === null || field === void 0 ? void 0 : field._editor) === null || _a === void 0 ? void 0 : _a.rawValue)
|
|
40
|
+
? JSON.parse((_b = field === null || field === void 0 ? void 0 : field._editor) === null || _b === void 0 ? void 0 : _b.rawValue)
|
|
41
|
+
: { Variants: [] };
|
|
42
|
+
setRawValue(raw);
|
|
43
|
+
if (!((_c = field === null || field === void 0 ? void 0 : field.value) === null || _c === void 0 ? void 0 : _c.variants[0].src))
|
|
44
|
+
selectMedia((_d = field === null || field === void 0 ? void 0 : field.value) === null || _d === void 0 ? void 0 : _d.variants[0].name, raw);
|
|
45
|
+
}, [field]);
|
|
46
|
+
function selectMedia(variantName, raw) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const chosenImage = yield (editContext === null || editContext === void 0 ? void 0 : editContext.selectMedia({
|
|
49
|
+
selectedIdPath: (selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.idPath) || "",
|
|
50
|
+
}));
|
|
51
|
+
if (chosenImage)
|
|
52
|
+
imageSelected(chosenImage, variantName !== null && variantName !== void 0 ? variantName : selectedVariantName, raw !== null && raw !== void 0 ? raw : rawValue);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const selectedVariant = pictureValue && pictureValue.variants
|
|
56
|
+
? (_a = pictureValue.variants) === null || _a === void 0 ? void 0 : _a.find((x) => x.name == selectedVariantName)
|
|
57
|
+
: null;
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if ((selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.region) &&
|
|
60
|
+
(!selectedVariant.aspectRatioLock ||
|
|
61
|
+
Math.abs(selectedVariant.aspectRatioLock -
|
|
62
|
+
selectedVariant.region.width / selectedVariant.region.height) < 0.1))
|
|
63
|
+
setRect({
|
|
64
|
+
width: selectedVariant.region.width,
|
|
65
|
+
height: selectedVariant.region.height,
|
|
66
|
+
top: selectedVariant.region.y,
|
|
67
|
+
left: selectedVariant.region.x,
|
|
68
|
+
});
|
|
69
|
+
else {
|
|
70
|
+
setRect(emptyRect());
|
|
71
|
+
}
|
|
72
|
+
}, [selectedVariantName]);
|
|
73
|
+
const getPictureFieldValue = (field, rawValue) => __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
var _e;
|
|
75
|
+
if (!((_e = editContext === null || editContext === void 0 ? void 0 : editContext.page) === null || _e === void 0 ? void 0 : _e.site))
|
|
76
|
+
return null;
|
|
77
|
+
return getPictureValue(field, rawValue, editContext.page.site.name, editContext.sessionId);
|
|
78
|
+
});
|
|
79
|
+
const imageSelected = useCallback((imageId, variantName, rawValue) => __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
var _f;
|
|
81
|
+
if (!variantName || !rawValue)
|
|
82
|
+
return;
|
|
83
|
+
const selected = (_f = rawValue.Variants) === null || _f === void 0 ? void 0 : _f.find((x) => x.Name == variantName);
|
|
84
|
+
if (!selected) {
|
|
85
|
+
if (!rawValue.Variants)
|
|
86
|
+
rawValue.Variants = [];
|
|
87
|
+
rawValue.Variants.push({
|
|
88
|
+
Name: variantName,
|
|
89
|
+
MediaId: imageId,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
selected.MediaId = imageId;
|
|
94
|
+
}
|
|
95
|
+
setRawValue(rawValue);
|
|
96
|
+
const newValue = yield getPictureFieldValue(field, rawValue);
|
|
97
|
+
if (newValue) {
|
|
98
|
+
setPictureValue(newValue);
|
|
99
|
+
}
|
|
100
|
+
}), []);
|
|
101
|
+
const updateRawValue = (rawValue) => __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
setRawValue(rawValue);
|
|
103
|
+
const newValue = yield getPictureFieldValue(field, rawValue);
|
|
104
|
+
if (newValue) {
|
|
105
|
+
setPictureValue(newValue);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
const setVariantCrop = () => __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
var _g, _h;
|
|
110
|
+
if (!rawValue)
|
|
111
|
+
return;
|
|
112
|
+
if (!selectedVariantName)
|
|
113
|
+
return;
|
|
114
|
+
if (selectedVariant) {
|
|
115
|
+
let selected = (_g = rawValue.Variants) === null || _g === void 0 ? void 0 : _g.find((x) => x.Name == selectedVariantName);
|
|
116
|
+
if (!selected) {
|
|
117
|
+
selected = {
|
|
118
|
+
Name: selectedVariantName,
|
|
119
|
+
MediaId: selectedVariant.mediaId,
|
|
120
|
+
};
|
|
121
|
+
(_h = rawValue.Variants) === null || _h === void 0 ? void 0 : _h.push(selected);
|
|
122
|
+
}
|
|
123
|
+
if (selected) {
|
|
124
|
+
selected.Region = {
|
|
125
|
+
X: rect.left,
|
|
126
|
+
Y: rect.top,
|
|
127
|
+
Width: rect.width,
|
|
128
|
+
Height: rect.height,
|
|
129
|
+
};
|
|
130
|
+
yield updateRawValue(rawValue);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
const usage = getUsage(pictureValue, params);
|
|
135
|
+
return (_jsx(_Fragment, { children: _jsx(Dialog, { header: "Edit " + ((_b = field._editor) === null || _b === void 0 ? void 0 : _b.name), visible: true, style: { width: "70vw", height: "70vh" }, onHide: onCancel, children: _jsxs("div", { className: "a-flex a-gap-1 a-flex-col a-justify a-h-full", children: [_jsxs("div", { className: "a-flex-1 a-flex a-gap-2", children: [_jsxs("div", { className: "a-flex a-flex-col a-gap-6 a-h-full a-border-r a-pr-3 a-pt-3 a-w-40", children: [pictureValue &&
|
|
136
|
+
((_c = pictureValue.variants) === null || _c === void 0 ? void 0 : _c.map((variant) => (_jsxs("div", { onClick: () => setSelectedVariantName(variant.name), className: "a-text-xs a-flex a-flex-col a-items-center a-justify-center a-gap-1 a-cursor-pointer", children: [_jsx("div", { className: "a-flex a-justify-center a-items-center a-h-40 a-w-40 a-border a-relative" +
|
|
137
|
+
(selectedVariantName == variant.name
|
|
138
|
+
? " a-shadow-xl "
|
|
139
|
+
: ""), children: variant.src && _jsx("img", { src: variant.thumbSrc }) }), _jsxs("div", { className: "a-w-40", children: [_jsx("div", { children: variant.name }), _jsx("div", { children: variant.aspectRatioLockText }), _jsxs("div", { children: [_jsxs("div", { className: "a-break-all", children: ["Name: ", variant.mediaItemName] }), _jsxs("div", { children: ["Orig. size: ", variant.width, " x ", variant.height] }), (variant.width < 1 || variant.height < 1) && (_jsxs("span", { children: [" ", _jsx("i", { className: "pi pi-exclamation-triangle a-text-red-600 " })] }))] })] })] }, variant.name)))), usage && _jsx("div", { className: "a-text-xs", children: usage })] }), _jsx("div", { className: "a-flex-1 a-relative a-p-3", children: _jsxs("div", { className: "a-absolute a-inset-0 a-top-3 a-overflow-auto a-select-none a-flex a-align-center a-justify-center", children: [selectedVariant && (_jsxs("div", { className: "a-relative", onDoubleClick: () => selectMedia(), onMouseDown: (ev) => {
|
|
140
|
+
ev.preventDefault();
|
|
141
|
+
ev.stopPropagation();
|
|
142
|
+
const bounds = ev.currentTarget.getBoundingClientRect();
|
|
143
|
+
setRect({
|
|
144
|
+
left: (ev.clientX - bounds.left) / bounds.width,
|
|
145
|
+
top: (ev.clientY - bounds.top) / bounds.height,
|
|
146
|
+
width: 0,
|
|
147
|
+
height: 0,
|
|
148
|
+
});
|
|
149
|
+
}, onMouseMoveCapture: (ev) => {
|
|
150
|
+
if (ev.buttons === 1) {
|
|
151
|
+
const bounds = ev.currentTarget.getBoundingClientRect();
|
|
152
|
+
const width = (ev.clientX - bounds.left) / bounds.width - rect.left;
|
|
153
|
+
const newRect = Object.assign(Object.assign({}, rect), { width, height: selectedVariant.aspectRatioLock
|
|
154
|
+
? width / selectedVariant.aspectRatioLock
|
|
155
|
+
: (ev.clientY - bounds.top) / bounds.height -
|
|
156
|
+
rect.top });
|
|
157
|
+
setRect(newRect);
|
|
158
|
+
ev.preventDefault();
|
|
159
|
+
ev.stopPropagation();
|
|
160
|
+
}
|
|
161
|
+
}, onMouseUp: () => setVariantCrop(), children: [_jsx("img", { src: (_d = selectedVariant.originalSrc) !== null && _d !== void 0 ? _d : selectedVariant.src, className: "a-object-contain a-h-full a-w-full" }), _jsx("div", { className: "a-absolute a-bg-opacity-70 a-bg-gray-300", style: {
|
|
162
|
+
left: rect.left * 100 + "%",
|
|
163
|
+
top: rect.top * 100 + "%",
|
|
164
|
+
width: rect.width * 100 + "%",
|
|
165
|
+
height: rect.height * 100 + "%",
|
|
166
|
+
} })] })), selectedVariant && (_jsxs("div", { className: "a-absolute a-top-0 a-right-0 a-cursor-pointer a-text-sm a-flex a-flex-col a-gap-1 a-items-center a-p-2 a-bg-gray-100 a-bg-opacity-70", onClick: () => selectMedia(), children: [_jsx("i", { className: "pi pi-pencil a-text-xl" }), "Choose"] }))] }) })] }), _jsxs(DialogButtons, { children: [_jsx(Button, { size: "small", onClick: () => {
|
|
167
|
+
if (pictureValue) {
|
|
168
|
+
if (field) {
|
|
169
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.editField({
|
|
170
|
+
field,
|
|
171
|
+
rawValue: JSON.stringify(rawValue),
|
|
172
|
+
refresh: "immediate",
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
onOk(pictureValue);
|
|
176
|
+
}
|
|
177
|
+
}, children: "Ok" }), _jsx(Button, { onClick: () => {
|
|
178
|
+
onCancel();
|
|
179
|
+
}, size: "small", children: "Cancel" })] })] }) }) }));
|
|
180
|
+
}
|
|
181
|
+
function getUsage(pictureValue, params) {
|
|
182
|
+
var _a;
|
|
183
|
+
if (!params)
|
|
184
|
+
return;
|
|
185
|
+
if (!pictureValue)
|
|
186
|
+
return;
|
|
187
|
+
if (pictureValue.variants.length <= 1)
|
|
188
|
+
return;
|
|
189
|
+
const mediaParams = typeof params === "object" && "default" in params ? params : undefined;
|
|
190
|
+
if (mediaParams) {
|
|
191
|
+
const sources = Object.keys(mediaParams !== null && mediaParams !== void 0 ? mediaParams : {});
|
|
192
|
+
const variants = sources
|
|
193
|
+
.map((source) => ({
|
|
194
|
+
source,
|
|
195
|
+
variant: getRenderedPictureVariant(mediaParams[source], pictureValue.variants),
|
|
196
|
+
}))
|
|
197
|
+
.filter((x) => x.variant);
|
|
198
|
+
return (_jsxs(_Fragment, { children: ["This field rendering is using these variants:", _jsx("table", { children: variants.map((v) => (_jsxs("tr", { children: [_jsx("td", { children: v.source }), _jsx("td", { children: _jsx("b", { children: v.variant.name }) })] }))) })] }));
|
|
199
|
+
}
|
|
200
|
+
return (_jsxs(_Fragment, { children: ["This field rendering is using the variant", " ", _jsxs("b", { children: [(_a = getRenderedPictureVariant(params, pictureValue.variants)) === null || _a === void 0 ? void 0 : _a.name, "."] })] }));
|
|
201
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { ProgressBar } from "primereact/progressbar";
|
|
5
|
+
import { useEditContext } from ".";
|
|
6
|
+
import { classNames } from "primereact/utils";
|
|
7
|
+
import ReactDOM from "react-dom";
|
|
8
|
+
import { useOutlineContext } from "./Outline";
|
|
9
|
+
export function PlaceholderDropZone({ placeholder, description, index, parentName, }) {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
const [isInserting, setIsInserting] = useState(false);
|
|
12
|
+
const [isSelected, setIsSelected] = useState(false);
|
|
13
|
+
const [isHovering, setIsHovering] = useState(false);
|
|
14
|
+
const spotRef = useRef(null);
|
|
15
|
+
const [spotPosition, setSpotPosition] = useState({ x: 0, y: 0 });
|
|
16
|
+
const editContext = useEditContext();
|
|
17
|
+
const outlineContext = useOutlineContext();
|
|
18
|
+
if (!editContext)
|
|
19
|
+
return;
|
|
20
|
+
const { selection, refreshCompletedFlag, dragObject, selectedForInsertion } = editContext;
|
|
21
|
+
function isAnyPlaceholderSelected() {
|
|
22
|
+
return (selection === null || selection === void 0 ? void 0 : selection.find((x) => (x === null || x === void 0 ? void 0 : x.indexOf("_")) > 0)) != undefined;
|
|
23
|
+
}
|
|
24
|
+
const updateSpotPosition = () => {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
if (spotRef.current) {
|
|
27
|
+
const editorRect = (_a = editContext.pageView.editorContainerRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
28
|
+
if (editorRect) {
|
|
29
|
+
const spotRect = (_b = spotRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect();
|
|
30
|
+
setSpotPosition({
|
|
31
|
+
x: spotRect.left * editContext.pageView.zoom - editorRect.left,
|
|
32
|
+
y: spotRect.top * editContext.pageView.zoom - editorRect.top,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
setIsInserting(false);
|
|
39
|
+
}, [refreshCompletedFlag]);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
const isSelectedForInsertion = editContext.selectedForInsertion.length > 0 &&
|
|
43
|
+
placeholder.key.indexOf(editContext.selectedForInsertion) >= 0;
|
|
44
|
+
const dragObjectAllowed = (editContext.dragObject ? true : false) &&
|
|
45
|
+
((_b = (_a = placeholder._editor) === null || _a === void 0 ? void 0 : _a.insertOptions) === null || _b === void 0 ? void 0 : _b.find((x) => {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
return x.id == ((_a = editContext.dragObject) === null || _a === void 0 ? void 0 : _a.templateId) ||
|
|
48
|
+
((_b = x.compatibleTemplates) === null || _b === void 0 ? void 0 : _b.find((y) => { var _a; return y == ((_a = editContext.dragObject) === null || _a === void 0 ? void 0 : _a.templateId); })) !== undefined;
|
|
49
|
+
})) != undefined;
|
|
50
|
+
const selected = (isSelectedForInsertion ||
|
|
51
|
+
(!isAnyPlaceholderSelected() && editContext.dragObject != undefined)) &&
|
|
52
|
+
(!editContext.dragObject ? true : false || dragObjectAllowed);
|
|
53
|
+
setIsSelected(selected);
|
|
54
|
+
if (selected)
|
|
55
|
+
updateSpotPosition();
|
|
56
|
+
}, [selection, dragObject, selectedForInsertion, editContext]);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
updateSpotPosition();
|
|
59
|
+
}, [editContext.pageView.zoom, editContext.pageView.scroll, isSelected]);
|
|
60
|
+
function dragOver(ev) {
|
|
61
|
+
var _a;
|
|
62
|
+
ev.dataTransfer.dropEffect =
|
|
63
|
+
((_a = editContext === null || editContext === void 0 ? void 0 : editContext.dragObject) === null || _a === void 0 ? void 0 : _a.type) == "template" ? "copy" : "move";
|
|
64
|
+
setIsHovering(true);
|
|
65
|
+
ev.preventDefault();
|
|
66
|
+
}
|
|
67
|
+
function drop(ev) {
|
|
68
|
+
ev.preventDefault();
|
|
69
|
+
setIsInserting(true);
|
|
70
|
+
setIsHovering(false);
|
|
71
|
+
editContext.droppedInPlaceholder(placeholder.key, index);
|
|
72
|
+
}
|
|
73
|
+
if (isInserting)
|
|
74
|
+
return (_jsx("div", { className: "a-inserting-placeholder a-p-8 a-border a-border-dashed", children: _jsx(ProgressBar, { mode: "indeterminate", style: { height: "6px" } }) }));
|
|
75
|
+
let overlayStyle = undefined;
|
|
76
|
+
overlayStyle = {
|
|
77
|
+
top: spotPosition.y,
|
|
78
|
+
left: spotPosition.x,
|
|
79
|
+
zIndex: isHovering ? 1000 : 900,
|
|
80
|
+
position: "absolute",
|
|
81
|
+
};
|
|
82
|
+
if (!isSelected)
|
|
83
|
+
return;
|
|
84
|
+
if (outlineContext) {
|
|
85
|
+
const spotRect = (_a = spotRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
86
|
+
const containerRect = (_b = outlineContext.outlineContainerRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect();
|
|
87
|
+
return (_jsx("div", { ref: spotRef, className: "spot", children: outlineContext.outlineContainerRef.current &&
|
|
88
|
+
containerRect &&
|
|
89
|
+
spotRect &&
|
|
90
|
+
ReactDOM.createPortal(_jsx("div", { className: "a-absolute a-text-blue-500", style: {
|
|
91
|
+
left: "-8px",
|
|
92
|
+
top: spotRect.top - containerRect.top - 8 + "px",
|
|
93
|
+
fontSize: "12px",
|
|
94
|
+
}, onDragOver: dragOver, title: (description !== null && description !== void 0 ? description : placeholder.name) + " (" + index + ")", onDrop: drop, onDragLeave: () => setIsHovering(false), children: _jsx("i", { className: "pi pi-angle-right " }) }), outlineContext.outlineContainerRef.current) }));
|
|
95
|
+
}
|
|
96
|
+
else
|
|
97
|
+
return (_jsx("div", { className: classNames(isHovering ? "a-z-50 a-border a-border-dashed" : "a-z-10", "a-placeholder-dropzone a-flex a-justify-center a-items-center a-relative a-transition-all a-duration-200"), children: _jsx("div", { ref: spotRef, children: editContext.pageView.editorContainerRef.current &&
|
|
98
|
+
overlayStyle &&
|
|
99
|
+
ReactDOM.createPortal(_jsx("div", { style: overlayStyle, onDragOver: dragOver, title: (description !== null && description !== void 0 ? description : placeholder.name) + " (" + index + ")", onDrop: drop, onDragLeave: () => setIsHovering(false), onClick: (e) => {
|
|
100
|
+
var _a, _b;
|
|
101
|
+
const insertOptions = ((_b = (_a = placeholder._editor) === null || _a === void 0 ? void 0 : _a.insertOptions) === null || _b === void 0 ? void 0 : _b.filter((x) => !x.isHidden && x.isComponent).map((x) => ({
|
|
102
|
+
id: x.id,
|
|
103
|
+
icon: (_jsx("img", { src: x.icon, width: "16", height: "16", className: "a-m-1" })),
|
|
104
|
+
label: x.name,
|
|
105
|
+
command: () => {
|
|
106
|
+
setIsInserting(true);
|
|
107
|
+
const placeholderKeyComponents = placeholder.key.split("_");
|
|
108
|
+
const parentId = placeholderKeyComponents.length === 1
|
|
109
|
+
? undefined
|
|
110
|
+
: placeholderKeyComponents[0];
|
|
111
|
+
editContext.addComponent(x.id, x.name || "component", placeholder.name, index, parentId);
|
|
112
|
+
},
|
|
113
|
+
}))) || [];
|
|
114
|
+
if (insertOptions.length > 0)
|
|
115
|
+
editContext.showContextMenu(e, [
|
|
116
|
+
{
|
|
117
|
+
label: "Insert",
|
|
118
|
+
disabled: true,
|
|
119
|
+
className: "a-border-b a-border-gray-600 a-pb-2 a-pl-2",
|
|
120
|
+
template: () => {
|
|
121
|
+
return (_jsx("span", { className: "a-text-black a-text-sm ", children: "Insert" }));
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
...insertOptions,
|
|
125
|
+
]);
|
|
126
|
+
e.preventDefault();
|
|
127
|
+
}, className: `a-placeholder a-cursor-pointer ${isSelected ? "a-placeholder-dropzone" : "a-hidden"} `, children: _jsxs("div", { className: classNames(isHovering
|
|
128
|
+
? "a-z-50 a-shadow-xl shadow-black a-w-28 a-h-28 a-shadow-blue-500/50"
|
|
129
|
+
: "a-z-49 a-w-10 a-h-10 hover:a-scale-[1.1]", "a-transition-all a-duration-200 a-text-white a-text-center a-p-2 a-text-sm a-flex a-justify-center a-items-center a-bg-blue-500 a-rounded-full a-absolute a-top-1/2 a-left-1/2 a--translate-x-1/2 a--translate-y-1/2 "), children: [!isHovering && _jsx("i", { className: "pi pi-plus a-block" }), isHovering && (_jsxs(_Fragment, { children: [parentName, " (", description || "", " ", index, ")"] }))] }) }), editContext.pageView.editorContainerRef.current) }) }));
|
|
130
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import dynamic from "next/dynamic";
|
|
4
|
+
const PlaceholderDropZone = dynamic(() => import("./PlaceholderDropZone").then((dnd) => dnd.PlaceholderDropZone), { ssr: false });
|
|
5
|
+
export function PlaceholderDropZoneHost({ placeholder, description, index, parentName, }) {
|
|
6
|
+
return (_jsx(PlaceholderDropZone, { placeholder: placeholder, description: description, index: index, parentName: parentName }));
|
|
7
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { PreviewContextProvider } from "./previewContext";
|
|
3
|
+
export function PreviewClient({ children }) {
|
|
4
|
+
return (_jsxs(PreviewContextProvider, { value: {}, children: [children, _jsxs("div", { className: "a-fixed a-right-2 a-bottom-1 a-text-opacity-50 a-cursor-default a-text-xs a-flex a-items-center a-text-gray-500 a-gap-2", children: [_jsx("i", { className: "pi pi-eye a-text-gray-100" }), " Preview"] })] }));
|
|
5
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import dynamic from "next/dynamic";
|
|
4
|
+
const PreviewClient = dynamic(() => import("./PreviewClient").then((dnd) => dnd.PreviewClient), { ssr: false });
|
|
5
|
+
export function PreviewClientHost({ children }) {
|
|
6
|
+
return _jsx(PreviewClient, { children: children });
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { PreviewClient } from "./PreviewClient";
|
|
3
|
+
import { useEditContext } from "./editContext";
|
|
4
|
+
export function PreviewPanel() {
|
|
5
|
+
const editContext = useEditContext();
|
|
6
|
+
return _jsx(PreviewClient, { children: editContext === null || editContext === void 0 ? void 0 : editContext.renderedPage });
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Dialog } from "primereact/dialog";
|
|
3
|
+
import { Workbox as WorkboxWidget } from "./sidebar/Workbox";
|
|
4
|
+
import DialogButtons from "./DialogButtons";
|
|
5
|
+
import { Button } from "primereact/button";
|
|
6
|
+
export function PublishDialog({
|
|
7
|
+
// lockItems,
|
|
8
|
+
// unlockItems,
|
|
9
|
+
visible, onHide, page, }) {
|
|
10
|
+
const allUnlocked = page._editor.workbox.items.filter((x) => x.hasLock).length > 0;
|
|
11
|
+
const allInFinalState = page._editor.workbox.items.filter((x) => !x.isFinalState).length > 0;
|
|
12
|
+
return (_jsx(_Fragment, { children: _jsx(Dialog, { header: "Publish page " + page.name, style: { width: "70vw", height: "70vh" }, onHide: onHide, visible: visible, children: _jsxs("div", { className: "a-w-full a-h-full a-flex a-flex-col", children: [_jsx(WorkboxWidget, {}), _jsxs(DialogButtons, { children: [allInFinalState && (_jsx(Button, { size: "small", onClick: () => { }, children: "Publish" })), !(allInFinalState || !allUnlocked) && (_jsx(Button, { onClick: () => {
|
|
13
|
+
onHide();
|
|
14
|
+
}, size: "small", children: "Cancel" }))] })] }) }) }));
|
|
15
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Button } from "primereact/button";
|
|
4
|
+
import { InputTextarea } from "primereact/inputtextarea";
|
|
5
|
+
import { useEffect, useRef, useState } from "react";
|
|
6
|
+
export function Terminal({ commandHandler, onReset, toolbar, statusbar, infobar, prompt, setPrompt, }) {
|
|
7
|
+
const [response, setResponse] = useState();
|
|
8
|
+
const [messages, setMessages] = useState([]);
|
|
9
|
+
const bottomRef = useRef(null);
|
|
10
|
+
const messageRef = useRef(messages);
|
|
11
|
+
const inputRef = useRef(null);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (inputRef.current) {
|
|
14
|
+
inputRef.current.focus();
|
|
15
|
+
}
|
|
16
|
+
}, []);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
messageRef.current = messages;
|
|
19
|
+
}, [messages]);
|
|
20
|
+
const callback = (text, finished) => {
|
|
21
|
+
if (!finished)
|
|
22
|
+
setResponse(text);
|
|
23
|
+
else {
|
|
24
|
+
setResponse(undefined);
|
|
25
|
+
setMessages([...messageRef.current, { type: "response", text }]);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const handleKeyPress = (e) => {
|
|
29
|
+
if (e.key === "Enter" && !e.shiftKey) {
|
|
30
|
+
e.preventDefault(); // Prevent newline insertion
|
|
31
|
+
submit();
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
var _a;
|
|
36
|
+
// 👇️ scroll to bottom every time messages change
|
|
37
|
+
(_a = bottomRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ behavior: "smooth" });
|
|
38
|
+
}, [messages, response]);
|
|
39
|
+
const responseBoxClasses = "a-text-xs a-self-stretch a-text-gray-700 a-p-2 a-rounded a-shadow a-border a-border-gray-200";
|
|
40
|
+
const getClasses = (m) => {
|
|
41
|
+
if (m.type === "response")
|
|
42
|
+
return responseBoxClasses;
|
|
43
|
+
return "a-text-xs a-text-gray-700 a-bg-indigo-100 a-p-2 a-rounded";
|
|
44
|
+
};
|
|
45
|
+
function submit() {
|
|
46
|
+
setMessages([...messages, { type: "command", text: prompt }]);
|
|
47
|
+
setPrompt("");
|
|
48
|
+
setResponse("...");
|
|
49
|
+
commandHandler(prompt, callback);
|
|
50
|
+
}
|
|
51
|
+
return (_jsxs("div", { className: "a-flex a-flex-col a-h-full", children: [_jsxs("div", { className: "a-p-1 a-border-b a-border-gray-200 a-flex a-justify-between a-gap-2 a-text-xs a-items-center", children: [_jsx("button", { onClick: () => {
|
|
52
|
+
setMessages([]);
|
|
53
|
+
onReset();
|
|
54
|
+
}, children: _jsx("i", { className: "pi pi-trash a-text-xs" }) }), toolbar] }), _jsx("div", { className: "a-overflow-y-auto a-h-full a-overflow-x-hidden a-p-2", children: _jsxs("div", { className: "a-flex a-flex-col a-gap-3 a-items-end", children: [messages.map((m, i) => (_jsx("div", { className: getClasses(m), children: m.text }, i))), response != null && (_jsx("div", { className: responseBoxClasses, children: _jsxs("div", { className: "a-flex a-text-xs", children: [_jsxs("div", { className: "a-text-xs a-mr-4", children: [_jsx("i", { className: "pi pi-spin pi-spinner" }), " "] }), response] }) })), _jsx("div", { ref: bottomRef })] }) }), _jsxs("div", { className: "a-flex a-flex-col a-p-1 a-pb-0", children: [infobar, _jsx(InputTextarea, { ref: inputRef, value: prompt, className: "a-border-gray-300 a-border a-rounded a-flex-1 a-text-xs a-resize-none a-self-stretch", onKeyDown: handleKeyPress, onChange: (e) => setPrompt(e.target.value), rows: 2, cols: 30 }), _jsxs("div", { className: "a-flex a-justify-between a-items-center", children: [_jsx("div", { children: statusbar }), _jsx(Button, { icon: "pi pi-send", text: true, size: "small", onClick: submit, disabled: prompt.length === 0 })] })] })] }));
|
|
55
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { OverlayPanel } from "primereact/overlaypanel";
|
|
4
|
+
import { AiTerminal } from "./AiTerminal";
|
|
5
|
+
import { Button } from "primereact/button";
|
|
6
|
+
import { forwardRef, useImperativeHandle, useRef } from "react";
|
|
7
|
+
export const AiPopup = forwardRef((_, ref) => {
|
|
8
|
+
const overlayRef = useRef(null);
|
|
9
|
+
//const [components, setComponents] = useState<ComponentData[]>([]); // [componentId, componentId, ...]
|
|
10
|
+
useImperativeHandle(ref, () => ({
|
|
11
|
+
show: (ev) => {
|
|
12
|
+
var _a;
|
|
13
|
+
//setComponents(components || []);
|
|
14
|
+
(_a = overlayRef.current) === null || _a === void 0 ? void 0 : _a.toggle(ev);
|
|
15
|
+
},
|
|
16
|
+
close: () => {
|
|
17
|
+
var _a;
|
|
18
|
+
(_a = overlayRef.current) === null || _a === void 0 ? void 0 : _a.hide();
|
|
19
|
+
},
|
|
20
|
+
}));
|
|
21
|
+
return (_jsx(OverlayPanel, { ref: overlayRef, children: _jsx("div", { className: "a-w-96 a-h-96 a-flex a-flex-col a-gap-2", onClick: (ev) => ev.stopPropagation(), children: _jsx(AiTerminal
|
|
22
|
+
//selection={components?.map((x) => x.id)}
|
|
23
|
+
//newEditOperations={(ops) => setOperations([...operations, ...ops])}
|
|
24
|
+
, {
|
|
25
|
+
//selection={components?.map((x) => x.id)}
|
|
26
|
+
//newEditOperations={(ops) => setOperations([...operations, ...ops])}
|
|
27
|
+
closeButton: _jsx(Button, { icon: "pi pi-times", onClick: () => { var _a; return (_a = overlayRef.current) === null || _a === void 0 ? void 0 : _a.hide(); }, size: "small", text: true }) }) }) }));
|
|
28
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { AiToolCall } from "./AiToolCall";
|
|
4
|
+
import { useEditContext } from "../editContext";
|
|
5
|
+
export function AiResponseMessage({ responseText, toolcalls, editOperations, }) {
|
|
6
|
+
const editContext = useEditContext();
|
|
7
|
+
if (!editContext)
|
|
8
|
+
return _jsx(_Fragment, {});
|
|
9
|
+
const [showFunctions, setShowFunctions] = useState(false);
|
|
10
|
+
const [changesRejected, setChangesRejected] = useState(undefined);
|
|
11
|
+
const reversedEditOperations = [...editOperations].reverse();
|
|
12
|
+
const canReject = editContext.editHistory.length > editOperations.length &&
|
|
13
|
+
reversedEditOperations.find((x, index) => editContext.editHistory[index].id !== x.id) === undefined;
|
|
14
|
+
return (_jsxs("div", { children: [_jsx("div", { dangerouslySetInnerHTML: {
|
|
15
|
+
__html: responseText.replaceAll("\\n", "<br>"),
|
|
16
|
+
} }), toolcalls.length > 0 && (_jsxs("div", { className: "a-text-xs a-text-gray-400 a-cursor-pointer a-flex a-items-center a-gap-1 a-mt-1", onClick: () => setShowFunctions(!showFunctions), children: [_jsx("i", { className: "pi pi-wrench a-text-xs" }), " Tool calls"] })), showFunctions && (_jsx("div", { className: "a-text-xs a-text-gray-400", children: toolcalls.map((x, index) => (_jsx(AiToolCall, { toolCall: x }, index))) })), editOperations.length > 0 && (_jsxs("div", { className: "a-flex a-gap-2 a-my-2 a-items-center", children: [_jsxs("div", { className: "a-text-xs", children: [editOperations.length, " changes"] }), canReject && !changesRejected && (_jsxs("div", { className: "a-text-xs a-text-red-500 a-cursor-pointer a-flex a-items-center a-gap-1", onClick: () => {
|
|
17
|
+
editContext === null || editContext === void 0 ? void 0 : editContext.undo(editOperations.length);
|
|
18
|
+
setChangesRejected(true);
|
|
19
|
+
}, children: [_jsx("i", { className: "pi pi-times" }), " Reject"] })), changesRejected && (_jsx("div", { className: "a-text-xs a-text-red-500", children: "rejected" }))] }))] }));
|
|
20
|
+
}
|