blurhash.worker.js.map (13318B)
1 {"version":3,"file":"bundles/12c8185ea2689492c07b/blurhash.worker.js","mappings":"mBAAA,MACA,uBAAAA,oBAAA,CACA,IAAAC,EAAAD,oBAAAE,EACAC,EAAAH,oBAAAI,EACAC,EAAA,GACAC,EAAA,GAIAN,oBAAAE,EAAA,SAAAK,GAEA,OADAN,EAAAM,IAGAF,EAAAG,eAAAD,GAAA,IAAAF,EAAAE,GAAA,GAEA,EACAP,oBAAAI,EAAA,SAAAG,GAEA,OADAJ,EAAAI,GACAE,MAAA,SAAAC,GACA,IAAAC,EAAAL,EAAAE,eAAAD,GAAAD,EAAAC,GAAA,EACA,GAAAI,EAAA,GACA,IAAAC,EAAAX,EAAAM,GAQA,MAPAG,EAAAG,QACA,iBACAN,EACA,8BACAK,EACA,IACAF,EAAAI,QAAAF,EACAF,CACA,CACA,WAAAK,QAAA,SAAAC,GAEAC,WAAA,WACA,IACAC,EAAAC,KAAAC,MAEAf,EAAAE,GAAAW,EACAZ,EAAAC,GAAAI,EAAA,EACAK,EAAAhB,oBAAAI,EAAAG,GACA,EAjCA,IAkCA,EACA,EACA,CACA,CACC,EA7CD,GCAA,IAAMc,EAAkB,CACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAaWC,EAAW,CAACC,EAAWnB,KAClC,IAAIoB,EAAS,GACb,QAASC,EAAI,EAAGA,GAAKrB,EAAQqB,IAAK,CAChC,IAAIC,EAASC,KAAKC,MAAML,GAAKI,KAAKE,IAAI,GAAIzB,EAASqB,GAAM,GACzDD,GAAUH,EAAgBM,KAAKC,MAAMF,GACvC,CACA,OAAOF,GCtGIM,EAA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","sources":["webpack://element-web/webpack/runtime/compat","webpack://element-web/../node_modules/.pnpm/blurhash@2.0.5/node_modules/blurhash/src/base83.ts","webpack://element-web/../node_modules/.pnpm/blurhash@2.0.5/node_modules/blurhash/src/utils.ts","webpack://element-web/../node_modules/.pnpm/blurhash@2.0.5/node_modules/blurhash/src/error.ts","webpack://element-web/../node_modules/.pnpm/blurhash@2.0.5/node_modules/blurhash/src/encode.ts","webpack://element-web/./src/workers/blurhash.worker.ts"],"sourcesContent":["(() => {\n if (typeof __webpack_require__ !== 'undefined') {\n var oldGetScript = __webpack_require__.u;\n var oldLoadScript = __webpack_require__.e;\n var queryMap = {};\n var countMap = {};\n var getRetryDelay = function () {\n return 500;\n };\n __webpack_require__.u = function (chunkId) {\n var result = oldGetScript(chunkId);\n return (\n result +\n (queryMap.hasOwnProperty(chunkId) ? '?' + queryMap[chunkId] : '')\n );\n };\n __webpack_require__.e = function (chunkId) {\n var result = oldLoadScript(chunkId);\n return result.catch(function (error) {\n var retries = countMap.hasOwnProperty(chunkId) ? countMap[chunkId] : 3;\n if (retries < 1) {\n var realSrc = oldGetScript(chunkId);\n error.message =\n 'Loading chunk ' +\n chunkId +\n ' failed after 3 retries.\\n(' +\n realSrc +\n ')';\n error.request = realSrc;\n throw error;\n }\n return new Promise(function (resolve) {\n var retryAttempt = 3 - retries + 1;\n setTimeout(function () {\n var retryAttemptString = '&retry-attempt=' + retryAttempt;\n var cacheBust = (() => Date.now())();\n +retryAttemptString;\n queryMap[chunkId] = cacheBust;\n countMap[chunkId] = retries - 1;\n resolve(__webpack_require__.e(chunkId));\n }, getRetryDelay(retryAttempt));\n });\n });\n };\n }\n})();\n","const digitCharacters = [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"#\",\n \"$\",\n \"%\",\n \"*\",\n \"+\",\n \",\",\n \"-\",\n \".\",\n \":\",\n \";\",\n \"=\",\n \"?\",\n \"@\",\n \"[\",\n \"]\",\n \"^\",\n \"_\",\n \"{\",\n \"|\",\n \"}\",\n \"~\",\n];\n\nexport const decode83 = (str: String) => {\n let value = 0;\n for (let i = 0; i < str.length; i++) {\n const c = str[i];\n const digit = digitCharacters.indexOf(c);\n value = value * 83 + digit;\n }\n return value;\n};\n\nexport const encode83 = (n: number, length: number): string => {\n var result = \"\";\n for (let i = 1; i <= length; i++) {\n let digit = (Math.floor(n) / Math.pow(83, length - i)) % 83;\n result += digitCharacters[Math.floor(digit)];\n }\n return result;\n};\n","export const sRGBToLinear = (value: number) => {\n let v = value / 255;\n if (v <= 0.04045) {\n return v / 12.92;\n } else {\n return Math.pow((v + 0.055) / 1.055, 2.4);\n }\n};\n\nexport const linearTosRGB = (value: number) => {\n let v = Math.max(0, Math.min(1, value));\n if (v <= 0.0031308) {\n return Math.trunc(v * 12.92 * 255 + 0.5);\n } else {\n return Math.trunc((1.055 * Math.pow(v, 1 / 2.4) - 0.055) * 255 + 0.5);\n }\n};\n\nexport const sign = (n: number) => (n < 0 ? -1 : 1);\n\nexport const signPow = (val: number, exp: number) =>\n sign(val) * Math.pow(Math.abs(val), exp);\n","export class ValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n this.message = message;\n }\n}\n","import { encode83 } from \"./base83\";\nimport { sRGBToLinear, signPow, linearTosRGB } from \"./utils\";\nimport { ValidationError } from \"./error\";\n\ntype NumberTriplet = [number, number, number];\n\nconst bytesPerPixel = 4;\n\nconst multiplyBasisFunction = (\n pixels: Uint8ClampedArray,\n width: number,\n height: number,\n basisFunction: (i: number, j: number) => number\n): NumberTriplet => {\n let r = 0;\n let g = 0;\n let b = 0;\n const bytesPerRow = width * bytesPerPixel;\n\n for (let x = 0; x < width; x++) {\n const bytesPerPixelX = bytesPerPixel * x;\n\n for (let y = 0; y < height; y++) {\n const basePixelIndex = bytesPerPixelX + y * bytesPerRow;\n const basis = basisFunction(x, y);\n r +=\n basis * sRGBToLinear(pixels[basePixelIndex]);\n g +=\n basis * sRGBToLinear(pixels[basePixelIndex + 1]);\n b +=\n basis * sRGBToLinear(pixels[basePixelIndex + 2]);\n }\n }\n\n let scale = 1 / (width * height);\n\n return [r * scale, g * scale, b * scale];\n};\n\nconst encodeDC = (value: NumberTriplet): number => {\n const roundedR = linearTosRGB(value[0]);\n const roundedG = linearTosRGB(value[1]);\n const roundedB = linearTosRGB(value[2]);\n return (roundedR << 16) + (roundedG << 8) + roundedB;\n};\n\nconst encodeAC = (value: NumberTriplet, maximumValue: number): number => {\n let quantR = Math.floor(\n Math.max(\n 0,\n Math.min(18, Math.floor(signPow(value[0] / maximumValue, 0.5) * 9 + 9.5))\n )\n );\n let quantG = Math.floor(\n Math.max(\n 0,\n Math.min(18, Math.floor(signPow(value[1] / maximumValue, 0.5) * 9 + 9.5))\n )\n );\n let quantB = Math.floor(\n Math.max(\n 0,\n Math.min(18, Math.floor(signPow(value[2] / maximumValue, 0.5) * 9 + 9.5))\n )\n );\n\n return quantR * 19 * 19 + quantG * 19 + quantB;\n};\n\nconst encode = (\n pixels: Uint8ClampedArray,\n width: number,\n height: number,\n componentX: number,\n componentY: number\n): string => {\n if (componentX < 1 || componentX > 9 || componentY < 1 || componentY > 9) {\n throw new ValidationError(\"BlurHash must have between 1 and 9 components\");\n }\n if (width * height * 4 !== pixels.length) {\n throw new ValidationError(\"Width and height must match the pixels array\");\n }\n\n let factors: Array<[number, number, number]> = [];\n for (let y = 0; y < componentY; y++) {\n for (let x = 0; x < componentX; x++) {\n const normalisation = x == 0 && y == 0 ? 1 : 2;\n const factor = multiplyBasisFunction(\n pixels,\n width,\n height,\n (i: number, j: number) =>\n normalisation *\n Math.cos((Math.PI * x * i) / width) *\n Math.cos((Math.PI * y * j) / height)\n );\n factors.push(factor);\n }\n }\n\n const dc = factors[0];\n const ac = factors.slice(1);\n\n let hash = \"\";\n\n let sizeFlag = componentX - 1 + (componentY - 1) * 9;\n hash += encode83(sizeFlag, 1);\n\n let maximumValue: number;\n if (ac.length > 0) {\n let actualMaximumValue = Math.max(...ac.map((val) => Math.max(...val)));\n let quantisedMaximumValue = Math.floor(\n Math.max(0, Math.min(82, Math.floor(actualMaximumValue * 166 - 0.5)))\n );\n maximumValue = (quantisedMaximumValue + 1) / 166;\n hash += encode83(quantisedMaximumValue, 1);\n } else {\n maximumValue = 1;\n hash += encode83(0, 1);\n }\n\n hash += encode83(encodeDC(dc), 4);\n\n ac.forEach((factor) => {\n hash += encode83(encodeAC(factor, maximumValue), 2);\n });\n\n return hash;\n};\n\nexport default encode;\n","/*\nCopyright 2024 New Vector Ltd.\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nSPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial\nPlease see LICENSE files in the repository root for full details.\n*/\n\nimport { encode } from \"blurhash\";\n\nimport { type WorkerPayload } from \"./worker\";\n\nconst ctx: Worker = self as any;\n\nexport interface Request {\n imageData: ImageData;\n}\n\nexport interface Response {\n blurhash: string;\n}\n\nctx.addEventListener(\"message\", (event: MessageEvent<Request & WorkerPayload>): void => {\n const { seq, imageData } = event.data;\n const blurhash = encode(\n imageData.data,\n imageData.width,\n imageData.height,\n // use 4 components on the longer dimension, if square then both\n imageData.width >= imageData.height ? 4 : 3,\n imageData.height >= imageData.width ? 4 : 3,\n );\n\n ctx.postMessage({ seq, blurhash });\n});\n"],"names":["__webpack_require__","oldGetScript","u","oldLoadScript","e","queryMap","countMap","chunkId","hasOwnProperty","catch","error","retries","realSrc","message","request","Promise","resolve","setTimeout","cacheBust","Date","now","q","p","t","r","n","l","Math","floor","pow","f","h","max","min","trunc","M","F","abs","d","Error","constructor","super","this","name","D","m","b","g","c","s","o","a","i","S","length","y","B","R","cos","PI","push","slice","map","$","forEach","H","ctx","self","addEventListener","event","seq","imageData","data","blurhash","encode","width","height","postMessage"],"sourceRoot":""}