{"_id":"potpack","_rev":"7-ef2d9249db6945c81e5affcc737e43d0","name":"potpack","dist-tags":{"latest":"2.1.0"},"versions":{"1.0.0":{"name":"potpack","version":"1.0.0","keywords":["algorithms","sprites","bin packing","geometry","rectangles"],"author":{"name":"Vladimir Agafonkin"},"license":"ISC","_id":"potpack@1.0.0","maintainers":[{"name":"mourner","email":"agafonkin@gmail.com"}],"homepage":"https://mapbox.github.io/potpack/","bugs":{"url":"https://github.com/mapbox/potpack/issues"},"dist":{"shasum":"c7e9eec8b9898f95bf1412e95e213e606bea7a60","tarball":"https://registry.npmjs.org/potpack/-/potpack-1.0.0.tgz","fileCount":5,"integrity":"sha512-omcYiQZYfzOMB6oZN9wJoBPVFPZq0MJGRyv8D1Efv3JBG5hoY/suyprKFjPl0F60AwVx7gW3sIgAY0CeRvWSjg==","signatures":[{"sig":"MEUCIQD5gpYVlmXD9x+vBAl38yvgh9p7G8TjlCLYilUdTmmfwQIgcGJ1jqgM0ONMy3xUkk5963xewTlwn0jEvT3awFHQcfw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfps9CRA9TVsSAnZWagAA9YwP/RRlzY7Ko+ovvYNq0NLh\n3KjTXOqEH6bg6lLzXkg3CVS+cuqHkuKRLXzUf7fQR9hRJIY7MXf52g/DH9DE\nHO+H2YSxCJ3VLjzRaB5ViYRf0KEAAjB6kXZeLAhXoPmkPuAtAJCnf4fjMM+a\n9EXCrPQ2QAcMr8g/s1SK1zf3cAJgwhee34h0766MROXY/bZCf4jZHCL2TUGA\nlQlKpJu/o+Qmx8H/LX8jmAak4Cl712WbKosIMDw6ESNXfnQhGMMQZflC+As+\nmmidoT3767DAhxEnfBrRwp3/MNp35qqB+BE6yJi7M2PZqylndW2X/hU73JsM\n6XtQz/oecsJ1VQvUU3uu3LA7Dx8tPLXXb+s8ROrXvX0PA3Agr1kYCwJIpzny\nErmnNd8rYDQyizCGwmO7mFK17Vwyt9TEDuqaNFVEaFElkLhT9wS7rb2cALqu\n+UAGM+bRH8JdKT1zFCEdjwY4kiWi/cy4HKCHAQvOe1pRJ9WJt47x1uGc+Jw8\nevRRlt7PJnoow0Jav6HMnbsc4Adzq/XVoRii4UaiNdsek0y5epD//INbAQMZ\nlzf+a0OT+2bP1jENluciOViu2NNZNfG+1Swat8ul9urxCYfUA1axV3cO2asF\n7Sfpn3mLlAnd9GuYBp4HPG17vtJ+aPSCWgK2qVxWIzFCnzjjmedEL2TC5pVS\njzdI\r\n=fF4D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index","files":["index.mjs","index.js"],"unpkg":"index.js","module":"index.mjs","gitHead":"18384ee81dff89b050384639ee2816669fc47865","scripts":{"test":"tape -r esm test.js","build":"rollup -c","start":"rollup -w","pretest":"eslint index.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"mourner","email":"agafonkin@gmail.com"},"jsdelivr":"index.js","repository":{"url":"git+https://github.com/mapbox/potpack.git","type":"git"},"_npmVersion":"6.4.0","description":"A tiny library for packing 2D rectangles (for sprite layouts)","directories":{},"_nodeVersion":"8.11.4","eslintConfig":{"rules":{"no-var":"error","prefer-const":"error"},"extends":"mourner","parserOptions":{"sourceType":"module"}},"_hasShrinkwrap":false,"devDependencies":{"esm":"^3.0.80","tape":"^4.9.1","eslint":"^5.4.0","rollup":"^0.64.1","rollup-plugin-buble":"^0.19.2","eslint-config-mourner":"^2.0.3"},"_npmOperationalInternal":{"tmp":"tmp/potpack_1.0.0_1535023932602_0.6474571596817398","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"potpack","version":"1.0.1","keywords":["algorithms","sprites","bin packing","geometry","rectangles"],"author":{"name":"Vladimir Agafonkin"},"license":"ISC","_id":"potpack@1.0.1","maintainers":[{"name":"mourner","email":"agafonkin@gmail.com"}],"homepage":"https://mapbox.github.io/potpack/","bugs":{"url":"https://github.com/mapbox/potpack/issues"},"dist":{"shasum":"d1b1afd89e4c8f7762865ec30bd112ab767e2ebf","tarball":"https://registry.npmjs.org/potpack/-/potpack-1.0.1.tgz","fileCount":5,"integrity":"sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw==","signatures":[{"sig":"MEUCIAQxu+SPAHz/NcsHVEuv0tsCMCmpUEAm+d0BfM433jSeAiEA6kP8VGS4Son9zUKrN68ch7cwTaxtO0d8QgrQw9QkrQI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10098,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbg5M1CRA9TVsSAnZWagAA0YcQAJCdGJU8fSfDNbintEKX\nWomv9BHpSdw/OfWwkq688reFQWZoziaYSptCs7+iErsA3xEShXsObvhvpc7A\nbBjys5HoKpEZ5QeXvrKwvpprSqqQs4jq5M8hUjDi0kLWd/oorr2y17Q+qMWa\n0/hsHyQ1Lch+zIy3NH3IXCMmt4CgXLoMqfiUbENrTX9kAZvBiynod+5k1v/Y\nj9zNcPzOp/yYhKZJZtWCH5BlNxJw6dFd6rbpqX5DiWR3fHIwJzgoGMIQCmr+\nc0HHCEg9vJ2cy5bDLm9qgbagvEqfT5BIj/XDAs6uBK1jCYN167yH3ChxWADr\nvWoDAAvbZz+3eZoQCy+AjpNLuJklQi/WyBSFHyFZ+9Jhd2SbdPr4EOdyPSwi\nQ55pK51Th284s6d+q61hiXqUgTC41QA00vUhNFF6yD5qkhyyk0lD5xcLg5pC\nrlNuG2wGUUg8ZvVx7Zd4SGlxqL/hxAPN/Z0btX/FCxQ/w7+MamVeJ595vGnA\n+aCvU38lsEAVoKom3+7EMjyEEysdsLyDaLRz2eLVw78HZZ+weE94kC0JUwEN\nVeH0PCOGKSC/DvuK+qpCPerMUVlWsB0qHDkQOcTriBH5zc8Y1GR2d9xiiTaE\n/jlkh8M18t7cpWJSLDkbRASS9J0USSh1GX4ievn59hehdjCOqUMAXEBBeQtU\nre/N\r\n=QdRF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index","files":["index.mjs","index.js"],"unpkg":"index.js","module":"index.mjs","gitHead":"5cd03cc54ce7f935e6e40cd375e62291bf382d05","scripts":{"test":"tape -r esm test.js","build":"rollup -c","start":"rollup -w","pretest":"eslint index.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"mourner","email":"agafonkin@gmail.com"},"jsdelivr":"index.js","repository":{"url":"git+https://github.com/mapbox/potpack.git","type":"git"},"_npmVersion":"6.4.0","description":"A tiny library for packing 2D rectangles (for sprite layouts)","directories":{},"_nodeVersion":"8.11.4","eslintConfig":{"rules":{"no-var":"error","prefer-const":"error"},"extends":"mourner","parserOptions":{"sourceType":"module"}},"_hasShrinkwrap":false,"devDependencies":{"esm":"^3.0.80","tape":"^4.9.1","eslint":"^5.4.0","rollup":"^0.64.1","rollup-plugin-buble":"^0.19.2","eslint-config-mourner":"^2.0.3"},"_npmOperationalInternal":{"tmp":"tmp/potpack_1.0.1_1535349556455_0.9334555218129665","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"potpack","version":"1.0.2","keywords":["algorithms","sprites","bin packing","geometry","rectangles"],"author":{"name":"Vladimir Agafonkin"},"license":"ISC","_id":"potpack@1.0.2","maintainers":[{"name":"mourner","email":"agafonkin@gmail.com"}],"homepage":"https://mapbox.github.io/potpack/","bugs":{"url":"https://github.com/mapbox/potpack/issues"},"dist":{"shasum":"23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14","tarball":"https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz","fileCount":6,"integrity":"sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==","signatures":[{"sig":"MEUCIQDJrQNumx0QWWVKq9T4BXsKi+dZmX6LJOKi/56CDsxe3wIgKKRQqyZq3iH0TSnpe4H3mjuBCX9wk5zW1tf9PrzGZIU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh23CWCRA9TVsSAnZWagAA8xMP/20Wsyz5tpxcQC/sSrZT\n1CqHf9g6dCdpnQp0xC1fc4R3K7yYCaIwKj/7lPigI/jkwrtofEjd+NaELU/y\nn5IjlL9zQJ8YUEeai3ceDiKdR9qPWdW01nooehNR+ou4AUX1/GDYHdUEBhhp\n+sRtTm2uajw6/PShtg+7FCFDiEOjWbzIb5rBGyKv7N0vi6ALS1GAf10oLTdK\n/C39WDla0mnJup1xBCw2VWo8YsaTSHf2v3rNPlFFl3Q81ZJcMlmlGyHRHf+J\nsUroN5vgAwOWnupKcx1VQhnZnHoMg15m+k5ml/V6EDGCX5a++YZT2vWhdZNc\nWmGSwF6KvYB8Pzkm7OLSwizReUf2/bqKLuwZ+1ivx/RjeKL93qgzg8bpCU2e\nhUBSzD/kW1IW8POkFtkVCS+nDKEDJoxEmD6ZyuKYl2jIDC1nNzm2CO6mJp8D\nndAmCuZFasWoJqbMNfoUOLl9ocIddAYa78pcTF/9Oo5ENrw6hHjZTYHz+mNq\nwB/bQjzaMa38vZRybgrGI3Gk8QvYHqIWV5zr6+26SUmtY9/LQ/ZkTXnjDdaK\nGYMQETa8EDnVYD9cVlLUFqIfpSVoiInN02Or2/m4Gm/Ab71H6p3lXyv8I3jL\nYfVkadWWPIeEuBLhop3OXSDljv8uFEdcnr9PG9USzOsDDx+ghkFKYaon4Rcr\n5M6D\r\n=dLZq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index","types":"index.d.ts","unpkg":"index.js","module":"index.mjs","gitHead":"b2df24995f43740e362a1ceb2ad25da77e44dd88","scripts":{"test":"node -r esm test.mjs","bench":"node -r esm bench.mjs","build":"rollup -c","start":"rollup -w","pretest":"eslint index.mjs test.mjs bench.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"mourner","email":"agafonkin@gmail.com"},"jsdelivr":"index.js","repository":{"url":"git+https://github.com/mapbox/potpack.git","type":"git"},"_npmVersion":"7.24.1","description":"A tiny library for packing 2D rectangles (for sprite layouts)","directories":{},"_nodeVersion":"14.18.0","eslintConfig":{"extends":"mourner"},"_hasShrinkwrap":false,"devDependencies":{"esm":"^3.2.25","tape":"^5.3.1","eslint":"^8.0.1","rollup":"^2.58.0","bin-pack":"^1.0.2","@mapbox/shelf-pack":"^3.2.0","@rollup/plugin-buble":"^0.21.3","eslint-config-mourner":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/potpack_1.0.2_1634891214911_0.16557632626017038","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"potpack","version":"2.0.0","keywords":["algorithms","sprites","bin packing","geometry","rectangles"],"author":{"name":"Vladimir Agafonkin"},"license":"ISC","_id":"potpack@2.0.0","maintainers":[{"name":"mourner","email":"agafonkin@gmail.com"}],"homepage":"https://mapbox.github.io/potpack/","bugs":{"url":"https://github.com/mapbox/potpack/issues"},"dist":{"shasum":"61f4dd2dc4b3d5e996e3698c0ec9426d0e169104","tarball":"https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz","fileCount":5,"integrity":"sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==","signatures":[{"sig":"MEUCIQCkIW/7RYP822PitlpWTVvS7rl+g2hhWy3r7pn6OB9wDQIgA1MvUPVA0seTlMhjI9vXqst569GdDq6T/AJCd9E8C98=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTSftACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmooaQ/+MItP7zkCGB01hlrZrDRRJc+ccKjqNPkf2RkklzoP6xmyktVg\r\nTKruKTW0o/0fhhjgB50IKDHJy397BRh+lbD+kO4JY4NaPwdWV0CsWJqmwIY2\r\nUeJsHl/jtclVf3t8HXLM7EAdLZmDR5RRX64YBLdP1JzQ0MS4et5xBTbmjxEh\r\nvr7DN1DtVmuZw6pssTxxPHzf149zyQxs8BfbPvA9mNSeQi8pMlFxtapEmMHi\r\nPvBwkHpRnXomUm9WHD9h91KSkZ/olHaC2Knv4A8g3fNnyzd8Ip0w6Y/LrNNt\r\nggLzR8XnIL0DwEFIoPqW6OeCh6h9I8bDdEFO5VhLZUYN2S/6m3uxF4Qv9aUL\r\ntDQ8hJyR40FuKUXe7fwCb0WarJrXLGISPBNFLNDiZkTYtjUgAG9KmzELceYN\r\nbmdeuZZHIJFsOennTGM8rqd68oHH8bNe8A7ruvwOGEkvVu1SuhQAvz4aWdvb\r\n0Az0L7+tRpkN/dG5ha5sT1PBALAIiZxGysirJGQvcxuvJxVeTqanNx31a0Tt\r\n5Q4CBhRNGjUw93IFTijl4XL+WTVXGrdTSzfCPNmZEW/7As1Hk50mZb83Qokd\r\nB2Bt2GiUNB2FAWZEL1uoIsPgMZJrc2I5Wrcr/I6H/kIRottg8Qh8IcPt9Yfg\r\np2UaHXQcUUA6BT5bVoeKvYRPvNKtqqlakr0=\r\n=TVMX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","type":"module","types":"index.d.ts","exports":"./index.js","gitHead":"49ba6c369e67f007a02e063ecfa935fcc597311d","scripts":{"test":"node test.js","pretest":"eslint *.js"},"_npmUser":{"name":"mourner","email":"agafonkin@gmail.com"},"repository":{"url":"git+https://github.com/mapbox/potpack.git","type":"git"},"_npmVersion":"8.19.2","description":"A tiny library for packing 2D rectangles (for sprite layouts)","directories":{},"_nodeVersion":"14.20.0","eslintConfig":{"extends":"mourner"},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.6.1","eslint":"^8.25.0","bin-pack":"^1.0.2","@mapbox/shelf-pack":"^3.2.0","eslint-config-mourner":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/potpack_2.0.0_1666000877461_0.04325142832004247","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"potpack","version":"2.1.0","description":"A tiny library for packing 2D rectangles (for sprite layouts)","main":"index.js","type":"module","exports":"./index.js","types":"index.d.ts","sideEffects":false,"scripts":{"pretest":"eslint *.js","test":"tsc && node test.js","prepublishOnly":"npm test"},"repository":{"type":"git","url":"git+https://github.com/mapbox/potpack.git"},"keywords":["algorithms","sprites","bin packing","geometry","rectangles"],"author":{"name":"Vladimir Agafonkin"},"license":"ISC","bugs":{"url":"https://github.com/mapbox/potpack/issues"},"homepage":"https://mapbox.github.io/potpack/","devDependencies":{"@mapbox/shelf-pack":"^3.2.0","bin-pack":"^1.0.2","eslint":"^9.31.0","eslint-config-mourner":"^4.0.2","typescript":"^5.8.3"},"_id":"potpack@2.1.0","gitHead":"e06ed5c8808b1ab91942ac2ff7df7a9bfcfb3f30","_nodeVersion":"20.19.3","_npmVersion":"11.3.0","dist":{"integrity":"sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==","shasum":"fe548e2f9061e9937f17191c1ab6dd98ca30e02f","tarball":"https://registry.npmjs.org/potpack/-/potpack-2.1.0.tgz","fileCount":5,"unpackedSize":8467,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCeBJq+P3XLCX3sxzIV2t7G9k25qETHKZY2HMGi1siq/AIgb9kD3lh7pghU4eYN0DsjPCthccdC/5KRJZxNkXVf51U="}]},"_npmUser":{"name":"mourner","email":"agafonkin@gmail.com"},"directories":{},"maintainers":[{"name":"mourner","email":"agafonkin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/potpack_2.1.0_1752482485145_0.4499191159610578"},"_hasShrinkwrap":false}},"time":{"created":"2018-08-23T11:32:12.602Z","modified":"2025-07-14T08:41:25.513Z","1.0.0":"2018-08-23T11:32:12.709Z","1.0.1":"2018-08-27T05:59:16.528Z","1.0.2":"2021-10-22T08:26:55.083Z","2.0.0":"2022-10-17T10:01:17.622Z","2.1.0":"2025-07-14T08:41:25.323Z"},"bugs":{"url":"https://github.com/mapbox/potpack/issues"},"author":{"name":"Vladimir Agafonkin"},"license":"ISC","homepage":"https://mapbox.github.io/potpack/","keywords":["algorithms","sprites","bin packing","geometry","rectangles"],"repository":{"type":"git","url":"git+https://github.com/mapbox/potpack.git"},"description":"A tiny library for packing 2D rectangles (for sprite layouts)","maintainers":[{"name":"mourner","email":"agafonkin@gmail.com"}],"readme":"# potpack\n\nA tiny JavaScript library for packing 2D rectangles into a near-square container,\nwhich is useful for generating CSS sprites and WebGL textures. Similar to [shelf-pack](https://github.com/mapbox/shelf-pack),\nbut static (you can't add items once a layout is generated), and aims for maximal space utilization.\n\nA variation of algorithms used in\n[rectpack2D](https://github.com/TeamHypersomnia/rectpack2D) and\n[bin-pack](https://github.com/bryanburgers/bin-pack),\nwhich are in turn based on\n[this article by Blackpawn](http://blackpawn.com/texts/lightmaps/default.html).\n\n## [Demo](https://mapbox.github.io/potpack/)\n\n## Example usage\n\n```js\nimport potpack from 'potpack';\n\nconst boxes = [\n    {w: 300, h: 50},\n    {w: 100, h: 200},\n    ...\n];\n\nconst {w, h, fill} = potpack(boxes);\n// w and h are resulting container's width and height;\n// fill is the space utilization value (0 to 1), higher is better\n\n// potpack mutates the boxes array: it's sorted by height,\n// and box objects are augmented with x, y coordinates:\nboxes[0]; // {w: 300, h: 50,  x: 100, y: 0}\nboxes[1]; // {w: 100, h: 200, x: 0,   y: 0}\n```\n\n## Install\n\nInstall with NPM: `npm install potpack`.\n\nPotpack is provided as a ES module, so it's only supported on modern browsers, excluding IE:\n\n```html\n<script type=\"module\">\nimport potpack from 'https://cdn.skypack.dev/potpack';\n...\n</script>\n```\n\nIn Node, you can't use `require` — only `import` in ESM-capable versions (v12.15+):\n\n```js\nimport potpack from 'potpack';\n```\n","readmeFilename":"README.md"}