medium-image-progressive
Version:
Medium's progressive image style
1 lines • 33.2 kB
Source Map (JSON)
{"version":3,"file":"umd.min.js","sources":["../src/stackblur.js","../src/index.js"],"sourcesContent":["/*\n StackBlur - a fast almost Gaussian Blur For Canvas\n\n Version: 0.5\n Author: Mario Klingemann\n Contact: mario@quasimondo.com\n Website: http://www.quasimondo.com/StackBlurForCanvas\n Twitter: @quasimondo\n\n In case you find this class useful - especially in commercial projects -\n I am not totally unhappy for a small donation to my PayPal account\n mario@quasimondo.de\n\n Or support me on flattr:\n https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript\n\n Copyright (c) 2010 Mario Klingemann\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation\n files (the \"Software\"), to deal in the Software without\n restriction, including without limitation the rights to use,\n copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the\n Software is furnished to do so, subject to the following\n conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n OTHER DEALINGS IN THE SOFTWARE.\n */\n\n\nvar mul_table = [\n 512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,\n 454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,\n 482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,\n 437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,\n 497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,\n 320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,\n 446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,\n 329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,\n 505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,\n 399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,\n 324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,\n 268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,\n 451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,\n 385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,\n 332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,\n 289,287,285,282,280,278,275,273,271,269,267,265,263,261,259];\n\n\nvar shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,\n 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,\n 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,\n 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 ];\n\n\nfunction processImage(img, canvas, radius, blurAlphaChannel)\n{\n if (typeof(img) == 'string') {\n var img = document.getElementById(img);\n }\n else if (typeof HTMLImageElement !== 'undefined' && !img instanceof HTMLImageElement) {\n return;\n }\n var w = img.naturalWidth;\n var h = img.naturalHeight;\n\n if (typeof(canvas) == 'string') {\n var canvas = document.getElementById(canvas);\n }\n else if (typeof HTMLCanvasElement !== 'undefined' && !canvas instanceof HTMLCanvasElement) {\n return;\n }\n\n // canvas.style.width = w + 'px';\n // canvas.style.height = h + 'px';\n // console.log(w, h, img, img.naturalHeight)\n canvas.width = w;\n canvas.height = h;\n\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, w, h);\n context.drawImage(img, 0, 0);\n\n if (isNaN(radius) || radius < 1) return;\n\n if (blurAlphaChannel)\n processCanvasRGBA(canvas, 0, 0, w, h, radius);\n else\n processCanvasRGB(canvas, 0, 0, w, h, radius);\n}\n\nfunction getImageDataFromCanvas(canvas, top_x, top_y, width, height)\n{\n if (typeof(canvas) == 'string')\n var canvas = document.getElementById(canvas);\n else if (typeof HTMLCanvasElement !== 'undefined' && !canvas instanceof HTMLCanvasElement)\n return;\n\n var context = canvas.getContext('2d');\n var imageData;\n\n try {\n try {\n imageData = context.getImageData(top_x, top_y, width, height);\n } catch(e) {\n throw new Error(\"unable to access local image data: \" + e);\n return;\n }\n } catch(e) {\n throw new Error(\"unable to access image data: \" + e);\n }\n\n return imageData;\n}\n\nfunction processCanvasRGBA(canvas, top_x, top_y, width, height, radius)\n{\n if (isNaN(radius) || radius < 1) return;\n radius |= 0;\n\n var imageData = getImageDataFromCanvas(canvas, top_x, top_y, width, height);\n\n imageData = processImageDataRGBA(imageData, top_x, top_y, width, height, radius);\n\n canvas.getContext('2d').putImageData(imageData, top_x, top_y);\n}\n\nfunction processImageDataRGBA(imageData, top_x, top_y, width, height, radius)\n{\n var pixels = imageData.data;\n\n var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum,\n r_out_sum, g_out_sum, b_out_sum, a_out_sum,\n r_in_sum, g_in_sum, b_in_sum, a_in_sum,\n pr, pg, pb, pa, rbs;\n\n var div = radius + radius + 1;\n var w4 = width << 2;\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n\n var stackStart = new BlurStack();\n var stack = stackStart;\n for (i = 1; i < div; i++)\n {\n stack = stack.next = new BlurStack();\n if (i == radiusPlus1) var stackEnd = stack;\n }\n stack.next = stackStart;\n var stackIn = null;\n var stackOut = null;\n\n yw = yi = 0;\n\n var mul_sum = mul_table[radius];\n var shg_sum = shg_table[radius];\n\n for (y = 0; y < height; y++)\n {\n r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\n\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi+1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi+2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi+3]);\n\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n\n stack = stackStart;\n\n for (i = 0; i < radiusPlus1; i++)\n {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n for (i = 1; i < radiusPlus1; i++)\n {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = (pg = pixels[p+1])) * rbs;\n b_sum += (stack.b = (pb = pixels[p+2])) * rbs;\n a_sum += (stack.a = (pa = pixels[p+3])) * rbs;\n\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n\n stack = stack.next;\n }\n\n\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++)\n {\n pixels[yi+3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa != 0)\n {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi+1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi+2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n } else {\n pixels[yi] = pixels[yi+1] = pixels[yi+2] = 0;\n }\n\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n\n r_in_sum += (stackIn.r = pixels[p]);\n g_in_sum += (stackIn.g = pixels[p+1]);\n b_in_sum += (stackIn.b = pixels[p+2]);\n a_in_sum += (stackIn.a = pixels[p+3]);\n\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n\n stackIn = stackIn.next;\n\n r_out_sum += (pr = stackOut.r);\n g_out_sum += (pg = stackOut.g);\n b_out_sum += (pb = stackOut.b);\n a_out_sum += (pa = stackOut.a);\n\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n\n stackOut = stackOut.next;\n\n yi += 4;\n }\n yw += width;\n }\n\n\n for (x = 0; x < width; x++)\n {\n g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\n\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi+1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi+2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi+3]);\n\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n\n stack = stackStart;\n\n for (i = 0; i < radiusPlus1; i++)\n {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n yp = width;\n\n for (i = 1; i <= radius; i++)\n {\n yi = (yp + x) << 2;\n\n r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = (pg = pixels[yi+1])) * rbs;\n b_sum += (stack.b = (pb = pixels[yi+2])) * rbs;\n a_sum += (stack.a = (pa = pixels[yi+3])) * rbs;\n\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n\n stack = stack.next;\n\n if(i < heightMinus1)\n {\n yp += width;\n }\n }\n\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++)\n {\n p = yi << 2;\n pixels[p+3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0)\n {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p+1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p+2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n } else {\n pixels[p] = pixels[p+1] = pixels[p+2] = 0;\n }\n\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n\n p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;\n\n r_sum += (r_in_sum += (stackIn.r = pixels[p]));\n g_sum += (g_in_sum += (stackIn.g = pixels[p+1]));\n b_sum += (b_in_sum += (stackIn.b = pixels[p+2]));\n a_sum += (a_in_sum += (stackIn.a = pixels[p+3]));\n\n stackIn = stackIn.next;\n\n r_out_sum += (pr = stackOut.r);\n g_out_sum += (pg = stackOut.g);\n b_out_sum += (pb = stackOut.b);\n a_out_sum += (pa = stackOut.a);\n\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n\n stackOut = stackOut.next;\n\n yi += width;\n }\n }\n return imageData;\n}\n\nfunction processCanvasRGB(canvas, top_x, top_y, width, height, radius)\n{\n if (isNaN(radius) || radius < 1) return;\n radius |= 0;\n\n var imageData = getImageDataFromCanvas(canvas, top_x, top_y, width, height);\n imageData = processImageDataRGB(imageData, top_x, top_y, width, height, radius);\n\n canvas.getContext('2d').putImageData(imageData, top_x, top_y);\n}\n\nfunction processImageDataRGB(imageData, top_x, top_y, width, height, radius)\n{\n var pixels = imageData.data;\n\n var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum,\n r_out_sum, g_out_sum, b_out_sum,\n r_in_sum, g_in_sum, b_in_sum,\n pr, pg, pb, rbs;\n\n var div = radius + radius + 1;\n var w4 = width << 2;\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n\n var stackStart = new BlurStack();\n var stack = stackStart;\n for (i = 1; i < div; i++)\n {\n stack = stack.next = new BlurStack();\n if (i == radiusPlus1) var stackEnd = stack;\n }\n stack.next = stackStart;\n var stackIn = null;\n var stackOut = null;\n\n yw = yi = 0;\n\n var mul_sum = mul_table[radius];\n var shg_sum = shg_table[radius];\n\n for (y = 0; y < height; y++)\n {\n r_in_sum = g_in_sum = b_in_sum = r_sum = g_sum = b_sum = 0;\n\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi+1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi+2]);\n\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n\n stack = stackStart;\n\n for (i = 0; i < radiusPlus1; i++)\n {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack = stack.next;\n }\n\n for (i = 1; i < radiusPlus1; i++)\n {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = (pg = pixels[p+1])) * rbs;\n b_sum += (stack.b = (pb = pixels[p+2])) * rbs;\n\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n\n stack = stack.next;\n }\n\n\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++)\n {\n pixels[yi] = (r_sum * mul_sum) >> shg_sum;\n pixels[yi+1] = (g_sum * mul_sum) >> shg_sum;\n pixels[yi+2] = (b_sum * mul_sum) >> shg_sum;\n\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n\n r_in_sum += (stackIn.r = pixels[p]);\n g_in_sum += (stackIn.g = pixels[p+1]);\n b_in_sum += (stackIn.b = pixels[p+2]);\n\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n\n stackIn = stackIn.next;\n\n r_out_sum += (pr = stackOut.r);\n g_out_sum += (pg = stackOut.g);\n b_out_sum += (pb = stackOut.b);\n\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n\n stackOut = stackOut.next;\n\n yi += 4;\n }\n yw += width;\n }\n\n\n for (x = 0; x < width; x++)\n {\n g_in_sum = b_in_sum = r_in_sum = g_sum = b_sum = r_sum = 0;\n\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi+1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi+2]);\n\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n\n stack = stackStart;\n\n for (i = 0; i < radiusPlus1; i++)\n {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack = stack.next;\n }\n\n yp = width;\n\n for (i = 1; i <= radius; i++)\n {\n yi = (yp + x) << 2;\n\n r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = (pg = pixels[yi+1])) * rbs;\n b_sum += (stack.b = (pb = pixels[yi+2])) * rbs;\n\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n\n stack = stack.next;\n\n if(i < heightMinus1)\n {\n yp += width;\n }\n }\n\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++)\n {\n p = yi << 2;\n pixels[p] = (r_sum * mul_sum) >> shg_sum;\n pixels[p+1] = (g_sum * mul_sum) >> shg_sum;\n pixels[p+2] = (b_sum * mul_sum) >> shg_sum;\n\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n\n p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;\n\n r_sum += (r_in_sum += (stackIn.r = pixels[p]));\n g_sum += (g_in_sum += (stackIn.g = pixels[p+1]));\n b_sum += (b_in_sum += (stackIn.b = pixels[p+2]));\n\n stackIn = stackIn.next;\n\n r_out_sum += (pr = stackOut.r);\n g_out_sum += (pg = stackOut.g);\n b_out_sum += (pb = stackOut.b);\n\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n\n stackOut = stackOut.next;\n\n yi += width;\n }\n }\n\n return imageData;\n}\n\nfunction BlurStack()\n{\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\n\nmodule.exports = {\n image: processImage,\n canvasRGBA: processCanvasRGBA,\n canvasRGB: processCanvasRGB,\n imageDataRGBA: processImageDataRGBA,\n imageDataRGB: processImageDataRGB\n};\n","/**\n * @file index\n * @author Cuttle Cong\n * @date 2018/3/11\n * @description\n */\nimport StackBlur from './stackblur'\nimport css from './style'\n\nlet style = null\nfunction injectStyle(text) {\n style = style || document.createElement('style')\n style.type = 'text/css'\n style.textContent = text\n ;(document.head || document.getElementsByTagName('head')[0]).appendChild(style)\n}\n\nlet uId = 0\n/**\n *\n * @param elems {Array|String|NodeList}\n */\nexport default function progress(elems, options = {}) {\n if (typeof document === 'undefined') {\n console.error('medium-image-progress only works on browser.')\n return\n }\n\n if (typeof elems === 'string') {\n elems = [...document.querySelectorAll(elems)]\n }\n if (elems instanceof window.NodeList) {\n elems = [...elems]\n }\n if (!Array.isArray(elems)) {\n elems = [elems]\n }\n\n const {\n progressImageUrlGetter = (elem) => {\n return elem.getAttribute('src')\n },\n originImageUrlGetter = (elem) => {\n return elem.getAttribute('data-src')\n },\n widthGetter = elem => elem.getAttribute('width'),\n heightGetter = elem => elem.getAttribute('height'),\n blurEnable = true\n } = options\n\n if (!style) {\n injectStyle(css)\n }\n\n elems.forEach(function (ele) {\n if (!ele.tagName || ele.tagName.toLowerCase() !== 'img') {\n throw new Error('medium-image-progress requires <img/> element, but ' + ele.tagName)\n }\n\n // const wrapper = createElement('div', {\n // 'class': 'medium-image-progressive-container'\n // })\n const pImageUrl = encodeURI(progressImageUrlGetter(ele))\n const oImageUrl = encodeURI(originImageUrlGetter(ele))\n let width = widthGetter(ele)\n let height = heightGetter(ele)\n width = width && parseFloat(width)\n height = height && parseFloat(height)\n let scale = 1\n if (width && height) {\n scale = height / width\n }\n width = !width ? '100%' : width + 'px'\n height = !height ? '0' : height + 'px'\n const parent = ele.parentElement\n\n const id = 'medium-progress-' + uId++\n ele.outerHTML = `\n<div id=${id} class=\"medium-image-progressive-container\" style=\"max-width: ${width}; max-height: ${height}\">\n<div class=\"medium-image-progressive-placeholder\" style=\"padding-bottom: ${(scale * 100) + '%'}\"></div>\n<div class=\"medium-image-progressive\">\n <img class=\"medium-image-progress\" src=\"${pImageUrl}\" style=\"${blurEnable ? 'display: none;' : ''}\"/>\n ${blurEnable ? '<canvas></canvas>' : ''}\n <img class=\"medium-image-origin\" src=\"${oImageUrl}\"/>\n</div>\n</div>`\n\n ele = parent.querySelector('#' + id)\n const progressive = ele.querySelector('.medium-image-progressive')\n const pImg = progressive.querySelector('.medium-image-progress')\n const oImg = progressive.querySelector('.medium-image-origin')\n const canvas = blurEnable && progressive.querySelector('canvas')\n oImg.addEventListener('load', () => {\n progressive.classList.add('image-loaded')\n })\n pImg.addEventListener('load', () => {\n if (blurEnable) {\n // https://github.com/flozz/StackBlur\n // StackBlur.image(sourceImage, targetCanvas, radius, blurAlphaChannel);\n StackBlur.image(pImg, canvas)\n progressive.classList.add('canvas-loaded')\n }\n })\n })\n}\n"],"names":["mul_table","shg_table","getImageDataFromCanvas","canvas","top_x","top_y","width","height","document","getElementById","HTMLCanvasElement","imageData","context","getContext","getImageData","e","Error","processCanvasRGBA","radius","isNaN","processImageDataRGBA","putImageData","x","y","i","p","yp","yi","yw","r_sum","g_sum","b_sum","a_sum","r_out_sum","g_out_sum","b_out_sum","a_out_sum","r_in_sum","g_in_sum","b_in_sum","a_in_sum","pr","pg","pb","pa","rbs","pixels","data","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","next","stackEnd","stackIn","stackOut","mul_sum","shg_sum","r","g","b","a","processCanvasRGB","processImageDataRGB","module","img","blurAlphaChannel","HTMLImageElement","w","naturalWidth","h","naturalHeight","clearRect","drawImage","style","uId","elems","options","querySelectorAll","window","NodeList","Array","isArray","text","progressImageUrlGetter","elem","getAttribute","originImageUrlGetter","widthGetter","heightGetter","blurEnable","css","createElement","type","textContent","head","getElementsByTagName","appendChild","forEach","ele","tagName","toLowerCase","pImageUrl","encodeURI","oImageUrl","parseFloat","scale","parent","parentElement","id","outerHTML","progressive","querySelector","pImg","oImg","addEventListener","classList","add","image","error"],"mappings":"kMAyCA,IAAIA,GACF,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5D,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAGtDC,GACF,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GA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"}