@atlaskit/editor-plugin-block-controls
Version:
Block controls plugin for @atlaskit/editor-core
64 lines • 3.6 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
export var getBlockControlsSurfaceControlSide = function getBlockControlsSurfaceControlSide(context, reliableAnchorEnabled) {
return (context === null || context === void 0 ? void 0 : context.targetNode.type.name) === 'layoutColumn' || Boolean(context) && reliableAnchorEnabled && (context === null || context === void 0 ? void 0 : context.targetNode.parentType) !== 'doc' ? undefined : 'left';
};
var getNodeContext = function getNodeContext(state, pos) {
var node = state.doc.nodeAt(pos);
if (!node) {
return undefined;
}
var $pos = state.doc.resolve(pos);
var ancestors = [];
for (var depth = 0; depth <= $pos.depth; depth++) {
var ancestor = $pos.node(depth);
ancestors.push({
depth: depth,
pos: depth === 0 ? 0 : $pos.before(depth),
type: {
name: ancestor.type.name
}
});
}
return {
ancestors: ancestors,
depth: $pos.depth + 1,
node: node,
parentType: $pos.parent.type.name,
pos: pos,
type: {
name: node.type.name
}
};
};
export var createBlockControlsSurfaceContextForPosition = function createBlockControlsSurfaceContextForPosition(state, targetPos, activeNode) {
var _activeNode$rootPos, _getNodeContext, _activeNode$rootNodeT;
var targetNodeContext = getNodeContext(state, targetPos);
if (!targetNodeContext) {
return undefined;
}
var activeNodeContext = activeNode ? getNodeContext(state, activeNode.pos) : undefined;
var rootPos = activeNode ? (_activeNode$rootPos = activeNode.rootPos) !== null && _activeNode$rootPos !== void 0 ? _activeNode$rootPos : activeNode.pos : targetPos;
var rootNodeContext = (_getNodeContext = getNodeContext(state, rootPos)) !== null && _getNodeContext !== void 0 ? _getNodeContext : targetNodeContext;
return {
activeControlKey: activeNode === null || activeNode === void 0 ? void 0 : activeNode.controlKey,
activeNode: activeNode && activeNodeContext ? _objectSpread(_objectSpread({}, activeNodeContext), {}, {
rootPos: rootPos,
rootType: {
name: (_activeNode$rootNodeT = activeNode.rootNodeType) !== null && _activeNode$rootNodeT !== void 0 ? _activeNode$rootNodeT : rootNodeContext.type.name
}
}) : undefined,
rootNode: rootNodeContext,
targetNode: targetNodeContext
};
};
export var createBlockControlsSurfaceContext = function createBlockControlsSurfaceContext(view, activeNode) {
var _activeNode$rootPos2;
var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'root';
if (!activeNode) {
return undefined;
}
var rootPos = (_activeNode$rootPos2 = activeNode.rootPos) !== null && _activeNode$rootPos2 !== void 0 ? _activeNode$rootPos2 : activeNode.pos;
return createBlockControlsSurfaceContextForPosition(view.state, target === 'active' ? activeNode.pos : rootPos, activeNode);
};