@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,30 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import "server-only";
|
|
14
|
+
import React from "react";
|
|
15
|
+
import { useAlpacaContext } from "../alpacaContext";
|
|
16
|
+
import { RichTextEditorWrapper } from "./RichTextEditorWrapper";
|
|
17
|
+
export function RichText(_a) {
|
|
18
|
+
var { field, tag, editable } = _a, props = __rest(_a, ["field", "tag", "editable"]);
|
|
19
|
+
if (!field)
|
|
20
|
+
return;
|
|
21
|
+
if (field.jsonValue) {
|
|
22
|
+
field = field.jsonValue;
|
|
23
|
+
}
|
|
24
|
+
const internalProps = Object.assign(Object.assign({}, props), { dangerouslySetInnerHTML: {
|
|
25
|
+
__html: field.value,
|
|
26
|
+
} });
|
|
27
|
+
if (useAlpacaContext().pageContext.pageEditing)
|
|
28
|
+
return (_jsx(RichTextEditorWrapper, Object.assign({ field: field, tag: tag }, props)));
|
|
29
|
+
return React.createElement(tag || "div", Object.assign(props, internalProps));
|
|
30
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
import React, { useEffect, useState, useMemo, useCallback, useRef, } from "react";
|
|
15
|
+
import { useEditContext } from "../editor/editContext";
|
|
16
|
+
import { isFieldActionExecuting } from "../editor/utils";
|
|
17
|
+
import { getFieldContextMenu } from "../editor/ContextMenu";
|
|
18
|
+
import { LockedFieldIndicator } from "./LockedFieldIndicator";
|
|
19
|
+
export function RichTextEditor(_a) {
|
|
20
|
+
var _b, _c, _d, _e;
|
|
21
|
+
var { field, tag } = _a, props = __rest(_a, ["field", "tag"]);
|
|
22
|
+
const editContext = useEditContext();
|
|
23
|
+
const [value, setValue] = useState("");
|
|
24
|
+
const [editedValue, setEditedValue] = useState();
|
|
25
|
+
const ref = useRef(null);
|
|
26
|
+
if (!editContext)
|
|
27
|
+
return;
|
|
28
|
+
const { updateContentEditingFields } = editContext;
|
|
29
|
+
const liveField = editContext.getLiveField(field);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (!liveField)
|
|
32
|
+
return;
|
|
33
|
+
if (editedValue != liveField.value &&
|
|
34
|
+
"<p>" + editedValue + "</p>" != liveField.value) {
|
|
35
|
+
// console.log(
|
|
36
|
+
// "editedValue:" + editedValue + " liveField.value " + liveField.value
|
|
37
|
+
// );
|
|
38
|
+
setValue(liveField.value);
|
|
39
|
+
}
|
|
40
|
+
}, [liveField === null || liveField === void 0 ? void 0 : liveField.value]);
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (!liveField)
|
|
43
|
+
return;
|
|
44
|
+
setValue(liveField.value); // Otherwise react would not update the field after the refresh
|
|
45
|
+
}, [updateContentEditingFields]);
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (liveField) {
|
|
48
|
+
setValue(field.value);
|
|
49
|
+
liveField.value = field.value;
|
|
50
|
+
}
|
|
51
|
+
editContext.registerAsRenderedField(field);
|
|
52
|
+
}, [field]);
|
|
53
|
+
const setFieldValue = (val) => {
|
|
54
|
+
if (val != editedValue) {
|
|
55
|
+
setEditedValue(val);
|
|
56
|
+
if (editContext)
|
|
57
|
+
editContext.editField({ field, value: val, refresh: "none" });
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const eventHandler = useCallback((e) => {
|
|
61
|
+
setFieldValue(e.currentTarget.innerHTML);
|
|
62
|
+
}, [editContext.editField]);
|
|
63
|
+
let className = (_b = props.className) !== null && _b !== void 0 ? _b : "";
|
|
64
|
+
className += " a-cursor-text";
|
|
65
|
+
if (isFieldActionExecuting(field, editContext))
|
|
66
|
+
className += " a-executing-action a-focus-shadow ";
|
|
67
|
+
const isLocked = (((_c = liveField._editor) === null || _c === void 0 ? void 0 : _c.lockedBy) &&
|
|
68
|
+
((_e = (_d = liveField._editor) === null || _d === void 0 ? void 0 : _d.lockedBy) === null || _e === void 0 ? void 0 : _e.sessionId) != editContext.sessionId) ||
|
|
69
|
+
false;
|
|
70
|
+
const onContextMenu = getFieldContextMenu(field, editContext, []);
|
|
71
|
+
return useMemo(() => {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
const properies = Object.assign(Object.assign({}, props), { className, contentEditable: ((_a = field._editor) === null || _a === void 0 ? void 0 : _a.canWrite) && !isLocked, suppressContentEditableWarning: true, onInput: eventHandler, placeholder: "[" + ((_b = field._editor) === null || _b === void 0 ? void 0 : _b.name) + "]", dangerouslySetInnerHTML: {
|
|
74
|
+
__html: value,
|
|
75
|
+
}, onFocus: () => {
|
|
76
|
+
var _a;
|
|
77
|
+
editContext.setFocusedField((_a = field._editor) === null || _a === void 0 ? void 0 : _a.descriptor, true);
|
|
78
|
+
}, onBlur: () => {
|
|
79
|
+
editContext.setFocusedField(undefined, false);
|
|
80
|
+
}, onClick: () => {
|
|
81
|
+
var _a, _b, _c;
|
|
82
|
+
if (!((_a = field._editor) === null || _a === void 0 ? void 0 : _a.canWrite) || !((_b = field._editor) === null || _b === void 0 ? void 0 : _b.hasLock))
|
|
83
|
+
editContext.setFocusedField((_c = field._editor) === null || _c === void 0 ? void 0 : _c.descriptor, true);
|
|
84
|
+
}, onContextMenu,
|
|
85
|
+
ref });
|
|
86
|
+
const element = React.createElement(tag || "div", properies);
|
|
87
|
+
if (isLocked) {
|
|
88
|
+
return (_jsxs(_Fragment, { children: [_jsx(LockedFieldIndicator, { field: liveField, elementRef: ref }), " ", element] }));
|
|
89
|
+
}
|
|
90
|
+
return element;
|
|
91
|
+
}, [value, className, isLocked, ref]);
|
|
92
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import dynamic from "next/dynamic";
|
|
4
|
+
const RichTextEditor = dynamic(() => import("./RichTextEditor").then((dnd) => dnd.RichTextEditor), { ssr: false });
|
|
5
|
+
export function RichTextEditorWrapper(props) {
|
|
6
|
+
return _jsx(RichTextEditor, Object.assign({}, props));
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import "server-only";
|
|
3
|
+
import { Placeholder } from "./Placeholder";
|
|
4
|
+
export default function Section({ component }) {
|
|
5
|
+
return (_jsx(_Fragment, { children: _jsx(Placeholder, { name: "ph-slot-content", content: component }) }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import "server-only";
|
|
14
|
+
import React from "react";
|
|
15
|
+
import { useAlpacaContext } from "../alpacaContext";
|
|
16
|
+
import { TextEditorWrapper } from "./TextEditorWrapper";
|
|
17
|
+
export function Text(_a) {
|
|
18
|
+
var { field, tag, editable } = _a, props = __rest(_a, ["field", "tag", "editable"]);
|
|
19
|
+
if (!field)
|
|
20
|
+
return;
|
|
21
|
+
if (field.jsonValue) {
|
|
22
|
+
field = field.jsonValue;
|
|
23
|
+
}
|
|
24
|
+
if (useAlpacaContext().pageContext.pageEditing) {
|
|
25
|
+
return (_jsx("div", { children: _jsx(TextEditorWrapper, Object.assign({ field: field, tag: tag }, props)) }));
|
|
26
|
+
}
|
|
27
|
+
else
|
|
28
|
+
return React.createElement(tag || "div", props, field.value);
|
|
29
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
15
|
+
import { useEditContext } from "../editor/editContext";
|
|
16
|
+
import { isFieldActionExecuting } from "../editor/utils";
|
|
17
|
+
import { getFieldContextMenu } from "../editor/ContextMenu";
|
|
18
|
+
import { LockedFieldIndicator } from "./LockedFieldIndicator";
|
|
19
|
+
export function TextEditor(_a) {
|
|
20
|
+
var _b, _c, _d, _e, _f, _g;
|
|
21
|
+
var { field, tag } = _a, props = __rest(_a, ["field", "tag"]);
|
|
22
|
+
const editContext = useEditContext();
|
|
23
|
+
const [value, setValue] = useState("");
|
|
24
|
+
const [editedValue, setEditedValue] = useState();
|
|
25
|
+
const ref = useRef(null);
|
|
26
|
+
if (!editContext)
|
|
27
|
+
return;
|
|
28
|
+
const { updateContentEditingFields } = editContext;
|
|
29
|
+
const liveField = editContext.getLiveField(field);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (!liveField)
|
|
32
|
+
return;
|
|
33
|
+
if (editedValue != liveField.value)
|
|
34
|
+
setValue(liveField.value);
|
|
35
|
+
}, [liveField === null || liveField === void 0 ? void 0 : liveField.value]);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (liveField) {
|
|
38
|
+
setValue(field.value);
|
|
39
|
+
liveField.value = field.value;
|
|
40
|
+
}
|
|
41
|
+
editContext.registerAsRenderedField(field);
|
|
42
|
+
}, [field]);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (!liveField)
|
|
45
|
+
return;
|
|
46
|
+
setValue(liveField.value); // Otherwise react would not update the field after the refresh
|
|
47
|
+
}, [updateContentEditingFields]);
|
|
48
|
+
let className = (_b = props.className) !== null && _b !== void 0 ? _b : "";
|
|
49
|
+
className += " a-cursor-text";
|
|
50
|
+
if (isFieldActionExecuting(field, editContext)) {
|
|
51
|
+
className += " a-executing-action a-focus-shadow ";
|
|
52
|
+
}
|
|
53
|
+
const onContextMenu = getFieldContextMenu(field, editContext, []);
|
|
54
|
+
const isLocked = (((_c = liveField._editor) === null || _c === void 0 ? void 0 : _c.lockedBy) &&
|
|
55
|
+
((_e = (_d = liveField._editor) === null || _d === void 0 ? void 0 : _d.lockedBy) === null || _e === void 0 ? void 0 : _e.sessionId) != editContext.sessionId) ||
|
|
56
|
+
false;
|
|
57
|
+
const properies = Object.assign(Object.assign({}, props), { className, contentEditable: ((_f = field._editor) === null || _f === void 0 ? void 0 : _f.canWrite) && !isLocked, suppressContentEditableWarning: true, onInput: (e) => setFieldValue(e.currentTarget.textContent), placeholder: "[" + ((_g = field._editor) === null || _g === void 0 ? void 0 : _g.name) + "]", onFocus: () => {
|
|
58
|
+
var _a;
|
|
59
|
+
editContext.setFocusedField((_a = field._editor) === null || _a === void 0 ? void 0 : _a.descriptor, true);
|
|
60
|
+
}, onBlur: () => {
|
|
61
|
+
editContext.setFocusedField(undefined, false);
|
|
62
|
+
}, onClick: () => {
|
|
63
|
+
var _a, _b, _c;
|
|
64
|
+
if (!((_a = field._editor) === null || _a === void 0 ? void 0 : _a.canWrite) || !((_b = field._editor) === null || _b === void 0 ? void 0 : _b.hasLock))
|
|
65
|
+
editContext.setFocusedField((_c = field._editor) === null || _c === void 0 ? void 0 : _c.descriptor, true);
|
|
66
|
+
}, ref,
|
|
67
|
+
onContextMenu });
|
|
68
|
+
const setFieldValue = (val) => {
|
|
69
|
+
setEditedValue(val);
|
|
70
|
+
if (editContext)
|
|
71
|
+
editContext.editField({ field, value: val, refresh: "none" });
|
|
72
|
+
};
|
|
73
|
+
const element = React.createElement(tag || "div", properies, value);
|
|
74
|
+
if (isLocked) {
|
|
75
|
+
return (_jsxs(_Fragment, { children: [_jsx(LockedFieldIndicator, { elementRef: ref, field: liveField }), " ", element] }));
|
|
76
|
+
}
|
|
77
|
+
return element;
|
|
78
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
import dynamic from "next/dynamic";
|
|
15
|
+
const TextEditor = dynamic(() => import("./TextEditor").then((dnd) => dnd.TextEditor), { ssr: false });
|
|
16
|
+
export function TextEditorWrapper(_a) {
|
|
17
|
+
var { field, tag } = _a, props = __rest(_a, ["field", "tag"]);
|
|
18
|
+
return _jsx(TextEditor, Object.assign({ field: field, tag: tag }, props));
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import "server-only";
|
|
3
|
+
import { useAlpacaContext } from "../alpacaContext";
|
|
4
|
+
import dynamic from "next/dynamic";
|
|
5
|
+
const TranslateEditor = dynamic(() => import("./TranslateEditor").then((dnd) => dnd.TranslateEditor), { ssr: false });
|
|
6
|
+
export function Translate({ text }) {
|
|
7
|
+
const context = useAlpacaContext();
|
|
8
|
+
const dictionary = context.dictionary;
|
|
9
|
+
if (context.pageContext.pageEditing)
|
|
10
|
+
return _jsx(TranslateEditor, { text: text });
|
|
11
|
+
return dictionary[text] || text;
|
|
12
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect } from "react";
|
|
4
|
+
import { useEditContext } from "../editor/editContext";
|
|
5
|
+
import { TextEditor } from "./TextEditor";
|
|
6
|
+
export function TranslateEditor({ text }) {
|
|
7
|
+
const context = useEditContext();
|
|
8
|
+
if (!context || !context.dictionary)
|
|
9
|
+
return text;
|
|
10
|
+
const dictionary = context.dictionary;
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (Object.keys(dictionary).indexOf(text) < 0 &&
|
|
13
|
+
context.unresolvedDictionaryKeys.indexOf(text) < 0) {
|
|
14
|
+
context.setUnresolvedDictionaryKeys([
|
|
15
|
+
...context.unresolvedDictionaryKeys,
|
|
16
|
+
text,
|
|
17
|
+
]);
|
|
18
|
+
}
|
|
19
|
+
}, []);
|
|
20
|
+
if (dictionary[text]) {
|
|
21
|
+
return _jsx(TextEditor, { field: dictionary[text] });
|
|
22
|
+
}
|
|
23
|
+
return (_jsx("span", { className: "a-p-1 a-ring-2 a-ring-red-500", onClick: () => console.log("create dictionary entry"), children: text }));
|
|
24
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function getRenderedPictureVariant(params, variants) {
|
|
2
|
+
var _a, _b;
|
|
3
|
+
const variantName = (_a = params.variant) !== null && _a !== void 0 ? _a : "auto";
|
|
4
|
+
const variant = variantName.toLocaleLowerCase() === "auto" && params.aspectRatio
|
|
5
|
+
? getBestMatchingVariant(variants, params.aspectRatio)
|
|
6
|
+
: (_b = variants.find((v) => v.name.toLowerCase() == variantName.toLowerCase())) !== null && _b !== void 0 ? _b : variants[0];
|
|
7
|
+
return variant;
|
|
8
|
+
}
|
|
9
|
+
export function getBestMatchingVariant(variants, aspectRatio) {
|
|
10
|
+
var _a;
|
|
11
|
+
if (!aspectRatio)
|
|
12
|
+
return ((_a = variants.find((v) => v.name.toLowerCase() == "default")) !== null && _a !== void 0 ? _a : variants[0]);
|
|
13
|
+
let minDistance = 1000000;
|
|
14
|
+
let bestMatch = undefined;
|
|
15
|
+
for (let i = 0; i < variants.length; i++) {
|
|
16
|
+
const variant = variants[i];
|
|
17
|
+
if (!variant.src)
|
|
18
|
+
continue;
|
|
19
|
+
const distance = Math.abs(aspectRatio - variant.aspectRatio);
|
|
20
|
+
if (distance < minDistance) {
|
|
21
|
+
minDistance = distance;
|
|
22
|
+
bestMatch = variant;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return bestMatch !== null && bestMatch !== void 0 ? bestMatch : variants[0];
|
|
26
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { CopyToClipboardButton } from "./ui/CopyToClipboardButton";
|
|
4
|
+
import { Section } from "./ui/Section";
|
|
5
|
+
export function ComponentInfo({ component, }) {
|
|
6
|
+
var _a;
|
|
7
|
+
if (!(component === null || component === void 0 ? void 0 : component.fields))
|
|
8
|
+
return;
|
|
9
|
+
const hostingPageItem = component._editor.hostingPageItem ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "a-font-bold", children: "Source:" }), _jsxs("div", { children: [component._editor.hostingPageItem.path, " (ID:", " ", component._editor.hostingPageItem.id, ")"] })] })) : null;
|
|
10
|
+
const linkedComponent = component._editor.linkedComponentItem ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "a-font-bold", children: "Source:" }), _jsxs("div", { children: [component._editor.linkedComponentItem.path, " (", component._editor.linkedComponentItem.id, ")"] })] })) : null;
|
|
11
|
+
return (_jsxs("div", { children: [_jsx("h2", { className: "a-py-3 a-px-3 a-text-l a-font-bold a-my-2", children: component.name }), _jsx(Section, { title: "Info", children: _jsxs("div", { className: "a-grid a-grid-cols-[min-content_1fr] a-gap-3 a-text-xs a-bg-gray-100", children: [_jsx("div", { className: "a-font-bold", children: "ID:" }), _jsxs("div", { children: [component.id, " ", _jsx(CopyToClipboardButton, { text: component.id })] }), _jsx("div", { className: "a-font-bold", children: "Template" }), _jsxs("div", { children: [component.componentType, " (", component.templateId, _jsx(CopyToClipboardButton, { text: component.templateId }), ")"] }), _jsx("div", { className: "a-font-bold", children: "Languages" }), _jsx("div", { children: (_a = component._editor.translations) === null || _a === void 0 ? void 0 : _a.join(", ") }), hostingPageItem, linkedComponent] }) })] }));
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, forwardRef, useImperativeHandle } from "react";
|
|
3
|
+
import { Dialog } from "primereact/dialog";
|
|
4
|
+
import { Button } from "primereact/button";
|
|
5
|
+
const ConfirmationDialog = forwardRef((_props, ref) => {
|
|
6
|
+
const [visible, setVisible] = useState(false);
|
|
7
|
+
const [props, setProps] = useState();
|
|
8
|
+
useImperativeHandle(ref, () => ({
|
|
9
|
+
confirm: (props) => {
|
|
10
|
+
setVisible(true);
|
|
11
|
+
setProps(props);
|
|
12
|
+
},
|
|
13
|
+
}));
|
|
14
|
+
const handleAccept = () => {
|
|
15
|
+
props === null || props === void 0 ? void 0 : props.accept();
|
|
16
|
+
setVisible(false);
|
|
17
|
+
};
|
|
18
|
+
const handleReject = () => {
|
|
19
|
+
if (props === null || props === void 0 ? void 0 : props.reject)
|
|
20
|
+
props.reject();
|
|
21
|
+
setVisible(false);
|
|
22
|
+
};
|
|
23
|
+
const handleCancel = () => {
|
|
24
|
+
setVisible(false);
|
|
25
|
+
};
|
|
26
|
+
const dialogFooter = (_jsxs("div", { children: [_jsx(Button, { label: (props === null || props === void 0 ? void 0 : props.acceptLabel) || "Yes", icon: (props === null || props === void 0 ? void 0 : props.acceptIcon) || "pi pi-check", onClick: handleAccept, className: "p-button-text" }), (props === null || props === void 0 ? void 0 : props.rejectLabel) && (_jsx(Button, { label: props === null || props === void 0 ? void 0 : props.rejectLabel, icon: (props === null || props === void 0 ? void 0 : props.rejectIcon) || "pi pi-times", onClick: handleReject, className: "p-button-text" })), (props === null || props === void 0 ? void 0 : props.showCancel) && (_jsx(Button, { label: "Cancel", icon: "pi pi-ban", onClick: handleCancel, className: "p-button-text" }))] }));
|
|
27
|
+
return (_jsx(Dialog, { header: (props === null || props === void 0 ? void 0 : props.header) || "Confirm", visible: visible, style: { width: "50vw" }, footer: dialogFooter, onHide: handleCancel, children: _jsxs("div", { className: "a-pt-3 a-flex a-items-center a-gap-2", children: [(props === null || props === void 0 ? void 0 : props.icon) && _jsx("i", { className: props.icon + " a-text-3xl" }), props === null || props === void 0 ? void 0 : props.message] }) }));
|
|
28
|
+
});
|
|
29
|
+
export default ConfirmationDialog;
|
|
@@ -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,29 +8,26 @@ 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
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const [
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const cm = (0, react_1.useRef)(null);
|
|
33
|
-
const [menu, setMenu] = (0, react_1.useState)([]);
|
|
34
|
-
const itemNameDialogRef = (0, react_1.useRef)(null);
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
12
|
+
import { ProgressSpinner } from "primereact/progressspinner";
|
|
13
|
+
import { useEditContext } from ".";
|
|
14
|
+
import { Tree, } from "primereact/tree";
|
|
15
|
+
import { useEffect, useRef, useState } from "react";
|
|
16
|
+
import { getChildren } from "./services/contentService";
|
|
17
|
+
import { ContextMenu } from "primereact/contextmenu";
|
|
18
|
+
import { createItem, loadInsertOptions } from "./services/editService";
|
|
19
|
+
import ItemNameDialog from "./ItemNameDialog";
|
|
20
|
+
import { getDeleteItemCommand } from "./itemCommands";
|
|
21
|
+
export default function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionMode, selectedItemIds, rootItemId, onSelectionChange, filter, templateIds, className, includeEmbeddedItems, onDoubleClick, secondarySelectedItemId, }) {
|
|
22
|
+
const [treeNodes, setTreeNodes] = useState([]);
|
|
23
|
+
const [selectedKeys, setSelectedKeys] = useState();
|
|
24
|
+
const [expandedKeys, setExpandedKeys] = useState();
|
|
25
|
+
const treeContainerRef = useRef(null);
|
|
26
|
+
const editContext = useEditContext();
|
|
27
|
+
const [selectedNodeScrolledIntoView, setSelectedNodeScrolledIntoView] = useState(false);
|
|
28
|
+
const cm = useRef(null);
|
|
29
|
+
const [menu, setMenu] = useState([]);
|
|
30
|
+
const itemNameDialogRef = useRef(null);
|
|
35
31
|
const loadOnExpand = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
36
32
|
const node = event.node;
|
|
37
33
|
yield loadChildren(node);
|
|
@@ -40,7 +36,7 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
40
36
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
37
|
if (!node.children) {
|
|
42
38
|
node.loading = true;
|
|
43
|
-
const nodes = yield loadNodeChildren(node
|
|
39
|
+
const nodes = yield loadNodeChildren(node);
|
|
44
40
|
node.children = nodes;
|
|
45
41
|
let value = [...treeNodes];
|
|
46
42
|
setTreeNodes(value);
|
|
@@ -52,10 +48,10 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
52
48
|
node.children = undefined;
|
|
53
49
|
loadChildren(node);
|
|
54
50
|
}
|
|
55
|
-
const loadNodeChildren = (
|
|
51
|
+
const loadNodeChildren = (node) => __awaiter(this, void 0, void 0, function* () {
|
|
56
52
|
if (!editContext)
|
|
57
53
|
return [];
|
|
58
|
-
let children = yield (
|
|
54
|
+
let children = yield getChildren(node.key, editContext.sessionId, templateIds, includeEmbeddedItems !== null && includeEmbeddedItems !== void 0 ? includeEmbeddedItems : false);
|
|
59
55
|
if (filter)
|
|
60
56
|
children = filter(children);
|
|
61
57
|
return children.map((x) => ({
|
|
@@ -65,9 +61,10 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
65
61
|
isDraggable: isDraggable && isDraggable(x),
|
|
66
62
|
data: x,
|
|
67
63
|
leaf: !x.hasChildren,
|
|
64
|
+
parent: node,
|
|
68
65
|
}));
|
|
69
66
|
});
|
|
70
|
-
|
|
67
|
+
useEffect(() => {
|
|
71
68
|
const newExpandedKeys = getExpandedKeys();
|
|
72
69
|
setExpandedKeys(newExpandedKeys);
|
|
73
70
|
preLoadNodes(newExpandedKeys);
|
|
@@ -87,7 +84,7 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
87
84
|
}
|
|
88
85
|
function preLoadNodes(expandedKeys) {
|
|
89
86
|
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
-
const rootNodes = yield loadNodeChildren(rootItemId);
|
|
87
|
+
const rootNodes = yield loadNodeChildren({ key: rootItemId });
|
|
91
88
|
yield doPreloadNodes(expandedKeys, rootNodes);
|
|
92
89
|
setExpandedKeys(Object.assign({}, expandedKeys));
|
|
93
90
|
setTreeNodes([...rootNodes]);
|
|
@@ -97,7 +94,7 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
97
94
|
return __awaiter(this, void 0, void 0, function* () {
|
|
98
95
|
for (let i = 0; i < treeNodes.length; i++) {
|
|
99
96
|
if (expandedKeys[treeNodes[i].key]) {
|
|
100
|
-
const children = yield loadNodeChildren(treeNodes[i]
|
|
97
|
+
const children = yield loadNodeChildren(treeNodes[i]);
|
|
101
98
|
treeNodes[i].children = children;
|
|
102
99
|
yield doPreloadNodes(expandedKeys, children);
|
|
103
100
|
}
|
|
@@ -115,13 +112,13 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
115
112
|
});
|
|
116
113
|
}
|
|
117
114
|
const nodeTemplate = (node, options) => {
|
|
118
|
-
let label = (
|
|
115
|
+
let label = _jsx("span", { children: node.label });
|
|
119
116
|
if (node.url) {
|
|
120
|
-
label = ((
|
|
117
|
+
label = (_jsx("a", { onDragStart: (e) => e.preventDefault(), href: node.url, className: "a-text-primary hover:a-underline a-font-semibold", children: node.label }));
|
|
121
118
|
}
|
|
122
|
-
return ((
|
|
119
|
+
return (_jsxs("span", { onDragStart: (event) => {
|
|
123
120
|
handleDragStart(event, node.data);
|
|
124
|
-
}, onDragEnd: handleDragEnd, draggable: node.isDraggable, className: `a-flex a-items-center a-gap-2 ${node.isDraggable ? "a-cursor-grab" : ""} ${options.className} ${node.data.id == secondarySelectedItemId ? "a-selected-secondary" : ""}`, children: [(
|
|
121
|
+
}, onDragEnd: handleDragEnd, draggable: node.isDraggable, className: `a-flex a-items-center a-gap-2 ${node.isDraggable ? "a-cursor-grab" : ""} ${options.className} ${node.data.id == secondarySelectedItemId ? "a-selected-secondary" : ""}`, children: [_jsx("img", { src: node.iconUrl, style: { height: "16px" }, width: "16", height: "16", onDragStart: (e) => e.preventDefault() }), label, node.loading && (_jsx(ProgressSpinner, { style: { width: "20px", height: "20px" } }))] }));
|
|
125
122
|
};
|
|
126
123
|
function handleDragStart(event, item) {
|
|
127
124
|
if (dragStart)
|
|
@@ -132,7 +129,7 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
132
129
|
if (dragEnd)
|
|
133
130
|
dragEnd();
|
|
134
131
|
}
|
|
135
|
-
|
|
132
|
+
useEffect(() => {
|
|
136
133
|
const newSelectedKeys = {};
|
|
137
134
|
selectedItemIds === null || selectedItemIds === void 0 ? void 0 : selectedItemIds.forEach((x) => {
|
|
138
135
|
if (x.startsWith("{") && x.endsWith("}") && x.length > 2)
|
|
@@ -146,7 +143,7 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
146
143
|
else
|
|
147
144
|
setSelectedKeys(newSelectedKeys);
|
|
148
145
|
}, [selectedItemIds]);
|
|
149
|
-
|
|
146
|
+
useEffect(() => {
|
|
150
147
|
const scrollNodeIntoView = () => {
|
|
151
148
|
if (!treeContainerRef.current)
|
|
152
149
|
return;
|
|
@@ -167,16 +164,16 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
167
164
|
var _a;
|
|
168
165
|
(_a = itemNameDialogRef.current) === null || _a === void 0 ? void 0 : _a.show({
|
|
169
166
|
accept: (name) => __awaiter(this, void 0, void 0, function* () {
|
|
170
|
-
yield
|
|
167
|
+
yield createItem(parent, templateId, name);
|
|
171
168
|
editContext === null || editContext === void 0 ? void 0 : editContext.requestRefresh("immediate");
|
|
172
169
|
node.expanded = true;
|
|
173
170
|
refreshNode(node);
|
|
174
171
|
}),
|
|
175
172
|
});
|
|
176
173
|
}
|
|
177
|
-
return ((
|
|
174
|
+
return (_jsxs(_Fragment, { children: [_jsx(ItemNameDialog, { ref: itemNameDialogRef }), _jsx(ContextMenu, { model: menu, ref: cm, className: "a-text-sm" }), _jsx("div", { className: className, onDragEnterCapture: (ev) => ev.stopPropagation(), onDragOverCapture: (ev) => ev.stopPropagation(), onDragLeaveCapture: (ev) => ev.stopPropagation(), ref: treeContainerRef, children: _jsx(Tree, { value: treeNodes, expandedKeys: expandedKeys, onToggle: (e) => setExpandedKeys(e.value), nodeTemplate: nodeTemplate,
|
|
178
175
|
//dragdropScope={isDraggable ? "alpaca" : undefined}
|
|
179
|
-
className: "a-w-full a-h-full alpaca-no-border a-p-0 a-text-xs", onExpand: loadOnExpand, selectionMode: selectionMode, pt: { container: { className: "a-h-full" } }, onNodeDoubleClick: (e) => {
|
|
176
|
+
className: "a-w-full a-h-full alpaca-no-border a-p-0 a-text-xs", onExpand: loadOnExpand, selectionMode: selectionMode == "none" ? undefined : selectionMode, pt: { container: { className: "a-h-full" } }, onNodeDoubleClick: (e) => {
|
|
180
177
|
onDoubleClick === null || onDoubleClick === void 0 ? void 0 : onDoubleClick(e.node.data);
|
|
181
178
|
}, onSelectionChange: (ev) => {
|
|
182
179
|
if (onSelectionChange && selectionMode == "multiple") {
|
|
@@ -190,26 +187,38 @@ function ContentTree({ isDraggable, dragStart, dragEnd, expandIdPath, selectionM
|
|
|
190
187
|
onSelectionChange(nodeDictionary[ev.value].data);
|
|
191
188
|
}
|
|
192
189
|
}, selectionKeys: selectedKeys, onContextMenu: (e) => __awaiter(this, void 0, void 0, function* () {
|
|
193
|
-
var _a;
|
|
190
|
+
var _a, _b;
|
|
194
191
|
e.originalEvent.preventDefault();
|
|
195
192
|
const item = e.node.data;
|
|
196
|
-
|
|
197
|
-
|
|
193
|
+
const insertOptions = yield loadInsertOptions(item);
|
|
194
|
+
const contextMenuItems = [
|
|
198
195
|
{
|
|
199
196
|
label: "Insert",
|
|
200
197
|
disabled: insertOptions.length == 0,
|
|
198
|
+
icon: "pi pi-plus",
|
|
201
199
|
items: insertOptions.length === 0
|
|
202
200
|
? undefined
|
|
203
201
|
: insertOptions.map((x) => ({
|
|
204
202
|
label: x.name,
|
|
205
|
-
icon: ((
|
|
203
|
+
icon: (_jsx("img", { className: "p-menuitem-icon", src: x.icon, style: { height: "16px" }, width: "16", height: "16", onDragStart: (e) => e.preventDefault() })),
|
|
206
204
|
command: () => {
|
|
207
205
|
insertItem(e.node, item, x.id);
|
|
208
206
|
},
|
|
209
207
|
})),
|
|
210
208
|
},
|
|
211
|
-
|
|
212
|
-
|
|
209
|
+
{
|
|
210
|
+
label: "Delete",
|
|
211
|
+
icon: "pi pi-trash",
|
|
212
|
+
command: getDeleteItemCommand(item, editContext, () => {
|
|
213
|
+
const parent = e.node.parent;
|
|
214
|
+
if (parent) {
|
|
215
|
+
refreshNode(parent);
|
|
216
|
+
}
|
|
217
|
+
}),
|
|
218
|
+
disabled: item.id == ((_a = editContext === null || editContext === void 0 ? void 0 : editContext.page) === null || _a === void 0 ? void 0 : _a.id),
|
|
219
|
+
},
|
|
220
|
+
];
|
|
221
|
+
setMenu(contextMenuItems);
|
|
222
|
+
(_b = cm.current) === null || _b === void 0 ? void 0 : _b.show(e.originalEvent);
|
|
213
223
|
}) }) })] }));
|
|
214
224
|
}
|
|
215
|
-
exports.default = ContentTree;
|