├── .commitlintrc.js ├── .dumi └── global.css ├── .dumirc.ts ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .fatherrc.ts ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── question.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── release.yml │ ├── static.yml │ └── test.yml ├── .gitignore ├── .husky ├── commit-msg └── pre-commit ├── .npmrc ├── .prettierignore ├── .prettierrc.js ├── .releaserc.js ├── .stylelintrc.js ├── CHANGELOG.md ├── LICENSE ├── README.md ├── docs ├── changelog.md ├── changelog.zh-CN.md ├── examples │ ├── basic.tsx │ ├── cancel.tsx │ ├── circle-item.tsx │ ├── click-to-select.tsx │ ├── item-disabled.tsx │ ├── reset-at-end.tsx │ ├── reset-at-start.tsx │ ├── scroll-container.tsx │ ├── shift-remove.tsx │ ├── sort.tsx │ └── virtual-list.tsx ├── guides │ ├── api.md │ ├── api.zh-CN.md │ ├── basic.md │ ├── basic.zh-CN.md │ ├── cancel.md │ ├── cancel.zh-CN.md │ ├── circle-item.md │ ├── circle-item.zh-CN.md │ ├── click-to-select.md │ ├── click-to-select.zh-CN.md │ ├── item-disabled.md │ ├── item-disabled.zh-CN.md │ ├── reset-at-end.md │ ├── reset-at-end.zh-CN.md │ ├── reset-at-start.md │ ├── reset-at-start.zh-CN.md │ ├── scroll-container.md │ ├── scroll-container.zh-CN.md │ ├── shift-remove.md │ ├── shift-remove.zh-CN.md │ ├── sort.md │ ├── sort.zh-CN.md │ ├── virtual-list.md │ └── virtual-list.zh-CN.md ├── index.md └── index.zh-CN.md ├── package.json ├── pnpm-lock.yaml ├── src ├── Selectable.tsx ├── context.ts ├── hooks │ ├── useContainer.ts │ ├── useEvent.ts │ ├── useLatest.ts │ ├── useLayoutUpdateEffect.ts │ ├── useMergedState.ts │ ├── useScroll.ts │ ├── useSelectable.ts │ └── useUpdateEffect.ts ├── index.ts └── utils.ts ├── tests ├── index.test.tsx └── test-setup.ts ├── tsconfig-check.json ├── tsconfig.json └── vitest.config.ts /.commitlintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@commitlint/config-conventional'], 3 | }; 4 | -------------------------------------------------------------------------------- /.dumi/global.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.dumi/global.css -------------------------------------------------------------------------------- /.dumirc.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.dumirc.ts -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.editorconfig -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.eslintignore -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@umijs/lint/dist/config/eslint'); 2 | -------------------------------------------------------------------------------- /.fatherrc.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.fatherrc.ts -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.github/ISSUE_TEMPLATE/bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.github/ISSUE_TEMPLATE/feature_request.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.github/ISSUE_TEMPLATE/question.md -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.github/PULL_REQUEST_TEMPLATE.md -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.github/workflows/release.yml -------------------------------------------------------------------------------- /.github/workflows/static.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.github/workflows/static.yml -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.gitignore -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.husky/commit-msg -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.husky/pre-commit -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | resolution-mode=highest 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.prettierignore -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.prettierrc.js -------------------------------------------------------------------------------- /.releaserc.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/.releaserc.js -------------------------------------------------------------------------------- /.stylelintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@umijs/lint/dist/config/stylelint'); 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/README.md -------------------------------------------------------------------------------- /docs/changelog.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/changelog.md -------------------------------------------------------------------------------- /docs/changelog.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/changelog.zh-CN.md -------------------------------------------------------------------------------- /docs/examples/basic.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/basic.tsx -------------------------------------------------------------------------------- /docs/examples/cancel.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/cancel.tsx -------------------------------------------------------------------------------- /docs/examples/circle-item.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/circle-item.tsx -------------------------------------------------------------------------------- /docs/examples/click-to-select.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/click-to-select.tsx -------------------------------------------------------------------------------- /docs/examples/item-disabled.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/item-disabled.tsx -------------------------------------------------------------------------------- /docs/examples/reset-at-end.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/reset-at-end.tsx -------------------------------------------------------------------------------- /docs/examples/reset-at-start.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/reset-at-start.tsx -------------------------------------------------------------------------------- /docs/examples/scroll-container.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/scroll-container.tsx -------------------------------------------------------------------------------- /docs/examples/shift-remove.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/shift-remove.tsx -------------------------------------------------------------------------------- /docs/examples/sort.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/sort.tsx -------------------------------------------------------------------------------- /docs/examples/virtual-list.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/examples/virtual-list.tsx -------------------------------------------------------------------------------- /docs/guides/api.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/api.md -------------------------------------------------------------------------------- /docs/guides/api.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/api.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/basic.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/basic.md -------------------------------------------------------------------------------- /docs/guides/basic.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/basic.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/cancel.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/cancel.md -------------------------------------------------------------------------------- /docs/guides/cancel.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/cancel.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/circle-item.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/circle-item.md -------------------------------------------------------------------------------- /docs/guides/circle-item.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/circle-item.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/click-to-select.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/click-to-select.md -------------------------------------------------------------------------------- /docs/guides/click-to-select.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/click-to-select.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/item-disabled.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/item-disabled.md -------------------------------------------------------------------------------- /docs/guides/item-disabled.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/item-disabled.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/reset-at-end.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/reset-at-end.md -------------------------------------------------------------------------------- /docs/guides/reset-at-end.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/reset-at-end.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/reset-at-start.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/reset-at-start.md -------------------------------------------------------------------------------- /docs/guides/reset-at-start.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/reset-at-start.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/scroll-container.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/scroll-container.md -------------------------------------------------------------------------------- /docs/guides/scroll-container.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/scroll-container.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/shift-remove.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/shift-remove.md -------------------------------------------------------------------------------- /docs/guides/shift-remove.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/shift-remove.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/sort.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/sort.md -------------------------------------------------------------------------------- /docs/guides/sort.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/sort.zh-CN.md -------------------------------------------------------------------------------- /docs/guides/virtual-list.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/virtual-list.md -------------------------------------------------------------------------------- /docs/guides/virtual-list.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/guides/virtual-list.zh-CN.md -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/index.md -------------------------------------------------------------------------------- /docs/index.zh-CN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/docs/index.zh-CN.md -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/package.json -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/pnpm-lock.yaml -------------------------------------------------------------------------------- /src/Selectable.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/Selectable.tsx -------------------------------------------------------------------------------- /src/context.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/context.ts -------------------------------------------------------------------------------- /src/hooks/useContainer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/hooks/useContainer.ts -------------------------------------------------------------------------------- /src/hooks/useEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/hooks/useEvent.ts -------------------------------------------------------------------------------- /src/hooks/useLatest.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/hooks/useLatest.ts -------------------------------------------------------------------------------- /src/hooks/useLayoutUpdateEffect.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/hooks/useLayoutUpdateEffect.ts -------------------------------------------------------------------------------- /src/hooks/useMergedState.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/hooks/useMergedState.ts -------------------------------------------------------------------------------- /src/hooks/useScroll.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/hooks/useScroll.ts -------------------------------------------------------------------------------- /src/hooks/useSelectable.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/hooks/useSelectable.ts -------------------------------------------------------------------------------- /src/hooks/useUpdateEffect.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/hooks/useUpdateEffect.ts -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/index.ts -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/src/utils.ts -------------------------------------------------------------------------------- /tests/index.test.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/tests/index.test.tsx -------------------------------------------------------------------------------- /tests/test-setup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/tests/test-setup.ts -------------------------------------------------------------------------------- /tsconfig-check.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/tsconfig-check.json -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/tsconfig.json -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linxianxi/react-selectable-box/HEAD/vitest.config.ts --------------------------------------------------------------------------------