{"code":"function iter$__(a){ let v; return a ? ((v=a.toIterable) ? v.call(a) : a) : a; };;\nfunction defineName$__(cls,name){\n\tObject.defineProperty(cls,\"name\",{value:name,configurable:true});\n};;\nfunction decorate$__(decorators,target,key,desc){\n\tvar c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n\tif (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n\telse for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n\treturn c > 3 && r && Object.defineProperty(target, key, r), r;\n};;\nfunction inheritClass$__(cls){\n\tObject.getPrototypeOf(cls.prototype).constructor?.inherited?.(cls);\n};\nimport {αlazy as imba_αlazy, use_hooks as imba_use_hooks, hooks as imba_hooks, get_document as imba_get_document} from 'imba';\n(imba_use_hooks());\nconst $__initor__$ = Symbol.for('#__initor__'), $__inited__$ = Symbol.for('#__inited__'), $__hooks__$ = Symbol.for('#__hooks__'), $w$ = Symbol.for('#w'), $h$ = Symbol.for('#h');\nvar $1 = Symbol();\n\n/*body*/\nimport {Index} from '../core/iterable';\nimport sharp from '../util/sharp';\nimport downscale from '../util/downscale.js';\n\nimport * as mp from '../msgpack';\nimport * as os from '../util/os';\n\nconst renderer = false && new class {\n\t\n\tconstructor(){\n\t\t\n\t\tthis.outel = imba_get_document().createElement(\"canvas\");\n\t\tthis.outel.width = 16;\n\t\tthis.outel.height = 16;\n\t\tthis.scale = 4;\n\t\tthis.ctxout = this.outel.getContext('2d');\n\t}\n\t\n\tsize(w,h,scale = 4){\n\t\t\n\t\tif (this[$w$] != w || this[$h$] != h) {\n\t\t\t\n\t\t\tthis.canvas = imba_get_document().createElement(\"canvas\");\n\t\t\tthis.canvas.width = this[$w$] = w;\n\t\t\tthis.canvas.height = this[$h$] = h;\n\t\t\tthis.ctx = this.canvas.getContext('2d');\n\t\t};\n\t\tscale = 4;\n\t\treturn this;\n\t}\n\t\n\trender(){\n\t\t\n\t\tthis.ctxout.drawImage(this.canvas,0,0,this[$w$],this[$h$],0,0,this[$w$] * this.scale,this[$h$] * this.scale);\n\t\treturn this.outel.toDataURL();\n\t}\n};\n\n/*\nThis should be called stream, not blob? Or just binary\nShould just be a value, no?\n*/\n\n\nexport class OPImage extends OPAsset {\n\tconstructor(){\n\t\tsuper(...arguments);\n\t\tthis[$__initor__$]===$1 && (this[$__hooks__$]&&this[$__hooks__$].inited(this),this[$__inited__$] && this[$__inited__$]());\n\t}\n\tget width(){\n\t\treturn this.params[4];\n\t}\n\tget height(){\n\t\treturn this.params[5];\n\t}\n\tget mask(){\n\t\treturn this.params[6];\n\t}\n\tget samples(){\n\t\treturn this.params[7];\n\t}\n\t\n\tget aspectRatio(){\n\t\treturn this.width / this.height;\n\t}\n\t\n\tstatic async _for(blob,parameters = {}){\n\t\tvar $2, $3, $4;\n\t\t\n\t\tif (!(blob)) { return };\n\t\t\n\t\tif (false) {};\n\t\t\n\t\t\n\t\t\n\t\tlet meta = await sharp(blob).metadata();\n\t\tlet hash = os.hash(blob);\n\t\t\n\t\t((($2 = meta.exif),delete meta.exif, $2));\n\t\t((($3 = meta.icc),delete meta.icc, $3));\n\t\t((($4 = meta.xmp),delete meta.xmp, $4));\n\t\tmeta.hash = hash;\n\t\t\n\t\tlet mask = 0;\n\t\tif (meta.hasAlpha) { mask |= 1 };\n\t\t\n\t\tlet mini = await sharp(blob).resize(4,4,{fit: sharp.fit.fill}).removeAlpha().raw().toBuffer({resolveWithObject: true});\n\t\t\n\t\tlet params = [\n\t\t\thash,\n\t\t\tparameters.mime,\n\t\t\tmeta.size,\n\t\t\tmeta.width,\n\t\t\tmeta.height,\n\t\t\tmask,\n\t\t\tmini.data\n\t\t];\n\t\t\n\t\treturn this.get(this.encodeKey(params));\n\t\t;\n\t}\n\t\n\tasync saveToDisk(blob){\n\t\t\n\t\tawait os.fs.mkdir(this.baseDir,{recursive: true});\n\t\treturn await sharp(blob).webp({nearLossless: true}).toFile(this.originalPath);\n\t}\n\t\n\tget extension(){\n\t\t\n\t\treturn \"webp\";\n\t}\n\t\n\tget placeholder(){\n\t\t\n\t\treturn (\"\" + (false ? true : '') + `/op/fs/` + this.id + `.` + this.extension + `.mini.` + this.extension);\n\t}\n\t\n\tget params(){\n\t\t\n\t\treturn OPKey.decode(this.id)?.payload;\n\t}\n\t\n\tget minisize(){\n\t\t\n\t\treturn this.samples ? Math.sqrt(this.samples.length / 3) : 0;\n\t}\n\t\n\tget minigrid(){\n\t\t\n\t\tif (!(this.samples)) { return };\n\t\tlet i = 0;\n\t\tlet buf = this.samples;\n\t\tlet l = buf.length;\n\t\tlet out = '';\n\t\twhile (i < l){\n\t\t\t\n\t\t\tlet r = buf[i++];\n\t\t\tlet g = buf[i++];\n\t\t\tlet b = buf[i++];\n\t\t\tout += (\"\");\n\t\t};\n\t\treturn (\"