UNPKG

@taiga-ui/kit

Version:
26 lines 3.39 kB
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