WebKit: removing an animating table row throws in deletePosition()
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 36/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript, typescript, web-dev
Direzione di ricerca
The report identifies animate() and deletePosition() as the relevant entry points and links minimal regression CI runs where Chromium passes and WebKit fails. Start by tracing how ancestor coordinates are cached and used when the exit animation is created. Done means the regression passes in both Chromium and WebKit without leaving a ghost row or blocking later mutations.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Removing a <tr> during its entry animation throws in deletePosition() in WebKit. Reproduced with 0.10.0, native DOM operations and default options; no framework or positioning changes are needed.
Reproduction
<div style="position: relative">
<table><tbody id="rows"><tr><td>Keep this row</td></tr></tbody></table>
</div>
import autoAnimate from '@formkit/auto-animate'
const rows = document.querySelector('#rows')
autoAnimate(rows)
const row = rows.insertRow()
row.insertCell().textContent = 'Remove this row'
while (!row.getAnimations().some(a => a.playState === 'running')) {
await new Promise(requestAnimationFrame)
}
row.remove()
Expected: the removed row is cleaned up and its sibling survives.
Actual in WebKit: undefined is not an object (evaluating 'parentCoords.top'). The row is reinserted with __aa_del before the exception, leaving a ghost row and preventing subsequent mutation handling.
Root cause
WebKit explicitly resets relative positioning to static on table row groups, including tbody. AutoAnimate therefore finds the relative outer wrapper, which it does not observe and has not cached.
animate() cancels the entry animation but keeps its registry entry in the idle state. deletePosition() then selects coords.get(offsetParent)! and reads .top from undefined. Measuring the ancestor when its cache entry is missing resolves this invalid cache assumption.
Related reports checked: #7 (table layout), #231 (ghost rows), #242 and #247 (cleanup). This report isolates the missing ancestor-coordinate entry before the exit animation is created. Fix in #249.
Minimal regression CI, unpatched core: Chromium passes, WebKit fails with the exception above. Same test with the patch: both pass.
- Lingua principale
- TypeScript
- Stelle
- 13.9k
- Fork
- 266
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di formkit/auto-animate
-
0.10.0: destroy() can leave an IntersectionObserver on a detached element (idle callback re-arms observePosition)Forse già presa @AndreasOhlsson l’ha presa 23 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
formkit/auto-animate#246 · 1 commento ·
-
`auto-animate/nuxt`: Module causes 'is not wrapped in defineNuxtPlugin' warning since v0.10.0Forse già presa @ExEr7um l’ha presa 107 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
formkit/auto-animate#240 · 6 reazioni ·
-
Child added animation is not working in react StrictMode (or in any other case where autoAnimate() is called twice)Forse già presa @kaigritun l’ha presa 263 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
formkit/auto-animate#232 · 1 commento ·
-
svelte: use attachmentsAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
formkit/auto-animate#235 · 1 commento · 1 reazione ·
-
Image to VideoAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
formkit/auto-animate#233 ·
Tutte le issue di formkit/auto-animate
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Northeastern-Electric-Racing/FinishLine#4660 ·
I maintainer di solito rispondono entro 2 giorni
-
BeOS .json missingAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
mihaip/infinite-mac#475 ·
-
Let TypeScript accept an initial object in ReactiveDictForse già presa @yograj-vijay-yadav l’ha presa oggi. Apertabug good first issue help wanted workshop
Difficoltà 2/5 1-3 ore Idoneità per principianti 92/100
meteor/meteor#14919 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
marmelab/atomic-crm#401 ·
I maintainer di solito rispondono entro 1 giorno
-
account: profile
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 5 giorni