@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
40 lines • 2.1 kB
JavaScript
import { mediaInlineImagesEnabled } from '@atlaskit/editor-common/media-inline';
import { isInEmptyLine } from '@atlaskit/editor-common/utils';
import { hasParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
import { getMediaFeatureFlag } from '@atlaskit/media-common';
import { fg } from '@atlaskit/platform-feature-flags';
import { canInsertMediaInline } from '../utils/media-files';
import { isMediaSingle } from '../utils/media-single';
import { isImage, isVideo } from './is-type';
import { isInsidePotentialEmptyParagraph } from './media-common';
export var isInSupportedInlineImageParent = function isInSupportedInlineImageParent(state) {
return hasParentNodeOfType([state.schema.nodes.listItem])(state.selection);
};
export var getMediaNodeInsertionType = function getMediaNodeInsertionType(state, mediaOptions, fileMimeType) {
if (isImage(fileMimeType) && fg('platform_editor_media_block_default')) {
if (isMediaSingle(state.schema, fileMimeType)) {
return 'block';
}
return 'group';
}
var canInsertInlineNode = getMediaFeatureFlag('mediaInline', mediaOptions === null || mediaOptions === void 0 ? void 0 : mediaOptions.featureFlags) && !isInEmptyLine(state) && (!isInsidePotentialEmptyParagraph(state) || isInSupportedInlineImageParent(state)) && canInsertMediaInline(state);
if (fg('platform_editor_remove_media_inline_feature_flag')) {
if (mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.allowMediaInlineImages) {
if (canInsertInlineNode && !isVideo(fileMimeType)) {
return 'inline';
}
}
} else {
if (mediaInlineImagesEnabled(getMediaFeatureFlag('mediaInline', mediaOptions === null || mediaOptions === void 0 ? void 0 : mediaOptions.featureFlags), mediaOptions === null || mediaOptions === void 0 ? void 0 : mediaOptions.allowMediaInlineImages)) {
if (canInsertInlineNode && !isVideo(fileMimeType)) {
return 'inline';
}
}
}
if (isMediaSingle(state.schema, fileMimeType)) {
return 'block';
} else if (canInsertInlineNode) {
return 'inline';
}
return 'group';
};