Skip to main content

cursor-position-tracker

Tracks and manages cursor position across text inputs, rich text editors, and custom selection interfaces. Handles IME composition and RTL text.

Source facts

Repository
Fadil369/Solutions
Last source activity
April 9, 2026 at 00:36
Detected SKILL.md language
English
Stars
1
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
Cursor Position Tracker
version
1.0.0
description
Tracks and manages cursor position across text inputs, rich text editors, and custom selection interfaces. Handles IME composition and RTL text.
author
workspace
activated
false
# Cursor Position Tracker Tracks and manages cursor position across text inputs, rich text editors, and custom selection interfaces. Handles IME composition and RTL text. ## Decision Framework ### When to Apply Use when: Rich text editors, custom input components, IME support needed, collaborative editing ### When NOT to Apply Don't use when: Simple form inputs with standard behavior ## Anti-Patterns ### 1. Breaking IME Composition ```javascript // BAD: Prevents character composition input.addEventListener('input', (e) => { formatText(); }); // GOOD: Wait for composition end let composing = false; input.addEventListener('compositionstart', () => composing = true); input.addEventListener('compositionend', () => { composing = false; formatText(); }); input.addEventListener('input', (e) => { if (!composing) formatText(); }); ``` ## Trigger Phrases - "Cursor position" - "Text selection" - "Rich text editor" - "IME support" - "Text input handling" ## Patterns ### Selection Manager ```javascript class SelectionManager { saveSelection() { const sel = window.getSelection(); if (sel.rangeCount > 0) return sel.getRangeAt(0).cloneRange(); return null; } restoreSelection(range) { if (!range) return; const sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } } ``` ## Integration - Works with: real-time-collaboration-engine, form-pattern-engine
View on GitHub