tweb/public/rlottie.worker.6777ef401e7048467332.bundle.worker.js.map
morethanwords 7bcd9d8b23 Build
2021-05-14 07:24:30 +04:00

1 line
15 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/lib/rlottie/rlottie.worker.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","importScripts","_Module","self","Module","RLottieItem","reqId","jsString","width","height","fps","stringOnWasmHeap","handle","frameCount","dead","this","Math","max","min","init","reply","worker","Api","allocate","intArrayFromString","loadFromData","resize","e","console","error","frameNo","clamped","render","bufferPointer","buffer","data","HEAPU8","subarray","set","Uint8ClampedArray","destroy","cwrap","initApi","onRuntimeInitialized","items","queryableFunctions","match","frameRate","renderFrame","_isSafari","isSafari","scope","userAgent","navigator","safari","test","args","arguments","length","TypeError","Array","slice","postMessage","transfer","ArrayBuffer","push","onmessage","oEvent","queryMethod","apply","queryMethodArguments"],"mappings":"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","file":"rlottie.worker.6777ef401e7048467332.bundle.worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/*\n * https://github.com/morethanwords/tweb\n * Copyright (C) 2019-2021 Eduard Kuzmenko\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\n */\n\nimportScripts('rlottie-wasm.js');\n//import Module, { allocate, intArrayFromString } from './rlottie-wasm';\n\nconst _Module = (self as any).Module as any;\n\nconst DEFAULT_FPS = 60;\n\nexport class RLottieItem {\n private stringOnWasmHeap: any = null;\n private handle: any = null;\n private frameCount = 0;\n\n private dead = false;\n //private context: OffscreenCanvasRenderingContext2D;\n\n constructor(private reqId: number, jsString: string, private width: number, private height: number, private fps: number/* , private canvas: OffscreenCanvas */) {\n this.fps = Math.max(1, Math.min(60, fps || DEFAULT_FPS));\n\n //this.context = canvas.getContext('2d');\n\n this.init(jsString);\n\n reply('loaded', this.reqId, this.frameCount, this.fps);\n\n /* let frame = 0;\n setInterval(() => {\n if(frame >= this.frameCount) frame = 0;\n let _frame = frame++;\n this.render(_frame, null);\n }, 1000 / this.fps); */\n }\n\n private init(jsString: string) {\n try {\n this.handle = worker.Api.init();\n \n // @ts-ignore\n this.stringOnWasmHeap = allocate(intArrayFromString(jsString), 'i8', 0);\n \n this.frameCount = worker.Api.loadFromData(this.handle, this.stringOnWasmHeap);\n \n worker.Api.resize(this.handle, this.width, this.height);\n } catch(e) {\n console.error('init RLottieItem error:', e);\n reply('error', this.reqId, e);\n }\n }\n\n public render(frameNo: number, clamped: Uint8ClampedArray) {\n if(this.dead) return;\n //return;\n \n if(this.frameCount < frameNo || frameNo < 0) {\n return;\n }\n \n try {\n worker.Api.render(this.handle, frameNo);\n \n var bufferPointer = worker.Api.buffer(this.handle);\n \n var data = _Module.HEAPU8.subarray(bufferPointer, bufferPointer + (this.width * this.height * 4));\n \n if(!clamped) {\n clamped = new Uint8ClampedArray(data);\n } else {\n clamped.set(data);\n }\n\n //this.context.putImageData(new ImageData(clamped, this.width, this.height), 0, 0);\n \n reply('frame', this.reqId, frameNo, clamped);\n } catch(e) {\n console.error('Render error:', e);\n this.dead = true;\n reply('error', this.reqId, e);\n }\n }\n\n public destroy() {\n this.dead = true;\n\n worker.Api.destroy(this.handle);\n }\n}\n\nclass RLottieWorker {\n public Api: any = {};\n\n public initApi() {\n this.Api = {\n init: _Module.cwrap('lottie_init', '', []),\n destroy: _Module.cwrap('lottie_destroy', '', ['number']),\n resize: _Module.cwrap('lottie_resize', '', ['number', 'number', 'number']),\n buffer: _Module.cwrap('lottie_buffer', 'number', ['number']),\n render: _Module.cwrap('lottie_render', '', ['number', 'number']),\n loadFromData: _Module.cwrap('lottie_load_from_data', 'number', ['number', 'number']),\n };\n }\n\n public init() {\n this.initApi();\n reply('ready');\n }\n}\n\nconst worker = new RLottieWorker();\n\n_Module.onRuntimeInitialized = function() {\n worker.init();\n};\n\nconst items: {[reqId: string]: RLottieItem} = {};\nconst queryableFunctions = {\n loadFromData: function(reqId: number, jsString: string, width: number, height: number/* , canvas: OffscreenCanvas */) {\n try {\n // ! WARNING, с этой проверкой не все стикеры работают, например - ДУРКА\n /* if(!/\"tgs\":\\s*?1./.test(jsString)) {\n throw new Error('Invalid file');\n } */\n\n /* let perf = performance.now();\n let json = JSON.parse(jsString);\n console.log('sticker decode:', performance.now() - perf); */\n\n const match = jsString.match(/\"fr\":\\s*?(\\d+?),/);\n const frameRate = +match?.[1] || DEFAULT_FPS;\n\n //console.log('Rendering sticker:', reqId, frameRate, 'now rendered:', Object.keys(items).length);\n\n items[reqId] = new RLottieItem(reqId, jsString, width, height, frameRate/* , canvas */);\n } catch(e) {\n console.error('Invalid file for sticker:', jsString);\n reply('error', reqId, e);\n }\n },\n destroy: function(reqId: number) {\n if(!items.hasOwnProperty(reqId)) {\n return;\n }\n\n items[reqId].destroy();\n delete items[reqId];\n },\n renderFrame: function(reqId: number, frameNo: number, clamped: Uint8ClampedArray) {\n //console.log('worker renderFrame', reqId, frameNo, clamped);\n items[reqId].render(frameNo, clamped);\n }\n};\n\nfunction defaultReply(message: any) {\n // your default PUBLIC function executed only when main page calls the queryableWorker.postMessage() method directly\n // do something\n}\n\n/**\n * Returns true when run in WebKit derived browsers.\n * This is used as a workaround for a memory leak in Safari caused by using Transferable objects to\n * transfer data between WebWorkers and the main thread.\n * https://github.com/mapbox/mapbox-gl-js/issues/8771\n *\n * This should be removed once the underlying Safari issue is fixed.\n *\n * @private\n * @param scope {WindowOrWorkerGlobalScope} Since this function is used both on the main thread and WebWorker context,\n * let the calling scope pass in the global scope object.\n * @returns {boolean}\n */\nlet _isSafari: boolean = null;\nfunction isSafari(scope: any) {\n if(_isSafari === null) {\n const userAgent = scope.navigator ? scope.navigator.userAgent : null;\n _isSafari = !!scope.safari ||\n !!(userAgent && (/\\b(iPad|iPhone|iPod)\\b/.test(userAgent) || (!!userAgent.match('Safari') && !userAgent.match('Chrome'))));\n }\n return _isSafari;\n}\n\nfunction reply(...args: any[]) {\n if(arguments.length < 1) { \n throw new TypeError('reply - not enough arguments'); \n }\n\n //if(arguments[0] === 'frame') return;\n\n var args = Array.prototype.slice.call(arguments, 1);\n if(isSafari(self)) {\n postMessage({ 'queryMethodListener': arguments[0], 'queryMethodArguments': args });\n } else {\n var transfer = [];\n for(var i = 0; i < args.length; i++) {\n if(args[i] instanceof ArrayBuffer) {\n transfer.push(args[i]);\n }\n \n if(args[i].buffer && args[i].buffer instanceof ArrayBuffer) {\n transfer.push(args[i].buffer);\n //args[i] = args[i].buffer;\n }\n }\n\n postMessage({ 'queryMethodListener': arguments[0], 'queryMethodArguments': args }, transfer);\n }\n\n //postMessage({ 'queryMethodListener': arguments[0], 'queryMethodArguments': Array.prototype.slice.call(arguments, 1) });\n //console.error(transfer, args);\n}\n\nonmessage = function(oEvent) {\n if(oEvent.data instanceof Object && oEvent.data.hasOwnProperty('queryMethod') && oEvent.data.hasOwnProperty('queryMethodArguments')) {\n // @ts-ignore\n queryableFunctions[oEvent.data.queryMethod].apply(self, oEvent.data.queryMethodArguments);\n } else {\n defaultReply(oEvent.data);\n }\n};\n"],"sourceRoot":""}