{"_id":"loro-mirror-react","_rev":"21-23bf6938c5e8e9f4856d952fbb02f701","name":"loro-mirror-react","dist-tags":{"latest":"2.3.3"},"versions":{"0.1.0":{"name":"loro-mirror-react","version":"0.1.0","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@0.1.0","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"f91651be9cb8da83af68150bde0851066d131258","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-0.1.0.tgz","fileCount":12,"integrity":"sha512-iO1lCmnlRsNUb/yCYEOZ43JboBMmxQPou9ilGv0agExl8Huun58+I3UQeCAGmQUBTmHqE7IQ2DjusTUuYwW4Hw==","signatures":[{"sig":"MEQCIC4NkcWosAzy1918V5c+vBrfSWbCo4Mxj0aSWw2f+v2wAiAiDu85YclXNR1Z3lVSW1rzJYQP+1CCrW/4NdAKWWZmFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44722},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-0.1.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/21f2564dab2a76b4d7462a41a716a238/loro-mirror-react-0.1.0.tgz","_integrity":"sha512-iO1lCmnlRsNUb/yCYEOZ43JboBMmxQPou9ilGv0agExl8Huun58+I3UQeCAGmQUBTmHqE7IQ2DjusTUuYwW4Hw==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"loro-mirror":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0","loro-crdt":"^1.7.1"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_0.1.0_1757674627409_0.1305061411420505","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"loro-mirror-react","version":"0.2.0","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@0.2.0","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"7572ee79d4373db8040987dc05dc889c216a47e3","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-0.2.0.tgz","fileCount":12,"integrity":"sha512-4UrvUDgWntytXtKeN87SFfrQNvZLBzNxsfbxm9ClC9WqAXyWDy84EbK24moUv+yTeyge+McT0tZpTBHlA9Ow+Q==","signatures":[{"sig":"MEUCIQCICQ7Rcb7MQr+3ksF/Iyejmk6eIxqPEN0S3vd59fo2fQIgM7YaqHZ4pwqWBbP8bl5fMqMuafmU0a61YC1c/MyQGyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44698},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-0.2.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/f612494b7d96171a4ec1253a417bdb28/loro-mirror-react-0.2.0.tgz","_integrity":"sha512-4UrvUDgWntytXtKeN87SFfrQNvZLBzNxsfbxm9ClC9WqAXyWDy84EbK24moUv+yTeyge+McT0tZpTBHlA9Ow+Q==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0","loro-crdt":"^1.7.1","loro-mirror":"0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_0.2.0_1758076825315_0.15887543715788777","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"loro-mirror-react","version":"1.0.0","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.0.0","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"3dd76969d16bca76a68b6a9cb3bced13d95339cd","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.0.0.tgz","fileCount":12,"integrity":"sha512-GjA2P9i6Vd3tgnAk9LyCdmsHgybMi0/AKLc8q4oCYNssz2O6Jf8zY4th6N3vl+NQgHxZ9eJC08DeilNORE9gcw==","signatures":[{"sig":"MEUCIQDjqjpPZHTN2JnRVvHE+EyndI909DVcEkekICVQYrGcWAIgNWyHV8/a1yOdSSevkW54zc/qkX/68crBbW2y3ljgndI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43919},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.0.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/04d2238cc6845857fef3cd0fe1e981f5/loro-mirror-react-1.0.0.tgz","_integrity":"sha512-GjA2P9i6Vd3tgnAk9LyCdmsHgybMi0/AKLc8q4oCYNssz2O6Jf8zY4th6N3vl+NQgHxZ9eJC08DeilNORE9gcw==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.0.0_1758513260104_0.07365642727657717","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"loro-mirror-react","version":"1.0.1","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.0.1","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"71c292e6e29cb5ba5a1c24cfcc1df7d58b78a195","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.0.1.tgz","fileCount":12,"integrity":"sha512-838b6g0Wq5gi29g7uccriYhjo1+Yqxm+Rn8MQtXR5EleKnpJsMdqi0jvA+8U5RQPNzfCYFsynOWhH3aWDLzrgg==","signatures":[{"sig":"MEQCIHGWQ0qIkl98g34Z79RG/ioTb1RTtZlQthwyIayBFmNoAiB30fkFhvzOOhnAyLjU72erQix7DRHN/PGRoWjMXPNS1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43841},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.0.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/5e23a20965e1228c667de077aab4653b/loro-mirror-react-1.0.1.tgz","_integrity":"sha512-838b6g0Wq5gi29g7uccriYhjo1+Yqxm+Rn8MQtXR5EleKnpJsMdqi0jvA+8U5RQPNzfCYFsynOWhH3aWDLzrgg==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.0.1_1758542787988_0.9545408472387371","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"loro-mirror-react","version":"1.0.2","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.0.2","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"bffa0092e7b5b6b58cc69c479f7cd9a78029c8ff","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.0.2.tgz","fileCount":12,"integrity":"sha512-DgkjylULn931bZNyIlzwh4u2VNyC0gzi2rcDAf4Tx9PsDbK5lnuZeFtDNn8HtOcBMbFjvZI29gaBXd4YuzQghA==","signatures":[{"sig":"MEUCIBOLw+FoLNthhN33gvch2/mBIJJRcno4QyqG4TeliAo9AiEAnrf0HvAtr9hvl4oP4SVapCQ0wAwbUZlbopB+K5IL+DQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43841},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.0.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/9d97fc5d2f01728b372027d0aa364141/loro-mirror-react-1.0.2.tgz","_integrity":"sha512-DgkjylULn931bZNyIlzwh4u2VNyC0gzi2rcDAf4Tx9PsDbK5lnuZeFtDNn8HtOcBMbFjvZI29gaBXd4YuzQghA==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.0.2_1758783842511_0.5425143441497373","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"loro-mirror-react","version":"1.0.3","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.0.3","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"6c460604a0b29c089523b81c5eb631755cc551de","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.0.3.tgz","fileCount":12,"integrity":"sha512-shsymCJJ0fyY0zXUY/pIu+fY932QqqaHFiI7tbFma0RkKWfJ6EBjCHsPYk3Wm05iRmoryXyDMCuHxkLiZYxvBg==","signatures":[{"sig":"MEUCIQCTNYyQgJ1K64KTF2wd7oI9T4G+cnC7uth7/ZN6wCCC2QIgUB887X1Uqz4XnsYCt80ZG5mx0vxpo/NRRDdrM1Tawps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43841},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.0.3.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/297b922fc3d6187cfea89942d86f846a/loro-mirror-react-1.0.3.tgz","_integrity":"sha512-shsymCJJ0fyY0zXUY/pIu+fY932QqqaHFiI7tbFma0RkKWfJ6EBjCHsPYk3Wm05iRmoryXyDMCuHxkLiZYxvBg==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.0.3"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.0.3_1759076061554_0.312034570271299","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"loro-mirror-react","version":"1.0.4","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.0.4","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"104cc9f3e791c9e9ab43b5f9b9247f89bfddd22a","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.0.4.tgz","fileCount":12,"integrity":"sha512-jVK2684AWxA982HXuqoI4RDyEnI9JkhlCoMFvKlCLyWIU6pAPW3i/FB5GDkNBtzQwdnOOFaA5sJYBigFoTGy7Q==","signatures":[{"sig":"MEYCIQCNuHvHOELhP0/dvl2nuDdHq8IbD49CqEGDjSAJ3hiXAAIhAJijzVQxmv84BKtPEEUVCXmRSVbB8hmpcxFHmaFI5j+P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43841},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.0.4.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/ba8898578ae837638deb70ba6f46f99e/loro-mirror-react-1.0.4.tgz","_integrity":"sha512-jVK2684AWxA982HXuqoI4RDyEnI9JkhlCoMFvKlCLyWIU6pAPW3i/FB5GDkNBtzQwdnOOFaA5sJYBigFoTGy7Q==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.0.4_1760330040428_0.08538384062891757","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"loro-mirror-react","version":"1.1.0","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.1.0","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"2d623358ac59dc15fd1154cc7097e31d5b10be62","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.1.0.tgz","fileCount":12,"integrity":"sha512-DjR3p5t661AdxZ7qXu8cOYtMQM8PRPQVEAzB0f83W1hRQgX32NX21Z5Wg4uo63UtmKrXzBw+xWAxDxJx49iGjA==","signatures":[{"sig":"MEUCIEIQUEVVlDYlfpmLBbjbpJIiPbfSO7X9/nN6ZNsNuurMAiEA7UACHZmRsG7eBXNpCVN5x468Var+5Tx0oRr+dmPOfAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43841},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.1.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/7b6b454c79930654394445e78e5c6eb1/loro-mirror-react-1.1.0.tgz","_integrity":"sha512-DjR3p5t661AdxZ7qXu8cOYtMQM8PRPQVEAzB0f83W1hRQgX32NX21Z5Wg4uo63UtmKrXzBw+xWAxDxJx49iGjA==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.1.0_1760415392191_0.22272773393915535","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"loro-mirror-react","version":"1.1.1","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.1.1","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"7ad67b3be91afdcc5392f6efdec933c46f9c3be0","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.1.1.tgz","fileCount":12,"integrity":"sha512-YmuI4dUQkuKSz7voXk14F8ljHkeeO6gwSdryARFUDvhzHL1PSnOQ/SPm07e/uXF9SsCzPjcdrdxhoCnlorUj2A==","signatures":[{"sig":"MEUCIQDGHP3V8byGdNhVCjMrriS4jVx9+SeXAL9GOhTCfoFmtAIgegeGwgqF7NwS6/Wlx1uhLl9Kct2R9hbAVjRqpF96tdc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43852},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.1.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/41e1cf02346c3f44442ab5e0d1840165/loro-mirror-react-1.1.1.tgz","_integrity":"sha512-YmuI4dUQkuKSz7voXk14F8ljHkeeO6gwSdryARFUDvhzHL1PSnOQ/SPm07e/uXF9SsCzPjcdrdxhoCnlorUj2A==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.1.1"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.1.1_1762245503298_0.8209657733526958","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"loro-mirror-react","version":"1.1.2","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.1.2","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"3c8aea3ebc31c767b5414a983c5cac253497b77a","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.1.2.tgz","fileCount":12,"integrity":"sha512-npJSTL2zVxSHYSDjRKCWkiKsQzYayrtV9jLvauer2DUHS5yZ7PcaUnqiWkafLVQPsiLzzFAG+h+ZZpMXjnV4zw==","signatures":[{"sig":"MEYCIQCo8uk36gjRbsiU6QBfP1cygaYKmNr58fVi5GHjsPJ0hgIhAMxExhDnkrk4Ax4QXDt0ztv0TAsX9zzNuLoWh3HyGa/l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43852},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.1.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/tmp/0612ebd81527afef837307bec2d570c7/loro-mirror-react-1.1.2.tgz","_integrity":"sha512-npJSTL2zVxSHYSDjRKCWkiKsQzYayrtV9jLvauer2DUHS5yZ7PcaUnqiWkafLVQPsiLzzFAG+h+ZZpMXjnV4zw==","_npmVersion":"10.8.2","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.1.2_1765012325767_0.9759398728081925","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"loro-mirror-react","version":"1.2.0","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.2.0","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"803e3e9eaf2fbca030254988f12a2cee0b511ad7","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.2.0.tgz","fileCount":14,"integrity":"sha512-WAW7aS4hvlR1MzdEGpxsvof4E1YgzSUvnS5wb2Id8iWNRt6WyyyiT8jKXwS5OwmIJUzuJggWwJdHXIAiD9uBLw==","signatures":[{"sig":"MEUCIQCOAqzzfxoKgO4/k6T35tqnOzKEqcqBruL6ySe4A9ql8QIgIYyraEwlHZPbjOG/rm6ecgUgl3nFIvHsoTz2D+iJql0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61058},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.2.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/private/var/folders/x9/v95xfgsd7q77l65gphtc4vdw0000gn/T/20f4302b7c47e5dfdad31d30edd03d8c/loro-mirror-react-1.2.0.tgz","_integrity":"sha512-WAW7aS4hvlR1MzdEGpxsvof4E1YgzSUvnS5wb2Id8iWNRt6WyyyiT8jKXwS5OwmIJUzuJggWwJdHXIAiD9uBLw==","_npmVersion":"11.6.4","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.2.0_1765594591886_0.3498498600971567","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"loro-mirror-react","version":"1.2.1","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@1.2.1","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"dist":{"shasum":"e17388cd8d87f4289516098def5ce3fef65769be","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-1.2.1.tgz","fileCount":14,"integrity":"sha512-ysFnKRFpU5/QYMuYa3BXBR0o/oKTsu+0wOXbL13ljmMO9WyzMYnXcR45kloXQoT1KcJfejeu1YlDcYZ0rIlKDg==","signatures":[{"sig":"MEUCIDV2LPmq4Ocjspb4z3JZ29tlnR8z5aQpH+C2iJcaASYiAiEA28MqxzrrZOFENmktJIWWIUov1swO3HcAuskSSA1JCIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62714},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-1.2.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rem2018","email":"remch183@outlook.com"},"_resolved":"/private/var/folders/x9/v95xfgsd7q77l65gphtc4vdw0000gn/T/c727dc90e37846377f93dd98b983b97b/loro-mirror-react-1.2.1.tgz","_integrity":"sha512-ysFnKRFpU5/QYMuYa3BXBR0o/oKTsu+0wOXbL13ljmMO9WyzMYnXcR45kloXQoT1KcJfejeu1YlDcYZ0rIlKDg==","_npmVersion":"11.6.4","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.8.0","loro-mirror":"1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_1.2.1_1766415921247_0.001755052246174893","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"loro-mirror-react","version":"2.0.0","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@2.0.0","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"homepage":"https://github.com/loro-dev/loro-mirror#readme","bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"dist":{"shasum":"be0cb58d6b1dd48e5bb5a23122e25962c462753e","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-2.0.0.tgz","fileCount":12,"integrity":"sha512-Oqy4cPfAK049KPqbNmN1sthkPM66oC7jtbYqvgzawzk98YYk6+QiGWoPE7IYSTJmcjnpyb8CElg5gUp+H5Owkw==","signatures":[{"sig":"MEUCID2GuBAes+ACLtP2COCxFxsrj7EMqkpZa/cDzuAR2vxcAiEA/ki6HDhxu/EpJ3NYSuJUA12J4NbY18qP2iGAxAreyKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/loro-mirror-react@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50762},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-2.0.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28d6dd02-28b8-436a-be5a-f3a36ce276c6"}},"_resolved":"/tmp/fa3435df17d25d09be7b8f826c86ddeb/loro-mirror-react-2.0.0.tgz","_integrity":"sha512-Oqy4cPfAK049KPqbNmN1sthkPM66oC7jtbYqvgzawzk98YYk6+QiGWoPE7IYSTJmcjnpyb8CElg5gUp+H5Owkw==","repository":{"url":"git+https://github.com/loro-dev/loro-mirror.git","type":"git","directory":"packages/react"},"_npmVersion":"11.9.0","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.8.0","loro-mirror":"2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_2.0.0_1774357663557_0.7207893446468474","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"loro-mirror-react","version":"2.1.0","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@2.1.0","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"homepage":"https://github.com/loro-dev/loro-mirror#readme","bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"dist":{"shasum":"81b125a60c80bddcb9bfc14c7667fb85df3c0665","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-2.1.0.tgz","fileCount":12,"integrity":"sha512-eLbFodDYJ1nUIVVyPt9DhoswHbAIi36Fld18Kawmc/4ayEM0f/QfETChdNg+aPnjJJYyKShHlf3x17Anqj/1Ww==","signatures":[{"sig":"MEYCIQClOiu0teQSYi4wQk8XwlKaQ6U3sw51p4kCUQ92HLY6cAIhAPHijL3tAX1lP90RVQMUN5oAhKoPW/QK3D1ynTc2fIQF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/loro-mirror-react@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49866},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-2.1.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28d6dd02-28b8-436a-be5a-f3a36ce276c6"}},"_resolved":"/tmp/03103b5b9973cbcd137c6064d3dd5c43/loro-mirror-react-2.1.0.tgz","_integrity":"sha512-eLbFodDYJ1nUIVVyPt9DhoswHbAIi36Fld18Kawmc/4ayEM0f/QfETChdNg+aPnjJJYyKShHlf3x17Anqj/1Ww==","repository":{"url":"git+https://github.com/loro-dev/loro-mirror.git","type":"git","directory":"packages/react"},"_npmVersion":"11.9.0","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.8.0","loro-mirror":"2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_2.1.0_1774410656173_0.6138371035589523","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"loro-mirror-react","version":"2.1.1","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@2.1.1","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"homepage":"https://github.com/loro-dev/loro-mirror#readme","bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"dist":{"shasum":"e18a07746102e560a1626fae8e810bff1cfcbcb7","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-2.1.1.tgz","fileCount":12,"integrity":"sha512-K+vIAzdmyfqrxJ+nJu0m97XmViBe6ZaMBTupyKXTWMYuNJ9RahgWhik5EGPC5tVQf8ipDv1PH+NZYdzNKMNvWw==","signatures":[{"sig":"MEQCIH8ISnsET+eoviySSkytSvr8YcTvExWSbE1Ci94bWTwbAiBioOPp2C7syfBwp/C5f8s8S9Y6Xe3QX96KTQso3Un01w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/loro-mirror-react@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49866},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-2.1.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28d6dd02-28b8-436a-be5a-f3a36ce276c6"}},"_resolved":"/tmp/37e6b14fd58fb8ccabfac91384f20563/loro-mirror-react-2.1.1.tgz","_integrity":"sha512-K+vIAzdmyfqrxJ+nJu0m97XmViBe6ZaMBTupyKXTWMYuNJ9RahgWhik5EGPC5tVQf8ipDv1PH+NZYdzNKMNvWw==","repository":{"url":"git+https://github.com/loro-dev/loro-mirror.git","type":"git","directory":"packages/react"},"_npmVersion":"11.11.0","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.8.0","loro-mirror":"2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_2.1.1_1777447174576_0.13431314231659663","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"loro-mirror-react","version":"2.2.0","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@2.2.0","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"homepage":"https://github.com/loro-dev/loro-mirror#readme","bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"dist":{"shasum":"28fd0d85d1c834c2ef9b9fad2395a9577aea7a58","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-2.2.0.tgz","fileCount":12,"integrity":"sha512-2JNSw2ciMzz1s77WHlZh1P/3Fwigug3ubaUHn/qz2392cOnD7r4wbMqRun+lcBBL1dUmVNfJJtlihwHAaZ+dvg==","signatures":[{"sig":"MEQCIF4PrOqz4ToVGPXiODHj8u3AJppi7E0ncWJcms4XR1VhAiAbCLlQqaKhG0WibStbXFW5Cp3FnUuH4TJXJv27pI6VnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/loro-mirror-react@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50921},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-2.2.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28d6dd02-28b8-436a-be5a-f3a36ce276c6"}},"_resolved":"/tmp/026b22221f4b02e119f5060f44ae5bb5/loro-mirror-react-2.2.0.tgz","_integrity":"sha512-2JNSw2ciMzz1s77WHlZh1P/3Fwigug3ubaUHn/qz2392cOnD7r4wbMqRun+lcBBL1dUmVNfJJtlihwHAaZ+dvg==","repository":{"url":"git+https://github.com/loro-dev/loro-mirror.git","type":"git","directory":"packages/react"},"_npmVersion":"11.13.0","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.13.3","loro-mirror":"2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_2.2.0_1781544162836_0.9277181358501103","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"loro-mirror-react","version":"2.2.1","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@2.2.1","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"homepage":"https://github.com/loro-dev/loro-mirror#readme","bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"dist":{"shasum":"c151f9c039965c0a78d566cb44504ffb995669f1","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-2.2.1.tgz","fileCount":12,"integrity":"sha512-Bw1OKLwk9xRVeyDPt7+JOtZyEx+1mEkfCyRyGGc06YVs5HGYnGKRiDys+TxO3Kj302RT12rTtN+RbwYQpiEsxg==","signatures":[{"sig":"MEQCIDg0gWC75Fi9Mp6SJZEI6ETpWXlIG3lLmyDz73aDlyGnAiAmeEKXkPAo0X9ly0gx+3SO6LTs3WeLDy4ZtEaZG8h1kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/loro-mirror-react@2.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50921},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-2.2.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28d6dd02-28b8-436a-be5a-f3a36ce276c6"}},"_resolved":"/tmp/e1aea1311b8d98b86aa0a31ac5125315/loro-mirror-react-2.2.1.tgz","_integrity":"sha512-Bw1OKLwk9xRVeyDPt7+JOtZyEx+1mEkfCyRyGGc06YVs5HGYnGKRiDys+TxO3Kj302RT12rTtN+RbwYQpiEsxg==","repository":{"url":"git+https://github.com/loro-dev/loro-mirror.git","type":"git","directory":"packages/react"},"_npmVersion":"11.16.0","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.13.3","loro-mirror":"2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_2.2.1_1785863098398_0.8672639020127906","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"loro-mirror-react","version":"2.3.0","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@2.3.0","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"homepage":"https://github.com/loro-dev/loro-mirror#readme","bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"dist":{"shasum":"2b540335bf42c114377227c769701fc6ae1eccbc","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-2.3.0.tgz","fileCount":12,"integrity":"sha512-fX4qU/ykiFx2zxZVgiUO5GKqk6nqrmu7dfogHtd9a4D0SK2TqG0Sqyc3DUbxjX2gbj2xYgFVAr+rUpjwAEij1Q==","signatures":[{"sig":"MEUCIHzfGb+4BWO0UTgQHyFWf09yN9LWFqdh2gongQK9mCcaAiEAi4hmMf+ap4PdegO3EM3E3W7SbOoD7QySDYYtFP8E2a8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/loro-mirror-react@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50921},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-2.3.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28d6dd02-28b8-436a-be5a-f3a36ce276c6"}},"_resolved":"/tmp/934c9638d087e11dfbee067abccd72fb/loro-mirror-react-2.3.0.tgz","_integrity":"sha512-fX4qU/ykiFx2zxZVgiUO5GKqk6nqrmu7dfogHtd9a4D0SK2TqG0Sqyc3DUbxjX2gbj2xYgFVAr+rUpjwAEij1Q==","repository":{"url":"git+https://github.com/loro-dev/loro-mirror.git","type":"git","directory":"packages/react"},"_npmVersion":"11.17.0","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.13.3","loro-mirror":"2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_2.3.0_1787845510834_0.6548057129765394","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"loro-mirror-react","version":"2.3.1","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@2.3.1","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"homepage":"https://github.com/loro-dev/loro-mirror#readme","bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"dist":{"shasum":"661f03f56a38094fb008b69a84423c5a1c5b49eb","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-2.3.1.tgz","fileCount":12,"integrity":"sha512-x0bg7/2b3RV5curpQtZb0t3kPmQh2MSipPa2dVivwP1LeRXz7HSIIScPblVnXZcytgB2O9nVvsySGA/lL1A1uw==","signatures":[{"sig":"MEQCIFYIZtd9aSYXaeyWAHGmIhsM+oWScFgCLRaBIMthgJJSAiBbRtvu80lMCOVygJXYJnRHWv6XtwqQ8GVcSLo1L1jzNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/loro-mirror-react@2.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50921},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-2.3.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28d6dd02-28b8-436a-be5a-f3a36ce276c6"}},"_resolved":"/tmp/4c5548ad19b7ea358ed52a0e7cf61b04/loro-mirror-react-2.3.1.tgz","_integrity":"sha512-x0bg7/2b3RV5curpQtZb0t3kPmQh2MSipPa2dVivwP1LeRXz7HSIIScPblVnXZcytgB2O9nVvsySGA/lL1A1uw==","repository":{"url":"git+https://github.com/loro-dev/loro-mirror.git","type":"git","directory":"packages/react"},"_npmVersion":"11.17.0","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.13.3","loro-mirror":"2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_2.3.1_1787996773252_0.34196075896582445","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"loro-mirror-react","version":"2.3.2","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","_id":"loro-mirror-react@2.3.2","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"homepage":"https://github.com/loro-dev/loro-mirror#readme","bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"dist":{"shasum":"cd20e212c7095740ac7c358abae36246b39c8a53","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-2.3.2.tgz","fileCount":12,"integrity":"sha512-KvWupA5aI5+0E1xkb4myOG3X9z21vmlVa27FWdsjZsBFWLJAUHSMpPbuJIX65yhV5RS+qRWGVXvKLu7MjOwodw==","signatures":[{"sig":"MEQCIAV4fNj8T68d67X0aE1JFYUyApfVSIRU+6aOEq+0CgsAAiBrvHjtx/yJV/NTthET2NCO/5mU2aOmveuwv/S/GAcd3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/loro-mirror-react@2.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50921},"main":"dist/index.js","type":"module","_from":"file:loro-mirror-react-2.3.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p .","typecheck":"tsc -p tsconfig.typecheck.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28d6dd02-28b8-436a-be5a-f3a36ce276c6"}},"_resolved":"/tmp/e793c6c205b1c549ea3457aeee0d82a0/loro-mirror-react-2.3.2.tgz","_integrity":"sha512-KvWupA5aI5+0E1xkb4myOG3X9z21vmlVa27FWdsjZsBFWLJAUHSMpPbuJIX65yhV5RS+qRWGVXvKLu7MjOwodw==","repository":{"url":"git+https://github.com/loro-dev/loro-mirror.git","type":"git","directory":"packages/react"},"_npmVersion":"11.19.0","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3","@types/node":"^20.10.5","@types/react":"^18.2.45","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-crdt":"^1.13.3","loro-mirror":"2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/loro-mirror-react_2.3.2_1788956845352_0.41612219986137355","host":"s3://npm-registry-packages-npm-production"}},"2.3.3":{"name":"loro-mirror-react","version":"2.3.3","description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"sideEffects":false,"publishConfig":{"access":"public"},"keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"author":{"name":"Loro Team"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/loro-dev/loro-mirror.git","directory":"packages/react"},"peerDependencies":{"loro-crdt":"^1.16.0","react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0","loro-mirror":"2.3.3"},"devDependencies":{"@testing-library/react":"^16.3.0","@types/node":"^20.10.5","@types/react":"^18.2.45","jsdom":"^23.0.1","react":"^18.2.0","react-dom":"^18.2.0","typescript":"^5.3.3"},"scripts":{"build":"tsc -p .","test":"vitest run","test:watch":"vitest","typecheck":"tsc -p tsconfig.typecheck.json --noEmit"},"_id":"loro-mirror-react@2.3.3","bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"homepage":"https://github.com/loro-dev/loro-mirror#readme","_integrity":"sha512-AMtNgejmVg+77q+xWyDy7gym78zAw87d0tRNgLSSXcgI8idXLD1vykytPL4bTSqwiiL4+3wK11djDUcdWJ81Ew==","_resolved":"/tmp/0591ef10facc08b17aae095694671c77/loro-mirror-react-2.3.3.tgz","_from":"file:loro-mirror-react-2.3.3.tgz","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-AMtNgejmVg+77q+xWyDy7gym78zAw87d0tRNgLSSXcgI8idXLD1vykytPL4bTSqwiiL4+3wK11djDUcdWJ81Ew==","shasum":"252d2f91b565cfe0715dce44c1d86100eb817dd5","tarball":"https://registry.npmjs.org/loro-mirror-react/-/loro-mirror-react-2.3.3.tgz","fileCount":12,"unpackedSize":50921,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/loro-mirror-react@2.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDIE9c8GoBl/xEYhBwkfrrXGwHUc+o2Xv59mLAqlieDIAIgD2ajZgGF+3my2f1WhWbbPDCvonLYILyjI20wifpBVFQ="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:28d6dd02-28b8-436a-be5a-f3a36ce276c6"}},"directories":{},"maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/loro-mirror-react_2.3.3_1789060216225_0.618302618261434"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-12T10:57:07.320Z","modified":"2026-09-10T17:10:16.718Z","0.1.0":"2025-09-12T10:57:07.615Z","0.2.0":"2025-09-17T02:40:25.500Z","1.0.0":"2025-09-22T03:54:20.281Z","1.0.1":"2025-09-22T12:06:28.207Z","1.0.2":"2025-09-25T07:04:02.700Z","1.0.3":"2025-09-28T16:14:21.742Z","1.0.4":"2025-10-13T04:34:00.644Z","1.1.0":"2025-10-14T04:16:32.379Z","1.1.1":"2025-11-04T08:38:23.496Z","1.1.2":"2025-12-06T09:12:05.912Z","1.2.0":"2025-12-13T02:56:32.051Z","1.2.1":"2025-12-22T15:05:21.386Z","2.0.0":"2026-03-24T13:07:43.705Z","2.1.0":"2026-03-25T03:50:56.302Z","2.1.1":"2026-04-29T07:19:34.708Z","2.2.0":"2026-06-15T17:22:43.002Z","2.2.1":"2026-08-04T17:04:58.568Z","2.3.0":"2026-08-27T15:45:10.965Z","2.3.1":"2026-08-29T09:46:13.375Z","2.3.2":"2026-09-09T12:27:25.488Z","2.3.3":"2026-09-10T17:10:16.350Z"},"bugs":{"url":"https://github.com/loro-dev/loro-mirror/issues"},"author":{"name":"Loro Team"},"license":"MIT","homepage":"https://github.com/loro-dev/loro-mirror#readme","keywords":["react","react-hooks","context","selectors","provider","state-management","crdt","loro","loro-crdt","typescript","synchronization","immutable"],"repository":{"type":"git","url":"git+https://github.com/loro-dev/loro-mirror.git","directory":"packages/react"},"description":"React hooks and context for Loro Mirror: type-safe CRDT-backed state with selective subscriptions.","maintainers":[{"name":"rem2018","email":"remch183@outlook.com"}],"readme":"# Loro Mirror React\n\nReact integration for Loro Mirror - a state management library with Loro CRDT synchronization.\n\n## Installation\n\n```bash\nnpm install loro-mirror-react loro-mirror loro-crdt\n# or\nyarn add loro-mirror-react loro-mirror loro-crdt\n# or\npnpm add loro-mirror-react loro-mirror loro-crdt\n```\n\n## Usage\n\n### Basic Usage with Hooks\n\n```tsx\nimport React, { useMemo } from \"react\";\nimport { LoroDoc } from \"loro-crdt\";\nimport { schema } from \"loro-mirror\";\nimport { useLoroStore } from \"loro-mirror-react\";\n\n// Define your schema\nconst todoSchema = schema({\n    todos: schema.LoroList(\n        schema.LoroMap({\n            text: schema.String({ required: true }),\n            completed: schema.Boolean({ defaultValue: false }),\n        }),\n        // Use `$cid` (reuses Loro container id; explained below)\n        (item) => item.$cid,\n    ),\n    filter: schema.String({ defaultValue: \"all\" }),\n});\n\nfunction TodoApp() {\n    // Create a Loro document\n    const doc = useMemo(() => new LoroDoc(), []);\n\n    // Create a store\n    const { state, setState } = useLoroStore({\n        doc,\n        schema: todoSchema,\n        initialState: { todos: [], filter: \"all\" },\n    });\n\n    // Add a new todo (synchronous; the update is applied before return)\n    const addTodo = (text: string) => {\n        setState((s) => ({\n            ...s,\n            todos: [...s.todos, { text, completed: false }],\n        }));\n    };\n\n    // Rest of your component...\n}\n```\n\n### Using Context Provider\n\n```tsx\nimport React, { useMemo } from \"react\";\nimport { LoroDoc } from \"loro-crdt\";\nimport { schema } from \"loro-mirror\";\nimport { createLoroContext } from \"loro-mirror-react\";\n\n// Define your schema\nconst todoSchema = schema({\n    todos: schema.LoroList(\n        schema.LoroMap({\n            text: schema.String({ required: true }),\n            completed: schema.Boolean({ defaultValue: false }),\n        }),\n        (t) => t.$cid, // stable id from Loro container id\n    ),\n});\n\n// Create a context\nconst {\n    LoroProvider,\n    useLoroContext,\n    useLoroState,\n    useLoroSelector,\n    useLoroAction,\n} = createLoroContext(todoSchema);\n\n// Root component\nfunction App() {\n    const doc = useMemo(() => new LoroDoc(), []);\n\n    return (\n        <LoroProvider doc={doc} initialState={{ todos: [] }}>\n            <TodoList />\n            <AddTodoForm />\n        </LoroProvider>\n    );\n}\n\n// Todo list component\nfunction TodoList() {\n    // Subscribe only to the todos array\n    const todos = useLoroSelector((state) => state.todos);\n\n    return (\n        <ul>\n            {todos.map((todo) => (\n                <TodoItem\n                    key={todo.$cid /* stable key from Loro container id */}\n                    todo={todo}\n                />\n            ))}\n        </ul>\n    );\n}\n\n// Todo item component\nfunction TodoItem({ todo }) {\n    const toggleTodo = useLoroAction((state) => {\n        const todoIndex = state.todos.findIndex((t) => t.$cid === todo.$cid); // compare by `$cid`\n        if (todoIndex !== -1) {\n            state.todos[todoIndex].completed =\n                !state.todos[todoIndex].completed;\n        }\n    });\n\n    return (\n        <li>\n            <input\n                type=\"checkbox\"\n                checked={todo.completed}\n                onChange={toggleTodo}\n            />\n            <span>{todo.text}</span>\n        </li>\n    );\n}\n```\n\n## API Reference\n\n### `useLoroStore`\n\nCreates and manages a Loro Mirror store.\n\n```tsx\nconst { state, setState, finalizeEphemeralPatches, store } = useLoroStore({\n  doc,\n  schema,\n  initialState,\n  validateUpdates,\n  debug,\n});\n```\n\nNotes on updates:\n\n- `setState` from `useLoroStore` and the setter from `useLoroState` run synchronously; subsequent code can read the updated state immediately.\n- `useLoroCallback` and `useLoroAction` return synchronous functions that call `setState` under the hood.\n\n### `useLoroValue`\n\nSubscribes to a specific value from a Loro Mirror store.\n\n```tsx\nconst todos = useLoroValue(store, (state) => state.todos);\n```\n\n### `useLoroCallback`\n\nCreates a callback that updates a Loro Mirror store.\n\n```tsx\nconst addTodo = useLoroCallback(\n    store,\n    (state, text) => {\n        state.todos.push({ text, completed: false }); // `$cid` is injected from Loro container id\n    },\n    [\n        /* dependencies */\n    ],\n);\n\n// Usage\naddTodo(\"New todo\");\n```\n\n### `createLoroContext`\n\nCreates a context provider and hooks for a Loro Mirror store.\n\n```tsx\nconst {\n    LoroContext,\n    LoroProvider,\n    useLoroContext,\n    useLoroState,\n    useLoroSelector,\n    useLoroAction,\n} = createLoroContext(schema);\n```\n\n#### `LoroProvider`\n\nProvider component for the Loro Mirror context.\n\n```tsx\n<LoroProvider\n    doc={loroDoc}\n    initialState={initialState}\n    validateUpdates={true}\n    debug={false}\n>\n    {children}\n</LoroProvider>\n```\n\n#### `useLoroContext`\n\nHook to access the Loro Mirror store from context.\n\n```tsx\nconst store = useLoroContext();\n```\n\n#### `useLoroState`\n\nHook to access and update the full state.\n\n```tsx\nconst [state, setState] = useLoroState();\n```\n\n#### `useLoroSelector`\n\nHook to select a specific value from the state.\n\n```tsx\nconst todos = useLoroSelector((state) => state.todos);\n```\n\n#### `useLoroAction`\n\nHook to create an action that updates the state.\n\n```tsx\nconst addTodo = useLoroAction(\n  (state, text) => {\n    state.todos.push({ text, completed: false }); // `$cid` comes from Loro container id\n  },\n  [/* dependencies */]\n);\n\n// Usage\naddTodo('New todo');\n```\n\n### `$cid` and list keys/selectors\n\n- `$cid` is always available on `LoroMap` state and mirrors the underlying Loro container id.\n- Use `$cid` for React `key` and as the list `idSelector` for stable identity across edits and moves: `schema.LoroList(item, x => x.$cid)`.\n\n### Ephemeral Patches\n\nFor high-frequency temporary changes (dragging, resizing), pass `ephemeralStore` to `useLoroStore` or `LoroProvider`. This changes how `setState` works: eligible changes (primitive values on existing Map keys) are automatically routed to EphemeralStore instead of LoroDoc. No separate update function is needed.\n\n```tsx\nimport { EphemeralStore } from \"loro-crdt\";\n\nconst eph = new EphemeralStore();\n\nconst { state, setState, finalizeEphemeralPatches } =\n    useLoroStore({ doc, schema: mySchema, ephemeralStore: eph });\n\n// During drag — x is a primitive on an existing key → EphemeralStore\n// No LoroDoc history is created for intermediate positions.\nsetState(\n    (s) => { s.items[i].x = e.clientX; },\n    { finalizeTimeout: 1_000 }, // auto-commit after 1s of inactivity\n);\n\n// On mouseup — commit ephemeral values to LoroDoc\nfinalizeEphemeralPatches();\n```\n\nWithout `ephemeralStore`, the same `setState` call writes everything to LoroDoc as usual.\n\nWith `createLoroContext`, the provider accepts `ephemeralStore` and `useLoroFinalizeEphemeral()` returns a callback that commits pending ephemeral patches. See the [core package README](../core/README.md#ephemeral-patches) for routing rules.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}