gitextract_2ooj7gis/ ├── .codesandbox/ │ └── ci.json ├── .github/ │ ├── DISCUSSION_TEMPLATE/ │ │ └── bug-report.yml │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── config.yml │ ├── dependabot.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── compressed-size.yml │ ├── docs.yml │ ├── preview-release.yml │ ├── publish.yml │ ├── test-multiple-builds.yml │ ├── test-multiple-versions.yml │ ├── test-old-typescript.yml │ └── test.yml ├── .gitignore ├── .prettierignore ├── CONTRIBUTING.md ├── FUNDING.json ├── LICENSE ├── README.md ├── docs/ │ ├── index.md │ ├── learn/ │ │ ├── getting-started/ │ │ │ ├── comparison.md │ │ │ └── introduction.md │ │ ├── guides/ │ │ │ ├── advanced-typescript.md │ │ │ ├── auto-generating-selectors.md │ │ │ ├── beginner-typescript.md │ │ │ ├── connect-to-state-with-url-hash.md │ │ │ ├── event-handler-in-pre-react-18.md │ │ │ ├── flux-inspired-practice.md │ │ │ ├── how-to-reset-state.md │ │ │ ├── immutable-state-and-merging.md │ │ │ ├── initialize-state-with-props.md │ │ │ ├── maps-and-sets-usage.md │ │ │ ├── nextjs.md │ │ │ ├── practice-with-no-store-actions.md │ │ │ ├── prevent-rerenders-with-use-shallow.md │ │ │ ├── slices-pattern.md │ │ │ ├── ssr-and-hydration.md │ │ │ ├── testing.md │ │ │ ├── tutorial-tic-tac-toe.md │ │ │ └── updating-state.md │ │ └── index.md │ └── reference/ │ ├── apis/ │ │ ├── create-store.md │ │ ├── create-with-equality-fn.md │ │ ├── create.md │ │ └── shallow.md │ ├── hooks/ │ │ ├── use-shallow.md │ │ ├── use-store-with-equality-fn.md │ │ └── use-store.md │ ├── index.md │ ├── integrations/ │ │ ├── immer-middleware.md │ │ ├── persisting-store-data.md │ │ └── third-party-libraries.md │ ├── middlewares/ │ │ ├── combine.md │ │ ├── devtools.md │ │ ├── immer.md │ │ ├── persist.md │ │ ├── redux.md │ │ └── subscribe-with-selector.md │ ├── migrations/ │ │ ├── migrating-to-v4.md │ │ └── migrating-to-v5.md │ └── previous-versions/ │ └── zustand-v3-create-context.md ├── eslint.config.mjs ├── examples/ │ ├── demo/ │ │ ├── .gitignore │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── App.jsx │ │ │ ├── components/ │ │ │ │ ├── CodePreview.jsx │ │ │ │ ├── CopyButton.jsx │ │ │ │ ├── Details.jsx │ │ │ │ ├── Fireflies.jsx │ │ │ │ ├── Scene.jsx │ │ │ │ └── SnippetLang.jsx │ │ │ ├── main.jsx │ │ │ ├── materials/ │ │ │ │ └── layerMaterial.js │ │ │ ├── pmndrs.css │ │ │ ├── resources/ │ │ │ │ ├── javascript-code.js │ │ │ │ └── typescript-code.js │ │ │ ├── styles.css │ │ │ └── utils/ │ │ │ └── copy-to-clipboard.js │ │ └── vite.config.js │ └── starter/ │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── index.css │ │ ├── index.tsx │ │ └── vite-env.d.ts │ ├── tsconfig.json │ └── vite.config.ts ├── package.json ├── pnpm-workspace.yaml ├── rollup.config.mjs ├── src/ │ ├── index.ts │ ├── middleware/ │ │ ├── combine.ts │ │ ├── devtools.ts │ │ ├── immer.ts │ │ ├── persist.ts │ │ ├── redux.ts │ │ ├── ssrSafe.ts │ │ └── subscribeWithSelector.ts │ ├── middleware.ts │ ├── react/ │ │ └── shallow.ts │ ├── react.ts │ ├── shallow.ts │ ├── traditional.ts │ ├── types.d.ts │ ├── vanilla/ │ │ └── shallow.ts │ └── vanilla.ts ├── tests/ │ ├── basic.test.tsx │ ├── devtools.test.tsx │ ├── middlewareTypes.test.tsx │ ├── persistAsync.test.tsx │ ├── persistSync.test.tsx │ ├── setup.ts │ ├── shallow.test.tsx │ ├── ssr.test.tsx │ ├── subscribe.test.tsx │ ├── test-utils.ts │ ├── types.test.tsx │ └── vanilla/ │ ├── basic.test.ts │ ├── shallow.test.tsx │ └── subscribe.test.tsx ├── tsconfig.json └── vitest.config.mts