├── src
├── modules.d.ts
├── devsample
│ ├── ColumnLayout
│ │ ├── index.ts
│ │ ├── App.css
│ │ ├── components
│ │ │ ├── Header.css
│ │ │ ├── index.ts
│ │ │ ├── Icon.css
│ │ │ ├── Icon.tsx
│ │ │ ├── Header.tsx
│ │ │ ├── Comment.css
│ │ │ └── Comment.tsx
│ │ ├── items.ts
│ │ └── App.tsx
│ ├── FlowLayout
│ │ ├── index.ts
│ │ ├── App.css
│ │ ├── components
│ │ │ ├── Header.css
│ │ │ ├── Icon.css
│ │ │ ├── index.ts
│ │ │ ├── Icon.tsx
│ │ │ ├── Header.tsx
│ │ │ ├── Comment.css
│ │ │ └── Comment.tsx
│ │ ├── items.ts
│ │ └── App.tsx
│ ├── Horizontal
│ │ ├── index.ts
│ │ ├── App.css
│ │ ├── components
│ │ │ ├── Header.css
│ │ │ ├── index.ts
│ │ │ ├── Icon.css
│ │ │ ├── Icon.tsx
│ │ │ ├── Header.tsx
│ │ │ ├── Comment.css
│ │ │ └── Comment.tsx
│ │ ├── items.ts
│ │ └── App.tsx
│ ├── NewContainer
│ │ ├── index.ts
│ │ ├── App.css
│ │ ├── components
│ │ │ ├── Header.css
│ │ │ ├── index.ts
│ │ │ ├── Icon.css
│ │ │ ├── Icon.tsx
│ │ │ ├── Header.tsx
│ │ │ ├── Comment.tsx
│ │ │ └── Comment.css
│ │ ├── App.tsx
│ │ └── items.tsx
│ ├── debug.json
│ ├── manifest.json
│ ├── ManualLayout
│ │ ├── ManualLayout.css
│ │ └── ManualLayout.tsx
│ ├── lines.ts
│ ├── ProgressiveCss
│ │ ├── CssLayout.css
│ │ └── CssLayout.tsx
│ ├── UseSizeSample
│ │ └── UseSizeSample.tsx
│ ├── index.html
│ ├── trackFPS.ts
│ ├── console.ts
│ └── SampleSelector.tsx
├── react
│ ├── index.ts
│ └── useSize.tsx
├── common
│ ├── lerp.ts
│ ├── shims.ts
│ ├── utility.ts
│ ├── Rect.ts
│ ├── memoize.ts
│ ├── Rectangle.ts
│ ├── Margin.ts
│ ├── scrollToShim.ts
│ └── ResizeObserver.ts
├── index.ts
├── Virtualizer
│ ├── index.ts
│ ├── Container.tsx
│ ├── VirtualizerApi.ts
│ ├── getStableArray.ts
│ ├── Virtualizer.tsx
│ └── VirtualManager.ts
├── test
│ ├── test.html
│ ├── sampleLines.ts
│ ├── SampleContainer.tsx
│ └── ContainerTest.ts
└── webpack
│ ├── ResolverPlugin.ts
│ └── index.ts
├── .gitignore
├── .npmignore
├── watch.sh
├── LICENSE
├── package.json
├── notes.md
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
├── README.md
└── tsconfig.json
/src/modules.d.ts:
--------------------------------------------------------------------------------
1 | declare module "*.css" {
2 | }
--------------------------------------------------------------------------------
/src/devsample/ColumnLayout/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default } from "./App";
--------------------------------------------------------------------------------
/src/devsample/FlowLayout/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default } from "./App";
--------------------------------------------------------------------------------
/src/devsample/Horizontal/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default } from "./App";
--------------------------------------------------------------------------------
/src/devsample/NewContainer/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default } from "./App";
--------------------------------------------------------------------------------
/src/react/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default as useSize } from "./useSize";
3 |
--------------------------------------------------------------------------------
/src/devsample/debug.json:
--------------------------------------------------------------------------------
1 | {
2 | "port": 9222,
3 | "breakOnStart": false
4 | }
--------------------------------------------------------------------------------
/src/devsample/Horizontal/App.css:
--------------------------------------------------------------------------------
1 |
2 | .App .Virtualizer {
3 | background: #fffeb7;
4 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | dist
3 | lib
4 | node_modules
5 | .cache
6 | yarn-error.log
7 | .parcel-cache
8 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # this file will be copied to lib before publishing so files relative to that
2 | devsample
3 | test
4 |
--------------------------------------------------------------------------------
/src/common/lerp.ts:
--------------------------------------------------------------------------------
1 |
2 | export default function lerp(a: number, b: number, alpha: number) {
3 | return (a * (1 - alpha)) + (b * alpha);
4 | }
5 |
--------------------------------------------------------------------------------
/src/devsample/ColumnLayout/App.css:
--------------------------------------------------------------------------------
1 |
2 | .App .Virtualizer {
3 | background: #fffeb7;
4 | --column-gap: 20px;
5 | --row-gap: 10px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/devsample/FlowLayout/App.css:
--------------------------------------------------------------------------------
1 |
2 | .App .Virtualizer {
3 | background: #fffeb7;
4 | --column-gap: 20px;
5 | --row-gap: 10px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/devsample/NewContainer/App.css:
--------------------------------------------------------------------------------
1 |
2 | .Container_App .Virtualizer {
3 | background: #fffeb7;
4 | --column-gap: 12px;
5 | --row-gap: 12px;
6 | }
--------------------------------------------------------------------------------
/src/devsample/ColumnLayout/components/Header.css:
--------------------------------------------------------------------------------
1 | .ColumnLayout_Header {
2 | display: block;
3 | background: #b7bdff;
4 | box-sizing: border-box;
5 | padding: 4px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/devsample/FlowLayout/components/Header.css:
--------------------------------------------------------------------------------
1 | .FlowLayout_Header {
2 | display: block;
3 | background: #b7bdff;
4 | box-sizing: border-box;
5 | padding: 4px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/devsample/NewContainer/components/Header.css:
--------------------------------------------------------------------------------
1 | .Container_Header {
2 | display: block;
3 | background: #b7bdff;
4 | box-sizing: border-box;
5 | padding: 4px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/devsample/Horizontal/components/Header.css:
--------------------------------------------------------------------------------
1 | .Horizontal_Header {
2 | display: inline-block;
3 | background: #b7bdff;
4 | box-sizing: border-box;
5 | padding: 4px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/devsample/FlowLayout/components/Icon.css:
--------------------------------------------------------------------------------
1 | .FlowLayout_Icon {
2 | /* use presence of display: inline to indicate grid layout */
3 | display: inline-block;
4 | width: 100px;
5 | }
6 |
--------------------------------------------------------------------------------
/src/devsample/FlowLayout/components/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default as Comment } from "./Comment";
3 | export { default as Header } from "./Header";
4 | export { default as Icon } from "./Icon";
5 |
--------------------------------------------------------------------------------
/src/devsample/Horizontal/components/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default as Comment } from "./Comment";
3 | export { default as Header } from "./Header";
4 | export { default as Icon } from "./Icon";
5 |
--------------------------------------------------------------------------------
/src/devsample/ColumnLayout/components/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default as Comment } from "./Comment";
3 | export { default as Header } from "./Header";
4 | export { default as Icon } from "./Icon";
5 |
--------------------------------------------------------------------------------
/src/devsample/NewContainer/components/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default as Comment } from "./Comment";
3 | export { default as Header } from "./Header";
4 | export { default as Icon } from "./Icon";
5 |
--------------------------------------------------------------------------------
/src/devsample/NewContainer/components/Icon.css:
--------------------------------------------------------------------------------
1 | .Container_Icon {
2 | /* use presence of display: inline to indicate grid layout */
3 | display: inline-block;
4 | --column-count-self: auto;
5 | --optimum-width: 120px;
6 | }
--------------------------------------------------------------------------------
/src/devsample/ColumnLayout/components/Icon.css:
--------------------------------------------------------------------------------
1 | .ColumnLayout_Icon {
2 | /* use presence of display: inline to indicate grid layout */
3 | display: inline-block;
4 | --column-count-self: auto;
5 | --optimum-width: 120px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/devsample/Horizontal/components/Icon.css:
--------------------------------------------------------------------------------
1 | .Horizontal_Icon {
2 | /* use presence of display: inline to indicate grid layout */
3 | display: inline-block;
4 | width: 100px;
5 | height: 100px;
6 | margin: 8px;
7 | box-sizing: border-box;
8 | }
9 |
--------------------------------------------------------------------------------
/src/devsample/FlowLayout/components/Icon.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./Icon.css";
3 |
4 | export default function Icon(props) {
5 | const { item, updateItem, ...otherProps } = props;
6 | return ;
7 | }
8 |
--------------------------------------------------------------------------------
/src/devsample/Horizontal/components/Icon.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./Icon.css";
3 |
4 | export default function Icon(props) {
5 | const { item, updateItem, ...otherProps } = props;
6 | return
;
7 | }
8 |
--------------------------------------------------------------------------------
/src/devsample/NewContainer/components/Icon.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./Icon.css";
3 |
4 | export default function Icon(props) {
5 | const { image, updateItem, ...otherProps } = props;
6 | return
;
7 | }
8 |
--------------------------------------------------------------------------------
/src/devsample/ColumnLayout/components/Icon.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./Icon.css";
3 |
4 | export default function Icon(props) {
5 | const { item, updateItem, ...otherProps } = props;
6 | return
;
7 | }
8 |
--------------------------------------------------------------------------------
/src/devsample/FlowLayout/components/Header.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import "./Header.css";
3 |
4 | export default function Header(props) {
5 | const { item, updateItem, ...otherProps } = props;
6 | return