gitextract_f4nhhmgs/ ├── .github/ │ └── workflows/ │ ├── eslint.yml │ ├── pending-changes.yml │ ├── playwright.yml │ ├── prettier.yml │ ├── typescript.yml │ └── vitest.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .prettierignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── eslint.config.js ├── index.css ├── index.html ├── index.tsx ├── integrations/ │ ├── next/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── decoder/ │ │ │ │ └── [encoded]/ │ │ │ │ ├── Decoder.tsx │ │ │ │ └── page.tsx │ │ │ ├── grid/ │ │ │ │ ├── components/ │ │ │ │ │ └── CellComponent.tsx │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── list/ │ │ │ │ ├── components/ │ │ │ │ │ └── RowComponent.tsx │ │ │ │ └── page.tsx │ │ │ ├── list-dynamic/ │ │ │ │ ├── components/ │ │ │ │ │ ├── List.tsx │ │ │ │ │ └── RowComponent.tsx │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ └── tailwind.css │ │ ├── eslint.config.mjs │ │ ├── next-env.d.ts │ │ ├── next.config.ts │ │ ├── package.json │ │ ├── postcss.config.mjs │ │ └── tsconfig.json │ ├── tests/ │ │ ├── package.json │ │ ├── playwright.config.ts │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── AnimationFrameRowCellCounter.tsx │ │ │ │ ├── DebugData.tsx │ │ │ │ ├── Decoder.tsx │ │ │ │ ├── EnvironmentMarker.tsx │ │ │ │ ├── LayoutShiftDetecter.tsx │ │ │ │ └── RowComponent.tsx │ │ │ ├── index.ts │ │ │ └── utils/ │ │ │ └── serializer/ │ │ │ ├── decode.ts │ │ │ ├── encode.ts │ │ │ └── types.ts │ │ └── tests/ │ │ └── layout-shift.spec.tsx │ ├── vike/ │ │ ├── README.md │ │ ├── package.json │ │ ├── pages/ │ │ │ ├── +Head.tsx │ │ │ ├── +Layout.tsx │ │ │ ├── +config.ts │ │ │ ├── Layout.css │ │ │ ├── _error/ │ │ │ │ └── +Page.tsx │ │ │ ├── decoder/ │ │ │ │ ├── +Page.tsx │ │ │ │ └── +route.ts │ │ │ ├── grid/ │ │ │ │ ├── +Page.tsx │ │ │ │ └── CellComponent.tsx │ │ │ ├── index/ │ │ │ │ └── +Page.tsx │ │ │ ├── list/ │ │ │ │ ├── +Page.tsx │ │ │ │ └── RowComponent.tsx │ │ │ ├── list-dynamic/ │ │ │ │ ├── +Page.tsx │ │ │ │ └── RowComponent.tsx │ │ │ └── tailwind.css │ │ ├── tsconfig.json │ │ └── vite.config.ts │ └── vite/ │ ├── README.md │ ├── eslint.config.js │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── main.tsx │ │ ├── routes/ │ │ │ ├── Decoder.tsx │ │ │ ├── Grid.tsx │ │ │ ├── Home.tsx │ │ │ └── List.tsx │ │ ├── tailwind.css │ │ └── vite-env.d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── lib/ │ ├── components/ │ │ ├── grid/ │ │ │ ├── Grid.test.tsx │ │ │ ├── Grid.tsx │ │ │ ├── types.ts │ │ │ ├── useGridCallbackRef.ts │ │ │ └── useGridRef.ts │ │ └── list/ │ │ ├── List.test.tsx │ │ ├── List.tsx │ │ ├── isDynamicRowHeight.ts │ │ ├── types.ts │ │ ├── useDynamicRowHeight.test.ts │ │ ├── useDynamicRowHeight.ts │ │ ├── useListCallbackRef.ts │ │ └── useListRef.ts │ ├── core/ │ │ ├── createCachedBounds.test.ts │ │ ├── createCachedBounds.ts │ │ ├── getEstimatedSize.test.ts │ │ ├── getEstimatedSize.ts │ │ ├── getOffsetForIndex.test.ts │ │ ├── getOffsetForIndex.ts │ │ ├── getStartStopIndices.test.ts │ │ ├── getStartStopIndices.ts │ │ ├── types.ts │ │ ├── useCachedBounds.test.ts │ │ ├── useCachedBounds.ts │ │ ├── useIsRtl.ts │ │ ├── useItemSize.ts │ │ ├── useVirtualizer.test.ts │ │ └── useVirtualizer.ts │ ├── hooks/ │ │ ├── useIsomorphicLayoutEffect.ts │ │ ├── useMemoizedObject.test.ts │ │ ├── useMemoizedObject.ts │ │ ├── useResizeObserver.test.ts │ │ ├── useResizeObserver.ts │ │ ├── useStableCallback.test.tsx │ │ └── useStableCallback.ts │ ├── index.ts │ ├── types.ts │ └── utils/ │ ├── adjustScrollOffsetForRtl.ts │ ├── areArraysEqual.ts │ ├── arePropsEqual.ts │ ├── assert.ts │ ├── colors/ │ │ ├── getContrastColor.ts │ │ └── stringToColor.ts │ ├── debug.ts │ ├── getRTLOffsetType.ts │ ├── getScrollbarSize.ts │ ├── isRtl.ts │ ├── parseNumericStyleValue.test.ts │ ├── parseNumericStyleValue.ts │ ├── shallowCompare.test.ts │ ├── shallowCompare.ts │ └── test/ │ ├── mockResizeObserver.ts │ └── mockScrollTo.ts ├── package.json ├── pnpm-workspace.yaml ├── postcss.config.js ├── prettier.config.js ├── public/ │ ├── data/ │ │ ├── addresses.json │ │ ├── contacts.json │ │ ├── lorem.json │ │ └── names.json │ ├── generated/ │ │ ├── docs/ │ │ │ ├── Grid.json │ │ │ ├── GridImperativeAPI.json │ │ │ ├── List.json │ │ │ └── ListImperativeAPI.json │ │ ├── examples/ │ │ │ ├── BasicRow.json │ │ │ ├── CellComponent.json │ │ │ ├── CellComponentAriaRoles.json │ │ │ ├── FixedHeightList.json │ │ │ ├── FixedHeightRowComponent.json │ │ │ ├── FlexboxLayout.json │ │ │ ├── Grid.json │ │ │ ├── GridAriaRoles.json │ │ │ ├── HorizontalList.json │ │ │ ├── HorizontalListCellRenderer.json │ │ │ ├── ImageRow.json │ │ │ ├── Images.json │ │ │ ├── ListAriaRoles.json │ │ │ ├── ListDynamicRowHeights.json │ │ │ ├── ListRowDynamicRowHeights.json │ │ │ ├── ListVariableRowHeights.json │ │ │ ├── ListWithStickyRows.json │ │ │ ├── RefComposition.json │ │ │ ├── RowComponentAriaRoles.json │ │ │ ├── RtlGrid.json │ │ │ ├── ScrollingIndicator.json │ │ │ ├── TableAriaAttributes.json │ │ │ ├── TableAriaOverrideProps.json │ │ │ ├── columnWidth.json │ │ │ ├── gridRefClickEventHandler.json │ │ │ ├── listRefClickEventHandler.json │ │ │ ├── rowHeight.json │ │ │ ├── shared.json │ │ │ ├── useGridCallbackRef.json │ │ │ ├── useGridRef.json │ │ │ ├── useGridRefImport.json │ │ │ ├── useListCallbackRef.json │ │ │ ├── useListRef.json │ │ │ └── useListRefImport.json │ │ ├── search-index.json │ │ └── search-records.json │ └── robots.txt ├── scripts/ │ ├── compile-docs.ts │ ├── compile-examples.ts │ ├── compile-search-index.ts │ └── compress-og-image.ts ├── src/ │ ├── App.tsx │ ├── components/ │ │ ├── ContinueLink.tsx │ │ ├── Link.tsx │ │ └── NavLink.tsx │ ├── constants.ts │ ├── hooks/ │ │ └── useLocalStorage.ts │ ├── routes/ │ │ ├── HowDoesItWorkRoute.tsx │ │ ├── PlatformRequirementsRoute.tsx │ │ ├── ScratchpadRoute.tsx │ │ ├── examples/ │ │ │ ├── BasicRow.tsx │ │ │ ├── RefComposition.tsx │ │ │ └── ScrollingIndicator.tsx │ │ ├── grid/ │ │ │ ├── AriaRolesRoute.tsx │ │ │ ├── HorizontalListsRoute.tsx │ │ │ ├── ImperativeHandleRoute.tsx │ │ │ ├── PropsRoute.tsx │ │ │ ├── RTLGridsRoute.tsx │ │ │ ├── RenderingGridRoute.tsx │ │ │ ├── ScrollToCellRoute.tsx │ │ │ ├── examples/ │ │ │ │ ├── CellComponent.tsx │ │ │ │ ├── CellComponentAriaRoles.tsx │ │ │ │ ├── Grid.tsx │ │ │ │ ├── GridAriaRoles.html │ │ │ │ ├── HorizontalList.tsx │ │ │ │ ├── HorizontalListCellRenderer.tsx │ │ │ │ ├── RtlGrid.tsx │ │ │ │ ├── columnWidth.ts │ │ │ │ ├── gridRefClickEventHandler.ts │ │ │ │ ├── shared.ts │ │ │ │ ├── useGridCallbackRef.tsx │ │ │ │ ├── useGridRef.tsx │ │ │ │ └── useGridRefImport.ts │ │ │ └── hooks/ │ │ │ ├── useContacts.ts │ │ │ └── useEmails.ts │ │ ├── list/ │ │ │ ├── AriaRolesRoute.tsx │ │ │ ├── DynamicRowHeightsRoute.tsx │ │ │ ├── FixedRowHeightsRoute.tsx │ │ │ ├── ImagesRoute.tsx │ │ │ ├── ImperativeApiRoute.tsx │ │ │ ├── PropsRoute.tsx │ │ │ ├── ScrollToRowRoute.tsx │ │ │ ├── StickyRowsRoute.tsx │ │ │ ├── VariableRowHeightsRoute.tsx │ │ │ ├── examples/ │ │ │ │ ├── FixedHeightList.tsx │ │ │ │ ├── FixedHeightRowComponent.tsx │ │ │ │ ├── ImageRow.tsx │ │ │ │ ├── Images.tsx │ │ │ │ ├── ListAriaRoles.html │ │ │ │ ├── ListDynamicRowHeights.tsx │ │ │ │ ├── ListRowDynamicRowHeights.tsx │ │ │ │ ├── ListVariableRowHeights.tsx │ │ │ │ ├── ListWithStickyRows.tsx │ │ │ │ ├── RowComponentAriaRoles.tsx │ │ │ │ ├── listRefClickEventHandler.ts │ │ │ │ ├── rowHeight.ts │ │ │ │ ├── useListCallbackRef.tsx │ │ │ │ ├── useListRef.tsx │ │ │ │ └── useListRefImport.ts │ │ │ └── hooks/ │ │ │ ├── useCitiesByState.ts │ │ │ └── useLorem.ts │ │ └── tables/ │ │ ├── AriaRolesRoute.tsx │ │ ├── TabularDataRoute.tsx │ │ ├── examples/ │ │ │ ├── FlexboxLayout.tsx │ │ │ ├── TableAriaAttributes.html │ │ │ └── TableAriaOverrideProps.tsx │ │ └── hooks/ │ │ └── useAddresses.ts │ ├── routes.ts │ └── vite-env.d.ts ├── temp.TODO.md ├── tsconfig.json ├── vercel.json ├── vite.config.ts ├── vitest.config.ts └── vitest.setup.js