{"version":3,"file":"508.215d590b7bff6cacce80.chunk.js","mappings":"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","sources":["webpack://tweb/webpack/runtime/compat","webpack://tweb/./src/environment/ctx.ts","webpack://tweb/./src/environment/userAgent.ts","webpack://tweb/./src/environment/canUseTransferables.ts","webpack://tweb/./src/environment/imageBitmapSupport.ts","webpack://tweb/./src/lib/rlottie/applyReplacements.ts","webpack://tweb/./src/lib/rlottie/rlottie.worker.ts","webpack://tweb/./src/helpers/blob/readBlobAsText.ts","webpack://tweb/./src/helpers/blob/readBlobAs.ts"],"sourcesContent":["(() => {\n if (typeof __webpack_require__ !== 'undefined') {\n var oldGetScript = __webpack_require__.u;\n var oldLoadScript = __webpack_require__.e;\n var queryMap = new Map();\n var countMap = new Map();\n __webpack_require__.u = function (chunkId) {\n var result = oldGetScript(chunkId);\n return (\n result + (queryMap.has(chunkId) ? '?' + queryMap.get(chunkId) : '')\n );\n };\n __webpack_require__.e = function (chunkId) {\n var result = oldLoadScript(chunkId);\n return result.catch(function (error) {\n var retries = countMap.has(chunkId) ? countMap.get(chunkId) : 999999;\n if (retries < 1) {\n var realSrc = oldGetScript(chunkId);\n error.message =\n 'Loading chunk ' +\n chunkId +\n ' failed after 999999 retries.\\n(' +\n realSrc +\n ')';\n error.request = realSrc;\n throw error;\n }\n return new Promise(function (resolve) {\n setTimeout(function () {\n var retryAttempt = 999999 - retries + 1;\n var retryAttemptString = '&retry-attempt=' + retryAttempt;\n var cacheBust = (function () {\n return Date.now();\n })();\n +retryAttemptString;\n queryMap.set(chunkId, cacheBust);\n countMap.set(chunkId, retries - 1);\n resolve(__webpack_require__.e(chunkId));\n }, 3000);\n });\n });\n };\n }\n})();\n","const ctx = typeof(window) !== 'undefined' ? window : self;\r\n\r\nexport default ctx;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport ctx from './ctx';\r\n\r\nexport const USER_AGENT = navigator ? navigator.userAgent : null;\r\nexport const IS_APPLE = navigator.userAgent.search(/OS X|iPhone|iPad|iOS/i) !== -1;\r\nexport const IS_ANDROID = navigator.userAgent.toLowerCase().indexOf('android') !== -1;\r\nexport const IS_CHROMIUM = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\r\n\r\n// https://stackoverflow.com/a/58065241\r\nexport const IS_APPLE_MOBILE = (/iPad|iPhone|iPod/.test(navigator.platform) ||\r\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\r\n !(ctx as any).MSStream;\r\n\r\nexport const IS_SAFARI = !!('safari' in ctx) || !!(USER_AGENT && (/\\b(iPad|iPhone|iPod)\\b/.test(USER_AGENT) || (!!USER_AGENT.match('Safari') && !USER_AGENT.match('Chrome'))))/* || true */;\r\nexport const IS_FIREFOX = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\r\n\r\nexport const IS_MOBILE_SAFARI = IS_SAFARI && IS_APPLE_MOBILE;\r\n\r\nexport const IS_MOBILE = /* screen.width && screen.width < 480 || */navigator.maxTouchPoints > 0 && navigator.userAgent.search(/iOS|iPhone OS|Android|BlackBerry|BB10|Series ?[64]0|J2ME|MIDP|opera mini|opera mobi|mobi.+Gecko|Windows Phone/i) != -1;\r\n","import {IS_SAFARI} from './userAgent';\r\n\r\n/*\r\n * This is used as a workaround for a memory leak in Safari caused by using Transferable objects to\r\n * transfer data between WebWorkers and the main thread.\r\n * https://github.com/mapbox/mapbox-gl-js/issues/8771\r\n *\r\n * This should be removed once the underlying Safari issue is fixed.\r\n */\r\n\r\nlet CAN_USE_TRANSFERABLES: boolean;\r\nif(!IS_SAFARI) CAN_USE_TRANSFERABLES = true;\r\nelse {\r\n try {\r\n const match = navigator.userAgent.match(/Version\\/(.+?) /);\r\n CAN_USE_TRANSFERABLES = +match[1] >= 14;\r\n } catch(err) {\r\n CAN_USE_TRANSFERABLES = false;\r\n }\r\n}\r\n\r\nexport default CAN_USE_TRANSFERABLES;\r\n","const IS_IMAGE_BITMAP_SUPPORTED = typeof(ImageBitmap) !== 'undefined';\r\n\r\nexport default IS_IMAGE_BITMAP_SUPPORTED;\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\n// https://github.com/telegramdesktop/tdesktop/blob/97d8ee75d51874fcb74a9bfadc79f835c82be54a/Telegram/SourceFiles/chat_helpers/stickers_emoji_pack.cpp#L46\r\nconst COLORREPLACEMENTS = [\r\n [\r\n [0xf77e41, 0xcb7b55],\r\n [0xffb139, 0xf6b689],\r\n [0xffd140, 0xffcda7],\r\n [0xffdf79, 0xffdfc5]\r\n ],\r\n\r\n [\r\n [0xf77e41, 0xa45a38],\r\n [0xffb139, 0xdf986b],\r\n [0xffd140, 0xedb183],\r\n [0xffdf79, 0xf4c3a0]\r\n ],\r\n\r\n [\r\n [0xf77e41, 0x703a17],\r\n [0xffb139, 0xab673d],\r\n [0xffd140, 0xc37f4e],\r\n [0xffdf79, 0xd89667]\r\n ],\r\n\r\n [\r\n [0xf77e41, 0x4a2409],\r\n [0xffb139, 0x7d3e0e],\r\n [0xffd140, 0x965529],\r\n [0xffdf79, 0xa96337]\r\n ],\r\n\r\n [\r\n [0xf77e41, 0x200f0a],\r\n [0xffb139, 0x412924],\r\n [0xffd140, 0x593d37],\r\n [0xffdf79, 0x63453f]\r\n ]\r\n];\r\n\r\nconst convert = (value: number) => {\r\n return Math.round(Math.min(Math.max(value, 0), 1) * 255);\r\n};\r\n\r\ntype LottieShape = {\r\n c: {\r\n k: number[]\r\n },\r\n ty: 'st' | 'fl',\r\n it?: LottieShape[]\r\n};\r\n\r\nexport default function applyReplacements(object: {\r\n layers: Array<{shapes: LottieShape[]}>\r\n}, toneIndex: number) {\r\n const replacements = COLORREPLACEMENTS[Math.max(toneIndex - 1, 0)];\r\n\r\n const applyTo = (smth: LottieShape) => {\r\n const k = smth.c.k;\r\n const color = convert(k[2]) | (convert(k[1]) << 8) | (convert(k[0]) << 16);\r\n\r\n const foundReplacement = replacements.find((p) => p[0] === color);\r\n if(foundReplacement) {\r\n k[0] = ((foundReplacement[1] >> 16) & 255) / 255;\r\n k[1] = ((foundReplacement[1] >> 8) & 255) / 255;\r\n k[2] = (foundReplacement[1] & 255) / 255;\r\n }\r\n\r\n // console.log('foundReplacement!', foundReplacement, color.toString(16), k);\r\n };\r\n\r\n const checkSmth = (smth: LottieShape) => {\r\n switch(smth.ty) {\r\n case 'st':\r\n case 'fl':\r\n applyTo(smth);\r\n break;\r\n }\r\n\r\n if(smth.hasOwnProperty('it')) {\r\n iterateIt(smth.it);\r\n }\r\n };\r\n\r\n const iterateIt = (it: LottieShape['it']) => {\r\n for(const smth of it) {\r\n checkSmth(smth);\r\n }\r\n };\r\n\r\n try {\r\n for(const layer of object.layers) {\r\n if(!layer.shapes) continue;\r\n\r\n for(const shape of layer.shapes) {\r\n if(!shape.it) {\r\n checkSmth(shape);\r\n continue;\r\n }\r\n\r\n iterateIt(shape.it);\r\n }\r\n }\r\n } catch(err) {\r\n console.warn('cant apply replacements', err, object, toneIndex);\r\n }\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport CAN_USE_TRANSFERABLES from '../../environment/canUseTransferables';\r\nimport IS_IMAGE_BITMAP_SUPPORTED from '../../environment/imageBitmapSupport';\r\nimport readBlobAsText from '../../helpers/blob/readBlobAsText';\r\nimport applyReplacements from './applyReplacements';\r\n\r\nimportScripts('rlottie-wasm.js');\r\n// import Module, { allocate, intArrayFromString } from './rlottie-wasm';\r\n\r\nconst _Module = (self as any).Module as any;\r\n\r\nconst DEFAULT_FPS = 60;\r\n\r\ntype LottieHandlePointer = number;\r\n\r\n// throw new Error('test');\r\n\r\nexport class RLottieItem {\r\n private stringOnWasmHeap: number;\r\n private handle: LottieHandlePointer;\r\n private frameCount: number;\r\n private fps: number;\r\n\r\n private dead: boolean;\r\n // private context: OffscreenCanvasRenderingContext2D;\r\n\r\n private imageData: ImageData;\r\n\r\n constructor(\r\n private reqId: number,\r\n private width: number,\r\n private height: number,\r\n private raw?: boolean/* ,\r\n private canvas: OffscreenCanvas */\r\n ) {\r\n }\r\n\r\n public init(json: string, fps: number) {\r\n if(this.dead) {\r\n return;\r\n }\r\n\r\n this.fps = Math.max(1, Math.min(60, fps || DEFAULT_FPS));\r\n\r\n // this.context = canvas.getContext('2d');\r\n /* let frame = 0;\r\n setInterval(() => {\r\n if(frame >= this.frameCount) frame = 0;\r\n let _frame = frame++;\r\n this.render(_frame, null);\r\n }, 1000 / this.fps); */\r\n\r\n try {\r\n this.handle = worker.Api.init();\r\n\r\n // @ts-ignore\r\n this.stringOnWasmHeap = allocate(intArrayFromString(json), 'i8', 0);\r\n\r\n this.frameCount = worker.Api.loadFromData(this.handle, this.stringOnWasmHeap);\r\n\r\n worker.Api.resize(this.handle, this.width, this.height);\r\n\r\n reply(['loaded', this.reqId, this.frameCount, this.fps]);\r\n\r\n if(!this.raw && IS_IMAGE_BITMAP_SUPPORTED) {\r\n this.imageData = new ImageData(this.width, this.height);\r\n }\r\n } catch(e) {\r\n console.error('init RLottieItem error:', e);\r\n reply(['error', this.reqId, e]);\r\n }\r\n }\r\n\r\n public render(frameNo: number, clamped?: Uint8ClampedArray) {\r\n if(this.dead || this.handle === undefined) return;\r\n // return;\r\n\r\n if(this.frameCount < frameNo || frameNo < 0) {\r\n return;\r\n }\r\n\r\n try {\r\n worker.Api.render(this.handle, frameNo);\r\n\r\n const bufferPointer = worker.Api.buffer(this.handle);\r\n\r\n const data = _Module.HEAPU8.subarray(bufferPointer, bufferPointer + (this.width * this.height * 4));\r\n\r\n if(this.imageData) {\r\n this.imageData.data.set(data);\r\n createImageBitmap(this.imageData).then((imageBitmap) => {\r\n reply(['frame', this.reqId, frameNo, imageBitmap], [imageBitmap]);\r\n });\r\n } else {\r\n if(!clamped) {\r\n clamped = new Uint8ClampedArray(data);\r\n } else {\r\n clamped.set(data);\r\n }\r\n\r\n // this.context.putImageData(new ImageData(clamped, this.width, this.height), 0, 0);\r\n\r\n reply(['frame', this.reqId, frameNo, clamped], [clamped.buffer]);\r\n }\r\n } catch(e) {\r\n console.error('Render error:', e);\r\n this.dead = true;\r\n reply(['error', this.reqId, e]);\r\n }\r\n }\r\n\r\n public destroy() {\r\n this.dead = true;\r\n\r\n if(this.handle !== undefined) {\r\n worker.Api.destroy(this.handle);\r\n }\r\n }\r\n}\r\n\r\nclass RLottieWorker {\r\n public Api: {\r\n init: () => LottieHandlePointer,\r\n destroy: (handle: LottieHandlePointer) => void,\r\n resize: (handle: LottieHandlePointer, width: number, height: number) => void,\r\n buffer: (handle: LottieHandlePointer) => number,\r\n render: (handle: LottieHandlePointer, frameNo: number) => void,\r\n loadFromData: (handle: LottieHandlePointer, bufferPointer: number) => number\r\n } = {} as any;\r\n\r\n public initApi() {\r\n this.Api = {\r\n init: _Module.cwrap('lottie_init', '', []),\r\n destroy: _Module.cwrap('lottie_destroy', '', ['number']),\r\n resize: _Module.cwrap('lottie_resize', '', ['number', 'number', 'number']),\r\n buffer: _Module.cwrap('lottie_buffer', 'number', ['number']),\r\n render: _Module.cwrap('lottie_render', '', ['number', 'number']),\r\n loadFromData: _Module.cwrap('lottie_load_from_data', 'number', ['number', 'number'])\r\n };\r\n }\r\n\r\n public init() {\r\n this.initApi();\r\n reply(['ready']);\r\n }\r\n}\r\n\r\nconst worker = new RLottieWorker();\r\n\r\n_Module.onRuntimeInitialized = function() {\r\n worker.init();\r\n};\r\n\r\nconst items: {[reqId: string]: RLottieItem} = {};\r\nconst queryableFunctions = {\r\n loadFromData: function(reqId: number, blob: Blob, width: number, height: number, toneIndex: number, raw: boolean/* , canvas: OffscreenCanvas */) {\r\n const item = items[reqId] = new RLottieItem(reqId, width, height, raw/* , canvas */);\r\n readBlobAsText(blob).then((json) => {\r\n try {\r\n if(typeof(toneIndex) === 'number' && toneIndex >= 1 && toneIndex <= 5) {\r\n /* params.animationData = copy(params.animationData);\r\n this.applyReplacements(params.animationData, toneIndex); */\r\n\r\n const newAnimationData = JSON.parse(json);\r\n applyReplacements(newAnimationData, toneIndex);\r\n json = JSON.stringify(newAnimationData);\r\n }\r\n\r\n // ! WARNING, с этой проверкой не все стикеры работают, например - ДУРКА\r\n /* if(!/\"tgs\":\\s*?1./.test(jsString)) {\r\n throw new Error('Invalid file');\r\n } */\r\n\r\n /* let perf = performance.now();\r\n let json = JSON.parse(jsString);\r\n console.log('sticker decode:', performance.now() - perf); */\r\n\r\n const match = json.match(/\"fr\":\\s*?(\\d+?),/);\r\n const frameRate = +match?.[1] || DEFAULT_FPS;\r\n\r\n // console.log('Rendering sticker:', reqId, frameRate, 'now rendered:', Object.keys(items).length);\r\n\r\n item.init(json, frameRate);\r\n } catch(err) {\r\n console.error('Invalid file for sticker:', json);\r\n reply(['error', reqId, err]);\r\n }\r\n });\r\n },\r\n destroy: function(reqId: number) {\r\n const item = items[reqId];\r\n if(!item) {\r\n return;\r\n }\r\n\r\n item.destroy();\r\n delete items[reqId];\r\n },\r\n renderFrame: function(reqId: number, frameNo: number, clamped?: Uint8ClampedArray) {\r\n // console.log('worker renderFrame', reqId, frameNo, clamped);\r\n items[reqId].render(frameNo, clamped);\r\n }\r\n};\r\n\r\nfunction reply(args: any[], transfer?: Transferable[]) {\r\n postMessage({queryMethodListener: args.shift(), queryMethodArguments: args}, CAN_USE_TRANSFERABLES ? transfer : undefined);\r\n}\r\n\r\nonmessage = function(e) {\r\n // @ts-ignore\r\n queryableFunctions[e.data.queryMethod].apply(queryableFunctions, e.data.queryMethodArguments);\r\n};\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport readBlobAs from './readBlobAs';\r\n\r\nexport default function readBlobAsText(blob: Blob) {\r\n return readBlobAs(blob, 'readAsText');\r\n}\r\n","/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\n// import { IS_WEB_WORKER } from \"../context\";\r\n\r\n// const id = IS_WEB_WORKER ? Math.random() * 0x1000 | 0 : 0;\r\nexport default function readBlobAs(blob: Blob, method: 'readAsText'): Promise;\r\nexport default function readBlobAs(blob: Blob, method: 'readAsDataURL'): Promise;\r\nexport default function readBlobAs(blob: Blob, method: 'readAsArrayBuffer'): Promise;\r\nexport default function readBlobAs(blob: Blob, method: 'readAsArrayBuffer' | 'readAsText' | 'readAsDataURL'): Promise {\r\n // const perf = performance.now();\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n reader.addEventListener('loadend', (e) => {\r\n // console.log(`readBlobAs [${id}] ${method} time ${performance.now() - perf}`);\r\n resolve(e.target.result);\r\n });\r\n reader[method](blob);\r\n });\r\n}\r\n"],"names":["__webpack_require__","oldGetScript","u","oldLoadScript","e","queryMap","Map","countMap","chunkId","has","get","catch","error","retries","realSrc","message","request","Promise","resolve","setTimeout","cacheBust","Date","now","set","window","self","USER_AGENT","navigator","userAgent","IS_SAFARI","search","toLowerCase","indexOf","test","vendor","platform","maxTouchPoints","match","CAN_USE_TRANSFERABLES","err","COLORREPLACEMENTS","convert","value","Math","round","min","max","importScripts","_Module","Module","RLottieItem","constructor","reqId","width","height","raw","init","json","fps","this","dead","handle","worker","Api","stringOnWasmHeap","allocate","intArrayFromString","frameCount","loadFromData","resize","reply","imageData","ImageData","console","render","frameNo","clamped","undefined","bufferPointer","buffer","data","HEAPU8","subarray","createImageBitmap","then","imageBitmap","Uint8ClampedArray","destroy","initApi","cwrap","onRuntimeInitialized","items","queryableFunctions","blob","toneIndex","item","method","reader","FileReader","addEventListener","target","result","readBlobAs","readBlobAsText","newAnimationData","JSON","parse","object","replacements","checkSmth","smth","ty","k","c","color","foundReplacement","find","p","applyTo","hasOwnProperty","iterateIt","it","layer","layers","shapes","shape","warn","applyReplacements","stringify","frameRate","renderFrame","args","transfer","postMessage","queryMethodListener","shift","queryMethodArguments","onmessage","queryMethod","apply"],"sourceRoot":""}