@atlaskit/editor-plugin-block-menu
Version:
BlockMenu plugin for @atlaskit/editor-core
63 lines (62 loc) • 3.21 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.transformInlineNode = void 0;
var _performanceMeasures = require("@atlaskit/editor-common/performance-measures");
var _state = require("@atlaskit/editor-prosemirror/state");
var _isNestedNode = require("../ui/utils/isNestedNode");
var _isEmptyLine = require("./is-empty-line");
var _transformAnalytics = require("./transform-analytics");
var transformInlineNode = exports.transformInlineNode = function transformInlineNode(api) {
return function (metadata) {
return function (_ref) {
var _api$blockControls;
var tr = _ref.tr;
var preservedSelection = api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || (_api$blockControls = _api$blockControls.sharedState.currentState()) === null || _api$blockControls === void 0 ? void 0 : _api$blockControls.preservedSelection;
if (!preservedSelection || !(preservedSelection instanceof _state.NodeSelection)) {
return tr;
}
var source = {
node: preservedSelection.node,
pos: preservedSelection.from
};
var analytics = (0, _transformAnalytics.createTransformAnalytics)(api, tr, preservedSelection);
var measureId = "transformInlineNode_".concat(metadata.targetTypeName, "_").concat(Date.now());
(0, _performanceMeasures.startMeasure)(measureId);
var isParentLayout = tr.doc.resolve(source.pos).parent.type === tr.doc.type.schema.nodes.layoutColumn;
var isNested = (0, _isNestedNode.isNestedNode)(preservedSelection, '') && !isParentLayout;
try {
var _api$blockControls2, _api$blockControls3;
var inlineNode = metadata.buildInlineNode(source.node);
var paragraphNode = tr.doc.type.schema.nodes.paragraph.createChecked({}, [inlineNode]);
tr.replaceWith(source.pos, source.pos + source.node.nodeSize, paragraphNode);
if (_state.NodeSelection.isSelectable(inlineNode)) {
tr.setSelection(_state.NodeSelection.create(tr.doc, source.pos + 1));
}
api === null || api === void 0 || (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 || _api$blockControls2.commands.stopPreservingSelection()({
tr: tr
});
api === null || api === void 0 || (_api$blockControls3 = api.blockControls) === null || _api$blockControls3 === void 0 || _api$blockControls3.commands.toggleBlockMenu({
closeMenu: true
})({
tr: tr
});
(0, _performanceMeasures.stopMeasure)(measureId, function (duration, startTime) {
analytics.transformed(duration, startTime, {
isEmptyLine: (0, _isEmptyLine.isEmptyLine)([source.node]),
isNested: isNested,
isSuggested: Boolean(metadata.isSuggested),
outputNodesCount: 1,
sourceNodes: [source.node],
targetNodeType: metadata.targetTypeName
});
});
} catch (error) {
(0, _performanceMeasures.stopMeasure)(measureId);
analytics.errored(error, [source.node], metadata.targetTypeName);
}
return tr;
};
};
};