UNPKG

@atlaskit/editor-plugin-block-menu

Version:

BlockMenu plugin for @atlaskit/editor-core

73 lines (72 loc) 3.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isTransformToTargetDisabled = exports.canParentContainNodeType = void 0; var _selection = require("@atlaskit/editor-common/selection"); var _model = require("@atlaskit/editor-prosemirror/model"); var _transform = require("../editor-commands/transform-node-utils/transform"); var _types = require("../editor-commands/transform-node-utils/types"); var _utils = require("../editor-commands/transform-node-utils/utils"); var canParentContainNodeType = exports.canParentContainNodeType = function canParentContainNodeType(schema, selectedNodeTypeName, parentNode, nodeTypeName, nodeTypeAttrs) { var adjustedNodeTypeName = (0, _utils.getTargetNodeTypeNameInContext)(nodeTypeName, true, parentNode); if (!adjustedNodeTypeName) { return false; } var nodeType = schema.nodes[adjustedNodeTypeName]; var content = null; var nodesThatCantBeNestedInNestedExpand = ['blockCard', 'embedCard', 'table']; if (nodesThatCantBeNestedInNestedExpand.includes(selectedNodeTypeName) && (adjustedNodeTypeName === 'expand' || adjustedNodeTypeName === 'nestedExpand')) { var node = schema.nodes[selectedNodeTypeName]; content = node.createAndFill(); } return parentNode.type.validContent(_model.Fragment.from(nodeType.createAndFill(nodeTypeAttrs, content))); }; var isHeadingToHeadingTransformEnabled = function isHeadingToHeadingTransformEnabled(selectedNode, targetNodeTypeAttrs) { var _selectedNode$attrs; var selectedLevel = (_selectedNode$attrs = selectedNode.attrs) === null || _selectedNode$attrs === void 0 ? void 0 : _selectedNode$attrs.level; var targetLevel = targetNodeTypeAttrs === null || targetNodeTypeAttrs === void 0 ? void 0 : targetNodeTypeAttrs.level; if (selectedLevel === undefined || targetLevel === undefined) { return false; } return selectedLevel !== targetLevel; }; var isTransformEnabledForNode = function isTransformEnabledForNode(node, targetNodeTypeName, targetNodeTypeAttrs, isNested, parent, schema) { var selectedNodeTypeName = (0, _types.toNodeTypeValue)(node.type.name); if (!selectedNodeTypeName) { return false; } var isDisabledByStepsConfig = (0, _transform.isTransformDisabledBasedOnStepsConfig)(selectedNodeTypeName, targetNodeTypeName); if (isDisabledByStepsConfig) { return false; } if (selectedNodeTypeName === 'heading' && targetNodeTypeName === 'heading') { return isHeadingToHeadingTransformEnabled(node, targetNodeTypeAttrs); } if (isNested && !canParentContainNodeType(schema, selectedNodeTypeName, parent, targetNodeTypeName, targetNodeTypeAttrs)) { return false; } return true; }; var isTransformToTargetDisabled = exports.isTransformToTargetDisabled = function isTransformToTargetDisabled(_ref) { var selection = _ref.selection, targetNodeTypeName = _ref.targetNodeTypeName, targetNodeTypeAttrs = _ref.targetNodeTypeAttrs; var _expandSelectionToBlo = (0, _selection.expandSelectionToBlockRange)(selection), range = _expandSelectionToBlo.range; if (!range) { return false; } var selectedNodes = (0, _utils.getBlockNodesInRange)(range); var parent = range.parent; var isNested = range.depth >= 1; var schema = selection.$from.doc.type.schema; var supportedTargetNodeTypeName = (0, _types.toNodeTypeValue)(targetNodeTypeName); if (!supportedTargetNodeTypeName) { return true; } var isEnabledForAnyNode = selectedNodes.some(function (node) { return isTransformEnabledForNode(node, supportedTargetNodeTypeName, targetNodeTypeAttrs, isNested, parent, schema); }); return !isEnabledForAnyNode; };