{"version":3,"sources":["jsdelivr-header.js","/npm/merge-images-v2@2.0.1/src/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,oMCHA,IAAM,EAAiB,CACtB,OAAQ,YACR,QAAS,IACT,WAAO,EACP,YAAQ,EACR,YAAQ,GAGH,EAAY,SAAG,GAAQ,OAC5B,EAAQ,OACP,IAAI,EAAQ,OAAO,OACnB,OAAO,SAAS,cAAc,SAAQ,E,OAQvB,SAAI,EAAc,G,sBAAJ,S,UAAc,IAAO,IAAI,SAAO,SAAC,GAC/D,EAAU,OAAO,OAAO,GAAI,EAAgB,GAG5C,IAAM,EAAS,EAAa,GACtB,EAXU,SAAG,GAAQ,OAC3B,EAAQ,OACP,EAAQ,OAAO,MACf,OAAO,KAAA,CAQM,CAAY,GACtB,EAAQ,SACX,EAAQ,SAAW,KAIpB,IAAM,EAAS,EAAQ,KAAG,SAAC,GAAO,OAAG,IAAI,SAAO,SAAE,EAAS,GAMxD,GAJ8B,WAA5B,EAAO,YAAY,OACtB,EAAS,CAAE,IAAK,IAGX,EAAO,OAAS,EAAO,OAAQ,CACjC,IAAM,EAAM,IAAI,EAAM,EAAO,MAAO,EAAO,QAE3C,EAAI,QAAO,WAAM,OAAG,EAAO,IAAI,MAAM,uBAAuB,EAC5D,EAAI,OAAM,WACR,IAAA,EAAA,EAAA,MAAe,EAAA,EAAA,OACT,EAAS,EAAa,GACtB,EAAM,EAAO,WAAW,MAE9B,EAAO,MAAQ,EACf,EAAO,OAAS,EAChB,EAAI,UAAU,EAAK,EAAG,EAAG,EAAO,GAGhC,IAAM,EAAY,IAAI,EACtB,EAAU,QAAO,WAAM,OAAG,EAAO,IAAI,MAAM,uBAAuB,EAClE,EAAU,OAAM,WAAM,OAAG,EAAQ,OAAO,OAAO,GAAI,EAAQ,CAAE,IAAK,IAAY,EAC9E,EAAU,IAAM,EAAO,W,EAEzB,EAAI,IAAM,EAAO,G,KACZ,CAEL,IAAM,EAAM,IAAI,EAChB,EAAI,QAAO,WAAM,OAAG,EAAO,IAAI,MAAM,uBAAuB,EAC5D,EAAI,OAAM,WAAM,OAAG,EAAQ,OAAO,OAAO,GAAI,EAAQ,CAAA,IAAE,IAAM,EAC7D,EAAI,IAAM,EAAO,G,IAErB,IAGK,EAAM,EAAO,WAAW,MAG9B,EAAQ,QAAQ,IAAI,GAClB,MAAI,SAAC,GAEL,IAAM,EAAO,SAAG,GAAI,OAAG,EAAQ,IAAQ,KAAK,IAAA,MAAI,KAAG,EAAO,KAAG,SAAC,GAAM,OAAG,EAAM,IAAI,EAAG,IAAE,EAUtF,OATA,EAAO,MAAQ,EAAQ,SACvB,EAAO,OAAS,EAAQ,UAGxB,EAAO,SAAO,SAAC,GAEd,OADA,EAAI,YAAc,EAAM,QAAU,EAAM,QAAU,EAC3C,EAAI,UAAU,EAAM,IAAK,EAAM,GAAK,EAAG,EAAM,GAAK,E,IAGtD,EAAQ,QAA6B,eAAnB,EAAQ,OAEtB,IAAI,SAAO,SAAC,GAClB,EAAO,UAAU,EAAQ,OAAQ,CAChC,QAAS,EAAQ,QACjB,aAAa,IACb,SAAG,EAAK,GACR,GAAI,EACH,MAAM,EAEP,EAAQ,E,OAMJ,EAAO,UAAU,EAAQ,OAAQ,EAAQ,Q","file":"/npm/merge-images-v2@2.0.1/dist/index.umd.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/merge-images-v2@2.0.1/dist/index.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/* eslint new-cap: [\"error\", { \"properties\": false }] */\n\n// Defaults\nconst defaultOptions = {\n\tformat: 'image/png',\n\tquality: 0.92,\n\twidth: undefined,\n\theight: undefined,\n\tCanvas: undefined\n};\n\nconst createCanvas = options =>\n\toptions.Canvas ?\n\t\tnew options.Canvas.Canvas() :\n\t\twindow.document.createElement('canvas');\n\nconst createImage = options =>\n\toptions.Canvas ?\n\t\toptions.Canvas.Image :\n\t\twindow.Image;\n\n// Return Promise\nconst mergeImages = (sources = [], options = {}) => new Promise(resolve => {\n\toptions = Object.assign({}, defaultOptions, options);\n\n\t// Setup browser/Node.js specific variables\n\tconst canvas = createCanvas(options);\n\tconst Image = createImage(options);\n\tif (options.Canvas) {\n\t\toptions.quality *= 100;\n\t}\n\n\t// Load sources\n\tconst images = sources.map(source => new Promise((resolve, reject) => {\n\t\t// Convert sources to objects\n\t\tif (source.constructor.name !== 'Object') {\n\t\t\tsource = { src: source };\n\t\t}\n\n    if (source.width && source.height) {\n      const img = new Image(source.width, source.height);\n\n      img.onerror = () => reject(new Error('Couldn\\'t load image'));\n      img.onload = () => {\n        const { width, height } = source;\n        const canvas = createCanvas(options);\n        const ctx = canvas.getContext('2d');\n\n        canvas.width = width;\n        canvas.height = height;\n        ctx.drawImage(img, 0, 0, width, height);\n\n        // Adjust source image width and height\n        const resizeImg = new Image();\n        resizeImg.onerror = () => reject(new Error('Couldn\\'t load image'));\n        resizeImg.onload = () => resolve(Object.assign({}, source, { img: resizeImg }));\n        resizeImg.src = canvas.toDataURL();\n      };\n      img.src = source.src;\n    } else {\n      // Resolve source and img when loaded\n      const img = new Image();\n      img.onerror = () => reject(new Error('Couldn\\'t load image'));\n      img.onload = () => resolve(Object.assign({}, source, { img }));\n      img.src = source.src;\n    }\n\t}));\n\n\t// Get canvas context\n\tconst ctx = canvas.getContext('2d');\n\n\t// When sources have loaded\n\tresolve(Promise.all(images)\n\t\t.then(images => {\n\t\t\t// Set canvas dimensions\n\t\t\tconst getSize = dim => options[dim] || Math.max(...images.map(image => image.img[dim]));\n\t\t\tcanvas.width = getSize('width');\n\t\t\tcanvas.height = getSize('height');\n\n\t\t\t// Draw images to canvas\n\t\t\timages.forEach(image => {\n\t\t\t\tctx.globalAlpha = image.opacity ? image.opacity : 1;\n\t\t\t\treturn ctx.drawImage(image.img, image.x || 0, image.y || 0);\n\t\t\t});\n\n\t\t\tif (options.Canvas && options.format === 'image/jpeg') {\n\t\t\t\t// Resolve data URI for node-canvas jpeg async\n\t\t\t\treturn new Promise(resolve => {\n\t\t\t\t\tcanvas.toDataURL(options.format, {\n\t\t\t\t\t\tquality: options.quality,\n\t\t\t\t\t\tprogressive: false\n\t\t\t\t\t}, (err, jpeg) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(jpeg);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Resolve all other data URIs sync\n\t\t\treturn canvas.toDataURL(options.format, options.quality);\n\t\t}));\n});\n\nexport default mergeImages;\n"]}