{"_id":"@thangdevalone/meeting-grid-layout-core","_rev":"14-2d6a8ed4557bab0f6b9581a36105eb4e","name":"@thangdevalone/meeting-grid-layout-core","dist-tags":{"latest":"1.9.0"},"versions":{"1.4.1":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.4.1","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.4.1","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"78c079e30be208172ae0e9a1110ca0a16ef4b529","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.4.1.tgz","fileCount":8,"integrity":"sha512-WO9RD9rLaO/PKFtmQGxcv+H9g5WhvLjX2JckDyAQTm/SfVo42GYDWzW7T0rybA2czrck0QFpWbK5EGggBxrYSg==","signatures":[{"sig":"MEQCICdqtN9FV2qRQSimCx7X0HRNNLgyNACGnKVqP01kt75vAiA82K2mPtGpsgyNQPc9qGQKntja8HHEILN3ZyU2Y0kqsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106750},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.4.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/b91c8d0097ec0b3b5794a289d4671396/thangdevalone-meeting-grid-layout-core-1.4.1.tgz","_integrity":"sha512-WO9RD9rLaO/PKFtmQGxcv+H9g5WhvLjX2JckDyAQTm/SfVo42GYDWzW7T0rybA2czrck0QFpWbK5EGggBxrYSg==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.4.1_1770718891159_0.0981053258137452","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.0","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.0","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"22687935f33ef7e826259dd698b86c63618f9f66","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.0.tgz","fileCount":8,"integrity":"sha512-Sfuc+tgY+HagaZEohrmHLipPH4ZU8xQm1+x/eNAxm3o0KaVt6rccg+3n8CD3v7FwF5W6DMtFd6nU2wo9HBTIbw==","signatures":[{"sig":"MEYCIQD3DElIskv15rrOGwzqy1AB8JNGh24+VO3q2djyLlSL5AIhAOANpFLAc5tMSVDPmYZvRSqwrW0Q0taeNR7+0wFR+DQd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107778},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/bdd454d492bcd93d3bd87b4b55cc77ce/thangdevalone-meeting-grid-layout-core-1.5.0.tgz","_integrity":"sha512-Sfuc+tgY+HagaZEohrmHLipPH4ZU8xQm1+x/eNAxm3o0KaVt6rccg+3n8CD3v7FwF5W6DMtFd6nU2wo9HBTIbw==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.0_1771992374557_0.6013876605767465","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.1","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.1","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"910fea5f3a8752a837d9ca51dc325b87f7624d0a","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.1.tgz","fileCount":8,"integrity":"sha512-+tFPmkdPlb8+16M/+myPDbZTTVGM4aP8LnwY+M5yCiOskT9fKbk6H0CxQgCsawUFBchX4jzyjYNLGZxzDf2a0w==","signatures":[{"sig":"MEUCIANT7N78npIxdeFZ4v5Qa7Vv6WHxcBuUnkVJh0cpduQRAiEA8MMJoUQ9jIsJmwo8KdY75HXyT6gvAMcbC9jHkkrkels=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107778},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/2702381cd282284ea369c6acdb89bb46/thangdevalone-meeting-grid-layout-core-1.5.1.tgz","_integrity":"sha512-+tFPmkdPlb8+16M/+myPDbZTTVGM4aP8LnwY+M5yCiOskT9fKbk6H0CxQgCsawUFBchX4jzyjYNLGZxzDf2a0w==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.1_1771993662276_0.005385525435636085","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.2","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.2","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"ae9d4997538df813e8883c64eeb40028d5ba6fab","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.2.tgz","fileCount":8,"integrity":"sha512-4V1rd/HTyZKDuAbbW/T03JdxEiWuxSfyLAmE1x8k15qF5rQIVehvGcz+ZWSX7paGTtlBbI9kFDw2QyCDJPwrjQ==","signatures":[{"sig":"MEUCIGvZbG/A0cGlMznfi3sJ1rvpdO2jbzI1FSb9K74jIWPmAiEAkgIoc5hHqclRZBPart8w8nl+T/FcKOjrk5U1h9839Qw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107778},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/65b7cb2a771f1e7beefcb4ee7284572d/thangdevalone-meeting-grid-layout-core-1.5.2.tgz","_integrity":"sha512-4V1rd/HTyZKDuAbbW/T03JdxEiWuxSfyLAmE1x8k15qF5rQIVehvGcz+ZWSX7paGTtlBbI9kFDw2QyCDJPwrjQ==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.2_1771994285866_0.3199808616823614","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.3","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.3","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"f0a0f982c936dbc7a477c755d75feef01a7e7acf","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.3.tgz","fileCount":8,"integrity":"sha512-KQQWSaUAwUzYQvUMuK6LR0piVMw0GSib6aww1/vs7SYXJRM8oH2ae02uHL6FsbRtDrIkYQr+3qrXuYtecFl+Aw==","signatures":[{"sig":"MEUCIGuu922N3qA6DIuQgBBP8QxZ3kcOCEI4oYi45LM0mD6EAiEA4hWUwlCu6FNeHU5gzc0I/zkTT5ZAV42eOF4u6tZmKGM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115853},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/bc0d4b833adb6a88933f7ffcab7b46e0/thangdevalone-meeting-grid-layout-core-1.5.3.tgz","_integrity":"sha512-KQQWSaUAwUzYQvUMuK6LR0piVMw0GSib6aww1/vs7SYXJRM8oH2ae02uHL6FsbRtDrIkYQr+3qrXuYtecFl+Aw==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.3_1772080283692_0.7079666553306214","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.4","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.4","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"54e81b5246127b6e68e19a0259517fe88ac380f7","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.4.tgz","fileCount":8,"integrity":"sha512-OUpLGmdfzmOSj7NwD0edoPNQiMwKpFKI3ZEkYKQHr7lojsppGJ2Yz3S7sFRuvNZI9NLlTa9xx3H2+ruDNeL+Ag==","signatures":[{"sig":"MEYCIQCXt0ODM/NITVKrQ6Jlc8TSORMsLq/HbzHYlc0ogYin1AIhAP4Bzlsp+PWA0KbBNNqVr6Qx4YOY7aBsJTwoPq01gTcc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115861},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/0e61af296762d9a5e994dc1afa2d9b6b/thangdevalone-meeting-grid-layout-core-1.5.4.tgz","_integrity":"sha512-OUpLGmdfzmOSj7NwD0edoPNQiMwKpFKI3ZEkYKQHr7lojsppGJ2Yz3S7sFRuvNZI9NLlTa9xx3H2+ruDNeL+Ag==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.4_1772080763433_0.40427686282254993","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.5","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.5","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"c1531843edfd399be1c3128857da43cabcdca6f3","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.5.tgz","fileCount":8,"integrity":"sha512-4XUOMX7GkGt9eT0ROtMM1oV2YuLOY15Tpvhwm6EfpXMZ/ZF1YvWrNskN5NrjzkaE2PFjq/WPULwPJJPEs81oYw==","signatures":[{"sig":"MEUCIQCBgIFU/MbDus5DSKw3Bx22KepUwyCvi7UmNOoiYpwjjQIgYng8vDd4to/GrZZue29fB+Wb+VboEWOp56Uip7FaK1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121367},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/b3d0cb361bdbf49739e5facf1a64cbd7/thangdevalone-meeting-grid-layout-core-1.5.5.tgz","_integrity":"sha512-4XUOMX7GkGt9eT0ROtMM1oV2YuLOY15Tpvhwm6EfpXMZ/ZF1YvWrNskN5NrjzkaE2PFjq/WPULwPJJPEs81oYw==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.5_1772524416689_0.8888517167853629","host":"s3://npm-registry-packages-npm-production"}},"1.5.6":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.6","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.6","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"fb1b1c95f190cada4450bb227a55bb59d3719096","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.6.tgz","fileCount":8,"integrity":"sha512-BlOAC3Oobh9T1KTs/+www92FLrSB8GjuosbmJxg7Xzncamcai8UIs75Bmyg8dbuahxMzNq2ighPKEUZ//w1eUg==","signatures":[{"sig":"MEUCICtW9F0G4mWhi16RlvURfTgOKWkrpYJCdIf0+BpWWUAwAiEAxMKhtAmhrMalJ+a9mqF+LQIBR+RJ9nkCVbZNqldWUfg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121367},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/1218d7f3f022b668ca8007f4eb44df17/thangdevalone-meeting-grid-layout-core-1.5.6.tgz","_integrity":"sha512-BlOAC3Oobh9T1KTs/+www92FLrSB8GjuosbmJxg7Xzncamcai8UIs75Bmyg8dbuahxMzNq2ighPKEUZ//w1eUg==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.6_1772525006766_0.7835232501925349","host":"s3://npm-registry-packages-npm-production"}},"1.5.7":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.7","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.7","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"5a57b38abaea62485b6350f7d10950b99d79fed7","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.7.tgz","fileCount":8,"integrity":"sha512-K0pQXh2cC6zUKM7BzJakDbV+EWD1gmE4fJsPQ/x3Pui0YJFFKydqqOyFAKDKH1Gh3R6aDq4NZf4PBhOxmG7GXA==","signatures":[{"sig":"MEQCIEGx+mqR8rtIcpTvTJORVCEGdlki1Xk+ipl0dsqDPW6BAiB5JkAiV+rPWIFcmcGDWTKSQ0Lt9/Gg6DjhKF8u612s5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122176},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.7.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/30b99fe991fb1f94b2563eaed2d30c0b/thangdevalone-meeting-grid-layout-core-1.5.7.tgz","_integrity":"sha512-K0pQXh2cC6zUKM7BzJakDbV+EWD1gmE4fJsPQ/x3Pui0YJFFKydqqOyFAKDKH1Gh3R6aDq4NZf4PBhOxmG7GXA==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.7_1773379586634_0.2282975704577226","host":"s3://npm-registry-packages-npm-production"}},"1.5.8":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.8","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.8","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"074e5a67ac9a42f5aadf3995d8ad158df0429b11","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.8.tgz","fileCount":8,"integrity":"sha512-GpplSyWntUC/gUrm22Izh1UFwgaIjXC0tL7ckS+HMTYI3TkcyVkVr7X6oXCNmSvv3gnqmQ9l29DlgSUq70hOwQ==","signatures":[{"sig":"MEQCIFQaOdWO7RXtmlrpQUfKJUobj1lbDLTrIoIKNcq5kTOXAiBdlOyfLlufdUEPgBdzfAQZ+LJTdT4fxUCOLSpYj5n/qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122176},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.8.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/c9475bd5e450e9f42d613cfa3268bf7b/thangdevalone-meeting-grid-layout-core-1.5.8.tgz","_integrity":"sha512-GpplSyWntUC/gUrm22Izh1UFwgaIjXC0tL7ckS+HMTYI3TkcyVkVr7X6oXCNmSvv3gnqmQ9l29DlgSUq70hOwQ==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.8_1773644064522_0.6739943029522946","host":"s3://npm-registry-packages-npm-production"}},"1.5.9":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.9","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.9","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"8656c96773bea93b6057bafab2dd5d4ced255e92","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.9.tgz","fileCount":8,"integrity":"sha512-0ogm6lkB/Z7CrGikOdg65pRW8PWmyuojzbre4YG655tKLoFqznbpdrbasRtZJQ2CA0R77J/n/ZHjYHd6kYS68w==","signatures":[{"sig":"MEQCIAHf1jl60yM7medLJxlFwzUBmpbi06TfEINkpFjApN05AiBSt2ZxSNhrFeSgu/wCgUZ9j8qe+G35j/nvsH7zi53qpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125400},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.9.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/123247dce18e73c43d4cd05665f0e6ba/thangdevalone-meeting-grid-layout-core-1.5.9.tgz","_integrity":"sha512-0ogm6lkB/Z7CrGikOdg65pRW8PWmyuojzbre4YG655tKLoFqznbpdrbasRtZJQ2CA0R77J/n/ZHjYHd6kYS68w==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.0","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.9_1773658426905_0.84023481698553","host":"s3://npm-registry-packages-npm-production"}},"1.5.10":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.10","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.10","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"344159426f3cd27e3eb3b169c8a43e16b7ffc990","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.10.tgz","fileCount":8,"integrity":"sha512-G4q/yIFtvuuBPcV9jcmIBUjquVwcyuUMVzaB2+azkO4nbk0Er2jPjXjLAmQ4Kvh0EZOu4BbQGrzi3l7GW8KwUg==","signatures":[{"sig":"MEUCIA97A6ekB0oBx9hgjU6B/cx1xotb/XOX12/IdiU0mA1iAiEAv7CmbVkG2ZmEKAgmEg2+iprTqHz1+2w/G8OYt/hQxQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127239},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.10.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/6cdc5d7b4780e324e1ffed7923dca938/thangdevalone-meeting-grid-layout-core-1.5.10.tgz","_integrity":"sha512-G4q/yIFtvuuBPcV9jcmIBUjquVwcyuUMVzaB2+azkO4nbk0Er2jPjXjLAmQ4Kvh0EZOu4BbQGrzi3l7GW8KwUg==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.1","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.10_1774412724137_0.31977835445960157","host":"s3://npm-registry-packages-npm-production"}},"1.5.11":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.5.11","keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","_id":"@thangdevalone/meeting-grid-layout-core@1.5.11","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"dist":{"shasum":"8dc888a8eff107b3760989c0cfb13bb9784cd718","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.5.11.tgz","fileCount":8,"integrity":"sha512-Q9DJL7NHFRdk1g6fdgHCAaVqz7CpYfm+0xInsKUf8mubnbvn/vG7aUGRHfi7zeD/Iwop5dnLmgsk1Ttfm76wPQ==","signatures":[{"sig":"MEUCIQC4FmmXGC8gvdzlvghyi1lYy06KHulKl//aadtAME2F/wIgDOKPz6gUXF23ZelqXhwRQx7YdWdXahlDWHmGJFCk4q4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127239},"main":"./dist/index.cjs","type":"module","_from":"file:thangdevalone-meeting-grid-layout-core-1.5.11.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"dev":"unbuild --watch","test":"vitest run","build":"unbuild","clean":"rimraf dist","test:watch":"vitest"},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"_resolved":"/tmp/6eac9ea9215c717e10e29ef06ee822a5/thangdevalone-meeting-grid-layout-core-1.5.11.tgz","_integrity":"sha512-Q9DJL7NHFRdk1g6fdgHCAaVqz7CpYfm+0xInsKUf8mubnbvn/vG7aUGRHfi7zeD/Iwop5dnLmgsk1Ttfm76wPQ==","repository":{"url":"git+https://github.com/thangdevalone/meeting-grid-layout.git","type":"git"},"_npmVersion":"10.8.2","description":"Core grid calculation logic for meeting-grid-layout","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","vitest":"^1.0.0","unbuild":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/meeting-grid-layout-core_1.5.11_1776851804444_0.7956777111480329","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@thangdevalone/meeting-grid-layout-core","version":"1.9.0","description":"Core grid calculation logic for meeting-grid-layout","type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"keywords":["grid","responsive","meeting","video","layout"],"author":{"name":"ThangDevAlone"},"license":"MIT","homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","repository":{"type":"git","url":"git+https://github.com/thangdevalone/meeting-grid-layout.git"},"devDependencies":{"unbuild":"^2.0.0","vitest":"^1.0.0","rimraf":"^5.0.0"},"scripts":{"build":"unbuild","dev":"unbuild --watch","clean":"rimraf dist","test":"vitest run","test:watch":"vitest"},"_id":"@thangdevalone/meeting-grid-layout-core@1.9.0","bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"_integrity":"sha512-2NdySPDgdroCVmm6TKQqZWjD5nJKltoF7NvtNCDEzoOTSjVYLcMqaPBwIadMQHuq1sh51k0kR2tMmxzGQJjwbA==","_resolved":"/tmp/f47ddf8e3b82c721c1700fa5253c1f0c/thangdevalone-meeting-grid-layout-core-1.9.0.tgz","_from":"file:thangdevalone-meeting-grid-layout-core-1.9.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-2NdySPDgdroCVmm6TKQqZWjD5nJKltoF7NvtNCDEzoOTSjVYLcMqaPBwIadMQHuq1sh51k0kR2tMmxzGQJjwbA==","shasum":"2b950cdf49daeca073ed612087d50074b5bdf0e8","tarball":"https://registry.npmjs.org/@thangdevalone/meeting-grid-layout-core/-/meeting-grid-layout-core-1.9.0.tgz","fileCount":8,"unpackedSize":120927,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHGw/6RYhgvt9z3W3Pl8jdS8EBh2YZT5E42uhzj43g2qAiEAs6yg9gcsUk8RpeNG8uYZ7zoG7M3jroX5PvXYexrekRs="}]},"_npmUser":{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"},"directories":{},"maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/meeting-grid-layout-core_1.9.0_1778188232846_0.8924392385196267"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-10T10:21:30.998Z","modified":"2026-05-07T21:10:33.108Z","1.4.1":"2026-02-10T10:21:31.320Z","1.5.0":"2026-02-25T04:06:14.704Z","1.5.1":"2026-02-25T04:27:42.408Z","1.5.2":"2026-02-25T04:38:06.033Z","1.5.3":"2026-02-26T04:31:23.833Z","1.5.4":"2026-02-26T04:39:23.566Z","1.5.5":"2026-03-03T07:53:36.821Z","1.5.6":"2026-03-03T08:03:26.924Z","1.5.7":"2026-03-13T05:26:26.847Z","1.5.8":"2026-03-16T06:54:24.678Z","1.5.9":"2026-03-16T10:53:47.069Z","1.5.10":"2026-03-25T04:25:24.290Z","1.5.11":"2026-04-22T09:56:44.598Z","1.9.0":"2026-05-07T21:10:32.989Z"},"bugs":{"url":"https://github.com/thangdevalone/meeting-grid-layout/issues"},"author":{"name":"ThangDevAlone"},"license":"MIT","homepage":"https://github.com/thangdevalone/meeting-grid-layout#readme","keywords":["grid","responsive","meeting","video","layout"],"repository":{"type":"git","url":"git+https://github.com/thangdevalone/meeting-grid-layout.git"},"description":"Core grid calculation logic for meeting-grid-layout","maintainers":[{"name":"thangdevalone","email":"quangthangvtlg@gmail.com"}],"readme":"# @thangdevalone/meeting-grid-layout-core\n\nFramework-agnostic grid calculation engine for meeting-grid-layout. Zero dependencies.\n\n> For full documentation, examples, and API reference, see the [main README](https://github.com/thangdevalone/meeting-grid-layout#readme).\n\n## Installation\n\n```bash\nnpm install @thangdevalone/meeting-grid-layout-core\n```\n\n## Usage\n\n```typescript\nimport { createMeetGrid } from '@thangdevalone/meeting-grid-layout-core'\n\nconst grid = createMeetGrid({\n  dimensions: { width: 800, height: 600 },\n  count: 6,\n  aspectRatio: '16:9',\n  gap: 8,\n  layoutMode: 'gallery',\n  pinnedIndex: 0,\n  othersPosition: 'bottom',\n})\n\nfor (let i = 0; i < 6; i++) {\n  const { top, left } = grid.getPosition(i)\n  const { width, height } = grid.getItemDimensions(i)\n  const isMain = grid.isMainItem(i)\n  console.log(`Item ${i}: ${width}x${height} at (${left}, ${top}), main: ${isMain}`)\n}\n```\n\n## Exports\n\n### Functions\n\n| Function                        | Description                                  |\n| ------------------------------- | -------------------------------------------- |\n| `createMeetGrid(options)`       | Full meet-style grid with layout modes       |\n| `createGrid(options)`           | Basic responsive grid (no layout modes)      |\n| `getAspectRatio(ratio)`         | Parse aspect ratio string to numeric value   |\n| `getGridItemDimensions(…)`      | Get dimensions for a specific grid item      |\n| `createGridItemPositioner(…)`   | Create a reusable position calculator        |\n| `getSpringConfig(preset)`       | Get spring animation config from preset name |\n| `calculateContentDimensions(…)` | Calculate content size within a cell         |\n\n### Types\n\n| Type                | Description                                |\n| ------------------- | ------------------------------------------ |\n| `MeetGridOptions`   | Options for `createMeetGrid`               |\n| `MeetGridResult`    | Return type of `createMeetGrid`            |\n| `GridOptions`       | Options for `createGrid`                   |\n| `GridResult`        | Return type of `createGrid`                |\n| `GridDimensions`    | `{ width, height }`                        |\n| `Position`          | `{ top, left }`                            |\n| `LayoutMode`        | `'gallery' \\| 'spotlight'`                 |\n| `ItemAspectRatio`   | `string \\| 'auto'`                         |\n| `ContentDimensions` | `{ width, height, offsetTop, offsetLeft }` |\n| `PaginationInfo`    | Pagination state details                   |\n| `SpringPreset`      | Animation preset names                     |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}