@portabletext/editor
Version:
Portable Text Editor made in React
185 lines (184 loc) • 8.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: !0 });
var selector_isSelectingEntireBlocks = require("../_chunks-cjs/selector.is-selecting-entire-blocks.cjs"), selectionPoint = require("../_chunks-cjs/selection-point.cjs"), types = require("@sanity/types"), selector_isSelectionExpanded = require("../_chunks-cjs/selector.is-selection-expanded.cjs"), selector_getTextBefore = require("../_chunks-cjs/selector.get-text-before.cjs");
const getAnchorBlock = (snapshot) => {
if (!snapshot.context.selection)
return;
const key = selectionPoint.getBlockKeyFromSelectionPoint(snapshot.context.selection.anchor), node = key ? snapshot.context.value.find((block) => block._key === key) : void 0;
return node && key ? {
node,
path: [{
_key: key
}]
} : void 0;
}, getAnchorTextBlock = (snapshot) => {
const anchorBlock = getAnchorBlock(snapshot);
return anchorBlock && selectionPoint.isTextBlock(snapshot.context, anchorBlock.node) ? {
node: anchorBlock.node,
path: anchorBlock.path
} : void 0;
}, getAnchorChild = (snapshot) => {
if (!snapshot.context.selection)
return;
const anchorBlock = getAnchorTextBlock(snapshot);
if (!anchorBlock)
return;
const key = selectionPoint.getChildKeyFromSelectionPoint(snapshot.context.selection.anchor), node = key ? anchorBlock.node.children.find((span) => span._key === key) : void 0;
return node && key ? {
node,
path: [...anchorBlock.path, "children", {
_key: key
}]
} : void 0;
}, getAnchorSpan = (snapshot) => {
const anchorChild = getAnchorChild(snapshot);
return anchorChild && types.isPortableTextSpan(anchorChild.node) ? {
node: anchorChild.node,
path: anchorChild.path
} : void 0;
}, getBlockOffsets = (snapshot) => {
if (!snapshot.context.selection)
return;
const selectionStartPoint = selector_isSelectionExpanded.getSelectionStartPoint(snapshot), selectionEndPoint = selector_isSelectingEntireBlocks.getSelectionEndPoint(snapshot);
if (!selectionStartPoint || !selectionEndPoint)
return;
const start = selectionPoint.spanSelectionPointToBlockOffset({
context: snapshot.context,
selectionPoint: selectionStartPoint
}), end = selectionPoint.spanSelectionPointToBlockOffset({
context: snapshot.context,
selectionPoint: selectionEndPoint
});
return start && end ? {
start,
end
} : void 0;
};
function getListIndex({
path
}) {
return (snapshot) => {
const selection = {
anchor: {
path,
offset: 0
},
focus: {
path,
offset: 0
}
}, focusTextBlock = selector_isSelectionExpanded.getFocusTextBlock({
context: {
...snapshot.context,
selection
}
});
if (!focusTextBlock || focusTextBlock.node.listItem === void 0 || focusTextBlock.node.level === void 0)
return;
const previousListItem = getPreviousListItem({
listItem: focusTextBlock.node.listItem,
level: focusTextBlock.node.level
})({
...snapshot,
context: {
...snapshot.context,
selection
}
});
if (!previousListItem || previousListItem.node.listItem !== focusTextBlock.node.listItem || previousListItem.node.level !== void 0 && previousListItem.node.level < focusTextBlock.node.level)
return 1;
const previousListItemListState = getListIndex({
path: previousListItem.path
})(snapshot);
return previousListItemListState === void 0 ? 1 : previousListItemListState + 1;
};
}
function getPreviousListItem({
listItem,
level
}) {
return (snapshot) => {
const previousBlock = selector_isSelectionExpanded.getPreviousBlock({
context: {
...snapshot.context
}
});
if (previousBlock && selectionPoint.isTextBlock(snapshot.context, previousBlock.node) && !(previousBlock.node.listItem === void 0 || previousBlock.node.level === void 0) && previousBlock.node.listItem === listItem) {
if (previousBlock.node.level === level)
return {
node: previousBlock.node,
path: previousBlock.path
};
if (!(previousBlock.node.level < level))
return getPreviousListItem({
listItem,
level
})({
...snapshot,
context: {
...snapshot.context,
selection: {
anchor: {
path: previousBlock.path,
offset: 0
},
focus: {
path: previousBlock.path,
offset: 0
}
}
}
});
}
};
}
const getSelection = (snapshot) => snapshot.context.selection, getValue = (snapshot) => snapshot.context.value;
exports.getActiveAnnotations = selector_isSelectingEntireBlocks.getActiveAnnotations;
exports.getActiveListItem = selector_isSelectingEntireBlocks.getActiveListItem;
exports.getActiveStyle = selector_isSelectingEntireBlocks.getActiveStyle;
exports.getCaretWordSelection = selector_isSelectingEntireBlocks.getCaretWordSelection;
exports.getFocusInlineObject = selector_isSelectingEntireBlocks.getFocusInlineObject;
exports.getNextInlineObject = selector_isSelectingEntireBlocks.getNextInlineObject;
exports.getSelectedSpans = selector_isSelectingEntireBlocks.getSelectedSpans;
exports.getSelectedTextBlocks = selector_isSelectingEntireBlocks.getSelectedTextBlocks;
exports.getSelectionEndPoint = selector_isSelectingEntireBlocks.getSelectionEndPoint;
exports.getTrimmedSelection = selector_isSelectingEntireBlocks.getTrimmedSelection;
exports.isActiveAnnotation = selector_isSelectingEntireBlocks.isActiveAnnotation;
exports.isActiveDecorator = selector_isSelectingEntireBlocks.isActiveDecorator;
exports.isActiveListItem = selector_isSelectingEntireBlocks.isActiveListItem;
exports.isActiveStyle = selector_isSelectingEntireBlocks.isActiveStyle;
exports.isAtTheEndOfBlock = selector_isSelectingEntireBlocks.isAtTheEndOfBlock;
exports.isAtTheStartOfBlock = selector_isSelectingEntireBlocks.isAtTheStartOfBlock;
exports.isOverlappingSelection = selector_isSelectingEntireBlocks.isOverlappingSelection;
exports.isPointAfterSelection = selector_isSelectingEntireBlocks.isPointAfterSelection;
exports.isPointBeforeSelection = selector_isSelectingEntireBlocks.isPointBeforeSelection;
exports.isSelectingEntireBlocks = selector_isSelectingEntireBlocks.isSelectingEntireBlocks;
exports.getFirstBlock = selector_isSelectionExpanded.getFirstBlock;
exports.getFocusBlock = selector_isSelectionExpanded.getFocusBlock;
exports.getFocusBlockObject = selector_isSelectionExpanded.getFocusBlockObject;
exports.getFocusChild = selector_isSelectionExpanded.getFocusChild;
exports.getFocusListBlock = selector_isSelectionExpanded.getFocusListBlock;
exports.getFocusSpan = selector_isSelectionExpanded.getFocusSpan;
exports.getFocusTextBlock = selector_isSelectionExpanded.getFocusTextBlock;
exports.getLastBlock = selector_isSelectionExpanded.getLastBlock;
exports.getNextBlock = selector_isSelectionExpanded.getNextBlock;
exports.getPreviousBlock = selector_isSelectionExpanded.getPreviousBlock;
exports.getPreviousInlineObject = selector_isSelectionExpanded.getPreviousInlineObject;
exports.getSelectedBlocks = selector_isSelectionExpanded.getSelectedBlocks;
exports.getSelectedSlice = selector_isSelectionExpanded.getSelectedSlice;
exports.getSelectionEndBlock = selector_isSelectionExpanded.getSelectionEndBlock;
exports.getSelectionStartBlock = selector_isSelectionExpanded.getSelectionStartBlock;
exports.getSelectionStartPoint = selector_isSelectionExpanded.getSelectionStartPoint;
exports.getSelectionText = selector_isSelectionExpanded.getSelectionText;
exports.isSelectionCollapsed = selector_isSelectionExpanded.isSelectionCollapsed;
exports.isSelectionExpanded = selector_isSelectionExpanded.isSelectionExpanded;
exports.getBlockTextBefore = selector_getTextBefore.getBlockTextBefore;
exports.getAnchorBlock = getAnchorBlock;
exports.getAnchorChild = getAnchorChild;
exports.getAnchorSpan = getAnchorSpan;
exports.getAnchorTextBlock = getAnchorTextBlock;
exports.getBlockOffsets = getBlockOffsets;
exports.getListIndex = getListIndex;
exports.getSelection = getSelection;
exports.getValue = getValue;
//# sourceMappingURL=index.cjs.map