{"version":3,"sources":["jsdelivr-header.js","/npm/pack@2.2.0/lib/pack.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACoDA,SAAS,KAAK,GAEb,OAAO,KAAK,IAAI,EAAO,KAAK,GAAI,EAAO,KAAK,GAC7C,CAGA,SAAS,WAAW,GAEnB,IADA,IAAI,EAAa,EAAO,KAAK,GAAK,EAAO,KAAK,GACrC,EAAI,EAAG,EAAI,EAAO,MAAM,OAAQ,IAAK,CAC7C,IAAI,EAAM,EAAO,MAAM,GACvB,GAAc,EAAI,KAAK,GAAK,EAAI,KAAK,EACtC,CACA,OAAO,CACR,CAGA,SAAS,OAAO,GAGf,IAFA,IAAI,EAAQ,EACR,EAAS,EACJ,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACtC,IAAI,EAAM,EAAM,GACZ,EAAQ,EAAI,SAAS,GAAK,EAAI,KAAK,GACnC,EAAS,EAAI,SAAS,GAAK,EAAI,KAAK,GACpC,EAAQ,IACX,EAAQ,GAEL,EAAS,IACZ,EAAS,EAEX,CACA,MAAO,CAAE,EAAO,EACjB,CAGA,SAAS,SAAS,EAAO,GAExB,IADA,IAAI,EAAI,EACC,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CAEtC,GAAI,WAAW,EADP,EAAM,IAEb,OAAO,CAET,CACA,OAAO,CACR,CAGA,SAAS,WAAW,EAAG,GACtB,OAAO,EAAE,SAAS,GAAK,EAAE,SAAS,GAAK,EAAE,KAAK,IAAM,EAAE,SAAS,GAAK,EAAE,KAAK,GAAK,EAAE,SAAS,IACpF,EAAE,SAAS,GAAK,EAAE,SAAS,GAAK,EAAE,KAAK,IAAM,EAAE,SAAS,GAAK,EAAE,KAAK,GAAK,EAAE,SAAS,EAC5F,CA3GA,OAAO,QAAU,SAAc,GAG9B,IAFA,IAAI,EAAS,CAAE,KAAM,CAAE,EAAG,GAAK,MAAO,IAClC,EAAQ,IAAI,MAAM,EAAM,QACnB,EAAI,EAAG,EAAI,EAAM,OAAQ,IACjC,EAAM,GAAK,EAGZ,EAAM,MAAK,SAAU,EAAG,GACvB,OAAO,EAAM,GAAG,GAAK,EAAM,GAAG,GACxB,EAAM,GAAG,GAAK,EAAM,GAAG,EAC9B,IAEA,IAAS,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CAGtC,IAFA,IAAI,EAAO,EAAM,EAAM,IACnB,EAAY,CAAE,CAAE,EAAG,IACd,EAAI,EAAG,EAAI,EAAO,MAAM,OAAQ,IAAK,CAC7C,IAAI,EAAM,EAAO,MAAM,GACvB,EAAU,KACT,CAAE,EAAI,SAAS,GAAI,EAAI,SAAS,GAAK,EAAI,KAAK,IAC9C,CAAE,EAAI,SAAS,GAAK,EAAI,KAAK,GAAI,EAAI,SAAS,IAEhD,CAEA,IAAI,EAAO,CAAE,MAAO,IAAU,SAAU,EAAU,IAClD,GAAI,EAAU,OAAS,EACtB,IAAS,EAAI,EAAG,EAAI,EAAU,OAAQ,IAAK,CAC1C,IAAI,EAAW,EAAU,GACrB,EAAM,CAAE,KAAM,EAAM,SAAU,GAClC,GAAI,SAAS,EAAO,MAAO,GAAM,EAC5B,EAAQ,EAAO,MAAM,SACnB,KAAK,GAEX,IAAI,EAAQ,KAAK,CAChB,KAAM,OAAO,GACb,MAAO,IAGJ,EAAQ,EAAK,QAChB,EAAK,MAAQ,EACb,EAAK,SAAW,EAElB,CACD,CAGG,EAAM,CAAE,KAAM,EAAM,SAAU,EAAK,UACvC,EAAO,MAAM,KAAK,GAClB,EAAO,KAAO,OAAO,EAAO,MAC7B,CAEA,IAAI,EAAQ,EAAO,MAAM,QACzB,IAAS,EAAI,EAAG,EAAI,EAAM,OAAQ,IACjC,EAAO,MAAM,EAAM,IAAM,EAAM,GAGhC,OAAO,CACR","file":"/npm/pack@2.2.0/lib/pack.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/pack@2.2.0/lib/pack.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","module.exports = function pack(sizes) {\n\tvar layout = { size: [ 0, 0 ], boxes: [] }\n\tvar order = new Array(sizes.length)\n\tfor (var i = 0; i < sizes.length; i++) {\n\t\torder[i] = i\n\t}\n\n\torder.sort(function (a, b) {\n\t\treturn sizes[b][0] * sizes[b][1]\n\t\t    - sizes[a][0] * sizes[a][1]\n\t})\n\n\tfor (var i = 0; i < sizes.length; i++) {\n\t\tvar size = sizes[order[i]]\n\t\tvar positions = [ [ 0, 0 ] ]\n\t\tfor (var j = 0; j < layout.boxes.length; j++) {\n\t\t\tvar box = layout.boxes[j]\n\t\t\tpositions.push(\n\t\t\t\t[ box.position[0], box.position[1] + box.size[1] ],\n\t\t\t\t[ box.position[0] + box.size[0], box.position[1] ]\n\t\t\t)\n\t\t}\n\n\t\tvar best = { score: Infinity, position: positions[0] }\n\t\tif (positions.length > 1) {\n\t\t\tfor (var j = 0; j < positions.length; j++) {\n\t\t\t\tvar position = positions[j]\n\t\t\t\tvar box = { size: size, position: position }\n\t\t\t\tif (validate(layout.boxes, box)) {\n\t\t\t\t\tvar boxes = layout.boxes.slice()\n\t\t\t\t\tboxes.push(box)\n\n\t\t\t\t\tvar score = rate({\n\t\t\t\t\t\tsize: bounds(boxes),\n\t\t\t\t\t\tboxes: boxes\n\t\t\t\t\t})\n\n\t\t\t\t\tif (score < best.score) {\n\t\t\t\t\t\tbest.score = score\n\t\t\t\t\t\tbest.position = position\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar box = { size: size, position: best.position }\n\t\tlayout.boxes.push(box)\n\t\tlayout.size = bounds(layout.boxes)\n\t}\n\n\tvar boxes = layout.boxes.slice()\n\tfor (var i = 0; i < boxes.length; i++) {\n\t\tlayout.boxes[order[i]] = boxes[i]\n\t}\n\n\treturn layout\n}\n\nfunction rate(layout) {\n\t// return whitespace(layout)\n\treturn Math.max(layout.size[0], layout.size[1])\n}\n\n// determines the amount of whitespace area remaining in `layout`\nfunction whitespace(layout) {\n\tvar whitespace = layout.size[0] * layout.size[1]\n\tfor (var i = 0; i < layout.boxes.length; i++) {\n\t\tvar box = layout.boxes[i]\n\t\twhitespace -= box.size[0] * box.size[1]\n\t}\n\treturn whitespace\n}\n\n// finds the smallest `[ width, height ]` vector that contains all `boxes`\nfunction bounds(boxes) {\n\tvar width = 0\n\tvar height = 0\n\tfor (var i = 0; i < boxes.length; i++) {\n\t\tvar box = boxes[i]\n\t\tvar right = box.position[0] + box.size[0]\n\t\tvar bottom = box.position[1] + box.size[1]\n\t\tif (right > width) {\n\t\t\twidth = right\n\t\t}\n\t\tif (bottom > height) {\n\t\t\theight = bottom\n\t\t}\n\t}\n\treturn [ width, height ]\n}\n\n// determines if the region specified by `box` is clear of all other `boxes`\nfunction validate(boxes, box) {\n\tvar a = box\n\tfor (var i = 0; i < boxes.length; i++) {\n\t\tvar b = boxes[i]\n\t\tif (intersects(a, b)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// determines if box `a` and box `b` intersect\nfunction intersects(a, b) {\n\treturn a.position[0] < b.position[0] + b.size[0] && a.position[0] + a.size[0] > b.position[0]\n\t    && a.position[1] < b.position[1] + b.size[1] && a.position[1] + a.size[1] > b.position[1]\n}\n"]}