@atlaskit/editor-plugin-media 0.2.0 → 0.3.1
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/CHANGELOG.md +17 -0
- package/dist/cjs/commands/captions.js +59 -0
- package/dist/cjs/commands/helpers.js +127 -0
- package/dist/cjs/commands/index.js +24 -0
- package/dist/cjs/commands/linking.js +181 -0
- package/dist/cjs/index.js +8 -1
- package/dist/cjs/media-plugin-options.js +5 -0
- package/dist/cjs/next-plugin-type.js +5 -0
- package/dist/cjs/nodeviews/mediaGroup.js +376 -0
- package/dist/cjs/nodeviews/mediaInline.js +288 -0
- package/dist/cjs/nodeviews/mediaNodeUpdater.js +739 -0
- package/dist/cjs/nodeviews/mediaNodeView/index.js +177 -0
- package/dist/cjs/nodeviews/mediaNodeView/media.js +242 -0
- package/dist/cjs/nodeviews/mediaSingle.js +629 -0
- package/dist/cjs/nodeviews/messages.js +14 -0
- package/dist/cjs/nodeviews/styles.js +46 -0
- package/dist/cjs/nodeviews/types.js +5 -0
- package/dist/cjs/picker-facade.js +192 -0
- package/dist/cjs/plugin.js +293 -0
- package/dist/cjs/pm-plugins/alt-text/actions.js +5 -0
- package/dist/cjs/pm-plugins/alt-text/commands.js +59 -0
- package/dist/cjs/pm-plugins/alt-text/index.js +36 -0
- package/dist/cjs/pm-plugins/alt-text/keymap.js +15 -0
- package/dist/cjs/pm-plugins/alt-text/messages.js +44 -0
- package/dist/cjs/pm-plugins/alt-text/reducer.js +32 -0
- package/dist/cjs/pm-plugins/alt-text/types.js +5 -0
- package/dist/cjs/pm-plugins/alt-text/ui/AltTextEdit.js +209 -0
- package/dist/cjs/pm-plugins/keymap-media-single.js +163 -0
- package/dist/cjs/pm-plugins/keymap.js +88 -0
- package/dist/cjs/pm-plugins/linking/actions.js +13 -0
- package/dist/cjs/pm-plugins/linking/index.js +65 -0
- package/dist/cjs/pm-plugins/linking/keymap.js +14 -0
- package/dist/cjs/pm-plugins/linking/reducer.js +43 -0
- package/dist/cjs/pm-plugins/linking/types.js +5 -0
- package/dist/cjs/pm-plugins/main.js +813 -0
- package/dist/cjs/pm-plugins/media-editor-plugin-factory.js +8 -0
- package/dist/cjs/pm-plugins/mediaTaskManager.js +101 -0
- package/dist/cjs/pm-plugins/plugin-key.js +8 -0
- package/dist/cjs/pm-plugins/types.js +5 -0
- package/dist/cjs/toolbar/alt-text.js +80 -0
- package/dist/cjs/toolbar/commands.js +236 -0
- package/dist/cjs/toolbar/filePreviewItem.js +66 -0
- package/dist/cjs/toolbar/imageBorder.js +20 -0
- package/dist/cjs/toolbar/index.js +523 -0
- package/dist/cjs/toolbar/linking-toolbar-appearance.js +100 -0
- package/dist/cjs/toolbar/linking.js +96 -0
- package/dist/cjs/toolbar/utils.js +110 -0
- package/dist/cjs/ui/CaptionPlaceholder/index.js +27 -0
- package/dist/cjs/ui/CaptionPlaceholder/messages.js +14 -0
- package/dist/cjs/ui/ImageBorder/index.js +226 -0
- package/dist/cjs/ui/ImageBorder/messages.js +49 -0
- package/dist/cjs/ui/ImageBorder/styles.js +52 -0
- package/dist/cjs/ui/Media/DropPlaceholder.js +38 -0
- package/dist/cjs/ui/Media/drop-placeholder-messages.js +14 -0
- package/dist/cjs/ui/MediaLinkingToolbar.js +196 -0
- package/dist/cjs/ui/MediaPicker/BrowserWrapper.js +40 -0
- package/dist/cjs/ui/MediaPicker/ClipboardWrapper.js +39 -0
- package/dist/cjs/ui/MediaPicker/DropzoneWrapper.js +51 -0
- package/dist/cjs/ui/MediaPicker/PickerFacadeProvider.js +151 -0
- package/dist/cjs/ui/MediaPicker/index.js +103 -0
- package/dist/cjs/ui/PixelEntry/constants.js +7 -0
- package/dist/cjs/ui/PixelEntry/index.js +185 -0
- package/dist/cjs/ui/PixelEntry/messages.js +54 -0
- package/dist/cjs/ui/PixelEntry/styles.js +19 -0
- package/dist/cjs/ui/PixelEntry/types.js +5 -0
- package/dist/cjs/ui/ResizableMediaSingle/ResizableMediaMigrationNotification.js +16 -0
- package/dist/cjs/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +541 -0
- package/dist/cjs/ui/ResizableMediaSingle/index.js +422 -0
- package/dist/cjs/ui/ResizableMediaSingle/styled.js +14 -0
- package/dist/cjs/ui/ResizableMediaSingle/styles.js +17 -0
- package/dist/cjs/ui/ResizableMediaSingle/types.js +5 -0
- package/dist/cjs/ui/ToolbarMedia/index.js +42 -0
- package/dist/cjs/ui/ToolbarMedia/toolbar-media-messages.js +14 -0
- package/dist/cjs/ui/media-linking-toolbar-messages.js +14 -0
- package/dist/cjs/utils/analytics.js +53 -0
- package/dist/cjs/utils/check-media-type.js +56 -0
- package/dist/cjs/utils/current-media-node.js +41 -0
- package/dist/cjs/utils/is-image.js +9 -0
- package/dist/cjs/utils/media-common.js +181 -0
- package/dist/cjs/utils/media-files.js +297 -0
- package/dist/cjs/utils/media-single.js +181 -0
- package/dist/es2019/commands/captions.js +47 -0
- package/dist/es2019/commands/helpers.js +113 -0
- package/dist/es2019/commands/index.js +1 -0
- package/dist/es2019/commands/linking.js +169 -0
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/media-plugin-options.js +1 -0
- package/dist/es2019/next-plugin-type.js +1 -0
- package/dist/es2019/nodeviews/mediaGroup.js +314 -0
- package/dist/es2019/nodeviews/mediaInline.js +201 -0
- package/dist/es2019/nodeviews/mediaNodeUpdater.js +384 -0
- package/dist/es2019/nodeviews/mediaNodeView/index.js +149 -0
- package/dist/es2019/nodeviews/mediaNodeView/media.js +182 -0
- package/dist/es2019/nodeviews/mediaSingle.js +511 -0
- package/dist/es2019/nodeviews/messages.js +8 -0
- package/dist/es2019/nodeviews/styles.js +46 -0
- package/dist/es2019/nodeviews/types.js +1 -0
- package/dist/es2019/picker-facade.js +146 -0
- package/dist/es2019/plugin.js +284 -0
- package/dist/es2019/pm-plugins/alt-text/actions.js +1 -0
- package/dist/es2019/pm-plugins/alt-text/commands.js +42 -0
- package/dist/es2019/pm-plugins/alt-text/index.js +33 -0
- package/dist/es2019/pm-plugins/alt-text/keymap.js +9 -0
- package/dist/es2019/pm-plugins/alt-text/messages.js +38 -0
- package/dist/es2019/pm-plugins/alt-text/reducer.js +26 -0
- package/dist/es2019/pm-plugins/alt-text/types.js +1 -0
- package/dist/es2019/pm-plugins/alt-text/ui/AltTextEdit.js +228 -0
- package/dist/es2019/pm-plugins/keymap-media-single.js +172 -0
- package/dist/es2019/pm-plugins/keymap.js +84 -0
- package/dist/es2019/pm-plugins/linking/actions.js +7 -0
- package/dist/es2019/pm-plugins/linking/index.js +56 -0
- package/dist/es2019/pm-plugins/linking/keymap.js +8 -0
- package/dist/es2019/pm-plugins/linking/reducer.js +37 -0
- package/dist/es2019/pm-plugins/linking/types.js +1 -0
- package/dist/es2019/pm-plugins/main.js +695 -0
- package/dist/es2019/pm-plugins/media-editor-plugin-factory.js +2 -0
- package/dist/es2019/pm-plugins/mediaTaskManager.js +64 -0
- package/dist/es2019/pm-plugins/plugin-key.js +2 -0
- package/dist/es2019/pm-plugins/types.js +1 -0
- package/dist/es2019/toolbar/alt-text.js +72 -0
- package/dist/es2019/toolbar/commands.js +212 -0
- package/dist/es2019/toolbar/filePreviewItem.js +54 -0
- package/dist/es2019/toolbar/imageBorder.js +15 -0
- package/dist/es2019/toolbar/index.js +538 -0
- package/dist/es2019/toolbar/linking-toolbar-appearance.js +90 -0
- package/dist/es2019/toolbar/linking.js +98 -0
- package/dist/es2019/toolbar/utils.js +86 -0
- package/dist/es2019/ui/CaptionPlaceholder/index.js +25 -0
- package/dist/es2019/ui/CaptionPlaceholder/messages.js +8 -0
- package/dist/es2019/ui/ImageBorder/index.js +213 -0
- package/dist/es2019/ui/ImageBorder/messages.js +43 -0
- package/dist/es2019/ui/ImageBorder/styles.js +126 -0
- package/dist/es2019/ui/Media/DropPlaceholder.js +47 -0
- package/dist/es2019/ui/Media/drop-placeholder-messages.js +8 -0
- package/dist/es2019/ui/MediaLinkingToolbar.js +190 -0
- package/dist/es2019/ui/MediaPicker/BrowserWrapper.js +31 -0
- package/dist/es2019/ui/MediaPicker/ClipboardWrapper.js +32 -0
- package/dist/es2019/ui/MediaPicker/DropzoneWrapper.js +42 -0
- package/dist/es2019/ui/MediaPicker/PickerFacadeProvider.js +85 -0
- package/dist/es2019/ui/MediaPicker/index.js +82 -0
- package/dist/es2019/ui/PixelEntry/constants.js +1 -0
- package/dist/es2019/ui/PixelEntry/index.js +170 -0
- package/dist/es2019/ui/PixelEntry/messages.js +48 -0
- package/dist/es2019/ui/PixelEntry/styles.js +51 -0
- package/dist/es2019/ui/PixelEntry/types.js +1 -0
- package/dist/es2019/ui/ResizableMediaSingle/ResizableMediaMigrationNotification.js +9 -0
- package/dist/es2019/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +454 -0
- package/dist/es2019/ui/ResizableMediaSingle/index.js +344 -0
- package/dist/es2019/ui/ResizableMediaSingle/styled.js +9 -0
- package/dist/es2019/ui/ResizableMediaSingle/styles.js +14 -0
- package/dist/es2019/ui/ResizableMediaSingle/types.js +1 -0
- package/dist/es2019/ui/ToolbarMedia/index.js +37 -0
- package/dist/es2019/ui/ToolbarMedia/toolbar-media-messages.js +8 -0
- package/dist/es2019/ui/media-linking-toolbar-messages.js +8 -0
- package/dist/es2019/utils/analytics.js +51 -0
- package/dist/es2019/utils/check-media-type.js +19 -0
- package/dist/es2019/utils/current-media-node.js +35 -0
- package/dist/es2019/utils/is-image.js +3 -0
- package/dist/es2019/utils/media-common.js +189 -0
- package/dist/es2019/utils/media-files.js +321 -0
- package/dist/es2019/utils/media-single.js +176 -0
- package/dist/esm/commands/captions.js +53 -0
- package/dist/esm/commands/helpers.js +120 -0
- package/dist/esm/commands/index.js +1 -0
- package/dist/esm/commands/linking.js +174 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/media-plugin-options.js +1 -0
- package/dist/esm/next-plugin-type.js +1 -0
- package/dist/esm/nodeviews/mediaGroup.js +369 -0
- package/dist/esm/nodeviews/mediaInline.js +278 -0
- package/dist/esm/nodeviews/mediaNodeUpdater.js +732 -0
- package/dist/esm/nodeviews/mediaNodeView/index.js +170 -0
- package/dist/esm/nodeviews/mediaNodeView/media.js +233 -0
- package/dist/esm/nodeviews/mediaSingle.js +622 -0
- package/dist/esm/nodeviews/messages.js +8 -0
- package/dist/esm/nodeviews/styles.js +39 -0
- package/dist/esm/nodeviews/types.js +1 -0
- package/dist/esm/picker-facade.js +186 -0
- package/dist/esm/plugin.js +282 -0
- package/dist/esm/pm-plugins/alt-text/actions.js +1 -0
- package/dist/esm/pm-plugins/alt-text/commands.js +52 -0
- package/dist/esm/pm-plugins/alt-text/index.js +31 -0
- package/dist/esm/pm-plugins/alt-text/keymap.js +9 -0
- package/dist/esm/pm-plugins/alt-text/messages.js +38 -0
- package/dist/esm/pm-plugins/alt-text/reducer.js +25 -0
- package/dist/esm/pm-plugins/alt-text/types.js +1 -0
- package/dist/esm/pm-plugins/alt-text/ui/AltTextEdit.js +206 -0
- package/dist/esm/pm-plugins/keymap-media-single.js +158 -0
- package/dist/esm/pm-plugins/keymap.js +81 -0
- package/dist/esm/pm-plugins/linking/actions.js +7 -0
- package/dist/esm/pm-plugins/linking/index.js +59 -0
- package/dist/esm/pm-plugins/linking/keymap.js +8 -0
- package/dist/esm/pm-plugins/linking/reducer.js +36 -0
- package/dist/esm/pm-plugins/linking/types.js +1 -0
- package/dist/esm/pm-plugins/main.js +798 -0
- package/dist/esm/pm-plugins/media-editor-plugin-factory.js +2 -0
- package/dist/esm/pm-plugins/mediaTaskManager.js +94 -0
- package/dist/esm/pm-plugins/plugin-key.js +2 -0
- package/dist/esm/pm-plugins/types.js +1 -0
- package/dist/esm/toolbar/alt-text.js +70 -0
- package/dist/esm/toolbar/commands.js +229 -0
- package/dist/esm/toolbar/filePreviewItem.js +56 -0
- package/dist/esm/toolbar/imageBorder.js +14 -0
- package/dist/esm/toolbar/index.js +513 -0
- package/dist/esm/toolbar/linking-toolbar-appearance.js +91 -0
- package/dist/esm/toolbar/linking.js +88 -0
- package/dist/esm/toolbar/utils.js +103 -0
- package/dist/esm/ui/CaptionPlaceholder/index.js +20 -0
- package/dist/esm/ui/CaptionPlaceholder/messages.js +8 -0
- package/dist/esm/ui/ImageBorder/index.js +218 -0
- package/dist/esm/ui/ImageBorder/messages.js +43 -0
- package/dist/esm/ui/ImageBorder/styles.js +42 -0
- package/dist/esm/ui/Media/DropPlaceholder.js +31 -0
- package/dist/esm/ui/Media/drop-placeholder-messages.js +8 -0
- package/dist/esm/ui/MediaLinkingToolbar.js +188 -0
- package/dist/esm/ui/MediaPicker/BrowserWrapper.js +33 -0
- package/dist/esm/ui/MediaPicker/ClipboardWrapper.js +32 -0
- package/dist/esm/ui/MediaPicker/DropzoneWrapper.js +44 -0
- package/dist/esm/ui/MediaPicker/PickerFacadeProvider.js +145 -0
- package/dist/esm/ui/MediaPicker/index.js +96 -0
- package/dist/esm/ui/PixelEntry/constants.js +1 -0
- package/dist/esm/ui/PixelEntry/index.js +174 -0
- package/dist/esm/ui/PixelEntry/messages.js +48 -0
- package/dist/esm/ui/PixelEntry/styles.js +12 -0
- package/dist/esm/ui/PixelEntry/types.js +1 -0
- package/dist/esm/ui/ResizableMediaSingle/ResizableMediaMigrationNotification.js +9 -0
- package/dist/esm/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +535 -0
- package/dist/esm/ui/ResizableMediaSingle/index.js +417 -0
- package/dist/esm/ui/ResizableMediaSingle/styled.js +7 -0
- package/dist/esm/ui/ResizableMediaSingle/styles.js +7 -0
- package/dist/esm/ui/ResizableMediaSingle/types.js +1 -0
- package/dist/esm/ui/ToolbarMedia/index.js +35 -0
- package/dist/esm/ui/ToolbarMedia/toolbar-media-messages.js +8 -0
- package/dist/esm/ui/media-linking-toolbar-messages.js +8 -0
- package/dist/esm/utils/analytics.js +47 -0
- package/dist/esm/utils/check-media-type.js +49 -0
- package/dist/esm/utils/current-media-node.js +35 -0
- package/dist/esm/utils/is-image.js +3 -0
- package/dist/esm/utils/media-common.js +175 -0
- package/dist/esm/utils/media-files.js +291 -0
- package/dist/esm/utils/media-single.js +172 -0
- package/dist/types/commands/captions.d.ts +5 -0
- package/dist/types/commands/helpers.d.ts +15 -0
- package/dist/types/commands/index.d.ts +1 -0
- package/dist/types/commands/linking.d.ts +9 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/media-plugin-options.d.ts +17 -0
- package/dist/types/next-plugin-type.d.ts +33 -0
- package/dist/types/nodeviews/__mocks__/mediaNodeUpdater.d.ts +24 -0
- package/dist/types/nodeviews/mediaGroup.d.ts +33 -0
- package/dist/types/nodeviews/mediaInline.d.ts +50 -0
- package/dist/types/nodeviews/mediaNodeUpdater.d.ts +45 -0
- package/dist/types/nodeviews/mediaNodeView/index.d.ts +28 -0
- package/dist/types/nodeviews/mediaNodeView/media.d.ts +44 -0
- package/dist/types/nodeviews/mediaSingle.d.ts +62 -0
- package/dist/types/nodeviews/messages.d.ts +7 -0
- package/dist/types/nodeviews/styles.d.ts +16 -0
- package/dist/types/nodeviews/types.d.ts +42 -0
- package/dist/types/picker-facade.d.ts +44 -0
- package/dist/types/plugin.d.ts +7 -0
- package/dist/types/pm-plugins/alt-text/actions.d.ts +10 -0
- package/dist/types/pm-plugins/alt-text/commands.d.ts +4 -0
- package/dist/types/pm-plugins/alt-text/index.d.ts +7 -0
- package/dist/types/pm-plugins/alt-text/keymap.d.ts +4 -0
- package/dist/types/pm-plugins/alt-text/messages.d.ts +37 -0
- package/dist/types/pm-plugins/alt-text/reducer.d.ts +4 -0
- package/dist/types/pm-plugins/alt-text/types.d.ts +3 -0
- package/dist/types/pm-plugins/alt-text/ui/AltTextEdit.d.ts +41 -0
- package/dist/types/pm-plugins/keymap-media-single.d.ts +3 -0
- package/dist/types/pm-plugins/keymap.d.ts +6 -0
- package/dist/types/pm-plugins/linking/actions.d.ts +20 -0
- package/dist/types/pm-plugins/linking/index.d.ts +10 -0
- package/dist/types/pm-plugins/linking/keymap.d.ts +3 -0
- package/dist/types/pm-plugins/linking/reducer.d.ts +4 -0
- package/dist/types/pm-plugins/linking/types.d.ts +12 -0
- package/dist/types/pm-plugins/main.d.ts +120 -0
- package/dist/types/pm-plugins/media-editor-plugin-factory.d.ts +3 -0
- package/dist/types/pm-plugins/mediaTaskManager.d.ts +9 -0
- package/dist/types/pm-plugins/plugin-key.d.ts +3 -0
- package/dist/types/pm-plugins/types.d.ts +65 -0
- package/dist/types/toolbar/alt-text.d.ts +13 -0
- package/dist/types/toolbar/commands.d.ts +12 -0
- package/dist/types/toolbar/filePreviewItem.d.ts +9 -0
- package/dist/types/toolbar/imageBorder.d.ts +2 -0
- package/dist/types/toolbar/index.d.ts +6 -0
- package/dist/types/toolbar/linking-toolbar-appearance.d.ts +14 -0
- package/dist/types/toolbar/linking.d.ts +10 -0
- package/dist/types/toolbar/utils.d.ts +11 -0
- package/dist/types/types.d.ts +2 -1
- package/dist/types/ui/CaptionPlaceholder/index.d.ts +6 -0
- package/dist/types/ui/CaptionPlaceholder/messages.d.ts +7 -0
- package/dist/types/ui/ImageBorder/index.d.ts +11 -0
- package/dist/types/ui/ImageBorder/messages.d.ts +42 -0
- package/dist/types/ui/ImageBorder/styles.d.ts +15 -0
- package/dist/types/ui/Media/DropPlaceholder.d.ts +8 -0
- package/dist/types/ui/Media/drop-placeholder-messages.d.ts +7 -0
- package/dist/types/ui/MediaLinkingToolbar.d.ts +35 -0
- package/dist/types/ui/MediaPicker/BrowserWrapper.d.ts +11 -0
- package/dist/types/ui/MediaPicker/ClipboardWrapper.d.ts +10 -0
- package/dist/types/ui/MediaPicker/DropzoneWrapper.d.ts +13 -0
- package/dist/types/ui/MediaPicker/PickerFacadeProvider.d.ts +28 -0
- package/dist/types/ui/MediaPicker/index.d.ts +23 -0
- package/dist/types/ui/PixelEntry/constants.d.ts +1 -0
- package/dist/types/ui/PixelEntry/index.d.ts +8 -0
- package/dist/types/ui/PixelEntry/messages.d.ts +47 -0
- package/dist/types/ui/PixelEntry/styles.d.ts +8 -0
- package/dist/types/ui/PixelEntry/types.d.ts +58 -0
- package/dist/types/ui/ResizableMediaSingle/ResizableMediaMigrationNotification.d.ts +3 -0
- package/dist/types/ui/ResizableMediaSingle/ResizableMediaSingleNext.d.ts +59 -0
- package/dist/types/ui/ResizableMediaSingle/index.d.ts +45 -0
- package/dist/types/ui/ResizableMediaSingle/styled.d.ts +2 -0
- package/dist/types/ui/ResizableMediaSingle/styles.d.ts +1 -0
- package/dist/types/ui/ResizableMediaSingle/types.d.ts +27 -0
- package/dist/types/ui/ToolbarMedia/index.d.ts +13 -0
- package/dist/types/ui/ToolbarMedia/toolbar-media-messages.d.ts +7 -0
- package/dist/types/ui/media-linking-toolbar-messages.d.ts +7 -0
- package/dist/types/utils/analytics.d.ts +3 -0
- package/dist/types/utils/check-media-type.d.ts +4 -0
- package/dist/types/utils/current-media-node.d.ts +9 -0
- package/dist/types/utils/is-image.d.ts +1 -0
- package/dist/types/utils/media-common.d.ts +20 -0
- package/dist/types/utils/media-files.d.ts +30 -0
- package/dist/types/utils/media-single.d.ts +20 -0
- package/package.json +32 -20
- package/report.api.md +430 -0
- package/dist/types-ts4.5/index.d.ts +0 -1
- package/dist/types-ts4.5/types.d.ts +0 -118
- package/tmp/api-report-tmp.d.ts +0 -9
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.currentMediaNodeWithPos = exports.currentMediaNodeBorderMark = exports.currentMediaNode = void 0;
|
|
7
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
8
|
+
var currentMediaNodeWithPos = exports.currentMediaNodeWithPos = function currentMediaNodeWithPos(editorState) {
|
|
9
|
+
var doc = editorState.doc,
|
|
10
|
+
selection = editorState.selection,
|
|
11
|
+
schema = editorState.schema;
|
|
12
|
+
if (!doc || !selection || !(selection instanceof _state.NodeSelection) || selection.node.type !== schema.nodes.mediaSingle) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
var pos = selection.$anchor.pos + 1;
|
|
16
|
+
var node = doc.nodeAt(pos);
|
|
17
|
+
if (!node || node.type !== schema.nodes.media) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
node: node,
|
|
22
|
+
pos: pos
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
var currentMediaNode = exports.currentMediaNode = function currentMediaNode(editorState) {
|
|
26
|
+
var _currentMediaNodeWith;
|
|
27
|
+
return (_currentMediaNodeWith = currentMediaNodeWithPos(editorState)) === null || _currentMediaNodeWith === void 0 ? void 0 : _currentMediaNodeWith.node;
|
|
28
|
+
};
|
|
29
|
+
var currentMediaNodeBorderMark = exports.currentMediaNodeBorderMark = function currentMediaNodeBorderMark(editorState) {
|
|
30
|
+
var node = currentMediaNode(editorState);
|
|
31
|
+
if (!node) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
var borderMark = node.marks.find(function (m) {
|
|
35
|
+
return m.type.name === 'border';
|
|
36
|
+
});
|
|
37
|
+
if (!borderMark) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
return borderMark.attrs;
|
|
41
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isImage = void 0;
|
|
7
|
+
var isImage = exports.isImage = function isImage(fileType) {
|
|
8
|
+
return !!fileType && (fileType.indexOf('image/') > -1 || fileType.indexOf('video/') > -1);
|
|
9
|
+
};
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.splitMediaGroup = exports.removeMediaNode = exports.posOfPrecedingMediaGroup = exports.posOfParentMediaGroup = exports.posOfMediaGroupNearby = exports.isSelectionNonMediaBlockNode = exports.isSelectionMediaSingleNode = exports.isMediaBlobUrlFromAttrs = exports.isInsidePotentialEmptyParagraph = exports.getMediaNodeFromSelection = exports.copyOptionalAttrsFromMediaState = void 0;
|
|
7
|
+
var _selection = require("@atlaskit/editor-common/selection");
|
|
8
|
+
var _utils = require("@atlaskit/editor-common/utils");
|
|
9
|
+
var _commands = require("@atlaskit/editor-prosemirror/commands");
|
|
10
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
11
|
+
var _utils2 = require("@atlaskit/editor-prosemirror/utils");
|
|
12
|
+
var _mediaClient = require("@atlaskit/media-client");
|
|
13
|
+
var isTemporary = function isTemporary(id) {
|
|
14
|
+
return id.indexOf('temporary:') === 0;
|
|
15
|
+
};
|
|
16
|
+
var isMediaBlobUrlFromAttrs = exports.isMediaBlobUrlFromAttrs = function isMediaBlobUrlFromAttrs(attrs) {
|
|
17
|
+
return !!(attrs && attrs.type === 'external' && (0, _mediaClient.isMediaBlobUrl)(attrs.url));
|
|
18
|
+
};
|
|
19
|
+
var posOfMediaGroupNearby = exports.posOfMediaGroupNearby = function posOfMediaGroupNearby(state) {
|
|
20
|
+
return posOfParentMediaGroup(state) || posOfFollowingMediaGroup(state) || posOfPrecedingMediaGroup(state) || posOfMediaGroupNextToGapCursor(state);
|
|
21
|
+
};
|
|
22
|
+
var isSelectionNonMediaBlockNode = exports.isSelectionNonMediaBlockNode = function isSelectionNonMediaBlockNode(state) {
|
|
23
|
+
var _ref = state.selection,
|
|
24
|
+
node = _ref.node;
|
|
25
|
+
return node && node.type !== state.schema.nodes.media && node.isBlock;
|
|
26
|
+
};
|
|
27
|
+
var isSelectionMediaSingleNode = exports.isSelectionMediaSingleNode = function isSelectionMediaSingleNode(state) {
|
|
28
|
+
var _ref2 = state.selection,
|
|
29
|
+
node = _ref2.node;
|
|
30
|
+
return node && node.type === state.schema.nodes.mediaSingle;
|
|
31
|
+
};
|
|
32
|
+
var posOfPrecedingMediaGroup = exports.posOfPrecedingMediaGroup = function posOfPrecedingMediaGroup(state) {
|
|
33
|
+
if (!(0, _selection.atTheBeginningOfBlock)(state)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
return posOfMediaGroupAbove(state, state.selection.$from);
|
|
37
|
+
};
|
|
38
|
+
var posOfMediaGroupNextToGapCursor = function posOfMediaGroupNextToGapCursor(state) {
|
|
39
|
+
var selection = state.selection;
|
|
40
|
+
if (selection instanceof _selection.GapCursorSelection) {
|
|
41
|
+
var $pos = state.selection.$from;
|
|
42
|
+
var mediaGroupType = state.schema.nodes.mediaGroup;
|
|
43
|
+
return posOfImmediatePrecedingMediaGroup($pos, mediaGroupType) || posOfImmediateFollowingMediaGroup($pos, mediaGroupType);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
var posOfImmediatePrecedingMediaGroup = function posOfImmediatePrecedingMediaGroup($pos, mediaGroupType) {
|
|
47
|
+
if ($pos.nodeBefore && $pos.nodeBefore.type === mediaGroupType) {
|
|
48
|
+
return $pos.pos - $pos.nodeBefore.nodeSize + 1;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
var posOfImmediateFollowingMediaGroup = function posOfImmediateFollowingMediaGroup($pos, mediaGroupType) {
|
|
52
|
+
if ($pos.nodeAfter && $pos.nodeAfter.type === mediaGroupType) {
|
|
53
|
+
return $pos.pos + 1;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
var posOfFollowingMediaGroup = function posOfFollowingMediaGroup(state) {
|
|
57
|
+
if (!(0, _selection.atTheEndOfBlock)(state)) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
return posOfMediaGroupBelow(state, state.selection.$to);
|
|
61
|
+
};
|
|
62
|
+
var posOfMediaGroupAbove = function posOfMediaGroupAbove(state, $pos) {
|
|
63
|
+
var adjacentPos;
|
|
64
|
+
var adjacentNode;
|
|
65
|
+
if (isSelectionNonMediaBlockNode(state)) {
|
|
66
|
+
adjacentPos = $pos.pos;
|
|
67
|
+
adjacentNode = $pos.nodeBefore;
|
|
68
|
+
} else {
|
|
69
|
+
adjacentPos = (0, _selection.startPositionOfParent)($pos) - 1;
|
|
70
|
+
adjacentNode = state.doc.resolve(adjacentPos).nodeBefore;
|
|
71
|
+
}
|
|
72
|
+
if (adjacentNode && adjacentNode.type === state.schema.nodes.mediaGroup) {
|
|
73
|
+
return adjacentPos - adjacentNode.nodeSize + 1;
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Determine whether the cursor is inside empty paragraph
|
|
80
|
+
* or the selection is the entire paragraph
|
|
81
|
+
*/
|
|
82
|
+
var isInsidePotentialEmptyParagraph = exports.isInsidePotentialEmptyParagraph = function isInsidePotentialEmptyParagraph(state) {
|
|
83
|
+
var $from = state.selection.$from;
|
|
84
|
+
return $from.parent.type === state.schema.nodes.paragraph && (0, _selection.atTheBeginningOfBlock)(state) && (0, _selection.atTheEndOfBlock)(state);
|
|
85
|
+
};
|
|
86
|
+
var posOfMediaGroupBelow = function posOfMediaGroupBelow(state, $pos) {
|
|
87
|
+
var prepend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
88
|
+
var adjacentPos;
|
|
89
|
+
var adjacentNode;
|
|
90
|
+
if (isSelectionNonMediaBlockNode(state)) {
|
|
91
|
+
adjacentPos = $pos.pos;
|
|
92
|
+
adjacentNode = $pos.nodeAfter;
|
|
93
|
+
} else {
|
|
94
|
+
adjacentPos = (0, _selection.endPositionOfParent)($pos);
|
|
95
|
+
adjacentNode = state.doc.nodeAt(adjacentPos);
|
|
96
|
+
}
|
|
97
|
+
if (adjacentNode && adjacentNode.type === state.schema.nodes.mediaGroup) {
|
|
98
|
+
return prepend ? adjacentPos + 1 : adjacentPos + adjacentNode.nodeSize - 1;
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
};
|
|
102
|
+
var posOfParentMediaGroup = exports.posOfParentMediaGroup = function posOfParentMediaGroup(state, $pos) {
|
|
103
|
+
var prepend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
104
|
+
var $from = state.selection.$from;
|
|
105
|
+
$pos = $pos || $from;
|
|
106
|
+
if ($pos.parent.type === state.schema.nodes.mediaGroup) {
|
|
107
|
+
return prepend ? (0, _selection.startPositionOfParent)($pos) : (0, _selection.endPositionOfParent)($pos) - 1;
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
};
|
|
111
|
+
var removeMediaNode = exports.removeMediaNode = function removeMediaNode(view, node, getPos) {
|
|
112
|
+
var id = node.attrs.id;
|
|
113
|
+
var state = view.state;
|
|
114
|
+
var tr = state.tr,
|
|
115
|
+
selection = state.selection,
|
|
116
|
+
doc = state.doc;
|
|
117
|
+
var currentMediaNodePos = getPos();
|
|
118
|
+
if (typeof currentMediaNodePos !== 'number') {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
tr.deleteRange(currentMediaNodePos, currentMediaNodePos + node.nodeSize);
|
|
122
|
+
if (isTemporary(id)) {
|
|
123
|
+
tr.setMeta('addToHistory', false);
|
|
124
|
+
}
|
|
125
|
+
var $currentMediaNodePos = doc.resolve(currentMediaNodePos);
|
|
126
|
+
var nodeBefore = $currentMediaNodePos.nodeBefore,
|
|
127
|
+
parent = $currentMediaNodePos.parent;
|
|
128
|
+
var isLastMediaNode = $currentMediaNodePos.index() === parent.childCount - 1;
|
|
129
|
+
|
|
130
|
+
// If deleting a selected media node, we need to tell where the cursor to go next.
|
|
131
|
+
// Prosemirror didn't gave us the behaviour of moving left if the media node is not the last one.
|
|
132
|
+
// So we handle it ourselves.
|
|
133
|
+
if (selection.from === currentMediaNodePos && !isLastMediaNode && !(0, _selection.atTheBeginningOfDoc)(state) && nodeBefore && nodeBefore.type.name === 'media') {
|
|
134
|
+
var _nodeBefore = (0, _utils2.findPositionOfNodeBefore)(tr.selection);
|
|
135
|
+
if (_nodeBefore) {
|
|
136
|
+
tr.setSelection(_state.NodeSelection.create(tr.doc, _nodeBefore));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
view.dispatch(tr);
|
|
140
|
+
};
|
|
141
|
+
var splitMediaGroup = exports.splitMediaGroup = function splitMediaGroup(view) {
|
|
142
|
+
var selection = view.state.selection;
|
|
143
|
+
|
|
144
|
+
// if selection is not a media node, do nothing.
|
|
145
|
+
if (!(selection instanceof _state.NodeSelection) || selection.node.type !== view.state.schema.nodes.media) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
(0, _commands.deleteSelection)(view.state, view.dispatch);
|
|
149
|
+
if (selection.$to.nodeAfter) {
|
|
150
|
+
(0, _commands.splitBlock)(view.state, view.dispatch);
|
|
151
|
+
(0, _utils.createParagraphNear)(false)(view.state, view.dispatch);
|
|
152
|
+
} else {
|
|
153
|
+
(0, _utils.createNewParagraphBelow)(view.state, view.dispatch);
|
|
154
|
+
}
|
|
155
|
+
return true;
|
|
156
|
+
};
|
|
157
|
+
var isOptionalAttr = function isOptionalAttr(attr) {
|
|
158
|
+
return attr.length > 1 && attr[0] === '_' && attr[1] === '_';
|
|
159
|
+
};
|
|
160
|
+
var copyOptionalAttrsFromMediaState = exports.copyOptionalAttrsFromMediaState = function copyOptionalAttrsFromMediaState(mediaState, node) {
|
|
161
|
+
Object.keys(node.attrs).filter(isOptionalAttr).forEach(function (key) {
|
|
162
|
+
var mediaStateKey = key.substring(2);
|
|
163
|
+
var attrValue = mediaState[mediaStateKey];
|
|
164
|
+
if (attrValue !== undefined) {
|
|
165
|
+
// @ts-ignore - [unblock prosemirror bump] assigning to readonly prop
|
|
166
|
+
node.attrs[key] = attrValue;
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
var getMediaNodeFromSelection = exports.getMediaNodeFromSelection = function getMediaNodeFromSelection(state) {
|
|
171
|
+
if (!isSelectionMediaSingleNode(state)) {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
var tr = state.tr;
|
|
175
|
+
var pos = tr.selection.from + 1;
|
|
176
|
+
var mediaNode = tr.doc.nodeAt(pos);
|
|
177
|
+
if (mediaNode && mediaNode.type === state.schema.nodes.media) {
|
|
178
|
+
return mediaNode;
|
|
179
|
+
}
|
|
180
|
+
return null;
|
|
181
|
+
};
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.insertMediaInlineNode = exports.insertMediaGroupNode = exports.getPosInList = exports.canInsertMediaInline = void 0;
|
|
7
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
8
|
+
var _selection = require("@atlaskit/editor-common/selection");
|
|
9
|
+
var _utils = require("@atlaskit/editor-common/utils");
|
|
10
|
+
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
11
|
+
var _utils2 = require("@atlaskit/editor-prosemirror/utils");
|
|
12
|
+
var _mediaCommon = require("./media-common");
|
|
13
|
+
var canInsertMediaInline = exports.canInsertMediaInline = function canInsertMediaInline(state) {
|
|
14
|
+
var node = state.schema.nodes.mediaInline.create({});
|
|
15
|
+
return (0, _utils2.canInsert)(state.selection.$to, _model.Fragment.from(node));
|
|
16
|
+
};
|
|
17
|
+
var getInsertMediaGroupAnalytics = function getInsertMediaGroupAnalytics(mediaState, inputMethod) {
|
|
18
|
+
var media = '';
|
|
19
|
+
if (mediaState.length === 1) {
|
|
20
|
+
media = mediaState[0].fileMimeType || 'unknown';
|
|
21
|
+
} else if (mediaState.length > 1) {
|
|
22
|
+
media = 'multiple';
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
action: _analytics.ACTION.INSERTED,
|
|
26
|
+
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
27
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.MEDIA,
|
|
28
|
+
attributes: {
|
|
29
|
+
type: _analytics.ACTION_SUBJECT_ID.MEDIA_GROUP,
|
|
30
|
+
inputMethod: inputMethod,
|
|
31
|
+
fileExtension: media
|
|
32
|
+
},
|
|
33
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
var getInsertMediaInlineAnalytics = function getInsertMediaInlineAnalytics(mediaState, inputMethod) {
|
|
37
|
+
var media = mediaState.fileMimeType || 'unknown';
|
|
38
|
+
return {
|
|
39
|
+
action: _analytics.ACTION.INSERTED,
|
|
40
|
+
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
41
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.MEDIA,
|
|
42
|
+
attributes: {
|
|
43
|
+
type: _analytics.ACTION_SUBJECT_ID.MEDIA_INLINE,
|
|
44
|
+
inputMethod: inputMethod,
|
|
45
|
+
fileExtension: media
|
|
46
|
+
},
|
|
47
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Check if current editor selections is a media group or not.
|
|
53
|
+
* @param state Editor state
|
|
54
|
+
*/
|
|
55
|
+
function isSelectionMediaGroup(state) {
|
|
56
|
+
var schema = state.schema;
|
|
57
|
+
var selectionParent = state.selection.$anchor.node();
|
|
58
|
+
return selectionParent && selectionParent.type === schema.nodes.mediaGroup;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Insert a paragraph after if reach the end of doc
|
|
63
|
+
* and there is no media group in the front or selection is a non media block node
|
|
64
|
+
* @param node Node at insertion point
|
|
65
|
+
* @param state Editor state
|
|
66
|
+
*/
|
|
67
|
+
function shouldAppendParagraph(state, node) {
|
|
68
|
+
var media = state.schema.nodes.media;
|
|
69
|
+
var wasMediaNode = node && node.type === media;
|
|
70
|
+
return ((0, _utils.insideTableCell)(state) || (0, _utils.isInListItem)(state) || (0, _utils.isInLayoutColumn)(state) || (0, _selection.atTheEndOfDoc)(state) && (!(0, _mediaCommon.posOfPrecedingMediaGroup)(state) || (0, _mediaCommon.isSelectionNonMediaBlockNode)(state))) && !wasMediaNode;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Create a new media inline to insert the new media.
|
|
75
|
+
* @param view Editor view
|
|
76
|
+
* @param mediaState Media file to be added to the editor
|
|
77
|
+
* @param collection Collection for the media to be added
|
|
78
|
+
*/
|
|
79
|
+
var insertMediaInlineNode = exports.insertMediaInlineNode = function insertMediaInlineNode(editorAnalyticsAPI) {
|
|
80
|
+
return function (view, mediaState, collection, inputMethod) {
|
|
81
|
+
var state = view.state,
|
|
82
|
+
dispatch = view.dispatch;
|
|
83
|
+
var schema = state.schema,
|
|
84
|
+
tr = state.tr;
|
|
85
|
+
var mediaInline = schema.nodes.mediaInline;
|
|
86
|
+
|
|
87
|
+
// Do nothing if no media found
|
|
88
|
+
if (!mediaInline || !mediaState || collection === undefined) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
var id = mediaState.id;
|
|
92
|
+
var mediaInlineNode = mediaInline.create({
|
|
93
|
+
id: id,
|
|
94
|
+
collection: collection
|
|
95
|
+
});
|
|
96
|
+
var space = state.schema.text(' ');
|
|
97
|
+
var pos = state.selection.$to.pos;
|
|
98
|
+
|
|
99
|
+
// If the selection is inside an empty list item set pos inside paragraph
|
|
100
|
+
if ((0, _utils.isInListItem)(state) && (0, _mediaCommon.isInsidePotentialEmptyParagraph)(state)) {
|
|
101
|
+
pos = pos + 1;
|
|
102
|
+
}
|
|
103
|
+
var content = _model.Fragment.from([mediaInlineNode, space]);
|
|
104
|
+
|
|
105
|
+
// Delete the selection if a selection is made
|
|
106
|
+
var deleteRange = findDeleteRange(state);
|
|
107
|
+
if (!deleteRange) {
|
|
108
|
+
tr.insert(pos, content);
|
|
109
|
+
} else {
|
|
110
|
+
tr.insert(pos, content).deleteRange(deleteRange.start, deleteRange.end);
|
|
111
|
+
}
|
|
112
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaInlineAnalytics(mediaState, inputMethod))(tr);
|
|
113
|
+
dispatch(tr);
|
|
114
|
+
return true;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Insert a media into an existing media group
|
|
120
|
+
* or create a new media group to insert the new media.
|
|
121
|
+
* @param view Editor view
|
|
122
|
+
* @param mediaStates Media files to be added to the editor
|
|
123
|
+
* @param collection Collection for the media to be added
|
|
124
|
+
*/
|
|
125
|
+
var insertMediaGroupNode = exports.insertMediaGroupNode = function insertMediaGroupNode(editorAnalyticsAPI) {
|
|
126
|
+
return function (view, mediaStates, collection, inputMethod) {
|
|
127
|
+
var state = view.state,
|
|
128
|
+
dispatch = view.dispatch;
|
|
129
|
+
var tr = state.tr,
|
|
130
|
+
schema = state.schema;
|
|
131
|
+
var _schema$nodes = schema.nodes,
|
|
132
|
+
media = _schema$nodes.media,
|
|
133
|
+
paragraph = _schema$nodes.paragraph;
|
|
134
|
+
|
|
135
|
+
// Do nothing if no media found
|
|
136
|
+
if (!media || !mediaStates.length) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
var mediaNodes = createMediaFileNodes(mediaStates, collection, media);
|
|
140
|
+
var mediaInsertPos = findMediaInsertPos(state);
|
|
141
|
+
var resolvedInsertPos = tr.doc.resolve(mediaInsertPos);
|
|
142
|
+
var parent = resolvedInsertPos.parent;
|
|
143
|
+
var nodeAtInsertionPoint = tr.doc.nodeAt(mediaInsertPos);
|
|
144
|
+
var shouldSplit = !isSelectionMediaGroup(state) && (0, _utils.isSupportedInParent)(state, _model.Fragment.from(state.schema.nodes.mediaGroup.createChecked({}, mediaNodes)));
|
|
145
|
+
var withParagraph = shouldAppendParagraph(state, nodeAtInsertionPoint);
|
|
146
|
+
var content = parent.type === schema.nodes.mediaGroup ? mediaNodes // If parent is a mediaGroup do not wrap items again.
|
|
147
|
+
: [schema.nodes.mediaGroup.createChecked({}, mediaNodes)];
|
|
148
|
+
if (shouldSplit) {
|
|
149
|
+
content = withParagraph ? content.concat(paragraph.create()) : content;
|
|
150
|
+
// delete the selection or empty paragraph
|
|
151
|
+
var deleteRange = findDeleteRange(state);
|
|
152
|
+
if (!deleteRange) {
|
|
153
|
+
tr.insert(mediaInsertPos, content);
|
|
154
|
+
} else if (mediaInsertPos <= deleteRange.start) {
|
|
155
|
+
tr.deleteRange(deleteRange.start, deleteRange.end).insert(mediaInsertPos, content);
|
|
156
|
+
} else {
|
|
157
|
+
tr.insert(mediaInsertPos, content).deleteRange(deleteRange.start, deleteRange.end);
|
|
158
|
+
}
|
|
159
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaGroupAnalytics(mediaStates, inputMethod))(tr);
|
|
160
|
+
dispatch(tr);
|
|
161
|
+
setSelectionAfterMediaInsertion(view);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Don't append new paragraph when adding media to a existing mediaGroup
|
|
166
|
+
if (withParagraph && parent.type !== schema.nodes.mediaGroup) {
|
|
167
|
+
content.push(paragraph.create());
|
|
168
|
+
}
|
|
169
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaGroupAnalytics(mediaStates, inputMethod))(tr);
|
|
170
|
+
dispatch((0, _utils2.safeInsert)(_model.Fragment.fromArray(content), mediaInsertPos)(tr));
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
var createMediaFileNodes = function createMediaFileNodes(mediaStates, collection, media) {
|
|
174
|
+
var nodes = mediaStates.map(function (mediaState) {
|
|
175
|
+
var id = mediaState.id;
|
|
176
|
+
var node = media.create({
|
|
177
|
+
id: id,
|
|
178
|
+
type: 'file',
|
|
179
|
+
collection: collection
|
|
180
|
+
});
|
|
181
|
+
(0, _mediaCommon.copyOptionalAttrsFromMediaState)(mediaState, node);
|
|
182
|
+
return node;
|
|
183
|
+
});
|
|
184
|
+
return nodes;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Find root list node if exist from current selection
|
|
189
|
+
* @param state Editor state
|
|
190
|
+
*/
|
|
191
|
+
var findRootListNode = function findRootListNode(state) {
|
|
192
|
+
var _state$schema$nodes = state.schema.nodes,
|
|
193
|
+
bulletList = _state$schema$nodes.bulletList,
|
|
194
|
+
orderedList = _state$schema$nodes.orderedList;
|
|
195
|
+
return (0, _utils.findFarthestParentNode)(function (node) {
|
|
196
|
+
return node.type === bulletList || node.type === orderedList;
|
|
197
|
+
})(state.selection.$from);
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Return position of media to be inserted, if it is inside a list
|
|
202
|
+
* @param content Content to be inserted
|
|
203
|
+
* @param state Editor State
|
|
204
|
+
*/
|
|
205
|
+
var getPosInList = exports.getPosInList = function getPosInList(state) {
|
|
206
|
+
var _state$schema$nodes2 = state.schema.nodes,
|
|
207
|
+
mediaGroup = _state$schema$nodes2.mediaGroup,
|
|
208
|
+
listItem = _state$schema$nodes2.listItem;
|
|
209
|
+
|
|
210
|
+
// 1. Check if I am inside a list.
|
|
211
|
+
if ((0, _utils2.hasParentNode)(function (node) {
|
|
212
|
+
return node.type === listItem;
|
|
213
|
+
})(state.selection)) {
|
|
214
|
+
// 2. Get end position of root list
|
|
215
|
+
var rootListNode = findRootListNode(state);
|
|
216
|
+
if (rootListNode) {
|
|
217
|
+
var pos = rootListNode.pos + rootListNode.node.nodeSize;
|
|
218
|
+
// 3. Fint the first location inside the media group
|
|
219
|
+
var nextNode = state.doc.nodeAt(pos);
|
|
220
|
+
if (nextNode && nextNode.type === mediaGroup) {
|
|
221
|
+
return pos + 1;
|
|
222
|
+
}
|
|
223
|
+
return pos;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Find insertion point,
|
|
231
|
+
* If it is in a List it will return position to the next block,
|
|
232
|
+
* If there are any media group close it will return this position
|
|
233
|
+
* Otherwise, It will return the respective block given selection.
|
|
234
|
+
* @param content Content to be inserted
|
|
235
|
+
* @param state Editor state
|
|
236
|
+
*/
|
|
237
|
+
var findMediaInsertPos = function findMediaInsertPos(state) {
|
|
238
|
+
var _state$selection = state.selection,
|
|
239
|
+
$from = _state$selection.$from,
|
|
240
|
+
$to = _state$selection.$to;
|
|
241
|
+
|
|
242
|
+
// Check if selection is inside a list.
|
|
243
|
+
var posInList = getPosInList(state);
|
|
244
|
+
if (posInList) {
|
|
245
|
+
// If I have a position in lists, I should return, otherwise I am not inside a list
|
|
246
|
+
return posInList;
|
|
247
|
+
}
|
|
248
|
+
var nearbyMediaGroupPos = (0, _mediaCommon.posOfMediaGroupNearby)(state);
|
|
249
|
+
if (nearbyMediaGroupPos && (!(0, _mediaCommon.isSelectionNonMediaBlockNode)(state) || $from.pos < nearbyMediaGroupPos && $to.pos < nearbyMediaGroupPos)) {
|
|
250
|
+
return nearbyMediaGroupPos;
|
|
251
|
+
}
|
|
252
|
+
if ((0, _mediaCommon.isSelectionNonMediaBlockNode)(state)) {
|
|
253
|
+
return $to.pos;
|
|
254
|
+
}
|
|
255
|
+
if ((0, _selection.atTheEndOfBlock)(state)) {
|
|
256
|
+
return $to.pos + 1;
|
|
257
|
+
}
|
|
258
|
+
if ((0, _selection.atTheBeginningOfBlock)(state)) {
|
|
259
|
+
return $from.pos - 1;
|
|
260
|
+
}
|
|
261
|
+
return $to.pos;
|
|
262
|
+
};
|
|
263
|
+
var findDeleteRange = function findDeleteRange(state) {
|
|
264
|
+
var _state$selection2 = state.selection,
|
|
265
|
+
$from = _state$selection2.$from,
|
|
266
|
+
$to = _state$selection2.$to;
|
|
267
|
+
if ((0, _mediaCommon.posOfParentMediaGroup)(state)) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
if (!(0, _mediaCommon.isInsidePotentialEmptyParagraph)(state) || (0, _mediaCommon.posOfMediaGroupNearby)(state)) {
|
|
271
|
+
return range($from.pos, $to.pos);
|
|
272
|
+
}
|
|
273
|
+
return range((0, _selection.startPositionOfParent)($from) - 1, (0, _selection.endPositionOfParent)($to));
|
|
274
|
+
};
|
|
275
|
+
var range = function range(start) {
|
|
276
|
+
var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : start;
|
|
277
|
+
return {
|
|
278
|
+
start: start,
|
|
279
|
+
end: end
|
|
280
|
+
};
|
|
281
|
+
};
|
|
282
|
+
var setSelectionAfterMediaInsertion = function setSelectionAfterMediaInsertion(view) {
|
|
283
|
+
var state = view.state;
|
|
284
|
+
var doc = state.doc;
|
|
285
|
+
var mediaPos = (0, _mediaCommon.posOfMediaGroupNearby)(state);
|
|
286
|
+
if (!mediaPos) {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
var $mediaPos = doc.resolve(mediaPos);
|
|
290
|
+
var endOfMediaGroup = (0, _selection.endPositionOfParent)($mediaPos);
|
|
291
|
+
if (endOfMediaGroup + 1 >= doc.nodeSize - 1) {
|
|
292
|
+
// if nothing after the media group, fallback to select the newest uploaded media item
|
|
293
|
+
(0, _utils.setNodeSelection)(view, mediaPos);
|
|
294
|
+
} else {
|
|
295
|
+
(0, _utils.setTextSelection)(view, endOfMediaGroup + 1);
|
|
296
|
+
}
|
|
297
|
+
};
|