@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
59 lines (57 loc) • 2.47 kB
JavaScript
;
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);
};