---
suivi: 1416
date: 2026-09-02
sujet: aide_editeur_position_curseur
chantier: aide
type: fix
statut: poussé
hash: 2cce99ea
fichiers:
  - resources/js/Components/Aide/ArticleEditeur.vue
  - public/build/
  - docs/suivi/SUIVI_1416_editeur_aide_position_curseur.md
---

## PROMPT ENVOYÉ

SUIVI #1416 — après #1415 l’insertion toolbar se fait au DÉBUT du bloc (pire qu’avant). Images OK.

## FICHES LUES

- #1415 — mémorisation sélection + mousedown.prevent ; getTextareaElement via querySelector.

## ÉTAPE 0 — CAUSE ÉTABLIE

1. `selectionMemoire` initialisée à `{ start: 0, end: 0 }` ; lue par `plageInsertion`.
2. `memoriserSelectionDepuisDom` écrit via `getTextareaElement()`.
3. Bug : `el.$el?.querySelector('textarea')` — si `$el` EST le textarea, querySelector renvoie **null** → mémorisation no-op → mémoire reste 0 → insertion en tête.
4. Les `@select/@keyup/…` sur le composant PrimeVue ne relaient pas les événements natifs (renfort : écouteurs natifs).

## SYNTHÈSE

- `getTextareaElement` accepte `$el` s’il est un HTMLTextAreaElement.
- `selectionMemoire = null` jusqu’à première interaction réelle ; sinon insertion en **fin**.
- Écouteurs natifs select/keyup/keydown/mouseup/click/input/blur.
- Aucun PHP. Défaut 2 (#1415) intact.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan optimize:clear
php artisan view:clear
```

## LEÇON

Sur un wrapper PrimeVue, tester si `$el` est l’élément natif avant `querySelector` : sinon toute mémorisation DOM est un no-op silencieux.
