UNPKG

element-plus

Version:

A Component Library for Vue 3

36 lines (35 loc) 1.27 kB
//#region ../../packages/hooks/use-cursor/index.ts function useCursor(input) { let selectionInfo; function recordCursor() { if (input.value == void 0) return; const { selectionStart, selectionEnd, value } = input.value; if (selectionStart == null || selectionEnd == null) return; selectionInfo = { selectionStart, selectionEnd, value, beforeTxt: value.slice(0, Math.max(0, selectionStart)), afterTxt: value.slice(Math.max(0, selectionEnd)) }; } function setCursor() { if (input.value == void 0 || selectionInfo == void 0) return; const { value } = input.value; const { beforeTxt, afterTxt, selectionStart } = selectionInfo; if (beforeTxt == void 0 || afterTxt == void 0 || selectionStart == void 0) return; let startPos = value.length; if (value.endsWith(afterTxt)) startPos = value.length - afterTxt.length; else if (value.startsWith(beforeTxt)) startPos = beforeTxt.length; else { const beforeLastChar = beforeTxt[selectionStart - 1]; const newIndex = value.indexOf(beforeLastChar, selectionStart - 1); if (newIndex !== -1) startPos = newIndex + 1; } input.value.setSelectionRange(startPos, startPos); } return [recordCursor, setCursor]; } //#endregion export { useCursor }; //# sourceMappingURL=index.mjs.map