UNPKG

@atlaskit/editor-plugin-block-menu

Version:

BlockMenu plugin for @atlaskit/editor-core

63 lines (62 loc) • 3.21 kB
"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; }; }; };