{"_id":"@affectively/aeon-stack","_rev":"2-f697f916a331ea0d586c881d2be4d618","name":"@affectively/aeon-stack","dist-tags":{"latest":"5.0.0"},"versions":{"5.0.0":{"name":"@affectively/aeon-stack","version":"5.0.0","keywords":["react","virtualization","windowing","performance","content-visibility","speculation","aeon"],"author":{"name":"AFFECTIVELY","email":"opensource@affectively.ai"},"license":"UNLICENSED","_id":"@affectively/aeon-stack@5.0.0","maintainers":[{"name":"buley","email":"buley@outlook.com"}],"homepage":"https://github.com/affectively-ai/aeon-stack#readme","bugs":{"url":"https://github.com/affectively-ai/aeon-stack/issues"},"dist":{"shasum":"527a2a8ef0f04aa803e2b9a1cd4abf4013c1dee6","tarball":"https://registry.npmjs.org/@affectively/aeon-stack/-/aeon-stack-5.0.0.tgz","fileCount":4,"integrity":"sha512-S1EZjZ9INIbxYm/tBYiy+mZABIMhohA48D97jAneEG80OmWsyNhSk6EuSa7sJp5TL8LBIdkunslJZjaxIylU5Q==","signatures":[{"sig":"MEUCIHcBSZpYPB5hdxxhUVwOoR6M1S6qkHnbg332ouCCFoTvAiEAy8/hlVLcWnkYMF6OHsjLB+CuhDVL3AG3KPRDcaC0w1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70055},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ae54b0df6ac98ed86b037accafa16cf218dda541","scripts":{"test":"bun test --preload ../../bun.preload.ts","build":"rm -rf dist && bun build ./src/index.ts --outfile ./dist/index.js --format esm --external react && bun build ./src/index.ts --outfile ./dist/index.cjs --format cjs --external react && tsc -p tsconfig.json --declaration --emitDeclarationOnly --declarationMap --rootDir ./src --outDir ./dist","type-check":"tsc -p tsconfig.json --noEmit","prepublishOnly":"bun run build"},"_npmUser":{"name":"buley","email":"buley@outlook.com"},"repository":{"url":"git+https://github.com/affectively-ai/aeon-stack.git","type":"git"},"_npmVersion":"11.8.0","description":"Measured stack rendering, goodchild guards, DOM collapse, and speculative overscan for Aeon interfaces.","directories":{},"_nodeVersion":"25.5.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","typescript":"^5.9.0","@types/node":"^22.0.0","@types/react":"^19.2.14"},"peerDependencies":{"react":">=19.0.0"},"peerDependenciesMeta":{"react":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/aeon-stack_5.0.0_1773156160228_0.5248575342731048","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package is deprecated and no longer supported. Do not use."}},"time":{"created":"2026-03-10T15:22:40.099Z","modified":"2026-03-27T20:03:06.961Z","5.0.0":"2026-03-10T15:22:40.366Z"},"bugs":{"url":"https://github.com/affectively-ai/aeon-stack/issues"},"author":{"name":"AFFECTIVELY","email":"opensource@affectively.ai"},"license":"UNLICENSED","homepage":"https://github.com/affectively-ai/aeon-stack#readme","keywords":["react","virtualization","windowing","performance","content-visibility","speculation","aeon"],"repository":{"url":"git+https://github.com/affectively-ai/aeon-stack.git","type":"git"},"description":"Measured stack rendering, goodchild guards, DOM collapse, and speculative overscan for Aeon interfaces.","maintainers":[{"name":"buley","email":"buley@outlook.com"}],"readme":"# Aeon Stack\n\n## Parent\n- [Open Source Ecosystem](/Users/buley/Documents/Code/emotions/open-source/README.md)\n\nAeon Stack is the zero-dependency performance layer for Aeon interfaces. It provides measured vertical stack windowing, velocity-adaptive speculative overscan, keyed size caching, retained rows, `content-visibility`-backed DOM collapse, and \"goodchild\" guards that keep interactive children alive while letting distant DOM go cold, including an automatic passive downshift for nested guards under a guarded parent.\n\n## What It Ships\n- `AeonStackList`: a measured vertical stack renderer with idle-time and velocity-adaptive overscan, speculative placeholders, retained rows, and imperative `scrollToIndex` / `scrollToKey`.\n- `useGoodchildGuard`: an intersection-aware guard with linger hysteresis plus focus/pointer keep-alive for offscreen-heavy children that must preserve layout and interactive state, plus an automatic passive nested mode so parent-guarded child trees can coalesce to parent-level observation.\n- `Goodchild`: a lightweight wrapper component for guarded DOM sections.\n- `createGoodchildCollapseStyle`: intrinsic-size-aware `content-visibility` styles for rows, cards, and grouped sections.\n\n## The 64 Techniques\nAeon Stack now codifies these techniques across the runtime primitives and the shell integrations that consume them:\n\n1. Passive scroll listeners\n2. `requestAnimationFrame` scroll coalescing\n3. `ResizeObserver` viewport tracking\n4. Binary-search window math\n5. Virtualization thresholds\n6. Intrinsic-size spacer blocks\n7. Imperative `scrollToIndex`\n8. Imperative `scrollToKey`\n9. Keyed measurement caches\n10. Cache eviction when items disappear\n11. Estimate-first layout\n12. Gap-aware size accounting\n13. Batched measurement commits\n14. Transition-priority measurement updates\n15. Live row remeasurement\n16. Size retention across reorder/filter churn\n17. Directional overscan\n18. Idle warmup speculation\n19. Velocity-adaptive overscan\n20. Overscan budget caps\n21. Average-item-size biasing\n22. Separate visible vs render windows\n23. Speculative placeholder rendering\n24. Hydration-aware row contexts\n25. Retained rows outside the main window\n26. Discontiguous render clusters\n27. Cluster spacer compaction\n28. Window telemetry callbacks\n29. `content-visibility` row collapse\n30. `contain-intrinsic-size` layout preservation\n31. `contain: layout style paint`\n32. Zero-paint placeholder shells\n33. Pointer-disabled placeholders\n34. Offscreen DOM cooling\n35. Min-width collapse guards\n36. Cheap group placeholders\n37. Intersection-observer goodchild guards\n38. Tunable `rootMargin`\n39. Tunable thresholds\n40. Linger hysteresis before collapse\n41. Idle-time guard collapse\n42. Focus-within keep-alive\n43. Pointer-within keep-alive\n44. Explicit active-state keep-alive\n45. Visibility state callbacks\n46. Intrinsic block-size preservation\n47. Cancellation-safe observer cleanup\n48. Wrapper-level guard composition\n49. Sidebar retained keyboard targets\n50. Focus-safe virtual-scroll handoff\n51. Virtualized signal group headers\n52. Virtualized command palette rows\n53. Deferred command filtering\n54. Virtualized notification entries\n55. Virtualized zeitgeist rows\n56. Guarded launcher domains\n57. Guarded launcher rows\n58. Guarded game cards\n59. Density-tuned overscan budgets\n60. Measured inter-row gaps\n61. Preserved scroll-fade affordances\n62. Hover/focus selection retention\n63. Zero-dependency workspace wiring\n64. Regression tests for windowing, placeholders, retention, and keyed scrolling\n\n## Commands\n- `bun nx run aeon-stack:build`: build the library into `dist`.\n- `bun nx run aeon-stack:typecheck`: strict TypeScript check for the package.\n- `bun nx run aeon-stack:test`: run the package tests with Bun.\n\n## Children\n- [Source](/Users/buley/Documents/Code/emotions/open-source/aeon-stack/src/README.md)\n","readmeFilename":"README.md"}