@taiga-ui/kit
Version:
Taiga UI Angular main components kit
26 lines • 3.39 kB
JavaScript
import { svgNodeFilter } from '@taiga-ui/cdk';
/**
* Range.setStart/set-end, except it uses offset in characters only
*/
export function setRangeOffset(range, node, offset, method) {
const { ownerDocument } = node;
if (!ownerDocument) {
return;
}
const treeWalker = ownerDocument.createTreeWalker(node, NodeFilter.SHOW_TEXT, svgNodeFilter, false);
treeWalker.currentNode = node;
while (treeWalker.nextNode()) {
if (treeWalker.currentNode.nodeType === Node.TEXT_NODE) {
const length = treeWalker.currentNode.nodeValue
? treeWalker.currentNode.nodeValue.length
: 0;
if (offset > length) {
offset -= length;
}
else {
range[method](treeWalker.currentNode, offset);
}
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXJhbmdlLW9mZnNldC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvdXRpbHMvZG9tLyIsInNvdXJjZXMiOlsic2V0LXJhbmdlLW9mZnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsS0FBWSxFQUNaLElBQWlCLEVBQ2pCLE1BQWMsRUFDZCxNQUE2QjtJQUU3QixNQUFNLEVBQUMsYUFBYSxFQUFDLEdBQUcsSUFBSSxDQUFDO0lBRTdCLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDaEIsT0FBTztLQUNWO0lBRUQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUM3QyxJQUFJLEVBQ0osVUFBVSxDQUFDLFNBQVMsRUFDcEIsYUFBYSxFQUNiLEtBQUssQ0FDUixDQUFDO0lBRUYsVUFBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFOUIsT0FBTyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDMUIsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3BELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUztnQkFDM0MsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFUixJQUFJLE1BQU0sR0FBRyxNQUFNLEVBQUU7Z0JBQ2pCLE1BQU0sSUFBSSxNQUFNLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDakQ7U0FDSjtLQUNKO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c3ZnTm9kZUZpbHRlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5cbi8qKlxuICogUmFuZ2Uuc2V0U3RhcnQvc2V0LWVuZCwgZXhjZXB0IGl0IHVzZXMgb2Zmc2V0IGluIGNoYXJhY3RlcnMgb25seVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmFuZ2VPZmZzZXQoXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIG5vZGU6IEhUTUxFbGVtZW50LFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIG1ldGhvZDogJ3NldFN0YXJ0JyB8ICdzZXRFbmQnLFxuKSB7XG4gICAgY29uc3Qge293bmVyRG9jdW1lbnR9ID0gbm9kZTtcblxuICAgIGlmICghb3duZXJEb2N1bWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHJlZVdhbGtlciA9IG93bmVyRG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihcbiAgICAgICAgbm9kZSxcbiAgICAgICAgTm9kZUZpbHRlci5TSE9XX1RFWFQsXG4gICAgICAgIHN2Z05vZGVGaWx0ZXIsXG4gICAgICAgIGZhbHNlLFxuICAgICk7XG5cbiAgICB0cmVlV2Fsa2VyLmN1cnJlbnROb2RlID0gbm9kZTtcblxuICAgIHdoaWxlICh0cmVlV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICAgICAgaWYgKHRyZWVXYWxrZXIuY3VycmVudE5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSB0cmVlV2Fsa2VyLmN1cnJlbnROb2RlLm5vZGVWYWx1ZVxuICAgICAgICAgICAgICAgID8gdHJlZVdhbGtlci5jdXJyZW50Tm9kZS5ub2RlVmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiAwO1xuXG4gICAgICAgICAgICBpZiAob2Zmc2V0ID4gbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0IC09IGxlbmd0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmFuZ2VbbWV0aG9kXSh0cmVlV2Fsa2VyLmN1cnJlbnROb2RlLCBvZmZzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19