UNPKG

vitessce

Version:

This package is the main `vitessce` package on NPM. It exports the `<Vitessce/>` from `@vitessce/all` for backwards compatibility.

931 lines (930 loc) 42.3 kB
import { i as te } from "./pako.esm.4b234125.mjs"; import { B as se, L as le, a as re } from "./index.a9498574.mjs"; import "react"; import "react-dom"; var ie = { exports: {} }; (function($) { /* Copyright 2015-2021 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */ (function() { var Y = function() { var F = {}; F.defaultNoDataValue = -34027999387901484e22, F.decode = function(r, o) { o = o || {}; var a = o.encodedMaskData || o.encodedMaskData === null, i = t(r, o.inputOffset || 0, a), h = o.noDataValue !== null ? o.noDataValue : F.defaultNoDataValue, n = A( i, o.pixelType || Float32Array, o.encodedMaskData, h, o.returnMask ), f = { width: i.width, height: i.height, pixelData: n.resultPixels, minValue: n.minValue, maxValue: i.pixels.maxValue, noDataValue: h }; return n.resultMask && (f.maskData = n.resultMask), o.returnEncodedMask && i.mask && (f.encodedMaskData = i.mask.bitset ? i.mask.bitset : null), o.returnFileInfo && (f.fileInfo = X(i), o.computeUsedBitDepths && (f.fileInfo.bitDepths = R(i))), f; }; var A = function(r, o, a, i, h) { var n = 0, f = r.pixels.numBlocksX, v = r.pixels.numBlocksY, u = Math.floor(r.width / f), m = Math.floor(r.height / v), g = 2 * r.maxZError, l = Number.MAX_VALUE, s; a = a || (r.mask ? r.mask.bitset : null); var w, k; w = new o(r.width * r.height), h && a && (k = new Uint8Array(r.width * r.height)); for (var D = new Float32Array(u * m), d, y, x = 0; x <= v; x++) { var L = x !== v ? m : r.height % v; if (L !== 0) for (var p = 0; p <= f; p++) { var c = p !== f ? u : r.width % f; if (c !== 0) { var U = x * r.width * m + p * u, I = r.width - c, M = r.pixels.blocks[n], T, V, S; M.encoding < 2 ? (M.encoding === 0 ? T = M.rawData : (e(M.stuffedData, M.bitsPerPixel, M.numValidPixels, M.offset, g, D, r.pixels.maxValue), T = D), V = 0) : M.encoding === 2 ? S = 0 : S = M.offset; var B; if (a) for (y = 0; y < L; y++) { for (U & 7 && (B = a[U >> 3], B <<= U & 7), d = 0; d < c; d++) U & 7 || (B = a[U >> 3]), B & 128 ? (k && (k[U] = 1), s = M.encoding < 2 ? T[V++] : S, l = l > s ? s : l, w[U++] = s) : (k && (k[U] = 0), w[U++] = i), B <<= 1; U += I; } else if (M.encoding < 2) for (y = 0; y < L; y++) { for (d = 0; d < c; d++) s = T[V++], l = l > s ? s : l, w[U++] = s; U += I; } else for (l = l > S ? S : l, y = 0; y < L; y++) { for (d = 0; d < c; d++) w[U++] = S; U += I; } if (M.encoding === 1 && V !== M.numValidPixels) throw "Block and Mask do not match"; n++; } } } return { resultPixels: w, resultMask: k, minValue: l }; }, X = function(r) { return { fileIdentifierString: r.fileIdentifierString, fileVersion: r.fileVersion, imageType: r.imageType, height: r.height, width: r.width, maxZError: r.maxZError, eofOffset: r.eofOffset, mask: r.mask ? { numBlocksX: r.mask.numBlocksX, numBlocksY: r.mask.numBlocksY, numBytes: r.mask.numBytes, maxValue: r.mask.maxValue } : null, pixels: { numBlocksX: r.pixels.numBlocksX, numBlocksY: r.pixels.numBlocksY, numBytes: r.pixels.numBytes, maxValue: r.pixels.maxValue, noDataValue: r.noDataValue } }; }, R = function(r) { for (var o = r.pixels.numBlocksX * r.pixels.numBlocksY, a = {}, i = 0; i < o; i++) { var h = r.pixels.blocks[i]; h.encoding === 0 ? a.float32 = !0 : h.encoding === 1 ? a[h.bitsPerPixel] = !0 : a[0] = !0; } return Object.keys(a); }, t = function(r, o, a) { var i = {}, h = new Uint8Array(r, o, 10); if (i.fileIdentifierString = String.fromCharCode.apply(null, h), i.fileIdentifierString.trim() !== "CntZImage") throw "Unexpected file identifier string: " + i.fileIdentifierString; o += 10; var n = new DataView(r, o, 24); if (i.fileVersion = n.getInt32(0, !0), i.imageType = n.getInt32(4, !0), i.height = n.getUint32(8, !0), i.width = n.getUint32(12, !0), i.maxZError = n.getFloat64(16, !0), o += 24, !a) if (n = new DataView(r, o, 16), i.mask = {}, i.mask.numBlocksY = n.getUint32(0, !0), i.mask.numBlocksX = n.getUint32(4, !0), i.mask.numBytes = n.getUint32(8, !0), i.mask.maxValue = n.getFloat32(12, !0), o += 16, i.mask.numBytes > 0) { var f = new Uint8Array(Math.ceil(i.width * i.height / 8)); n = new DataView(r, o, i.mask.numBytes); var v = n.getInt16(0, !0), u = 2, m = 0; do { if (v > 0) for (; v--; ) f[m++] = n.getUint8(u++); else { var g = n.getUint8(u++); for (v = -v; v--; ) f[m++] = g; } v = n.getInt16(u, !0), u += 2; } while (u < i.mask.numBytes); if (v !== -32768 || m < f.length) throw "Unexpected end of mask RLE encoding"; i.mask.bitset = f, o += i.mask.numBytes; } else (i.mask.numBytes | i.mask.numBlocksY | i.mask.maxValue) === 0 && (i.mask.bitset = new Uint8Array(Math.ceil(i.width * i.height / 8))); n = new DataView(r, o, 16), i.pixels = {}, i.pixels.numBlocksY = n.getUint32(0, !0), i.pixels.numBlocksX = n.getUint32(4, !0), i.pixels.numBytes = n.getUint32(8, !0), i.pixels.maxValue = n.getFloat32(12, !0), o += 16; var l = i.pixels.numBlocksX, s = i.pixels.numBlocksY, w = l + (i.width % l > 0 ? 1 : 0), k = s + (i.height % s > 0 ? 1 : 0); i.pixels.blocks = new Array(w * k); for (var D = 0, d = 0; d < k; d++) for (var y = 0; y < w; y++) { var x = 0, L = r.byteLength - o; n = new DataView(r, o, Math.min(10, L)); var p = {}; i.pixels.blocks[D++] = p; var c = n.getUint8(0); if (x++, p.encoding = c & 63, p.encoding > 3) throw "Invalid block encoding (" + p.encoding + ")"; if (p.encoding === 2) { o++; continue; } if (c !== 0 && c !== 2) { if (c >>= 6, p.offsetType = c, c === 2) p.offset = n.getInt8(1), x++; else if (c === 1) p.offset = n.getInt16(1, !0), x += 2; else if (c === 0) p.offset = n.getFloat32(1, !0), x += 4; else throw "Invalid block offset type"; if (p.encoding === 1) if (c = n.getUint8(x), x++, p.bitsPerPixel = c & 63, c >>= 6, p.numValidPixelsType = c, c === 2) p.numValidPixels = n.getUint8(x), x++; else if (c === 1) p.numValidPixels = n.getUint16(x, !0), x += 2; else if (c === 0) p.numValidPixels = n.getUint32(x, !0), x += 4; else throw "Invalid valid pixel count type"; } if (o += x, p.encoding !== 3) { var U, I; if (p.encoding === 0) { var M = (i.pixels.numBytes - 1) / 4; if (M !== Math.floor(M)) throw "uncompressed block has invalid length"; U = new ArrayBuffer(M * 4), I = new Uint8Array(U), I.set(new Uint8Array(r, o, M * 4)); var T = new Float32Array(U); p.rawData = T, o += M * 4; } else if (p.encoding === 1) { var V = Math.ceil(p.numValidPixels * p.bitsPerPixel / 8), S = Math.ceil(V / 4); U = new ArrayBuffer(S * 4), I = new Uint8Array(U), I.set(new Uint8Array(r, o, V)), p.stuffedData = new Uint32Array(U), o += V; } } } return i.eofOffset = o, i; }, e = function(r, o, a, i, h, n, f) { var v = (1 << o) - 1, u = 0, m, g = 0, l, s, w = Math.ceil((f - i) / h), k = r.length * 4 - Math.ceil(o * a / 8); for (r[r.length - 1] <<= 8 * k, m = 0; m < a; m++) { if (g === 0 && (s = r[u++], g = 32), g >= o) l = s >>> g - o & v, g -= o; else { var D = o - g; l = (s & v) << D & v, s = r[u++], g = 32 - D, l += s >>> g; } n[m] = l < w ? i + l * h : f; } return n; }; return F; }(), K = function() { var F = { unstuff: function(t, e, r, o, a, i, h, n) { var f = (1 << r) - 1, v = 0, u, m = 0, g, l, s, w, k = t.length * 4 - Math.ceil(r * o / 8); if (t[t.length - 1] <<= 8 * k, a) for (u = 0; u < o; u++) m === 0 && (l = t[v++], m = 32), m >= r ? (g = l >>> m - r & f, m -= r) : (s = r - m, g = (l & f) << s & f, l = t[v++], m = 32 - s, g += l >>> m), e[u] = a[g]; else for (w = Math.ceil((n - i) / h), u = 0; u < o; u++) m === 0 && (l = t[v++], m = 32), m >= r ? (g = l >>> m - r & f, m -= r) : (s = r - m, g = (l & f) << s & f, l = t[v++], m = 32 - s, g += l >>> m), e[u] = g < w ? i + g * h : n; }, unstuffLUT: function(t, e, r, o, a, i) { var h = (1 << e) - 1, n = 0, f = 0, v = 0, u = 0, m = 0, g, l = [], s = t.length * 4 - Math.ceil(e * r / 8); t[t.length - 1] <<= 8 * s; var w = Math.ceil((i - o) / a); for (f = 0; f < r; f++) u === 0 && (g = t[n++], u = 32), u >= e ? (m = g >>> u - e & h, u -= e) : (v = e - u, m = (g & h) << v & h, g = t[n++], u = 32 - v, m += g >>> u), l[f] = m < w ? o + m * a : i; return l.unshift(o), l; }, unstuff2: function(t, e, r, o, a, i, h, n) { var f = (1 << r) - 1, v = 0, u, m = 0, g = 0, l, s, w; if (a) for (u = 0; u < o; u++) m === 0 && (s = t[v++], m = 32, g = 0), m >= r ? (l = s >>> g & f, m -= r, g += r) : (w = r - m, l = s >>> g & f, s = t[v++], m = 32 - w, l |= (s & (1 << w) - 1) << r - w, g = w), e[u] = a[l]; else { var k = Math.ceil((n - i) / h); for (u = 0; u < o; u++) m === 0 && (s = t[v++], m = 32, g = 0), m >= r ? (l = s >>> g & f, m -= r, g += r) : (w = r - m, l = s >>> g & f, s = t[v++], m = 32 - w, l |= (s & (1 << w) - 1) << r - w, g = w), e[u] = l < k ? i + l * h : n; } return e; }, unstuffLUT2: function(t, e, r, o, a, i) { var h = (1 << e) - 1, n = 0, f = 0, v = 0, u = 0, m = 0, g = 0, l, s = [], w = Math.ceil((i - o) / a); for (f = 0; f < r; f++) u === 0 && (l = t[n++], u = 32, g = 0), u >= e ? (m = l >>> g & h, u -= e, g += e) : (v = e - u, m = l >>> g & h, l = t[n++], u = 32 - v, m |= (l & (1 << v) - 1) << e - v, g = v), s[f] = m < w ? o + m * a : i; return s.unshift(o), s; }, originalUnstuff: function(t, e, r, o) { var a = (1 << r) - 1, i = 0, h, n = 0, f, v, u, m = t.length * 4 - Math.ceil(r * o / 8); for (t[t.length - 1] <<= 8 * m, h = 0; h < o; h++) n === 0 && (v = t[i++], n = 32), n >= r ? (f = v >>> n - r & a, n -= r) : (u = r - n, f = (v & a) << u & a, v = t[i++], n = 32 - u, f += v >>> n), e[h] = f; return e; }, originalUnstuff2: function(t, e, r, o) { var a = (1 << r) - 1, i = 0, h, n = 0, f = 0, v, u, m; for (h = 0; h < o; h++) n === 0 && (u = t[i++], n = 32, f = 0), n >= r ? (v = u >>> f & a, n -= r, f += r) : (m = r - n, v = u >>> f & a, u = t[i++], n = 32 - m, v |= (u & (1 << m) - 1) << r - m, f = m), e[h] = v; return e; } }, A = { HUFFMAN_LUT_BITS_MAX: 12, computeChecksumFletcher32: function(t) { for (var e = 65535, r = 65535, o = t.length, a = Math.floor(o / 2), i = 0; a; ) { var h = a >= 359 ? 359 : a; a -= h; do e += t[i++] << 8, r += e += t[i++]; while (--h); e = (e & 65535) + (e >>> 16), r = (r & 65535) + (r >>> 16); } return o & 1 && (r += e += t[i] << 8), e = (e & 65535) + (e >>> 16), r = (r & 65535) + (r >>> 16), (r << 16 | e) >>> 0; }, readHeaderInfo: function(t, e) { var r = e.ptr, o = new Uint8Array(t, r, 6), a = {}; if (a.fileIdentifierString = String.fromCharCode.apply(null, o), a.fileIdentifierString.lastIndexOf("Lerc2", 0) !== 0) throw "Unexpected file identifier string (expect Lerc2 ): " + a.fileIdentifierString; r += 6; var i = new DataView(t, r, 8), h = i.getInt32(0, !0); a.fileVersion = h, r += 4, h >= 3 && (a.checksum = i.getUint32(4, !0), r += 4), i = new DataView(t, r, 12), a.height = i.getUint32(0, !0), a.width = i.getUint32(4, !0), r += 8, h >= 4 ? (a.numDims = i.getUint32(8, !0), r += 4) : a.numDims = 1, i = new DataView(t, r, 40), a.numValidPixel = i.getUint32(0, !0), a.microBlockSize = i.getInt32(4, !0), a.blobSize = i.getInt32(8, !0), a.imageType = i.getInt32(12, !0), a.maxZError = i.getFloat64(16, !0), a.zMin = i.getFloat64(24, !0), a.zMax = i.getFloat64(32, !0), r += 40, e.headerInfo = a, e.ptr = r; var n, f; if (h >= 3 && (f = h >= 4 ? 52 : 48, n = this.computeChecksumFletcher32(new Uint8Array(t, r - f, a.blobSize - 14)), n !== a.checksum)) throw "Checksum failed."; return !0; }, checkMinMaxRanges: function(t, e) { var r = e.headerInfo, o = this.getDataTypeArray(r.imageType), a = r.numDims * this.getDataTypeSize(r.imageType), i = this.readSubArray(t, e.ptr, o, a), h = this.readSubArray(t, e.ptr + a, o, a); e.ptr += 2 * a; var n, f = !0; for (n = 0; n < r.numDims; n++) if (i[n] !== h[n]) { f = !1; break; } return r.minValues = i, r.maxValues = h, f; }, readSubArray: function(t, e, r, o) { var a; if (r === Uint8Array) a = new Uint8Array(t, e, o); else { var i = new ArrayBuffer(o), h = new Uint8Array(i); h.set(new Uint8Array(t, e, o)), a = new r(i); } return a; }, readMask: function(t, e) { var r = e.ptr, o = e.headerInfo, a = o.width * o.height, i = o.numValidPixel, h = new DataView(t, r, 4), n = {}; if (n.numBytes = h.getUint32(0, !0), r += 4, (i === 0 || a === i) && n.numBytes !== 0) throw "invalid mask"; var f, v; if (i === 0) f = new Uint8Array(Math.ceil(a / 8)), n.bitset = f, v = new Uint8Array(a), e.pixels.resultMask = v, r += n.numBytes; else if (n.numBytes > 0) { f = new Uint8Array(Math.ceil(a / 8)), h = new DataView(t, r, n.numBytes); var u = h.getInt16(0, !0), m = 2, g = 0, l = 0; do { if (u > 0) for (; u--; ) f[g++] = h.getUint8(m++); else for (l = h.getUint8(m++), u = -u; u--; ) f[g++] = l; u = h.getInt16(m, !0), m += 2; } while (m < n.numBytes); if (u !== -32768 || g < f.length) throw "Unexpected end of mask RLE encoding"; v = new Uint8Array(a); var s = 0, w = 0; for (w = 0; w < a; w++) w & 7 ? (s = f[w >> 3], s <<= w & 7) : s = f[w >> 3], s & 128 && (v[w] = 1); e.pixels.resultMask = v, n.bitset = f, r += n.numBytes; } return e.ptr = r, e.mask = n, !0; }, readDataOneSweep: function(t, e, r, o) { var a = e.ptr, i = e.headerInfo, h = i.numDims, n = i.width * i.height, f = i.imageType, v = i.numValidPixel * A.getDataTypeSize(f) * h, u, m = e.pixels.resultMask; if (r === Uint8Array) u = new Uint8Array(t, a, v); else { var g = new ArrayBuffer(v), l = new Uint8Array(g); l.set(new Uint8Array(t, a, v)), u = new r(g); } if (u.length === n * h) o ? e.pixels.resultPixels = A.swapDimensionOrder(u, n, h, r, !0) : e.pixels.resultPixels = u; else { e.pixels.resultPixels = new r(n * h); var s = 0, w = 0, k = 0, D = 0; if (h > 1) { if (o) { for (w = 0; w < n; w++) if (m[w]) for (D = w, k = 0; k < h; k++, D += n) e.pixels.resultPixels[D] = u[s++]; } else for (w = 0; w < n; w++) if (m[w]) for (D = w * h, k = 0; k < h; k++) e.pixels.resultPixels[D + k] = u[s++]; } else for (w = 0; w < n; w++) m[w] && (e.pixels.resultPixels[w] = u[s++]); } return a += v, e.ptr = a, !0; }, readHuffmanTree: function(t, e) { var r = this.HUFFMAN_LUT_BITS_MAX, o = new DataView(t, e.ptr, 16); e.ptr += 16; var a = o.getInt32(0, !0); if (a < 2) throw "unsupported Huffman version"; var i = o.getInt32(4, !0), h = o.getInt32(8, !0), n = o.getInt32(12, !0); if (h >= n) return !1; var f = new Uint32Array(n - h); A.decodeBits(t, e, f); var v = [], u, m, g, l; for (u = h; u < n; u++) m = u - (u < i ? 0 : i), v[m] = { first: f[u - h], second: null }; var s = t.byteLength - e.ptr, w = Math.ceil(s / 4), k = new ArrayBuffer(w * 4), D = new Uint8Array(k); D.set(new Uint8Array(t, e.ptr, s)); var d = new Uint32Array(k), y = 0, x, L = 0; for (x = d[0], u = h; u < n; u++) m = u - (u < i ? 0 : i), l = v[m].first, l > 0 && (v[m].second = x << y >>> 32 - l, 32 - y >= l ? (y += l, y === 32 && (y = 0, L++, x = d[L])) : (y += l - 32, L++, x = d[L], v[m].second |= x >>> 32 - y)); var p = 0, c = 0, U = new X(); for (u = 0; u < v.length; u++) v[u] !== void 0 && (p = Math.max(p, v[u].first)); p >= r ? c = r : c = p; var I = [], M, T, V, S, B, C; for (u = h; u < n; u++) if (m = u - (u < i ? 0 : i), l = v[m].first, l > 0) if (M = [l, m], l <= c) for (T = v[m].second << c - l, V = 1 << c - l, g = 0; g < V; g++) I[T | g] = M; else for (T = v[m].second, C = U, S = l - 1; S >= 0; S--) B = T >>> S & 1, B ? (C.right || (C.right = new X()), C = C.right) : (C.left || (C.left = new X()), C = C.left), S === 0 && !C.val && (C.val = M[1]); return { decodeLut: I, numBitsLUTQick: c, numBitsLUT: p, tree: U, stuffedData: d, srcPtr: L, bitPos: y }; }, readHuffman: function(t, e, r, o) { var a = e.headerInfo, i = a.numDims, h = e.headerInfo.height, n = e.headerInfo.width, f = n * h, v = this.readHuffmanTree(t, e), u = v.decodeLut, m = v.tree, g = v.stuffedData, l = v.srcPtr, s = v.bitPos, w = v.numBitsLUTQick, k = v.numBitsLUT, D = e.headerInfo.imageType === 0 ? 128 : 0, d, y, x, L = e.pixels.resultMask, p, c, U, I, M, T, V, S = 0; s > 0 && (l++, s = 0); var B = g[l], C = e.encodeMode === 1, _ = new r(f * i), O = _, b; if (i < 2 || C) { for (b = 0; b < i; b++) if (i > 1 && (O = new r(_.buffer, f * b, f), S = 0), e.headerInfo.numValidPixel === n * h) for (T = 0, I = 0; I < h; I++) for (M = 0; M < n; M++, T++) { if (y = 0, p = B << s >>> 32 - w, c = p, 32 - s < w && (p |= g[l + 1] >>> 64 - s - w, c = p), u[c]) y = u[c][1], s += u[c][0]; else for (p = B << s >>> 32 - k, c = p, 32 - s < k && (p |= g[l + 1] >>> 64 - s - k, c = p), d = m, V = 0; V < k; V++) if (U = p >>> k - V - 1 & 1, d = U ? d.right : d.left, !(d.left || d.right)) { y = d.val, s = s + V + 1; break; } s >= 32 && (s -= 32, l++, B = g[l]), x = y - D, C ? (M > 0 ? x += S : I > 0 ? x += O[T - n] : x += S, x &= 255, O[T] = x, S = x) : O[T] = x; } else for (T = 0, I = 0; I < h; I++) for (M = 0; M < n; M++, T++) if (L[T]) { if (y = 0, p = B << s >>> 32 - w, c = p, 32 - s < w && (p |= g[l + 1] >>> 64 - s - w, c = p), u[c]) y = u[c][1], s += u[c][0]; else for (p = B << s >>> 32 - k, c = p, 32 - s < k && (p |= g[l + 1] >>> 64 - s - k, c = p), d = m, V = 0; V < k; V++) if (U = p >>> k - V - 1 & 1, d = U ? d.right : d.left, !(d.left || d.right)) { y = d.val, s = s + V + 1; break; } s >= 32 && (s -= 32, l++, B = g[l]), x = y - D, C ? (M > 0 && L[T - 1] ? x += S : I > 0 && L[T - n] ? x += O[T - n] : x += S, x &= 255, O[T] = x, S = x) : O[T] = x; } } else for (T = 0, I = 0; I < h; I++) for (M = 0; M < n; M++) if (T = I * n + M, !L || L[T]) for (b = 0; b < i; b++, T += f) { if (y = 0, p = B << s >>> 32 - w, c = p, 32 - s < w && (p |= g[l + 1] >>> 64 - s - w, c = p), u[c]) y = u[c][1], s += u[c][0]; else for (p = B << s >>> 32 - k, c = p, 32 - s < k && (p |= g[l + 1] >>> 64 - s - k, c = p), d = m, V = 0; V < k; V++) if (U = p >>> k - V - 1 & 1, d = U ? d.right : d.left, !(d.left || d.right)) { y = d.val, s = s + V + 1; break; } s >= 32 && (s -= 32, l++, B = g[l]), x = y - D, O[T] = x; } e.ptr = e.ptr + (l + 1) * 4 + (s > 0 ? 4 : 0), e.pixels.resultPixels = _, i > 1 && !o && (e.pixels.resultPixels = A.swapDimensionOrder(_, f, i, r)); }, decodeBits: function(t, e, r, o, a) { { var i = e.headerInfo, h = i.fileVersion, n = 0, f = t.byteLength - e.ptr >= 5 ? 5 : t.byteLength - e.ptr, v = new DataView(t, e.ptr, f), u = v.getUint8(0); n++; var m = u >> 6, g = m === 0 ? 4 : 3 - m, l = (u & 32) > 0, s = u & 31, w = 0; if (g === 1) w = v.getUint8(n), n++; else if (g === 2) w = v.getUint16(n, !0), n += 2; else if (g === 4) w = v.getUint32(n, !0), n += 4; else throw "Invalid valid pixel count type"; var k = 2 * i.maxZError, D, d, y, x, L, p, c, U, I, M = i.numDims > 1 ? i.maxValues[a] : i.zMax; if (l) { for (e.counter.lut++, U = v.getUint8(n), n++, x = Math.ceil((U - 1) * s / 8), L = Math.ceil(x / 4), d = new ArrayBuffer(L * 4), y = new Uint8Array(d), e.ptr += n, y.set(new Uint8Array(t, e.ptr, x)), c = new Uint32Array(d), e.ptr += x, I = 0; U - 1 >>> I; ) I++; x = Math.ceil(w * I / 8), L = Math.ceil(x / 4), d = new ArrayBuffer(L * 4), y = new Uint8Array(d), y.set(new Uint8Array(t, e.ptr, x)), D = new Uint32Array(d), e.ptr += x, h >= 3 ? p = F.unstuffLUT2(c, s, U - 1, o, k, M) : p = F.unstuffLUT(c, s, U - 1, o, k, M), h >= 3 ? F.unstuff2(D, r, I, w, p) : F.unstuff(D, r, I, w, p); } else e.counter.bitstuffer++, I = s, e.ptr += n, I > 0 && (x = Math.ceil(w * I / 8), L = Math.ceil(x / 4), d = new ArrayBuffer(L * 4), y = new Uint8Array(d), y.set(new Uint8Array(t, e.ptr, x)), D = new Uint32Array(d), e.ptr += x, h >= 3 ? o == null ? F.originalUnstuff2(D, r, I, w) : F.unstuff2(D, r, I, w, !1, o, k, M) : o == null ? F.originalUnstuff(D, r, I, w) : F.unstuff(D, r, I, w, !1, o, k, M)); } }, readTiles: function(t, e, r, o) { var a = e.headerInfo, i = a.width, h = a.height, n = i * h, f = a.microBlockSize, v = a.imageType, u = A.getDataTypeSize(v), m = Math.ceil(i / f), g = Math.ceil(h / f); e.pixels.numBlocksY = g, e.pixels.numBlocksX = m, e.pixels.ptr = 0; var l = 0, s = 0, w = 0, k = 0, D = 0, d = 0, y = 0, x = 0, L = 0, p = 0, c = 0, U = 0, I = 0, M = 0, T = 0, V = 0, S, B, C, _, O, b, Q = new r(f * f), ne = h % f || f, ae = i % f || f, G, H, q = a.numDims, j, Z = e.pixels.resultMask, z = e.pixels.resultPixels, fe = a.fileVersion, ee = fe >= 5 ? 14 : 15, E, J = a.zMax, N; for (w = 0; w < g; w++) for (D = w !== g - 1 ? f : ne, k = 0; k < m; k++) for (d = k !== m - 1 ? f : ae, c = w * i * f + k * f, U = i - d, j = 0; j < q; j++) { if (q > 1 ? (N = z, c = w * i * f + k * f, z = new r(e.pixels.resultPixels.buffer, n * j * u, n), J = a.maxValues[j]) : N = null, y = t.byteLength - e.ptr, S = new DataView(t, e.ptr, Math.min(10, y)), B = {}, V = 0, x = S.getUint8(0), V++, E = a.fileVersion >= 5 ? x & 4 : 0, L = x >> 6 & 255, p = x >> 2 & ee, p !== (k * f >> 3 & ee) || E && j === 0) throw "integrity issue"; if (b = x & 3, b > 3) throw e.ptr += V, "Invalid block encoding (" + b + ")"; if (b === 2) { if (E) if (Z) for (l = 0; l < D; l++) for (s = 0; s < d; s++) Z[c] && (z[c] = N[c]), c++; else for (l = 0; l < D; l++) for (s = 0; s < d; s++) z[c] = N[c], c++; e.counter.constant++, e.ptr += V; continue; } else if (b === 0) { if (E) throw "integrity issue"; if (e.counter.uncompressed++, e.ptr += V, I = D * d * u, M = t.byteLength - e.ptr, I = I < M ? I : M, C = new ArrayBuffer(I % u === 0 ? I : I + u - I % u), _ = new Uint8Array(C), _.set(new Uint8Array(t, e.ptr, I)), O = new r(C), T = 0, Z) for (l = 0; l < D; l++) { for (s = 0; s < d; s++) Z[c] && (z[c] = O[T++]), c++; c += U; } else for (l = 0; l < D; l++) { for (s = 0; s < d; s++) z[c++] = O[T++]; c += U; } e.ptr += T * u; } else if (G = A.getDataTypeUsed(E && v < 6 ? 4 : v, L), H = A.getOnePixel(B, V, G, S), V += A.getDataTypeSize(G), b === 3) if (e.ptr += V, e.counter.constantoffset++, Z) for (l = 0; l < D; l++) { for (s = 0; s < d; s++) Z[c] && (z[c] = E ? Math.min(J, N[c] + H) : H), c++; c += U; } else for (l = 0; l < D; l++) { for (s = 0; s < d; s++) z[c] = E ? Math.min(J, N[c] + H) : H, c++; c += U; } else if (e.ptr += V, A.decodeBits(t, e, Q, H, j), V = 0, E) if (Z) for (l = 0; l < D; l++) { for (s = 0; s < d; s++) Z[c] && (z[c] = Q[V++] + N[c]), c++; c += U; } else for (l = 0; l < D; l++) { for (s = 0; s < d; s++) z[c] = Q[V++] + N[c], c++; c += U; } else if (Z) for (l = 0; l < D; l++) { for (s = 0; s < d; s++) Z[c] && (z[c] = Q[V++]), c++; c += U; } else for (l = 0; l < D; l++) { for (s = 0; s < d; s++) z[c++] = Q[V++]; c += U; } } q > 1 && !o && (e.pixels.resultPixels = A.swapDimensionOrder(e.pixels.resultPixels, n, q, r)); }, formatFileInfo: function(t) { return { fileIdentifierString: t.headerInfo.fileIdentifierString, fileVersion: t.headerInfo.fileVersion, imageType: t.headerInfo.imageType, height: t.headerInfo.height, width: t.headerInfo.width, numValidPixel: t.headerInfo.numValidPixel, microBlockSize: t.headerInfo.microBlockSize, blobSize: t.headerInfo.blobSize, maxZError: t.headerInfo.maxZError, pixelType: A.getPixelType(t.headerInfo.imageType), eofOffset: t.eofOffset, mask: t.mask ? { numBytes: t.mask.numBytes } : null, pixels: { numBlocksX: t.pixels.numBlocksX, numBlocksY: t.pixels.numBlocksY, maxValue: t.headerInfo.zMax, minValue: t.headerInfo.zMin, noDataValue: t.noDataValue } }; }, constructConstantSurface: function(t, e) { var r = t.headerInfo.zMax, o = t.headerInfo.zMin, a = t.headerInfo.maxValues, i = t.headerInfo.numDims, h = t.headerInfo.height * t.headerInfo.width, n = 0, f = 0, v = 0, u = t.pixels.resultMask, m = t.pixels.resultPixels; if (u) if (i > 1) { if (e) for (n = 0; n < i; n++) for (v = n * h, r = a[n], f = 0; f < h; f++) u[f] && (m[v + f] = r); else for (f = 0; f < h; f++) if (u[f]) for (v = f * i, n = 0; n < i; n++) m[v + i] = a[n]; } else for (f = 0; f < h; f++) u[f] && (m[f] = r); else if (i > 1 && o !== r) if (e) for (n = 0; n < i; n++) for (v = n * h, r = a[n], f = 0; f < h; f++) m[v + f] = r; else for (f = 0; f < h; f++) for (v = f * i, n = 0; n < i; n++) m[v + n] = a[n]; else for (f = 0; f < h * i; f++) m[f] = r; }, getDataTypeArray: function(t) { var e; switch (t) { case 0: e = Int8Array; break; case 1: e = Uint8Array; break; case 2: e = Int16Array; break; case 3: e = Uint16Array; break; case 4: e = Int32Array; break; case 5: e = Uint32Array; break; case 6: e = Float32Array; break; case 7: e = Float64Array; break; default: e = Float32Array; } return e; }, getPixelType: function(t) { var e; switch (t) { case 0: e = "S8"; break; case 1: e = "U8"; break; case 2: e = "S16"; break; case 3: e = "U16"; break; case 4: e = "S32"; break; case 5: e = "U32"; break; case 6: e = "F32"; break; case 7: e = "F64"; break; default: e = "F32"; } return e; }, isValidPixelValue: function(t, e) { if (e == null) return !1; var r; switch (t) { case 0: r = e >= -128 && e <= 127; break; case 1: r = e >= 0 && e <= 255; break; case 2: r = e >= -32768 && e <= 32767; break; case 3: r = e >= 0 && e <= 65536; break; case 4: r = e >= -2147483648 && e <= 2147483647; break; case 5: r = e >= 0 && e <= 4294967296; break; case 6: r = e >= -34027999387901484e22 && e <= 34027999387901484e22; break; case 7: r = e >= -17976931348623157e292 && e <= 17976931348623157e292; break; default: r = !1; } return r; }, getDataTypeSize: function(t) { var e = 0; switch (t) { case 0: case 1: e = 1; break; case 2: case 3: e = 2; break; case 4: case 5: case 6: e = 4; break; case 7: e = 8; break; default: e = t; } return e; }, getDataTypeUsed: function(t, e) { var r = t; switch (t) { case 2: case 4: r = t - e; break; case 3: case 5: r = t - 2 * e; break; case 6: e === 0 ? r = t : e === 1 ? r = 2 : r = 1; break; case 7: e === 0 ? r = t : r = t - 2 * e + 1; break; default: r = t; break; } return r; }, getOnePixel: function(t, e, r, o) { var a = 0; switch (r) { case 0: a = o.getInt8(e); break; case 1: a = o.getUint8(e); break; case 2: a = o.getInt16(e, !0); break; case 3: a = o.getUint16(e, !0); break; case 4: a = o.getInt32(e, !0); break; case 5: a = o.getUInt32(e, !0); break; case 6: a = o.getFloat32(e, !0); break; case 7: a = o.getFloat64(e, !0); break; default: throw "the decoder does not understand this pixel type"; } return a; }, swapDimensionOrder: function(t, e, r, o, a) { var i = 0, h = 0, n = 0, f = 0, v = t; if (r > 1) if (v = new o(e * r), a) for (i = 0; i < e; i++) for (f = i, n = 0; n < r; n++, f += e) v[f] = t[h++]; else for (i = 0; i < e; i++) for (f = i, n = 0; n < r; n++, f += e) v[h++] = t[f]; return v; } }, X = function(t, e, r) { this.val = t, this.left = e, this.right = r; }, R = { decode: function(t, e) { e = e || {}; var r = e.noDataValue, o = 0, a = {}; a.ptr = e.inputOffset || 0, a.pixels = {}, A.readHeaderInfo(t, a); var i = a.headerInfo, h = i.fileVersion, n = A.getDataTypeArray(i.imageType); if (h > 5) throw "unsupported lerc version 2." + h; A.readMask(t, a), i.numValidPixel !== i.width * i.height && !a.pixels.resultMask && (a.pixels.resultMask = e.maskData); var f = i.width * i.height; a.pixels.resultPixels = new n(f * i.numDims), a.counter = { onesweep: 0, uncompressed: 0, lut: 0, bitstuffer: 0, constant: 0, constantoffset: 0 }; var v = !e.returnPixelInterleavedDims; if (i.numValidPixel !== 0) if (i.zMax === i.zMin) A.constructConstantSurface(a, v); else if (h >= 4 && A.checkMinMaxRanges(t, a)) A.constructConstantSurface(a, v); else { var u = new DataView(t, a.ptr, 2), m = u.getUint8(0); if (a.ptr++, m) A.readDataOneSweep(t, a, n, v); else if (h > 1 && i.imageType <= 1 && Math.abs(i.maxZError - 0.5) < 1e-5) { var g = u.getUint8(1); if (a.ptr++, a.encodeMode = g, g > 2 || h < 4 && g > 1) throw "Invalid Huffman flag " + g; g ? A.readHuffman(t, a, n, v) : A.readTiles(t, a, n, v); } else A.readTiles(t, a, n, v); } a.eofOffset = a.ptr; var l; e.inputOffset ? (l = a.headerInfo.blobSize + e.inputOffset - a.ptr, Math.abs(l) >= 1 && (a.eofOffset = e.inputOffset + a.headerInfo.blobSize)) : (l = a.headerInfo.blobSize - a.ptr, Math.abs(l) >= 1 && (a.eofOffset = a.headerInfo.blobSize)); var s = { width: i.width, height: i.height, pixelData: a.pixels.resultPixels, minValue: i.zMin, maxValue: i.zMax, validPixelCount: i.numValidPixel, dimCount: i.numDims, dimStats: { minValues: i.minValues, maxValues: i.maxValues }, maskData: a.pixels.resultMask }; if (a.pixels.resultMask && A.isValidPixelValue(i.imageType, r)) { var w = a.pixels.resultMask; for (o = 0; o < f; o++) w[o] || (s.pixelData[o] = r); s.noDataValue = r; } return a.noDataValue = r, e.returnFileInfo && (s.fileInfo = A.formatFileInfo(a)), s; }, getBandCount: function(t) { var e = 0, r = 0, o = {}; for (o.ptr = 0, o.pixels = {}; r < t.byteLength - 58; ) A.readHeaderInfo(t, o), r += o.headerInfo.blobSize, e++, o.ptr = r; return e; } }; return R; }(), W = function() { var F = new ArrayBuffer(4), A = new Uint8Array(F), X = new Uint32Array(F); return X[0] = 1, A[0] === 1; }(), P = { decode: function(F, A) { if (!W) throw "Big endian system is not supported."; A = A || {}; var X = A.inputOffset || 0, R = new Uint8Array(F, X, 10), t = String.fromCharCode.apply(null, R), e, r; if (t.trim() === "CntZImage") e = Y, r = 1; else if (t.substring(0, 5) === "Lerc2") e = K, r = 2; else throw "Unexpected file identifier string: " + t; for (var o = 0, a = F.byteLength - 10, i, h = [], n, f, v = { width: 0, height: 0, pixels: [], pixelType: A.pixelType, mask: null, statistics: [] }, u = 0; X < a; ) { var m = e.decode(F, { inputOffset: X, encodedMaskData: i, maskData: f, returnMask: o === 0, returnEncodedMask: o === 0, returnFileInfo: !0, returnPixelInterleavedDims: A.returnPixelInterleavedDims, pixelType: A.pixelType || null, noDataValue: A.noDataValue || null }); X = m.fileInfo.eofOffset, f = m.maskData, o === 0 && (i = m.encodedMaskData, v.width = m.width, v.height = m.height, v.dimCount = m.dimCount || 1, v.pixelType = m.pixelType || m.fileInfo.pixelType, v.mask = f), r > 1 && (f && h.push(f), m.fileInfo.mask && m.fileInfo.mask.numBytes > 0 && u++), o++, v.pixels.push(m.pixelData), v.statistics.push({ minValue: m.minValue, maxValue: m.maxValue, noDataValue: m.noDataValue, dimStats: m.dimStats }); } var g, l, s; if (r > 1 && u > 1) { for (s = v.width * v.height, v.bandMasks = h, f = new Uint8Array(s), f.set(h[0]), g = 1; g < h.length; g++) for (n = h[g], l = 0; l < s; l++) f[l] = f[l] & n[l]; v.maskData = f; } return v; } }; $.exports ? $.exports = P : this.Lerc = P; })(); })(ie); const oe = ie.exports; class ce extends se { constructor(Y) { super(), this.planarConfiguration = typeof Y.PlanarConfiguration < "u" ? Y.PlanarConfiguration : 1, this.samplesPerPixel = typeof Y.SamplesPerPixel < "u" ? Y.SamplesPerPixel : 1, this.addCompression = Y.LercParameters[le.AddCompression]; } decodeBlock(Y) { switch (this.addCompression) { case re.None: break; case re.Deflate: Y = te(new Uint8Array(Y)).buffer; break; default: throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`); } return oe.decode(Y, { returnPixelInterleavedDims: this.planarConfiguration === 1 }).pixels[0].buffer; } } export { ce as default };