@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
72 lines • 2.71 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = require("../../utils");
exports.posOfMediaGroupNearby = function (state) {
return exports.posOfParentMediaGroup(state)
|| posOfFollowingMediaGroup(state)
|| exports.posOfPreceedingMediaGroup(state);
};
exports.isSelectionNonMediaBlockNode = function (state) {
var node = state.selection.node;
return node && node.type !== state.schema.nodes.media && node.isBlock;
};
exports.posOfPreceedingMediaGroup = function (state) {
if (!utils_1.atTheBeginningOfBlock(state)) {
return;
}
return posOfMediaGroupAbove(state, state.selection.$from);
};
var posOfFollowingMediaGroup = function (state) {
if (!utils_1.atTheEndOfBlock(state)) {
return;
}
return exports.posOfMediaGroupBelow(state, state.selection.$to);
};
var posOfMediaGroupAbove = function (state, $pos) {
var adjacentPos;
var adjacentNode;
if (exports.isSelectionNonMediaBlockNode(state)) {
adjacentPos = $pos.pos;
adjacentNode = $pos.nodeBefore;
}
else {
adjacentPos = utils_1.startPositionOfParent($pos) - 1;
adjacentNode = state.doc.resolve(adjacentPos).nodeBefore;
}
if (adjacentNode && adjacentNode.type === state.schema.nodes.mediaGroup) {
return adjacentPos - adjacentNode.nodeSize + 1;
}
};
/**
* Determine whether the cursor is inside empty paragraph
* or the selection is the entire paragraph
*/
exports.isInsidePotentialEmptyParagraph = function (state) {
var $from = state.selection.$from;
return $from.parent.type === state.schema.nodes.paragraph && utils_1.atTheBeginningOfBlock(state) && utils_1.atTheEndOfBlock(state);
};
exports.posOfMediaGroupBelow = function (state, $pos, prepend) {
if (prepend === void 0) { prepend = true; }
var adjacentPos;
var adjacentNode;
if (exports.isSelectionNonMediaBlockNode(state)) {
adjacentPos = $pos.pos;
adjacentNode = $pos.nodeAfter;
}
else {
adjacentPos = utils_1.endPositionOfParent($pos);
adjacentNode = state.doc.nodeAt(adjacentPos);
}
if (adjacentNode && adjacentNode.type === state.schema.nodes.mediaGroup) {
return prepend ? adjacentPos + 1 : adjacentPos + adjacentNode.nodeSize - 1;
}
};
exports.posOfParentMediaGroup = function (state, $pos, prepend) {
if (prepend === void 0) { prepend = true; }
var $from = state.selection.$from;
$pos = $pos || $from;
if ($pos.parent.type === state.schema.nodes.mediaGroup) {
return prepend ? utils_1.startPositionOfParent($pos) : utils_1.endPositionOfParent($pos) - 1;
}
};
//# sourceMappingURL=utils.js.map