{"_id":"@xhub-reels/sdk","_rev":"26-b02d19896f8391c8f7dfffba846699f9","name":"@xhub-reels/sdk","dist-tags":{"latest":"0.2.18"},"versions":{"0.1.7":{"name":"@xhub-reels/sdk","version":"0.1.7","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.7","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"d1c0d1a96f72f1b5aedcc38969d8222e544448f4","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.7.tgz","fileCount":6,"integrity":"sha512-NM690hgE8DFmFPyok+EuEiXbpKkzs4I7eivep1yvFIYHqiBWnZEDeLOxX2f0qetRCQ4waKAD57SbbkwQ4OC6xg==","signatures":[{"sig":"MEQCIDIuA7QsHZLFGLI3M7ei9WzgEeV/Hg1BXrxpIFWj3s3WAiAHvdjjA0yrOSn4WE87+d/qjYK58ihEyJjeh8hfqg5ddg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279438},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"d0833349b58cbb8e1e85803be5a8bde19aa0f96d","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.7_1775368007656_0.2013765196798083","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@xhub-reels/sdk","version":"0.1.8","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.8","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"0d58ea4bca4aae7b732aec0e619353220a9153fa","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.8.tgz","fileCount":6,"integrity":"sha512-qW/m8Yfy915ZbY5aQthyWY/VNH2eT1zX17NfxxqI7P1RqkLGOkCh/emiBWZVxXxHGnDUA3jAy7lVAS2xJDgsTA==","signatures":[{"sig":"MEQCIGTNGkn6ghX5LABywg8/c9fIEhnknnYH5ByR3MIs0aCcAiAswYIu8P1HDPShhlh5n0Bpx0Qd7j/gWuykU+QFzT9VqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279610},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"a9b2f3d1d91eb24becdd623201619ac55701f4df","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.8_1775373060156_0.6960862462156945","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@xhub-reels/sdk","version":"0.1.9","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.9","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"d7cb002bdef4e3845502de357e31afc75ace8168","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.9.tgz","fileCount":6,"integrity":"sha512-2G7SNhNqwFV14kTExtxZfDVBZiFhAgzYfygTGWpD0ShtkuDOsYJVbNIG//6JF2S91DD0dONdqbIE82q8FFH/Hg==","signatures":[{"sig":"MEYCIQDLUxKLUiROchZXsgjbw2GgfVZJHfktaXRDglSAUxyxFAIhAL1X7w9yw9bsbeiAQO35OUy/byw/aCifp2EiEw+ofeXH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":281659},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"a1e85297dd97aeb422cb203df218c9293cfb99f9","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.9_1775374203535_0.3144560885143095","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@xhub-reels/sdk","version":"0.1.10","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.10","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"4ab94bb19f58b7f511c78eb8b1044c39b03aae7e","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.10.tgz","fileCount":6,"integrity":"sha512-ABKvl7Mzvc0L7VmNOzOPeX/KMl3F3BA/6eZu+4JHasvvLHxFy0YBxxFp/FYs2aYFGFmAqpgLnsdjyIN6+xaSNA==","signatures":[{"sig":"MEUCIFerxtYdUCf+MdPpTVcMbDjTVCbgq/yJas71HSBYQ+snAiEA7dtZcy4kBb383tpkybjA3PzQYMKH7B5G7VrUCRgCoqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287822},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1cfde0904b4659014afe0d6f375d9f2a8f7a99ab","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.10_1775379961929_0.09031693517826889","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@xhub-reels/sdk","version":"0.1.11","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.11","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"6286c700eadcb8cbfd1002ff7966180e3dc1dc92","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.11.tgz","fileCount":6,"integrity":"sha512-3/g1w3j+4Outg8b5uOOof6KaRBXIrItOZ+QSOd6BVkd9mR6uTHT8ksM7B1Lr8W1aiVK/UUffdDFKMM0elWYLRg==","signatures":[{"sig":"MEYCIQCACYjmEUpvzmevJeKLF/yWpdRW4MZrZ7HGIhQ6qMA1iQIhAJd+urTPRFp9Nh4LTyfkYRM25EzQ6NqjajhTydne3YxS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":288886},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4eb9f245b4031eb027a9dfb65dadad6f7574f2aa","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.11_1775397695374_0.6361483556230687","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@xhub-reels/sdk","version":"0.1.12","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.12","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"3e431bdd9679cf96e5fc5e02a9d375a1aa723502","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.12.tgz","fileCount":6,"integrity":"sha512-7iZA1CCa8R4m+eyPINEzrTHgQ8UPyYS9LU+fPlczW/+pJFUhqf4DBqzdaZ4DUVjVolC/R1t0WIdB8y4PJEMouQ==","signatures":[{"sig":"MEQCICtHEZn6OhU3Yt5jGJjLFOuWC9LAdyp3KNS7zIOFqwEbAiBb/9Jt/wphsr2EPqzS9M/mZ3WQw6aX5//AQ2X04GToag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":290820},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"a15b6fcf1e74798af99c796e47929fc744efa4bc","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.12_1775400338164_0.5722254037543788","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@xhub-reels/sdk","version":"0.1.13","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.13","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"d41de2584812eb8d45f06ed021c2986d72fa6d6b","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.13.tgz","fileCount":6,"integrity":"sha512-K0JCcKYFGoutnEjLB3FQCLyPVR4RNRU0EU6yUUnrhNdISHGCyr5fQ27Ek4AJI2eBDivey/fdo8ToVy8gHRFCnw==","signatures":[{"sig":"MEQCIFHjVVK3UDMCTyUn2gHJQBqs2gqdRGKnwwtqK323x23fAiB6tQdwEXytM4apTtsS9XSDR488OIaGbJ9olWVCh/GMng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292142},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"d5b6226d5e05be0fea9ad3f510ad94809d7132ba","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.13_1775402778898_0.7281176307046904","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@xhub-reels/sdk","version":"0.1.14","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.14","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"a6726815c2ccfe6679ff3ba3d51cdcca544a8384","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.14.tgz","fileCount":6,"integrity":"sha512-dZjQ4LymbmT01WzWrlFramqnm5A2T4hn5DPUrk6iSMBi1bI7Ao2hHjhPPJFTBzU2KzFoPKzAfHBh4GhRbz4K+A==","signatures":[{"sig":"MEUCIQCIb0xdpG2kLD+iC+tJvyHd0P+j91MkPeQmcx3t53gZtQIgWubFGMg/qtVjPFhgidI/9rBYc/n+gRAM7z49MHtzuic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293388},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"b8405a60f83b9dd52b9aa72581c109e133f1aff2","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.14_1775404577961_0.6505185486835674","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@xhub-reels/sdk","version":"0.1.15","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.15","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"16db31b2cd8ce97187ca2dd5b1c5cc0a94ffdcb2","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.15.tgz","fileCount":6,"integrity":"sha512-xHvNK5jQsLMyLoVomQYNnbXyyzskrq/V0aegFmHKobxAzYVo7+du4viBZXPNv7gY1TJMLN2y49CoHwO9TioYZw==","signatures":[{"sig":"MEUCICtaSaIygLgaXbRKa1qA/e7ZlL93cG0aRe30+mxZ32KrAiEAkaVvoGwecauTpRQ9/9aVpPlJ39v/SjZAfmFsjE9dyAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":299994},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"9940d95999e518725e568cb92bf9635b8e340aaf","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.15_1775439710059_0.8919624165044424","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@xhub-reels/sdk","version":"0.1.17","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.17","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"5e5d192101051bb29d2ac217b1e8a33cb1ace758","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.17.tgz","fileCount":6,"integrity":"sha512-NUlq2vQo6/MnsdFHiTyv/ZZSX0CRhM6ldAm35xN3QKGftpqL4xnXLYAPtrdq4KMYkrFfMPI2rcsdxRQqYbS13A==","signatures":[{"sig":"MEUCIQCgFbArVHBpJMWsRz11oJ7+cMlB+xiUAmOexnlWIKfw3QIgGvacZqdR+dCJLorlAtyev5LmbZgdOfyRA9ARkEfgM/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303515},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"d466e156b6f24d9006100c8b9b39871001d4990c","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.17_1776310226558_0.4102720211164792","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@xhub-reels/sdk","version":"0.1.18","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.18","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"3b0cc8e3b0561bb0aca12b03645e568783c57616","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.18.tgz","fileCount":6,"integrity":"sha512-E7oWDS9+yTCi7tNypBGYZLGy8Ylp9NUJ2L85eUfnK8+aRhOQBXDv3n/tKVRx0t/ShMGz/6K1nNEa3dFgAVg1QQ==","signatures":[{"sig":"MEUCIDSffkVeBCXwFEXwrNGQiLkPHEAPpHCNtjUvqOUCrKsRAiEAudho86n0Ttv7y++LIRiPScVXPR7BdHxRTzrgkJRLeoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303855},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0aac1607520e4ade5948117c4a84fb9dc80fcdf2","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.18_1776313895828_0.685972129774477","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@xhub-reels/sdk","version":"0.1.19","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.19","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"9736bd67457ccfc4238accf60d5492429ff2252c","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.19.tgz","fileCount":6,"integrity":"sha512-NiUpsTPk0xYBvq0SIz7cgplZDphBTPEdrWHOslUYAWe+3T7mhNTbMrTIBZVtJeocG7oTOXfjbkOcYegtOL9pig==","signatures":[{"sig":"MEUCIQDgCHfbS5yHXnhEqOzo9CxPTtByC1aYjfV5akDDDFltPQIgNWZeIX8T6au55I+O0WZsgxDvxKsyCNWZ73FYEftKdcs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308345},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"60731de1f054508e4b34d5842ff6f1368a7e7866","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.19_1776323038556_0.8503151043389503","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@xhub-reels/sdk","version":"0.1.20","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.20","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"347a6432902e70c16108cdd99b56dfbc3484e2a5","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.20.tgz","fileCount":6,"integrity":"sha512-AMDq8WzfDzrZHACEK/wWmBefM9q30Ikv4SHjmRVphyMfuzWOJlnlvRPuISqZivuvDYHiKiHpNXzCodnruWh9eQ==","signatures":[{"sig":"MEQCIBeMTnUVFDE6GVo90KGE7ELeHuFYaO96n9rQXaaQ3gyPAiAzioHBjLNnBNGNsKYHsq8ukt1+0iBdK0tKsln7rftM8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308907},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"60731de1f054508e4b34d5842ff6f1368a7e7866","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.20_1776326885583_0.9728725225591457","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@xhub-reels/sdk","version":"0.1.21","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.21","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"7e60f7ff411c3b91674c138b8087a5b13f5ada68","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.21.tgz","fileCount":6,"integrity":"sha512-zsOYuRKhZjJKJ4IO2nLVr5ZHYJEKJYifchyKqy2N1O7YOVe9qGJnE/b9FmpLRAG2+RfyD3aqRDJEbndTp0b25A==","signatures":[{"sig":"MEYCIQCGkB+NozId4tZyAKq6FyHXEjEgSVvSh4XNjop9UYTAzAIhAKfmUQxOQ+OaENUQC4LMriQ5YRkYI5d0doJKy7/41kYr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306017},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"60731de1f054508e4b34d5842ff6f1368a7e7866","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.21_1776333250838_0.9447848475160268","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@xhub-reels/sdk","version":"0.1.22","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.1.22","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"ed684a2ce850e70ed57b0170df55e6d93aaa709d","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.1.22.tgz","fileCount":6,"integrity":"sha512-kPOW8baPPoUBr841zkbWo0HZI6uGzZ5vTznuRSPUrOGxBxpgSwn9wicSBs1hM7vod/0V48ypLE8JgSMVbkUKxQ==","signatures":[{"sig":"MEUCIDvrULgnNFFfoLi3o2nEgCOEqnuecE2XHhIH8FpCeMmQAiEA2lhTF9mtu3RBpX8y/FCzpniXFvrKxHGIwI6XiRYBL0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305771},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0a331b3b69b651799d048120ca8c14b380b417e6","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.22_1776411132294_0.798427435762846","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@xhub-reels/sdk","version":"0.2.1","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.1","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"731c5c10234fa6456c3fdde3ed74a67e7f539e9b","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.1.tgz","fileCount":6,"integrity":"sha512-J2l/Yh/iK3/U1DU5upPmumc6eNRqAnz30E3qLSgNsYg1rbTcAIo7UubSCJHjQnt+BIMhyfVdYMPMFSZgoJULkA==","signatures":[{"sig":"MEUCIQCaoNcoAT5K31ynbjdjQQq0KcW4bjlZ62dE4+vrSL/exQIgQfr31ZLbk/D6XmmrpS72sNq22dhvvNGOf1nCl6D8mbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316067},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0a331b3b69b651799d048120ca8c14b380b417e6","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.1_1778317327571_0.5929521065882095","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@xhub-reels/sdk","version":"0.2.5","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.5","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"bfa3cdc032660e0215a7369693a1521c749aff30","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.5.tgz","fileCount":6,"integrity":"sha512-bRdA+sWzYJzGiEPJZtbu6EABtr/9vFYKc6W9wOfelS+VEbwky9rYq0xfyHJLeAMEZmO27BoPsHnbj/4XKHzYCA==","signatures":[{"sig":"MEUCIQDRG2zLkZZDCzFiwbn9T2EZ527zkeRIyTE1aDMdjawghAIgDN2Wt6U2SCqj6goPc2xDHQL4R/vmvMVC5kjZa8sr2Cg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":307662},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0a331b3b69b651799d048120ca8c14b380b417e6","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.5_1779876723590_0.2816055477381938","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@xhub-reels/sdk","version":"0.2.6","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.6","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"5274b269e0d975e99cb577de67c8c0bff5139519","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.6.tgz","fileCount":6,"integrity":"sha512-21BxDpxRPkya2hm52vHtArrwYAKviloLrPm7k80xA2KJd2Z2hHdL2++bTGuGU54DpqajrZBV/IB7+XLx1n9UPQ==","signatures":[{"sig":"MEUCICu1h6EsyEfgyrUiq52N6KNAMepqkSMp+P1K9Cyy+d5tAiEAg5aQXI/3kXp8D7LBkG2pRjgnqflr/5xbjiN5JSNB/ro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318271},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0a331b3b69b651799d048120ca8c14b380b417e6","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.6_1779877338856_0.11901478256173603","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@xhub-reels/sdk","version":"0.2.11","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.11","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"0c0e97e9487204db87c9642d7b22804477683a96","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.11.tgz","fileCount":6,"integrity":"sha512-ixgODRs/RCLngTusHnsEOHOgOoa24gD/Asww93VkIvhq1bcLfsJ8ZPzp6AuD8H/JjSTZLCzQWICcOojcBIBJlw==","signatures":[{"sig":"MEUCIQDMUQhWr3AeVZS0wPMo31gq9WSXFUpj7xUc+kj6q1A/HQIgZtFpVlPEEyUps5CZZEufb0Q6ENKbIIjeASWQluGdQNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318552},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2ea12e40d43039877023313953452ceb404bfc87","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.6.2","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.11_1779990088463_0.7543636904691435","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@xhub-reels/sdk","version":"0.2.12","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.12","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"f9667bbed00c2b2e9caf64cfbda99d99ad5d9978","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.12.tgz","fileCount":6,"integrity":"sha512-z1H/4qj7GbxOumL9D9WNHmZH51u4h2Uci7eX3i3248YVUMTGOcpgfJlnr56ZMZeT/q3biiol8nSiuh1hvXbKJg==","signatures":[{"sig":"MEQCIHieOUsN3EZMueGQ1RRfR13uvGfrkccXPKFf6qHjlvqHAiAW51kV8xWaCd6gv4IiAM9j5TtTG95rOhJ8rw2zr5cw9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":320536},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2ea12e40d43039877023313953452ceb404bfc87","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.6.2","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.12_1779993949558_0.37212336587692585","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@xhub-reels/sdk","version":"0.2.13","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.13","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"085fade15f6c2a9f18c6c8179cae36b3d54bd182","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.13.tgz","fileCount":6,"integrity":"sha512-sZ2w9wfvWSzUln1aPd0R0rVvkE74iV42XwYpg0bjv0Mvjpk7ijYRFA2ioj19hgFU8BRDfYjzFpoq7LfurGB+qg==","signatures":[{"sig":"MEQCIF09hmdigmk7isgPPbXovegUPneXhjflqtkgTCf6DPUVAiB9lq/g6BqwbHlERikHNUJ+5tb1rmupbqhAZWhFKTyYog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":389250},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"161af1de50a74be31c65fcd170edc347d1fbb0c6","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.13_1780026855887_0.4487730297515593","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"@xhub-reels/sdk","version":"0.2.14","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.14","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"e4944bb291eada835d4f357e72f4a822a74993ae","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.14.tgz","fileCount":6,"integrity":"sha512-Nq0ojQV3wN3cSFRZLK0wm6JhWBQRZalOQZYAjPmXmoVHv9fD/86HPvbcTP6e7Vh3vKHjjrIr8yA20TgF03Yn5Q==","signatures":[{"sig":"MEQCIAt6jc5G2m/SYioTwNzOQW8RKSXFeAQzOnEzKCqqj9MsAiAhsDfCHULrpIXnnYqDgHQL4J+LS27MTMD1fJZ0QKTZPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":389402},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"161af1de50a74be31c65fcd170edc347d1fbb0c6","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.14_1780036695521_0.2880302575686573","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"@xhub-reels/sdk","version":"0.2.15","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.15","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"0cce5ddc15d3f67b52a81c350a516e5f588b2d28","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.15.tgz","fileCount":6,"integrity":"sha512-MaxZNqYXuOsH8w2LXX6pTTLUcyPLb8INOR0w7SFA3w+JfyYoSP9SaBSTLqErl3vuwlvI4UCBOmNOXdc/B2HfLQ==","signatures":[{"sig":"MEUCIG37fClcdMORGWlhunj3oi2cNF1w5nKSvvSAWxzRv+nrAiEAnL8AlEEDIiT0OeqbYJUno34PPKq3mX+ywYeJ+u0jz3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":390344},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"161af1de50a74be31c65fcd170edc347d1fbb0c6","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.15_1780048240874_0.33660074990255207","host":"s3://npm-registry-packages-npm-production"}},"0.2.16":{"name":"@xhub-reels/sdk","version":"0.2.16","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.16","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"1646e4938076aa7a3d16ef5748ab5e3d86cefee6","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.16.tgz","fileCount":6,"integrity":"sha512-taVj7w2tuZtAXgN7Q9OBLKr80p9IGdV7LczEylk/zpah6HMkJhw6CHNhTwf212MJTjSIUi8cm4lWRBOfFdyUOQ==","signatures":[{"sig":"MEUCIQCBBwb83Xqod2lnlDbJ7Q4Q/JEryI0c3A4839GzRAFnngIgaNLX7xXL7pJ+3RULUAp5ohB+8cl2jZ4tySRW7b9+ydA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":390256},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"161af1de50a74be31c65fcd170edc347d1fbb0c6","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.11.0","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.16_1780049523431_0.5450877006690602","host":"s3://npm-registry-packages-npm-production"}},"0.2.17":{"name":"@xhub-reels/sdk","version":"0.2.17","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"license":"MIT","_id":"@xhub-reels/sdk@0.2.17","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"dist":{"shasum":"ad60f01bd90fb5f3290324f771bac4c1c1f839ae","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.17.tgz","fileCount":6,"integrity":"sha512-bGjl5/niC/x/ZiK89KpWitkqE2Jr5LCczPEX6UwxfsOzlL+11EnsPLCRc4SJCbUSlEssA8zuHe16fqvmNA4WTA==","signatures":[{"sig":"MEUCIQCBjzctEQXblz6VIVVr6pmHmJLlTl92bMe1hxxjUDy1JAIgLv6iOA/eGumel8PnwXjFrFGPfVQG+YVlJVolPgTLYvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":390180},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"81cc417bd76707d381566289c7c8a93b00025cfa","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist coverage","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"_npmVersion":"11.6.2","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","jsdom":"^29.0.1","react":"^19.0.0","vitest":"^2.1.0","react-dom":"^19.0.0","typescript":"^5.7.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.6.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.17_1780064780067_0.8693587382908103","host":"s3://npm-registry-packages-npm-production"}},"0.2.18":{"name":"@xhub-reels/sdk","version":"0.2.18","description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","license":"MIT","type":"module","sideEffects":false,"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","clean":"rm -rf dist coverage"},"dependencies":{"hls.js":"^1.5.0","zustand":"^5.0.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"devDependencies":{"@testing-library/jest-dom":"^6.6.0","@testing-library/react":"^16.0.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@vitest/coverage-v8":"^2.1.0","jsdom":"^29.0.1","react":"^19.0.0","react-dom":"^19.0.0","tsup":"^8.3.0","typescript":"^5.7.0","vitest":"^2.1.0"},"gitHead":"81cc417bd76707d381566289c7c8a93b00025cfa","_id":"@xhub-reels/sdk@0.2.18","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-FGrt67aBh6FJjShBBic4W1//a5sM0WiRH/G9w8HaK1K6cyHx0PMTSJ/exnvt22bnoh06xfig9J18/92icGp+Og==","shasum":"de2cbc5a0f45bf22f441aaa4be49cfab382cc20c","tarball":"https://registry.npmjs.org/@xhub-reels/sdk/-/sdk-0.2.18.tgz","fileCount":6,"unpackedSize":400123,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDCR0a9tWfCss54lD8Bzi/sqJlitCAlUxU6Vz556yLHoQIhAPSJFUlhUNNOJ155qUxR7f1O9DJpPaC/fXpFQ9RQzh6Q"}]},"_npmUser":{"name":"louis1910","email":"vtduy1910@gmail.com"},"directories":{},"maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.2.18_1780075818287_0.31472291653455886"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-05T05:46:47.518Z","modified":"2026-05-29T17:30:18.551Z","0.1.7":"2026-04-05T05:46:47.799Z","0.1.8":"2026-04-05T07:11:00.307Z","0.1.9":"2026-04-05T07:30:03.689Z","0.1.10":"2026-04-05T09:06:02.093Z","0.1.11":"2026-04-05T14:01:35.533Z","0.1.12":"2026-04-05T14:45:38.326Z","0.1.13":"2026-04-05T15:26:19.036Z","0.1.14":"2026-04-05T15:56:18.229Z","0.1.15":"2026-04-06T01:41:50.193Z","0.1.17":"2026-04-16T03:30:26.702Z","0.1.18":"2026-04-16T04:31:35.999Z","0.1.19":"2026-04-16T07:03:58.689Z","0.1.20":"2026-04-16T08:08:05.743Z","0.1.21":"2026-04-16T09:54:11.009Z","0.1.22":"2026-04-17T07:32:12.447Z","0.2.1":"2026-05-09T09:02:07.753Z","0.2.5":"2026-05-27T10:12:03.738Z","0.2.6":"2026-05-27T10:22:19.028Z","0.2.11":"2026-05-28T17:41:28.603Z","0.2.12":"2026-05-28T18:45:49.732Z","0.2.13":"2026-05-29T03:54:16.026Z","0.2.14":"2026-05-29T06:38:15.655Z","0.2.15":"2026-05-29T09:50:41.029Z","0.2.16":"2026-05-29T10:12:03.578Z","0.2.17":"2026-05-29T14:26:20.239Z","0.2.18":"2026-05-29T17:30:18.421Z"},"license":"MIT","keywords":["short-video","reels","tiktok","react","sdk","webview","flutter","feed","video-player"],"description":"High-performance Short Video / Reels SDK for React — optimized for Flutter WebView","maintainers":[{"name":"louis1910","email":"vtduy1910@gmail.com"}],"readme":"# xhub-reels-sdk\n\nHigh-performance Short Video / Reels SDK for React — optimized for Flutter WebView.\n\n[![npm version](https://img.shields.io/npm/v/xhub-reels-sdk)](https://www.npmjs.com/package/xhub-reels-sdk)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/xhub-reels-sdk)](https://bundlephobia.com/package/xhub-reels-sdk)\n[![license](https://img.shields.io/npm/l/xhub-reels-sdk)](LICENSE)\n\n## Why?\n\nBuilt as a leaner, faster alternative focused on solving real-world WebView performance issues:\n\n| Problem | Solution |\n|---|---|\n| React state updates during drag → jank | Pointer Events + direct DOM, zero React during drag |\n| `querySelectorAll` per animation frame | MutationObserver slot cache, O(1) lookup |\n| `setTimeout` polling for sync | Single `store.subscribe` |\n| CSS transitions interrupted by React renders | Web Animations API (imperative, cancellable) |\n| Static class-level global cache | Instance-scoped prefetch cache |\n| 1153-line Feed component | Split into focused, testable units |\n\n## Installation\n\n```bash\nnpm install xhub-reels-sdk\n```\n\n**Peer dependencies:**\n```bash\nnpm install react react-dom  # >=18.0.0\n```\n\n## Quick Start\n\n```tsx\nimport {\n  ReelsProvider,\n  MockDataSource,\n  MockInteraction,\n} from 'xhub-reels-sdk';\nimport { MyFeed } from './MyFeed';\n\nexport function App() {\n  return (\n    <ReelsProvider\n      adapters={{\n        dataSource: new MockDataSource(),\n        interaction: new MockInteraction(),\n      }}\n    >\n      <MyFeed />\n    </ReelsProvider>\n  );\n}\n```\n\n## With Your Own Data Source\n\n```typescript\nimport type { IDataSource, FeedPage } from 'xhub-reels-sdk';\n\nclass MyAPIDataSource implements IDataSource {\n  async fetchFeed(cursor?: string | null): Promise<FeedPage> {\n    const res = await fetch(`/api/feed?cursor=${cursor ?? ''}`);\n    const data = await res.json();\n    return {\n      items: data.videos,\n      nextCursor: data.nextCursor,\n      hasMore: data.hasMore,\n    };\n  }\n}\n```\n\n## Hooks\n\n```tsx\nimport { useFeed, usePlayer, useResource } from 'xhub-reels-sdk';\n\nfunction MyFeed() {\n  const { items, loading, loadInitial, loadMore } = useFeed();\n  const { focusedIndex, setFocusedIndex, shouldRenderVideo } = useResource();\n  const { isPlaying, togglePlay, handlers } = usePlayer();\n\n  // ...\n}\n```\n\n## Thumbnail grid → Modal\n\n`<ReelsFeedThumbnail>` is a grid component for the pre-player browsing UX (e.g. a\ncommunity feed that opens the player on tap). It must be mounted inside\n`<ReelsProvider>` and reads items from the same shared feed. The host provides\ncard visuals via `renderThumbnail`.\n\n### SDK-owned modal (recommended)\n\nPair `<ReelsFeedThumbnail openOnClick>` with `<ReelsModal>` to let the SDK own the\nopen→play lifecycle end to end. This eliminates the \"poster stuck for ~3s\" stall:\non tap, the SDK **mounts the feed offscreen-but-painted, prewarms the focused\nvideo and its neighbors synchronously, then slides the panel in** — so the first\nframe is already decoded by the time the animation finishes.\n\n```tsx\nimport { ReelsProvider, ReelsFeedThumbnail, ReelsModal } from 'xhub-reels-sdk';\n\nfunction CommunityPage() {\n  return (\n    <ReelsProvider adapters={{ dataSource, interaction }}>\n      <ReelsFeedThumbnail\n        openOnClick\n        renderThumbnail={(item) => (\n          <article className=\"aspect-[3/2] rounded-lg overflow-hidden\">\n            <img src={item.poster} alt=\"\" />\n            <p>@{item.author.name}</p>\n          </article>\n        )}\n      />\n      <ReelsModal feedProps={{ renderOverlay, renderActions, initialMuted: false }} />\n    </ReelsProvider>\n  );\n}\n```\n\n`openOnClick` calls `navigation.open(index)` on tap; `<ReelsModal>` subscribes to\nthe same navigation store and drives the rest. Because `play()` now starts inside\nthe tap's transient-activation window, **`initialMuted={false}` unmuted autoplay\nis far more reliable** on mobile WebViews.\n\n### Headless callback (back-compat)\n\nThe original headless approach still works — drive your own drawer/modal via\n`onThumbnailClick`:\n\n```tsx\nfunction CommunityPage() {\n  const [drawerOpen, setDrawerOpen] = useState(false);\n\n  return (\n    <ReelsProvider adapters={{ dataSource, interaction }}>\n      <ReelsFeedThumbnail\n        renderThumbnail={(item) => (\n          <article className=\"aspect-[3/2] rounded-lg overflow-hidden\">\n            <img src={item.poster} alt=\"\" />\n          </article>\n        )}\n        onThumbnailClick={(id) => {\n          setDrawerOpen(true);\n          window.history.replaceState(null, '', `#reel_uuid=${id}`);\n        }}\n      />\n      {drawerOpen && <YourDrawer onClose={() => setDrawerOpen(false)} />}\n    </ReelsProvider>\n  );\n}\n```\n\nBy default, clicking a card calls `setFocusedIndexImmediate(index)` on the\n`ResourceGovernor` so the player opens instantly without a scroll-to-index. To\ndisable this glue (e.g. if the host manages focus separately), pass\n`setFocusOnClick={false}`.\n\n### `<ReelsFeedThumbnail>` props\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `renderThumbnail` | `(item, index) => ReactNode` | required | Card visual for a single item |\n| `openOnClick` | `boolean` | `false` | Open the SDK-owned `<ReelsModal>` via `navigation.open(index)` on tap |\n| `prewarmOnClick` | `boolean` | `true` | Fire HLS metadata prefetch on tap (mobile-friendly; runs even without hover) |\n| `onThumbnailClick` | `(id, item, index) => void` | — | Click handler (fires alongside `open` for back-compat) |\n| `setFocusOnClick` | `boolean` | `true` | Pre-focus the slot before `open`/`onThumbnailClick` fires |\n| `prefetchOnHover` | `boolean` | `false` | Opt-in HLS metadata prefetch on `pointerenter` |\n| `renderLoading` | `() => ReactNode` | — | Shown while loading with no items |\n| `renderEmpty` | `() => ReactNode` | — | Shown when feed is empty |\n| `renderError` | `({ message, retry }) => ReactNode` | — | Shown on error with no items |\n| `className` | `string` | `'grid grid-cols-2 gap-3'` | Outer wrapper className |\n| `wrap` | `boolean` | `true` | Set `false` to render without an outer `<div>` |\n| `getKey` | `(item, index) => string` | `item.id` | Key override for duplicate lists |\n\n### `<ReelsModal>` props\n\nThe modal is a **customizable shell**: the SDK owns timing and prewarm, while the\nhost can override the animation and chrome. Omit any prop to fall back to a\nsensible default.\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `feedProps` | `ReelsFeedProps` | — | Render props forwarded to the inner `<ReelsFeed>` (`renderOverlay`, `renderActions`, `initialMuted`, …) |\n| `animationConfig` | `{ duration?, easing?, direction? }` | `{ 300, cubic-bezier(0.22, 1, 0.36, 1), 'up' }` | Slide-in tuning; `direction` is `'up' \\| 'down' \\| 'fade'` |\n| `renderBackdrop` | `(state) => ReactNode` | dimmed overlay | Custom backdrop; `state` is `{ phase, openIndex, close }` |\n| `renderCloseButton` | `(state) => ReactNode` | default ✕ button | Custom close affordance |\n| `onOpen` | `(index) => void` | — | Fired when a modal session opens |\n| `onClose` | `() => void` | — | Fired when the modal fully closes |\n| `closeOnBackdropClick` | `boolean` | `true` | Close when the backdrop is clicked |\n| `closeOnEscape` | `boolean` | `true` | Close on the `Escape` key |\n| `lockBodyScroll` | `boolean` | `true` | Lock `<body>` scroll while open |\n| `prewarmForward` | `number` | `2` | How many forward neighbors to prewarm on open |\n| `className` | `string` | — | Class on the sliding panel |\n| `zIndex` | `number` | `1000` | Stacking context for the portal |\n| `portalTarget` | `HTMLElement \\| null` | `document.body` | Portal mount node |\n\n`<ReelsModal>` honors `prefers-reduced-motion` (skips the slide), traps focus,\nrestores focus to the trigger on close, and renders into a portal.\n\n### Hover prefetch\n\nFor hover-capable devices, opt into manifest prefetch so opening the player\nfeels instant:\n\n```tsx\n<ReelsFeedThumbnail prefetchOnHover renderThumbnail={...} />\n```\n\nThe SDK uses `adapters.videoLoader?.preloadMetadata?.(url)` and dedupes per item\nso a card only triggers one prefetch regardless of how many times it's hovered.\nOn touch devices there's no hover, so prefer `prewarmOnClick` (on by default).\n\n### Migrating from the headless callback\n\nIf you currently open your own drawer from `onThumbnailClick`:\n\n1. Add `openOnClick` to `<ReelsFeedThumbnail>` and mount `<ReelsModal>` as a\n   sibling inside `<ReelsProvider>`.\n2. Move your drawer's render props (`renderOverlay`, `renderActions`,\n   `initialMuted`, …) onto `<ReelsModal feedProps={{ … }}>`.\n3. Re-create your drawer's look with `animationConfig`, `renderBackdrop`, and\n   `renderCloseButton` — or drop them to use the defaults.\n4. Remove the host `drawerOpen` state and your `<ReelsDrawer>`/modal wrapper.\n\n`onThumbnailClick` still fires alongside `open`, so you can migrate\nincrementally (e.g. keep your URL-hash side effect) before deleting host state.\n\n## Gesture Engine\n\n```tsx\nimport { usePointerGesture, useSnapAnimation } from 'xhub-reels-sdk';\n\nfunction SwipeableFeed() {\n  const { animateSnap, animateBounceBack } = useSnapAnimation();\n\n  const { bind } = usePointerGesture({\n    onDragOffset: (offset) => {\n      // Direct DOM — zero React state during drag\n      containerRef.current!.style.transform = `translateY(${offset}px)`;\n    },\n    onSnap: (direction) => {\n      const next = direction === 'forward' ? index + 1 : index - 1;\n      goToIndex(next);\n      animateSnap(targets);\n    },\n    onBounceBack: () => animateBounceBack(targets),\n  });\n\n  return <div {...bind} style={{ touchAction: 'none' }}>...</div>;\n}\n```\n\n## Architecture\n\n```\nxhub-reels-sdk\n├── types/          ← Pure TypeScript interfaces (no deps)\n├── domain/         ← Business logic (zustand/vanilla, no React)\n│   ├── PlayerEngine      — State machine + Circuit Breaker\n│   ├── FeedManager       — Pagination, LRU, SWR, dedup\n│   ├── OptimisticManager — Debounced like/follow + rollback\n│   └── ResourceGovernor  — Max 3 video DOM nodes\n├── gesture/        ← Pointer Events + Web Animations API\n│   ├── usePointerGesture  — Zero React during drag\n│   └── useSnapAnimation   — Cancellable snap animation\n├── components/     ← React components\n│   └── ReelsProvider     — Context + DI container\n├── hooks/          ← useSyncExternalStore-based hooks\n│   ├── useFeed\n│   ├── usePlayer\n│   └── useResource\n└── adapters/mock/  ← Development mocks\n```\n\n## Performance Targets\n\n| Metric | Target |\n|---|---|\n| Bundle size | < 35KB gzip |\n| First video load | < 1s on WiFi |\n| Scroll FPS | 60fps |\n| Max video DOM nodes | 3 |\n| React renders per swipe | 1 (on snap only) |\n\n## Bundle Size Limits\n\n| Package | Limit |\n|---|---|\n| `xhub-reels-sdk` | 35KB gzip |\n\n## Development\n\n```bash\n# Install\nnpm install\n\n# Build package\nnpm run build\n\n# Run demo app\nnpm run dev\n\n# Tests\nnpm run test\n\n# Type check\nnpm run typecheck\n\n# Lint + format\nnpm run lint:fix\n```\n\n## Release\n\n```bash\n# Bump version\nnpm version patch  # or minor / major\n\n# Tag and push (triggers GitHub Actions publish)\ngit tag v0.1.1 && git push --tags\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}