UNPKG

@atlaskit/editor-plugin-media

Version:

Media plugin for @atlaskit/editor-core

59 lines (57 loc) 2.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.selectCaptionFromMediaSinglePos = exports.insertAndSelectCaptionFromMediaSinglePos = void 0; var _analytics = require("@atlaskit/editor-common/analytics"); var _utils = require("@atlaskit/editor-prosemirror/utils"); var selectCaptionFromMediaSinglePos = exports.selectCaptionFromMediaSinglePos = function selectCaptionFromMediaSinglePos(mediaSingleNodePos, mediaSingleNode) { return function (state, dispatch) { // node should have two children, media and caption if (mediaSingleNode.childCount !== 2) { return false; } if (dispatch) { var media = mediaSingleNode.child(0); var caption = mediaSingleNode.child(1); var tr = state.tr; tr = setSelectionAtEndOfCaption(tr, mediaSingleNodePos, media.nodeSize, caption.nodeSize); tr.setMeta('scrollIntoView', false); dispatch(tr); } return true; }; }; var insertAndSelectCaptionFromMediaSinglePos = exports.insertAndSelectCaptionFromMediaSinglePos = function insertAndSelectCaptionFromMediaSinglePos(editorAnalyticsAPI) { return function (mediaSingleNodePos, mediaSingleNode) { return function (state, dispatch) { if (typeof mediaSingleNodePos !== 'number') { return false; } var tr = state.tr; // node should have one child, media if (mediaSingleNode.childCount !== 1) { return false; } if (dispatch) { var schema = state.schema; var media = mediaSingleNode.child(0); var caption = schema.nodes.caption.create(); tr = state.tr.insert(mediaSingleNodePos + media.nodeSize + 1, caption); tr = setSelectionAtEndOfCaption(tr, mediaSingleNodePos, media.nodeSize, caption.nodeSize); tr.setMeta('scrollIntoView', false); editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({ action: _analytics.ACTION.ADDED, eventType: _analytics.EVENT_TYPE.TRACK, actionSubject: _analytics.ACTION_SUBJECT.MEDIA_SINGLE, actionSubjectId: _analytics.ACTION_SUBJECT_ID.CAPTION })(tr); dispatch(tr); } return true; }; }; }; var setSelectionAtEndOfCaption = function setSelectionAtEndOfCaption(tr, mediaSingleNodePos, mediaNodeSize, captionNodeSize) { return (0, _utils.setTextSelection)(mediaSingleNodePos + mediaNodeSize + captionNodeSize)(tr); };