@atlaskit/editor-plugin-block-menu
Version:
BlockMenu plugin for @atlaskit/editor-core
60 lines (59 loc) • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isTransformDisabledBasedOnStepsConfig = exports.convertNodesToTargetType = void 0;
var _utils = require("../transform-node-utils/utils");
var _TRANSFORMATION_MATRIX = require("./TRANSFORMATION_MATRIX");
var _types = require("./types");
/**
* Convert a list of nodes to a target node type.
* If no steps are found, the source nodes are returned unchanged.
* If steps are found, they are applied to the source nodes in order.
* If a step returns an empty array, the source nodes are returned.
* If a step returns a non-empty array, that array is returned.
* @param args - The conversion arguments
* @param args.sourceNodes - The list of nodes to convert
* @param args.targetNodeType - The type of node to convert into
* @param args.schema - The schema to use for the conversion
* @param args.isNested - Whether the conversion is nested
* @param args.targetAttrs - The attributes to use for the conversion
* @param args.parentNode - The parent node of the selected node
* @returns The converted list of nodes
*/
var convertNodesToTargetType = exports.convertNodesToTargetType = function convertNodesToTargetType(_ref) {
var sourceNodes = _ref.sourceNodes,
targetNodeType = _ref.targetNodeType,
schema = _ref.schema,
isNested = _ref.isNested,
targetAttrs = _ref.targetAttrs,
parentNode = _ref.parentNode;
var sourceNode = sourceNodes.at(0);
if (!sourceNode) {
return sourceNodes;
}
var selectedNodeTypeName = (0, _types.toNodeTypeValue)((0, _types.getNodeName)(sourceNodes));
var initialTargetNodeTypeName = (0, _types.toNodeTypeValue)(targetNodeType.name);
var targetNodeTypeName = (0, _utils.getTargetNodeTypeNameInContext)(initialTargetNodeTypeName, isNested, parentNode);
if (!selectedNodeTypeName || !targetNodeTypeName) {
return sourceNodes;
}
var steps = _TRANSFORMATION_MATRIX.TRANSFORMATION_MATRIX[selectedNodeTypeName][targetNodeTypeName];
var context = {
// sourceNode is incorrect now - what to do here?
fromNode: sourceNode,
targetNodeTypeName: targetNodeTypeName,
schema: schema,
targetAttrs: targetAttrs
};
if (!steps || steps.length === 0) {
return sourceNodes;
}
return steps.reduce(function (nodes, step) {
return step(nodes, context);
}, sourceNodes);
};
var isTransformDisabledBasedOnStepsConfig = exports.isTransformDisabledBasedOnStepsConfig = function isTransformDisabledBasedOnStepsConfig(selectedNodeType, targetNodeType) {
var steps = _TRANSFORMATION_MATRIX.TRANSFORMATION_MATRIX[selectedNodeType][targetNodeType];
return !steps || steps.length === 0;
};