(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.LuckyExcel = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0) { throw new Error('Invalid string. Length must be a multiple of 4') } // Trim off extra bytes after placeholder bytes are found // See: https://github.com/beatgammit/base64-js/issues/42 var validLen = b64.indexOf('=') if (validLen === -1) validLen = len var placeHoldersLen = validLen === len ? 0 : 4 - (validLen % 4) return [validLen, placeHoldersLen] } // base64 is 4/3 + up to two characters of the original data function byteLength (b64) { var lens = getLens(b64) var validLen = lens[0] var placeHoldersLen = lens[1] return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen } function _byteLength (b64, validLen, placeHoldersLen) { return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen } function toByteArray (b64) { var tmp var lens = getLens(b64) var validLen = lens[0] var placeHoldersLen = lens[1] var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) var curByte = 0 // if there are placeholders, only get up to the last complete 4 chars var len = placeHoldersLen > 0 ? validLen - 4 : validLen var i for (i = 0; i < len; i += 4) { tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] arr[curByte++] = (tmp >> 16) & 0xFF arr[curByte++] = (tmp >> 8) & 0xFF arr[curByte++] = tmp & 0xFF } if (placeHoldersLen === 2) { tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) arr[curByte++] = tmp & 0xFF } if (placeHoldersLen === 1) { tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) arr[curByte++] = (tmp >> 8) & 0xFF arr[curByte++] = tmp & 0xFF } return arr } function tripletToBase64 (num) { return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] } function encodeChunk (uint8, start, end) { var tmp var output = [] for (var i = start; i < end; i += 3) { tmp = ((uint8[i] << 16) & 0xFF0000) + ((uint8[i + 1] << 8) & 0xFF00) + (uint8[i + 2] & 0xFF) output.push(tripletToBase64(tmp)) } return output.join('') } function fromByteArray (uint8) { var tmp var len = uint8.length var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes var parts = [] var maxChunkLength = 16383 // must be multiple of 3 // go through the array every three bytes, we'll deal with trailing stuff later for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) } // pad the end with zeros, but make sure to not forget the extra bytes if (extraBytes === 1) { tmp = uint8[len - 1] parts.push( lookup[tmp >> 2] + lookup[(tmp << 4) & 0x3F] + '==' ) } else if (extraBytes === 2) { tmp = (uint8[len - 2] << 8) + uint8[len - 1] parts.push( lookup[tmp >> 10] + lookup[(tmp >> 4) & 0x3F] + lookup[(tmp << 2) & 0x3F] + '=' ) } return parts.join('') } },{}],2:[function(require,module,exports){ (function (global,Buffer){(function (){ /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ /* eslint-disable no-proto */ 'use strict' var base64 = require('base64-js') var ieee754 = require('ieee754') var isArray = require('isarray') exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer exports.INSPECT_MAX_BYTES = 50 /** * If `Buffer.TYPED_ARRAY_SUPPORT`: * === true Use Uint8Array implementation (fastest) * === false Use Object implementation (most compatible, even IE6) * * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, * Opera 11.6+, iOS 4.2+. * * Due to various browser bugs, sometimes the Object implementation will be used even * when the browser supports typed arrays. * * Note: * * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. * * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. * * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of * incorrect length in some situations. * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they * get the Object implementation, which is slower but behaves correctly. */ Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport() /* * Export kMaxLength after typed array support is determined. */ exports.kMaxLength = kMaxLength() function typedArraySupport () { try { var arr = new Uint8Array(1) arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} return arr.foo() === 42 && // typed array instances can be augmented typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` } catch (e) { return false } } function kMaxLength () { return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff } function createBuffer (that, length) { if (kMaxLength() < length) { throw new RangeError('Invalid typed array length') } if (Buffer.TYPED_ARRAY_SUPPORT) { // Return an augmented `Uint8Array` instance, for best performance that = new Uint8Array(length) that.__proto__ = Buffer.prototype } else { // Fallback: Return an object instance of the Buffer class if (that === null) { that = new Buffer(length) } that.length = length } return that } /** * The Buffer constructor returns instances of `Uint8Array` that have their * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of * `Uint8Array`, so the returned instances will have all the node `Buffer` methods * and the `Uint8Array` methods. Square bracket notation works as expected -- it * returns a single octet. * * The `Uint8Array` prototype remains unmodified. */ function Buffer (arg, encodingOrOffset, length) { if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { return new Buffer(arg, encodingOrOffset, length) } // Common case. if (typeof arg === 'number') { if (typeof encodingOrOffset === 'string') { throw new Error( 'If encoding is specified then the first argument must be a string' ) } return allocUnsafe(this, arg) } return from(this, arg, encodingOrOffset, length) } Buffer.poolSize = 8192 // not used by this implementation // TODO: Legacy, not needed anymore. Remove in next major version. Buffer._augment = function (arr) { arr.__proto__ = Buffer.prototype return arr } function from (that, value, encodingOrOffset, length) { if (typeof value === 'number') { throw new TypeError('"value" argument must not be a number') } if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { return fromArrayBuffer(that, value, encodingOrOffset, length) } if (typeof value === 'string') { return fromString(that, value, encodingOrOffset) } return fromObject(that, value) } /** * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError * if value is a number. * Buffer.from(str[, encoding]) * Buffer.from(array) * Buffer.from(buffer) * Buffer.from(arrayBuffer[, byteOffset[, length]]) **/ Buffer.from = function (value, encodingOrOffset, length) { return from(null, value, encodingOrOffset, length) } if (Buffer.TYPED_ARRAY_SUPPORT) { Buffer.prototype.__proto__ = Uint8Array.prototype Buffer.__proto__ = Uint8Array if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) { // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 Object.defineProperty(Buffer, Symbol.species, { value: null, configurable: true }) } } function assertSize (size) { if (typeof size !== 'number') { throw new TypeError('"size" argument must be a number') } else if (size < 0) { throw new RangeError('"size" argument must not be negative') } } function alloc (that, size, fill, encoding) { assertSize(size) if (size <= 0) { return createBuffer(that, size) } if (fill !== undefined) { // Only pay attention to encoding if it's a string. This // prevents accidentally sending in a number that would // be interpretted as a start offset. return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill) } return createBuffer(that, size) } /** * Creates a new filled Buffer instance. * alloc(size[, fill[, encoding]]) **/ Buffer.alloc = function (size, fill, encoding) { return alloc(null, size, fill, encoding) } function allocUnsafe (that, size) { assertSize(size) that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) if (!Buffer.TYPED_ARRAY_SUPPORT) { for (var i = 0; i < size; ++i) { that[i] = 0 } } return that } /** * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. * */ Buffer.allocUnsafe = function (size) { return allocUnsafe(null, size) } /** * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. */ Buffer.allocUnsafeSlow = function (size) { return allocUnsafe(null, size) } function fromString (that, string, encoding) { if (typeof encoding !== 'string' || encoding === '') { encoding = 'utf8' } if (!Buffer.isEncoding(encoding)) { throw new TypeError('"encoding" must be a valid string encoding') } var length = byteLength(string, encoding) | 0 that = createBuffer(that, length) var actual = that.write(string, encoding) if (actual !== length) { // Writing a hex string, for example, that contains invalid characters will // cause everything after the first invalid character to be ignored. (e.g. // 'abxxcd' will be treated as 'ab') that = that.slice(0, actual) } return that } function fromArrayLike (that, array) { var length = array.length < 0 ? 0 : checked(array.length) | 0 that = createBuffer(that, length) for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } function fromArrayBuffer (that, array, byteOffset, length) { array.byteLength // this throws if `array` is not a valid ArrayBuffer if (byteOffset < 0 || array.byteLength < byteOffset) { throw new RangeError('\'offset\' is out of bounds') } if (array.byteLength < byteOffset + (length || 0)) { throw new RangeError('\'length\' is out of bounds') } if (byteOffset === undefined && length === undefined) { array = new Uint8Array(array) } else if (length === undefined) { array = new Uint8Array(array, byteOffset) } else { array = new Uint8Array(array, byteOffset, length) } if (Buffer.TYPED_ARRAY_SUPPORT) { // Return an augmented `Uint8Array` instance, for best performance that = array that.__proto__ = Buffer.prototype } else { // Fallback: Return an object instance of the Buffer class that = fromArrayLike(that, array) } return that } function fromObject (that, obj) { if (Buffer.isBuffer(obj)) { var len = checked(obj.length) | 0 that = createBuffer(that, len) if (that.length === 0) { return that } obj.copy(that, 0, 0, len) return that } if (obj) { if ((typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer) || 'length' in obj) { if (typeof obj.length !== 'number' || isnan(obj.length)) { return createBuffer(that, 0) } return fromArrayLike(that, obj) } if (obj.type === 'Buffer' && isArray(obj.data)) { return fromArrayLike(that, obj.data) } } throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') } function checked (length) { // Note: cannot use `length < kMaxLength()` here because that fails when // length is NaN (which is otherwise coerced to zero.) if (length >= kMaxLength()) { throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes') } return length | 0 } function SlowBuffer (length) { if (+length != length) { // eslint-disable-line eqeqeq length = 0 } return Buffer.alloc(+length) } Buffer.isBuffer = function isBuffer (b) { return !!(b != null && b._isBuffer) } Buffer.compare = function compare (a, b) { if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { throw new TypeError('Arguments must be Buffers') } if (a === b) return 0 var x = a.length var y = b.length for (var i = 0, len = Math.min(x, y); i < len; ++i) { if (a[i] !== b[i]) { x = a[i] y = b[i] break } } if (x < y) return -1 if (y < x) return 1 return 0 } Buffer.isEncoding = function isEncoding (encoding) { switch (String(encoding).toLowerCase()) { case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'latin1': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return true default: return false } } Buffer.concat = function concat (list, length) { if (!isArray(list)) { throw new TypeError('"list" argument must be an Array of Buffers') } if (list.length === 0) { return Buffer.alloc(0) } var i if (length === undefined) { length = 0 for (i = 0; i < list.length; ++i) { length += list[i].length } } var buffer = Buffer.allocUnsafe(length) var pos = 0 for (i = 0; i < list.length; ++i) { var buf = list[i] if (!Buffer.isBuffer(buf)) { throw new TypeError('"list" argument must be an Array of Buffers') } buf.copy(buffer, pos) pos += buf.length } return buffer } function byteLength (string, encoding) { if (Buffer.isBuffer(string)) { return string.length } if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { return string.byteLength } if (typeof string !== 'string') { string = '' + string } var len = string.length if (len === 0) return 0 // Use a for loop to avoid recursion var loweredCase = false for (;;) { switch (encoding) { case 'ascii': case 'latin1': case 'binary': return len case 'utf8': case 'utf-8': case undefined: return utf8ToBytes(string).length case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return len * 2 case 'hex': return len >>> 1 case 'base64': return base64ToBytes(string).length default: if (loweredCase) return utf8ToBytes(string).length // assume utf8 encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.byteLength = byteLength function slowToString (encoding, start, end) { var loweredCase = false // No need to verify that "this.length <= MAX_UINT32" since it's a read-only // property of a typed array. // This behaves neither like String nor Uint8Array in that we set start/end // to their upper/lower bounds if the value passed is out of range. // undefined is handled specially as per ECMA-262 6th Edition, // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. if (start === undefined || start < 0) { start = 0 } // Return early if start > this.length. Done here to prevent potential uint32 // coercion fail below. if (start > this.length) { return '' } if (end === undefined || end > this.length) { end = this.length } if (end <= 0) { return '' } // Force coersion to uint32. This will also coerce falsey/NaN values to 0. end >>>= 0 start >>>= 0 if (end <= start) { return '' } if (!encoding) encoding = 'utf8' while (true) { switch (encoding) { case 'hex': return hexSlice(this, start, end) case 'utf8': case 'utf-8': return utf8Slice(this, start, end) case 'ascii': return asciiSlice(this, start, end) case 'latin1': case 'binary': return latin1Slice(this, start, end) case 'base64': return base64Slice(this, start, end) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return utf16leSlice(this, start, end) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = (encoding + '').toLowerCase() loweredCase = true } } } // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect // Buffer instances. Buffer.prototype._isBuffer = true function swap (b, n, m) { var i = b[n] b[n] = b[m] b[m] = i } Buffer.prototype.swap16 = function swap16 () { var len = this.length if (len % 2 !== 0) { throw new RangeError('Buffer size must be a multiple of 16-bits') } for (var i = 0; i < len; i += 2) { swap(this, i, i + 1) } return this } Buffer.prototype.swap32 = function swap32 () { var len = this.length if (len % 4 !== 0) { throw new RangeError('Buffer size must be a multiple of 32-bits') } for (var i = 0; i < len; i += 4) { swap(this, i, i + 3) swap(this, i + 1, i + 2) } return this } Buffer.prototype.swap64 = function swap64 () { var len = this.length if (len % 8 !== 0) { throw new RangeError('Buffer size must be a multiple of 64-bits') } for (var i = 0; i < len; i += 8) { swap(this, i, i + 7) swap(this, i + 1, i + 6) swap(this, i + 2, i + 5) swap(this, i + 3, i + 4) } return this } Buffer.prototype.toString = function toString () { var length = this.length | 0 if (length === 0) return '' if (arguments.length === 0) return utf8Slice(this, 0, length) return slowToString.apply(this, arguments) } Buffer.prototype.equals = function equals (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') if (this === b) return true return Buffer.compare(this, b) === 0 } Buffer.prototype.inspect = function inspect () { var str = '' var max = exports.INSPECT_MAX_BYTES if (this.length > 0) { str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') if (this.length > max) str += ' ... ' } return '' } Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { if (!Buffer.isBuffer(target)) { throw new TypeError('Argument must be a Buffer') } if (start === undefined) { start = 0 } if (end === undefined) { end = target ? target.length : 0 } if (thisStart === undefined) { thisStart = 0 } if (thisEnd === undefined) { thisEnd = this.length } if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { throw new RangeError('out of range index') } if (thisStart >= thisEnd && start >= end) { return 0 } if (thisStart >= thisEnd) { return -1 } if (start >= end) { return 1 } start >>>= 0 end >>>= 0 thisStart >>>= 0 thisEnd >>>= 0 if (this === target) return 0 var x = thisEnd - thisStart var y = end - start var len = Math.min(x, y) var thisCopy = this.slice(thisStart, thisEnd) var targetCopy = target.slice(start, end) for (var i = 0; i < len; ++i) { if (thisCopy[i] !== targetCopy[i]) { x = thisCopy[i] y = targetCopy[i] break } } if (x < y) return -1 if (y < x) return 1 return 0 } // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, // OR the last index of `val` in `buffer` at offset <= `byteOffset`. // // Arguments: // - buffer - a Buffer to search // - val - a string, Buffer, or number // - byteOffset - an index into `buffer`; will be clamped to an int32 // - encoding - an optional encoding, relevant is val is a string // - dir - true for indexOf, false for lastIndexOf function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { // Empty buffer means no match if (buffer.length === 0) return -1 // Normalize byteOffset if (typeof byteOffset === 'string') { encoding = byteOffset byteOffset = 0 } else if (byteOffset > 0x7fffffff) { byteOffset = 0x7fffffff } else if (byteOffset < -0x80000000) { byteOffset = -0x80000000 } byteOffset = +byteOffset // Coerce to Number. if (isNaN(byteOffset)) { // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer byteOffset = dir ? 0 : (buffer.length - 1) } // Normalize byteOffset: negative offsets start from the end of the buffer if (byteOffset < 0) byteOffset = buffer.length + byteOffset if (byteOffset >= buffer.length) { if (dir) return -1 else byteOffset = buffer.length - 1 } else if (byteOffset < 0) { if (dir) byteOffset = 0 else return -1 } // Normalize val if (typeof val === 'string') { val = Buffer.from(val, encoding) } // Finally, search either indexOf (if dir is true) or lastIndexOf if (Buffer.isBuffer(val)) { // Special case: looking for empty string/buffer always fails if (val.length === 0) { return -1 } return arrayIndexOf(buffer, val, byteOffset, encoding, dir) } else if (typeof val === 'number') { val = val & 0xFF // Search for a byte value [0-255] if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') { if (dir) { return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) } else { return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) } } return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) } throw new TypeError('val must be string, number or Buffer') } function arrayIndexOf (arr, val, byteOffset, encoding, dir) { var indexSize = 1 var arrLength = arr.length var valLength = val.length if (encoding !== undefined) { encoding = String(encoding).toLowerCase() if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { if (arr.length < 2 || val.length < 2) { return -1 } indexSize = 2 arrLength /= 2 valLength /= 2 byteOffset /= 2 } } function read (buf, i) { if (indexSize === 1) { return buf[i] } else { return buf.readUInt16BE(i * indexSize) } } var i if (dir) { var foundIndex = -1 for (i = byteOffset; i < arrLength; i++) { if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { if (foundIndex === -1) foundIndex = i if (i - foundIndex + 1 === valLength) return foundIndex * indexSize } else { if (foundIndex !== -1) i -= i - foundIndex foundIndex = -1 } } } else { if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength for (i = byteOffset; i >= 0; i--) { var found = true for (var j = 0; j < valLength; j++) { if (read(arr, i + j) !== read(val, j)) { found = false break } } if (found) return i } } return -1 } Buffer.prototype.includes = function includes (val, byteOffset, encoding) { return this.indexOf(val, byteOffset, encoding) !== -1 } Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, true) } Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, false) } function hexWrite (buf, string, offset, length) { offset = Number(offset) || 0 var remaining = buf.length - offset if (!length) { length = remaining } else { length = Number(length) if (length > remaining) { length = remaining } } // must be an even number of digits var strLen = string.length if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') if (length > strLen / 2) { length = strLen / 2 } for (var i = 0; i < length; ++i) { var parsed = parseInt(string.substr(i * 2, 2), 16) if (isNaN(parsed)) return i buf[offset + i] = parsed } return i } function utf8Write (buf, string, offset, length) { return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) } function asciiWrite (buf, string, offset, length) { return blitBuffer(asciiToBytes(string), buf, offset, length) } function latin1Write (buf, string, offset, length) { return asciiWrite(buf, string, offset, length) } function base64Write (buf, string, offset, length) { return blitBuffer(base64ToBytes(string), buf, offset, length) } function ucs2Write (buf, string, offset, length) { return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) } Buffer.prototype.write = function write (string, offset, length, encoding) { // Buffer#write(string) if (offset === undefined) { encoding = 'utf8' length = this.length offset = 0 // Buffer#write(string, encoding) } else if (length === undefined && typeof offset === 'string') { encoding = offset length = this.length offset = 0 // Buffer#write(string, offset[, length][, encoding]) } else if (isFinite(offset)) { offset = offset | 0 if (isFinite(length)) { length = length | 0 if (encoding === undefined) encoding = 'utf8' } else { encoding = length length = undefined } // legacy write(string, encoding, offset, length) - remove in v0.13 } else { throw new Error( 'Buffer.write(string, encoding, offset[, length]) is no longer supported' ) } var remaining = this.length - offset if (length === undefined || length > remaining) length = remaining if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { throw new RangeError('Attempt to write outside buffer bounds') } if (!encoding) encoding = 'utf8' var loweredCase = false for (;;) { switch (encoding) { case 'hex': return hexWrite(this, string, offset, length) case 'utf8': case 'utf-8': return utf8Write(this, string, offset, length) case 'ascii': return asciiWrite(this, string, offset, length) case 'latin1': case 'binary': return latin1Write(this, string, offset, length) case 'base64': // Warning: maxLength not taken into account in base64Write return base64Write(this, string, offset, length) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return ucs2Write(this, string, offset, length) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.prototype.toJSON = function toJSON () { return { type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0) } } function base64Slice (buf, start, end) { if (start === 0 && end === buf.length) { return base64.fromByteArray(buf) } else { return base64.fromByteArray(buf.slice(start, end)) } } function utf8Slice (buf, start, end) { end = Math.min(buf.length, end) var res = [] var i = start while (i < end) { var firstByte = buf[i] var codePoint = null var bytesPerSequence = (firstByte > 0xEF) ? 4 : (firstByte > 0xDF) ? 3 : (firstByte > 0xBF) ? 2 : 1 if (i + bytesPerSequence <= end) { var secondByte, thirdByte, fourthByte, tempCodePoint switch (bytesPerSequence) { case 1: if (firstByte < 0x80) { codePoint = firstByte } break case 2: secondByte = buf[i + 1] if ((secondByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) if (tempCodePoint > 0x7F) { codePoint = tempCodePoint } } break case 3: secondByte = buf[i + 1] thirdByte = buf[i + 2] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { codePoint = tempCodePoint } } break case 4: secondByte = buf[i + 1] thirdByte = buf[i + 2] fourthByte = buf[i + 3] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { codePoint = tempCodePoint } } } } if (codePoint === null) { // we did not generate a valid codePoint so insert a // replacement char (U+FFFD) and advance only 1 byte codePoint = 0xFFFD bytesPerSequence = 1 } else if (codePoint > 0xFFFF) { // encode to utf16 (surrogate pair dance) codePoint -= 0x10000 res.push(codePoint >>> 10 & 0x3FF | 0xD800) codePoint = 0xDC00 | codePoint & 0x3FF } res.push(codePoint) i += bytesPerSequence } return decodeCodePointsArray(res) } // Based on http://stackoverflow.com/a/22747272/680742, the browser with // the lowest limit is Chrome, with 0x10000 args. // We go 1 magnitude less, for safety var MAX_ARGUMENTS_LENGTH = 0x1000 function decodeCodePointsArray (codePoints) { var len = codePoints.length if (len <= MAX_ARGUMENTS_LENGTH) { return String.fromCharCode.apply(String, codePoints) // avoid extra slice() } // Decode in chunks to avoid "call stack size exceeded". var res = '' var i = 0 while (i < len) { res += String.fromCharCode.apply( String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) ) } return res } function asciiSlice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; ++i) { ret += String.fromCharCode(buf[i] & 0x7F) } return ret } function latin1Slice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; ++i) { ret += String.fromCharCode(buf[i]) } return ret } function hexSlice (buf, start, end) { var len = buf.length if (!start || start < 0) start = 0 if (!end || end < 0 || end > len) end = len var out = '' for (var i = start; i < end; ++i) { out += toHex(buf[i]) } return out } function utf16leSlice (buf, start, end) { var bytes = buf.slice(start, end) var res = '' for (var i = 0; i < bytes.length; i += 2) { res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) } return res } Buffer.prototype.slice = function slice (start, end) { var len = this.length start = ~~start end = end === undefined ? len : ~~end if (start < 0) { start += len if (start < 0) start = 0 } else if (start > len) { start = len } if (end < 0) { end += len if (end < 0) end = 0 } else if (end > len) { end = len } if (end < start) end = start var newBuf if (Buffer.TYPED_ARRAY_SUPPORT) { newBuf = this.subarray(start, end) newBuf.__proto__ = Buffer.prototype } else { var sliceLen = end - start newBuf = new Buffer(sliceLen, undefined) for (var i = 0; i < sliceLen; ++i) { newBuf[i] = this[i + start] } } return newBuf } /* * Need to make sure that buffer isn't trying to write out of bounds. */ function checkOffset (offset, ext, length) { if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') } Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } return val } Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { checkOffset(offset, byteLength, this.length) } var val = this[offset + --byteLength] var mul = 1 while (byteLength > 0 && (mul *= 0x100)) { val += this[offset + --byteLength] * mul } return val } Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) return this[offset] } Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return this[offset] | (this[offset + 1] << 8) } Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return (this[offset] << 8) | this[offset + 1] } Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ((this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16)) + (this[offset + 3] * 0x1000000) } Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] * 0x1000000) + ((this[offset + 1] << 16) | (this[offset + 2] << 8) | this[offset + 3]) } Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var i = byteLength var mul = 1 var val = this[offset + --i] while (i > 0 && (mul *= 0x100)) { val += this[offset + --i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) if (!(this[offset] & 0x80)) return (this[offset]) return ((0xff - this[offset] + 1) * -1) } Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset] | (this[offset + 1] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset + 1] | (this[offset] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16) | (this[offset + 3] << 24) } Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] << 24) | (this[offset + 1] << 16) | (this[offset + 2] << 8) | (this[offset + 3]) } Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, true, 23, 4) } Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, false, 23, 4) } Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, true, 52, 8) } Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, false, 52, 8) } function checkInt (buf, value, offset, ext, max, min) { if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') if (offset + ext > buf.length) throw new RangeError('Index out of range') } Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { var maxBytes = Math.pow(2, 8 * byteLength) - 1 checkInt(this, value, offset, byteLength, maxBytes, 0) } var mul = 1 var i = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { var maxBytes = Math.pow(2, 8 * byteLength) - 1 checkInt(this, value, offset, byteLength, maxBytes, 0) } var i = byteLength - 1 var mul = 1 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) this[offset] = (value & 0xff) return offset + 1 } function objectWriteUInt16 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> (littleEndian ? i : 1 - i) * 8 } } Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = (value & 0xff) } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } function objectWriteUInt32 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffffffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff } } Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset + 3] = (value >>> 24) this[offset + 2] = (value >>> 16) this[offset + 1] = (value >>> 8) this[offset] = (value & 0xff) } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = (value & 0xff) } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = 0 var mul = 1 var sub = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { sub = 1 } this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = byteLength - 1 var mul = 1 var sub = 0 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { sub = 1 } this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) if (value < 0) value = 0xff + value + 1 this[offset] = (value & 0xff) return offset + 1 } Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = (value & 0xff) } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value & 0xff) this[offset + 1] = (value >>> 8) this[offset + 2] = (value >>> 16) this[offset + 3] = (value >>> 24) } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (value < 0) value = 0xffffffff + value + 1 if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = (value & 0xff) } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } function checkIEEE754 (buf, value, offset, ext, max, min) { if (offset + ext > buf.length) throw new RangeError('Index out of range') if (offset < 0) throw new RangeError('Index out of range') } function writeFloat (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) } ieee754.write(buf, value, offset, littleEndian, 23, 4) return offset + 4 } Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert) } Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert) } function writeDouble (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) } ieee754.write(buf, value, offset, littleEndian, 52, 8) return offset + 8 } Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert) } Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert) } // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) Buffer.prototype.copy = function copy (target, targetStart, start, end) { if (!start) start = 0 if (!end && end !== 0) end = this.length if (targetStart >= target.length) targetStart = target.length if (!targetStart) targetStart = 0 if (end > 0 && end < start) end = start // Copy 0 bytes; we're done if (end === start) return 0 if (target.length === 0 || this.length === 0) return 0 // Fatal error conditions if (targetStart < 0) { throw new RangeError('targetStart out of bounds') } if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') if (end < 0) throw new RangeError('sourceEnd out of bounds') // Are we oob? if (end > this.length) end = this.length if (target.length - targetStart < end - start) { end = target.length - targetStart + start } var len = end - start var i if (this === target && start < targetStart && targetStart < end) { // descending copy from end for (i = len - 1; i >= 0; --i) { target[i + targetStart] = this[i + start] } } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { // ascending copy from start for (i = 0; i < len; ++i) { target[i + targetStart] = this[i + start] } } else { Uint8Array.prototype.set.call( target, this.subarray(start, start + len), targetStart ) } return len } // Usage: // buffer.fill(number[, offset[, end]]) // buffer.fill(buffer[, offset[, end]]) // buffer.fill(string[, offset[, end]][, encoding]) Buffer.prototype.fill = function fill (val, start, end, encoding) { // Handle string cases: if (typeof val === 'string') { if (typeof start === 'string') { encoding = start start = 0 end = this.length } else if (typeof end === 'string') { encoding = end end = this.length } if (val.length === 1) { var code = val.charCodeAt(0) if (code < 256) { val = code } } if (encoding !== undefined && typeof encoding !== 'string') { throw new TypeError('encoding must be a string') } if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { throw new TypeError('Unknown encoding: ' + encoding) } } else if (typeof val === 'number') { val = val & 255 } // Invalid ranges are not set to a default, so can range check early. if (start < 0 || this.length < start || this.length < end) { throw new RangeError('Out of range index') } if (end <= start) { return this } start = start >>> 0 end = end === undefined ? this.length : end >>> 0 if (!val) val = 0 var i if (typeof val === 'number') { for (i = start; i < end; ++i) { this[i] = val } } else { var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString()) var len = bytes.length for (i = 0; i < end - start; ++i) { this[i + start] = bytes[i % len] } } return this } // HELPER FUNCTIONS // ================ var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g function base64clean (str) { // Node strips out invalid characters like \n and \t from the string, base64-js does not str = stringtrim(str).replace(INVALID_BASE64_RE, '') // Node converts strings with length < 2 to '' if (str.length < 2) return '' // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not while (str.length % 4 !== 0) { str = str + '=' } return str } function stringtrim (str) { if (str.trim) return str.trim() return str.replace(/^\s+|\s+$/g, '') } function toHex (n) { if (n < 16) return '0' + n.toString(16) return n.toString(16) } function utf8ToBytes (string, units) { units = units || Infinity var codePoint var length = string.length var leadSurrogate = null var bytes = [] for (var i = 0; i < length; ++i) { codePoint = string.charCodeAt(i) // is surrogate component if (codePoint > 0xD7FF && codePoint < 0xE000) { // last char was a lead if (!leadSurrogate) { // no lead yet if (codePoint > 0xDBFF) { // unexpected trail if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } else if (i + 1 === length) { // unpaired lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } // valid lead leadSurrogate = codePoint continue } // 2 leads in a row if (codePoint < 0xDC00) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) leadSurrogate = codePoint continue } // valid surrogate pair codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 } else if (leadSurrogate) { // valid bmp char, but last char was a lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) } leadSurrogate = null // encode utf8 if (codePoint < 0x80) { if ((units -= 1) < 0) break bytes.push(codePoint) } else if (codePoint < 0x800) { if ((units -= 2) < 0) break bytes.push( codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x10000) { if ((units -= 3) < 0) break bytes.push( codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x110000) { if ((units -= 4) < 0) break bytes.push( codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else { throw new Error('Invalid code point') } } return bytes } function asciiToBytes (str) { var byteArray = [] for (var i = 0; i < str.length; ++i) { // Node's code seems to be doing this and not & 0x7F.. byteArray.push(str.charCodeAt(i) & 0xFF) } return byteArray } function utf16leToBytes (str, units) { var c, hi, lo var byteArray = [] for (var i = 0; i < str.length; ++i) { if ((units -= 2) < 0) break c = str.charCodeAt(i) hi = c >> 8 lo = c % 256 byteArray.push(lo) byteArray.push(hi) } return byteArray } function base64ToBytes (str) { return base64.toByteArray(base64clean(str)) } function blitBuffer (src, dst, offset, length) { for (var i = 0; i < length; ++i) { if ((i + offset >= dst.length) || (i >= src.length)) break dst[i + offset] = src[i] } return i } function isnan (val) { return val !== val // eslint-disable-line no-self-compare } }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) },{"base64-js":1,"buffer":2,"ieee754":4,"isarray":5}],3:[function(require,module,exports){ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) */ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = (nBytes * 8) - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var nBits = -7 var i = isLE ? (nBytes - 1) : 0 var d = isLE ? -1 : 1 var s = buffer[offset + i] i += d e = s & ((1 << (-nBits)) - 1) s >>= (-nBits) nBits += eLen for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} m = e & ((1 << (-nBits)) - 1) e >>= (-nBits) nBits += mLen for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} if (e === 0) { e = 1 - eBias } else if (e === eMax) { return m ? NaN : ((s ? -1 : 1) * Infinity) } else { m = m + Math.pow(2, mLen) e = e - eBias } return (s ? -1 : 1) * m * Math.pow(2, e - mLen) } exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { var e, m, c var eLen = (nBytes * 8) - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) var i = isLE ? 0 : (nBytes - 1) var d = isLE ? 1 : -1 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 value = Math.abs(value) if (isNaN(value) || value === Infinity) { m = isNaN(value) ? 1 : 0 e = eMax } else { e = Math.floor(Math.log(value) / Math.LN2) if (value * (c = Math.pow(2, -e)) < 1) { e-- c *= 2 } if (e + eBias >= 1) { value += rt / c } else { value += rt * Math.pow(2, 1 - eBias) } if (value * c >= 2) { e++ c /= 2 } if (e + eBias >= eMax) { m = 0 e = eMax } else if (e + eBias >= 1) { m = ((value * c) - 1) * Math.pow(2, mLen) e = e + eBias } else { m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) e = 0 } } for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} e = (e << mLen) | m eLen += mLen for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} buffer[offset + i - d] |= s * 128 } },{}],5:[function(require,module,exports){ var toString = {}.toString; module.exports = Array.isArray || function (arr) { return toString.call(arr) == '[object Array]'; }; },{}],6:[function(require,module,exports){ (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,setImmediate){(function (){ /*! JSZip v3.10.1 - A JavaScript class for generating and reading zip files (c) 2009-2016 Stuart Knightley Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. JSZip uses the library pako released under the MIT license : https://github.com/nodeca/pako/blob/main/LICENSE */ !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l="function"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{"./support":30,"./utils":32}],2:[function(e,t,r){"use strict";var n=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),a=e("./stream/DataLengthProbe");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){"use strict";var n=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){"use strict";var n=e("./utils");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){"use strict";var n=null;n="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),a=e("./stream/GenericWorker"),o=n?"uint8array":"array";function h(e,t){a.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h("Deflate",e)},r.uncompressWorker=function(){return new h("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){"use strict";function A(e,t){var r,n="";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo("string",s(h.name)),c=I.transformTo("string",O.utf8encode(h.name)),d=h.comment,p=I.transformTo("string",s(d)),m=I.transformTo("string",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b="",v="",y="",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),"UNIX"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+="up"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+="uc"+A(y.length,2)+y);var E="";return E+="\n\0",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+"\0\0\0\0"+A(z,4)+A(n,4)+f+b+p}}var I=e("../utils"),i=e("../stream/GenericWorker"),O=e("../utf8"),B=e("../crc32"),R=e("../signature");function s(e,t,r,n){i.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,r){"use strict";var n=e("./Uint8ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){"use strict";var n=e("./ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../support"),s=e("./ArrayReader"),a=e("./StringReader"),o=e("./NodeBufferReader"),h=e("./Uint8ArrayReader");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new o(e):i.uint8array?new h(n.transformTo("uint8array",e)):new s(n.transformTo("array",e)):new a(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../utils");function s(e){n.call(this,"ConvertWorker to "+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){"use strict";function n(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=n},{}],29:[function(e,t,r){"use strict";var h=e("../utils"),i=e("./ConvertWorker"),s=e("./GenericWorker"),u=e("../base64"),n=e("../support"),a=e("../external"),o=null;if(n.nodestream)try{o=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on("data",function(e,t){n.push(e),o&&o(t)}).on("error",function(e){n=[],r(e)}).on("end",function(){try{var e=function(e,t,r){switch(e){case"blob":return h.newBlob(h.transformTo("arraybuffer",t),r);case"base64":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?"uint8array":"array",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var o=e("./support"),h=e("./base64"),r=e("./nodejsUtils"),u=e("./external");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){"use strict";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){"use strict";var h,c=e("../utils/common"),u=e("./trees"),d=e("./adler32"),p=e("./crc32"),n=e("./messages"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&u)){e.msg="unknown compression method",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,r){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){"use strict";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i="[object process]"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage("","*"),r.onmessage=t,e}}()?(a="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",d,!1):r.attachEvent("onmessage",d),function(e){r.postMessage(a+e,"*")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&"onreadystatechange"in l.createElement("script")?(s=l.documentElement,function(e){var t=l.createElement("script");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r 1) { for (var i = 1; i < arguments.length; i++) { args[i - 1] = arguments[i]; } } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { runTimeout(drainQueue); } }; // v8 likes predictible objects function Item(fun, array) { this.fun = fun; this.array = array; } Item.prototype.run = function () { this.fun.apply(null, this.array); }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues process.versions = {}; function noop() {} process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.prependListener = noop; process.prependOnceListener = noop; process.listeners = function (name) { return [] } process.binding = function (name) { throw new Error('process.binding is not supported'); }; process.cwd = function () { return '/' }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function() { return 0; }; },{}],8:[function(require,module,exports){ (function (setImmediate,clearImmediate){(function (){ var nextTick = require('process/browser.js').nextTick; var apply = Function.prototype.apply; var slice = Array.prototype.slice; var immediateIds = {}; var nextImmediateId = 0; // DOM APIs, for completeness exports.setTimeout = function() { return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); }; exports.setInterval = function() { return new Timeout(apply.call(setInterval, window, arguments), clearInterval); }; exports.clearTimeout = exports.clearInterval = function(timeout) { timeout.close(); }; function Timeout(id, clearFn) { this._id = id; this._clearFn = clearFn; } Timeout.prototype.unref = Timeout.prototype.ref = function() {}; Timeout.prototype.close = function() { this._clearFn.call(window, this._id); }; // Does not start the time, just sets up the members needed. exports.enroll = function(item, msecs) { clearTimeout(item._idleTimeoutId); item._idleTimeout = msecs; }; exports.unenroll = function(item) { clearTimeout(item._idleTimeoutId); item._idleTimeout = -1; }; exports._unrefActive = exports.active = function(item) { clearTimeout(item._idleTimeoutId); var msecs = item._idleTimeout; if (msecs >= 0) { item._idleTimeoutId = setTimeout(function onTimeout() { if (item._onTimeout) item._onTimeout(); }, msecs); } }; // That's not how node.js implements it but the exposed api is the same. exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { var id = nextImmediateId++; var args = arguments.length < 2 ? false : slice.call(arguments, 1); immediateIds[id] = true; nextTick(function onNextTick() { if (immediateIds[id]) { // fn.call() is faster so we optimize for the common use-case // @see http://jsperf.com/call-apply-segu if (args) { fn.apply(null, args); } else { fn.call(null); } // Prevent ids from leaking exports.clearImmediate(id); } }); return id; }; exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { delete immediateIds[id]; }; }).call(this)}).call(this,require("timers").setImmediate,require("timers").clearImmediate) },{"process/browser.js":7,"timers":8}],9:[function(require,module,exports){ "use strict"; var __importDefault = void 0 && (void 0).__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HandleZip = void 0; var jszip_1 = __importDefault(require("jszip")); var method_1 = require("./common/method"); var HandleZip = /** @class */function () { function HandleZip(file) { // Support nodejs fs to read files // if(file instanceof File){ this.uploadFile = file; // } } HandleZip.prototype.unzipFile = function (successFunc, errorFunc) { // var new_zip:JSZip = new JSZip(); jszip_1["default"].loadAsync(this.uploadFile) // 1) read the Blob .then(function (zip) { var fileList = {}, lastIndex = Object.keys(zip.files).length, index = 0; zip.forEach(function (relativePath, zipEntry) { var fileName = zipEntry.name; var fileNameArr = fileName.split("."); var suffix = fileNameArr[fileNameArr.length - 1].toLowerCase(); var fileType = "string"; if (suffix in { "png": 1, "jpeg": 1, "jpg": 1, "gif": 1, "bmp": 1, "tif": 1, "webp": 1 }) { fileType = "base64"; } else if (suffix == "emf") { fileType = "arraybuffer"; } zipEntry.async(fileType).then(function (data) { if (fileType == "base64") { data = "data:image/" + suffix + ";base64," + data; } fileList[zipEntry.name] = data; // console.log(lastIndex, index); if (lastIndex == index + 1) { successFunc(fileList); } index++; }); }); }, function (e) { errorFunc(e); }); }; HandleZip.prototype.unzipFileByUrl = function (url, successFunc, errorFunc) { var new_zip = new jszip_1["default"](); method_1.getBinaryContent(url, function (err, data) { if (err) { throw err; // or handle err } jszip_1["default"].loadAsync(data).then(function (zip) { var fileList = {}, lastIndex = Object.keys(zip.files).length, index = 0; zip.forEach(function (relativePath, zipEntry) { var fileName = zipEntry.name; var fileNameArr = fileName.split("."); var suffix = fileNameArr[fileNameArr.length - 1].toLowerCase(); var fileType = "string"; if (suffix in { "png": 1, "jpeg": 1, "jpg": 1, "gif": 1, "bmp": 1, "tif": 1, "webp": 1 }) { fileType = "base64"; } else if (suffix == "emf") { fileType = "arraybuffer"; } zipEntry.async(fileType).then(function (data) { if (fileType == "base64") { data = "data:image/" + suffix + ";base64," + data; } fileList[zipEntry.name] = data; // console.log(lastIndex, index); if (lastIndex == index + 1) { successFunc(fileList); } index++; }); }); }, function (e) { errorFunc(e); }); }); }; HandleZip.prototype.newZipFile = function () { var zip = new jszip_1["default"](); this.workBook = zip; }; //title:"nested/hello.txt", content:"Hello Worldasdfasfasdfasfasfasfasfasdfas" HandleZip.prototype.addToZipFile = function (title, content) { if (this.workBook == null) { var zip = new jszip_1["default"](); this.workBook = zip; } this.workBook.file(title, content); }; return HandleZip; }(); exports.HandleZip = HandleZip; },{"./common/method":18,"jszip":6}],10:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LuckyImageBase = exports.LuckysheetCalcChain = exports.LuckySheetConfigMerge = exports.LuckySheetborderInfoCellValueStyle = exports.LuckySheetborderInfoCellValue = exports.LuckySheetborderInfoCellForImp = exports.LuckyConfig = exports.LuckyInlineString = exports.LuckySheetCellFormat = exports.LuckySheetCelldataValue = exports.LuckySheetCelldataBase = exports.LuckyFileInfo = exports.LuckySheetBase = exports.LuckyFileBase = void 0; var LuckyFileBase = /** @class */function () { function LuckyFileBase() {} return LuckyFileBase; }(); exports.LuckyFileBase = LuckyFileBase; var LuckySheetBase = /** @class */function () { function LuckySheetBase() {} return LuckySheetBase; }(); exports.LuckySheetBase = LuckySheetBase; var LuckyFileInfo = /** @class */function () { function LuckyFileInfo() {} return LuckyFileInfo; }(); exports.LuckyFileInfo = LuckyFileInfo; var LuckySheetCelldataBase = /** @class */function () { function LuckySheetCelldataBase() {} return LuckySheetCelldataBase; }(); exports.LuckySheetCelldataBase = LuckySheetCelldataBase; var LuckySheetCelldataValue = /** @class */function () { function LuckySheetCelldataValue() {} return LuckySheetCelldataValue; }(); exports.LuckySheetCelldataValue = LuckySheetCelldataValue; var LuckySheetCellFormat = /** @class */function () { function LuckySheetCellFormat() {} return LuckySheetCellFormat; }(); exports.LuckySheetCellFormat = LuckySheetCellFormat; var LuckyInlineString = /** @class */function () { function LuckyInlineString() {} return LuckyInlineString; }(); exports.LuckyInlineString = LuckyInlineString; var LuckyConfig = /** @class */function () { function LuckyConfig() {} return LuckyConfig; }(); exports.LuckyConfig = LuckyConfig; var LuckySheetborderInfoCellForImp = /** @class */function () { function LuckySheetborderInfoCellForImp() {} return LuckySheetborderInfoCellForImp; }(); exports.LuckySheetborderInfoCellForImp = LuckySheetborderInfoCellForImp; var LuckySheetborderInfoCellValue = /** @class */function () { function LuckySheetborderInfoCellValue() {} return LuckySheetborderInfoCellValue; }(); exports.LuckySheetborderInfoCellValue = LuckySheetborderInfoCellValue; var LuckySheetborderInfoCellValueStyle = /** @class */function () { function LuckySheetborderInfoCellValueStyle() {} return LuckySheetborderInfoCellValueStyle; }(); exports.LuckySheetborderInfoCellValueStyle = LuckySheetborderInfoCellValueStyle; var LuckySheetConfigMerge = /** @class */function () { function LuckySheetConfigMerge() {} return LuckySheetConfigMerge; }(); exports.LuckySheetConfigMerge = LuckySheetConfigMerge; var LuckysheetCalcChain = /** @class */function () { function LuckysheetCalcChain() {} return LuckysheetCalcChain; }(); exports.LuckysheetCalcChain = LuckysheetCalcChain; var LuckyImageBase = /** @class */function () { function LuckyImageBase() {} return LuckyImageBase; }(); exports.LuckyImageBase = LuckyImageBase; },{}],11:[function(require,module,exports){ "use strict"; var __extends = void 0 && (void 0).__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); exports.LuckySheetCelldata = void 0; var ReadXml_1 = require("./ReadXml"); var method_1 = require("../common/method"); var constant_1 = require("../common/constant"); var LuckyBase_1 = require("./LuckyBase"); var LuckySheetCelldata = /** @class */function (_super) { __extends(LuckySheetCelldata, _super); function LuckySheetCelldata(cell, styles, sharedStrings, mergeCells, sheetFile, ReadXml) { var _this = //Private _super.call(this) || this; _this.cell = cell; _this.sheetFile = sheetFile; _this.styles = styles; _this.sharedStrings = sharedStrings; _this.readXml = ReadXml; _this.mergeCells = mergeCells; var attrList = cell.attributeList; var r = attrList.r, s = attrList.s, t = attrList.t; var range = method_1.getcellrange(r); _this.r = range.row[0]; _this.c = range.column[0]; _this.v = _this.generateValue(s, t); return _this; } /** * @param s Style index ,start 1 * @param t Cell type, Optional value is ST_CellType, it's found at constat.ts */ LuckySheetCelldata.prototype.generateValue = function (s, t) { var _this = this; var v = this.cell.getInnerElements("v"); var f = this.cell.getInnerElements("f"); if (v == null) { v = this.cell.getInnerElements("t"); } var cellXfs = this.styles["cellXfs"]; var cellStyleXfs = this.styles["cellStyleXfs"]; var cellStyles = this.styles["cellStyles"]; var fonts = this.styles["fonts"]; var fills = this.styles["fills"]; var borders = this.styles["borders"]; var numfmts = this.styles["numfmts"]; var clrScheme = this.styles["clrScheme"]; var sharedStrings = this.sharedStrings; var cellValue = new LuckyBase_1.LuckySheetCelldataValue(); if (f != null) { var formula = f[0], attrList = formula.attributeList; var t_1 = attrList.t, ref = attrList.ref, si = attrList.si; var formulaValue = f[0].value; if (t_1 == "shared") { this._fomulaRef = ref; this._formulaType = t_1; this._formulaSi = si; } // console.log(ref, t, si); if (ref != null || formulaValue != null && formulaValue.length > 0) { formulaValue = method_1.escapeCharacter(formulaValue); cellValue.f = "=" + formulaValue; } } var familyFont = null; var quotePrefix; if (s != null) { var sNum = parseInt(s); var cellXf = cellXfs[sNum]; var xfId = cellXf.attributeList.xfId; var numFmtId = void 0, fontId = void 0, fillId = void 0, borderId = void 0; var horizontal = void 0, vertical = void 0, wrapText = void 0, textRotation = void 0, shrinkToFit = void 0, indent = void 0, applyProtection = void 0; if (xfId != null) { var cellStyleXf = cellStyleXfs[parseInt(xfId)]; var attrList = cellStyleXf.attributeList; var applyNumberFormat_1 = attrList.applyNumberFormat; var applyFont_1 = attrList.applyFont; var applyFill_1 = attrList.applyFill; var applyBorder_1 = attrList.applyBorder; var applyAlignment_1 = attrList.applyAlignment; // let applyProtection = attrList.applyProtection; applyProtection = attrList.applyProtection; quotePrefix = attrList.quotePrefix; if (applyNumberFormat_1 != "0" && attrList.numFmtId != null) { // if(attrList.numFmtId!="0"){ numFmtId = attrList.numFmtId; // } } if (applyFont_1 != "0" && attrList.fontId != null) { fontId = attrList.fontId; } if (applyFill_1 != "0" && attrList.fillId != null) { fillId = attrList.fillId; } if (applyBorder_1 != "0" && attrList.borderId != null) { borderId = attrList.borderId; } if (applyAlignment_1 != null && applyAlignment_1 != "0") { var alignment = cellStyleXf.getInnerElements("alignment"); if (alignment != null) { var attrList_1 = alignment[0].attributeList; if (attrList_1.horizontal != null) { horizontal = attrList_1.horizontal; } if (attrList_1.vertical != null) { vertical = attrList_1.vertical; } if (attrList_1.wrapText != null) { wrapText = attrList_1.wrapText; } if (attrList_1.textRotation != null) { textRotation = attrList_1.textRotation; } if (attrList_1.shrinkToFit != null) { shrinkToFit = attrList_1.shrinkToFit; } if (attrList_1.indent != null) { indent = attrList_1.indent; } } } } var applyNumberFormat = cellXf.attributeList.applyNumberFormat; var applyFont = cellXf.attributeList.applyFont; var applyFill = cellXf.attributeList.applyFill; var applyBorder = cellXf.attributeList.applyBorder; var applyAlignment = cellXf.attributeList.applyAlignment; if (cellXf.attributeList.applyProtection != null) { applyProtection = cellXf.attributeList.applyProtection; } if (cellXf.attributeList.quotePrefix != null) { quotePrefix = cellXf.attributeList.quotePrefix; } if (applyNumberFormat != "0" && cellXf.attributeList.numFmtId != null) { numFmtId = cellXf.attributeList.numFmtId; } if (applyFont != "0") { fontId = cellXf.attributeList.fontId; } if (applyFill != "0") { fillId = cellXf.attributeList.fillId; } if (applyBorder != "0") { borderId = cellXf.attributeList.borderId; } if (applyAlignment != "0") { var alignment = cellXf.getInnerElements("alignment"); if (alignment != null && alignment.length > 0) { var attrList = alignment[0].attributeList; if (attrList.horizontal != null) { horizontal = attrList.horizontal; } if (attrList.vertical != null) { vertical = attrList.vertical; } if (attrList.wrapText != null) { wrapText = attrList.wrapText; } if (attrList.textRotation != null) { textRotation = attrList.textRotation; } if (attrList.shrinkToFit != null) { shrinkToFit = attrList.shrinkToFit; } if (attrList.indent != null) { indent = attrList.indent; } } } if (numFmtId != undefined) { var numf = numfmts[parseInt(numFmtId)]; var cellFormat = new LuckyBase_1.LuckySheetCellFormat(); cellFormat.fa = method_1.escapeCharacter(numf); // console.log(numf, numFmtId, this.v); cellFormat.t = t || 'd'; cellValue.ct = cellFormat; } if (fillId != undefined) { var fillIdNum = parseInt(fillId); var fill = fills[fillIdNum]; // console.log(cellValue.v); var bg = this.getBackgroundByFill(fill, clrScheme); if (bg != null) { cellValue.bg = bg; } } if (fontId != undefined) { var fontIdNum = parseInt(fontId); var font = fonts[fontIdNum]; if (font != null) { var sz = font.getInnerElements("sz"); //font size var colors = font.getInnerElements("color"); //font color var family = font.getInnerElements("name"); //font family var familyOverrides = font.getInnerElements("family"); //font family will be overrided by name var charset = font.getInnerElements("charset"); //font charset var bolds = font.getInnerElements("b"); //font bold var italics = font.getInnerElements("i"); //font italic var strikes = font.getInnerElements("strike"); //font italic var underlines = font.getInnerElements("u"); //font italic if (sz != null && sz.length > 0) { var fs = sz[0].attributeList.val; if (fs != null) { cellValue.fs = parseInt(fs); } } if (colors != null && colors.length > 0) { var color = colors[0]; var fc = ReadXml_1.getColor(color, this.styles, "t"); if (fc != null) { cellValue.fc = fc; } } if (familyOverrides != null && familyOverrides.length > 0) { var val = familyOverrides[0].attributeList.val; if (val != null) { familyFont = constant_1.fontFamilys[val]; } } if (family != null && family.length > 0) { var val = family[0].attributeList.val; if (val != null) { cellValue.ff = val; } } if (bolds != null && bolds.length > 0) { var bold = bolds[0].attributeList.val; if (bold == "0") { cellValue.bl = 0; } else { cellValue.bl = 1; } } if (italics != null && italics.length > 0) { var italic = italics[0].attributeList.val; if (italic == "0") { cellValue.it = 0; } else { cellValue.it = 1; } } if (strikes != null && strikes.length > 0) { var strike = strikes[0].attributeList.val; if (strike == "0") { cellValue.cl = 0; } else { cellValue.cl = 1; } } if (underlines != null && underlines.length > 0) { var underline = underlines[0].attributeList.val; if (underline == "single") { cellValue.un = 1; } else if (underline == "double") { cellValue.un = 2; } else if (underline == "singleAccounting") { cellValue.un = 3; } else if (underline == "doubleAccounting") { cellValue.un = 4; } else { cellValue.un = 0; } } } } // vt: number | undefined//Vertical alignment, 0 middle, 1 up, 2 down, alignment // ht: number | undefined//Horizontal alignment,0 center, 1 left, 2 right, alignment // tr: number | undefined //Text rotation,0: 0、1: 45 、2: -45、3 Vertical text、4: 90 、5: -90, alignment // tb: number | undefined //Text wrap,0 truncation, 1 overflow, 2 word wrap, alignment if (horizontal != undefined) { //Horizontal alignment if (horizontal == "center") { cellValue.ht = 0; } else if (horizontal == "centerContinuous") { cellValue.ht = 0; //luckysheet unsupport } else if (horizontal == "left") { cellValue.ht = 1; } else if (horizontal == "right") { cellValue.ht = 2; } else if (horizontal == "distributed") { cellValue.ht = 0; //luckysheet unsupport } else if (horizontal == "fill") { cellValue.ht = 1; //luckysheet unsupport } else if (horizontal == "general") { cellValue.ht = 1; //luckysheet unsupport } else if (horizontal == "justify") { cellValue.ht = 0; //luckysheet unsupport } else { cellValue.ht = 1; } } if (vertical != undefined) { //Vertical alignment if (vertical == "bottom") { cellValue.vt = 2; } else if (vertical == "center") { cellValue.vt = 0; } else if (vertical == "distributed") { cellValue.vt = 0; //luckysheet unsupport } else if (vertical == "justify") { cellValue.vt = 0; //luckysheet unsupport } else if (vertical == "top") { cellValue.vt = 1; } else { cellValue.vt = 1; } } else { //sometimes bottom style is lost after setting it in excel //when vertical is undefined set it to 2. cellValue.vt = 2; } if (wrapText != undefined) { if (wrapText == "1") { cellValue.tb = 2; } else { cellValue.tb = 1; } } else { cellValue.tb = 1; } if (textRotation != undefined) { // tr: number | undefined //Text rotation,0: 0、1: 45 、2: -45、3 Vertical text、4: 90 、5: -90, alignment if (textRotation == "255") { cellValue.tr = 3; } // else if(textRotation=="45"){ // cellValue.tr = 1; // } // else if(textRotation=="90"){ // cellValue.tr = 4; // } // else if(textRotation=="135"){ // cellValue.tr = 2; // } // else if(textRotation=="180"){ // cellValue.tr = 5; // } else { cellValue.tr = 0; cellValue.rt = parseInt(textRotation); } } if (shrinkToFit != undefined) {//luckysheet unsupport } if (indent != undefined) {//luckysheet unsupport } if (borderId != undefined) { var borderIdNum = parseInt(borderId); var border = borders[borderIdNum]; // this._borderId = borderIdNum; var borderObject = new LuckyBase_1.LuckySheetborderInfoCellForImp(); borderObject.rangeType = "cell"; // borderObject.cells = []; var borderCellValue = new LuckyBase_1.LuckySheetborderInfoCellValue(); borderCellValue.row_index = this.r; borderCellValue.col_index = this.c; var lefts = border.getInnerElements("left"); var rights = border.getInnerElements("right"); var tops = border.getInnerElements("top"); var bottoms = border.getInnerElements("bottom"); var diagonals = border.getInnerElements("diagonal"); var starts = border.getInnerElements("start"); var ends = border.getInnerElements("end"); var left = this.getBorderInfo(lefts); var right = this.getBorderInfo(rights); var top_1 = this.getBorderInfo(tops); var bottom = this.getBorderInfo(bottoms); var diagonal = this.getBorderInfo(diagonals); var start = this.getBorderInfo(starts); var end = this.getBorderInfo(ends); var isAdd = false; if (start != null && start.color != null) { borderCellValue.l = start; isAdd = true; } if (end != null && end.color != null) { borderCellValue.r = end; isAdd = true; } if (left != null && left.color != null) { borderCellValue.l = left; isAdd = true; } if (right != null && right.color != null) { borderCellValue.r = right; isAdd = true; } if (top_1 != null && top_1.color != null) { borderCellValue.t = top_1; isAdd = true; } if (bottom != null && bottom.color != null) { borderCellValue.b = bottom; isAdd = true; } if (isAdd) { borderObject.value = borderCellValue; // this.config._borderInfo[borderId] = borderObject; this._borderObject = borderObject; } } } else { cellValue.tb = 1; } if (v != null) { var value = v[0].value; if (/&#\d+;/.test(value)) { value = this.htmlDecode(value); } if (t == constant_1.ST_CellType["SharedString"]) { var siIndex = parseInt(v[0].value); var sharedSI = sharedStrings[siIndex]; var rFlag = sharedSI.getInnerElements("r"); if (rFlag == null) { var tFlag = sharedSI.getInnerElements("t"); if (tFlag != null) { var text_1 = ""; tFlag.forEach(function (t) { text_1 += t.value; }); text_1 = method_1.escapeCharacter(text_1); //isContainMultiType(text) && if (familyFont == "Roman" && text_1.length > 0) { var textArray = text_1.split(""); var preWordType = null, wordText = "", preWholef = null; var wholef = "Times New Roman"; if (cellValue.ff != null) { wholef = cellValue.ff; } var cellFormat = cellValue.ct; if (cellFormat == null) { cellFormat = new LuckyBase_1.LuckySheetCellFormat(); } if (cellFormat.s == null) { cellFormat.s = []; } for (var i = 0; i < textArray.length; i++) { var w = textArray[i]; var type = null, ff = wholef; if (method_1.isChinese(w)) { type = "c"; ff = "宋体"; } else if (method_1.isJapanese(w)) { type = "j"; ff = "Yu Gothic"; } else if (method_1.isKoera(w)) { type = "k"; ff = "Malgun Gothic"; } else { type = "e"; } if (type != preWordType && preWordType != null || i == textArray.length - 1) { var InlineString = new LuckyBase_1.LuckyInlineString(); InlineString.ff = preWholef; if (cellValue.fc != null) { InlineString.fc = cellValue.fc; } if (cellValue.fs != null) { InlineString.fs = cellValue.fs; } if (cellValue.cl != null) { InlineString.cl = cellValue.cl; } if (cellValue.un != null) { InlineString.un = cellValue.un; } if (cellValue.bl != null) { InlineString.bl = cellValue.bl; } if (cellValue.it != null) { InlineString.it = cellValue.it; } if (i == textArray.length - 1) { if (type == preWordType) { InlineString.ff = ff; InlineString.v = wordText + w; } else { InlineString.ff = preWholef; InlineString.v = wordText; cellFormat.s.push(InlineString); var InlineStringLast = new LuckyBase_1.LuckyInlineString(); InlineStringLast.ff = ff; InlineStringLast.v = w; if (cellValue.fc != null) { InlineStringLast.fc = cellValue.fc; } if (cellValue.fs != null) { InlineStringLast.fs = cellValue.fs; } if (cellValue.cl != null) { InlineStringLast.cl = cellValue.cl; } if (cellValue.un != null) { InlineStringLast.un = cellValue.un; } if (cellValue.bl != null) { InlineStringLast.bl = cellValue.bl; } if (cellValue.it != null) { InlineStringLast.it = cellValue.it; } cellFormat.s.push(InlineStringLast); break; } } else { InlineString.v = wordText; } cellFormat.s.push(InlineString); wordText = w; } else { wordText += w; } preWordType = type; preWholef = ff; } cellFormat.t = "inlineStr"; // cellFormat.s = [InlineString]; cellValue.ct = cellFormat; // console.log(cellValue); } else { text_1 = this.replaceSpecialWrap(text_1); if (text_1.indexOf("\r\n") > -1 || text_1.indexOf("\n") > -1) { var InlineString = new LuckyBase_1.LuckyInlineString(); InlineString.v = text_1; var cellFormat = cellValue.ct; if (cellFormat == null) { cellFormat = new LuckyBase_1.LuckySheetCellFormat(); } if (cellValue.ff != null) { InlineString.ff = cellValue.ff; } if (cellValue.fc != null) { InlineString.fc = cellValue.fc; } if (cellValue.fs != null) { InlineString.fs = cellValue.fs; } if (cellValue.cl != null) { InlineString.cl = cellValue.cl; } if (cellValue.un != null) { InlineString.un = cellValue.un; } if (cellValue.bl != null) { InlineString.bl = cellValue.bl; } if (cellValue.it != null) { InlineString.it = cellValue.it; } cellFormat.t = "inlineStr"; cellFormat.s = [InlineString]; cellValue.ct = cellFormat; } else { cellValue.v = text_1; quotePrefix = "1"; } } } } else { var styles_1 = []; rFlag.forEach(function (r) { var tFlag = r.getInnerElements("t"); var rPr = r.getInnerElements("rPr"); var InlineString = new LuckyBase_1.LuckyInlineString(); if (tFlag != null && tFlag.length > 0) { var text = tFlag[0].value; text = _this.replaceSpecialWrap(text); text = method_1.escapeCharacter(text); InlineString.v = text; } if (rPr != null && rPr.length > 0) { var frpr = rPr[0]; var sz = ReadXml_1.getlineStringAttr(frpr, "sz"), rFont = ReadXml_1.getlineStringAttr(frpr, "rFont"), family = ReadXml_1.getlineStringAttr(frpr, "family"), charset = ReadXml_1.getlineStringAttr(frpr, "charset"), scheme = ReadXml_1.getlineStringAttr(frpr, "scheme"), b = ReadXml_1.getlineStringAttr(frpr, "b"), i = ReadXml_1.getlineStringAttr(frpr, "i"), u = ReadXml_1.getlineStringAttr(frpr, "u"), strike = ReadXml_1.getlineStringAttr(frpr, "strike"), vertAlign = ReadXml_1.getlineStringAttr(frpr, "vertAlign"), color = void 0; var cEle = frpr.getInnerElements("color"); if (cEle != null && cEle.length > 0) { color = ReadXml_1.getColor(cEle[0], _this.styles, "t"); } var ff = void 0; // if(family!=null){ // ff = fontFamilys[family]; // } if (rFont != null) { ff = rFont; } if (ff != null) { InlineString.ff = ff; } else if (cellValue.ff != null) { InlineString.ff = cellValue.ff; } if (color != null) { InlineString.fc = color; } else if (cellValue.fc != null) { InlineString.fc = cellValue.fc; } if (sz != null) { InlineString.fs = parseInt(sz); } else if (cellValue.fs != null) { InlineString.fs = cellValue.fs; } if (strike != null) { InlineString.cl = parseInt(strike); } else if (cellValue.cl != null) { InlineString.cl = cellValue.cl; } if (u != null) { InlineString.un = parseInt(u); } else if (cellValue.un != null) { InlineString.un = cellValue.un; } if (b != null) { InlineString.bl = parseInt(b); } else if (cellValue.bl != null) { InlineString.bl = cellValue.bl; } if (i != null) { InlineString.it = parseInt(i); } else if (cellValue.it != null) { InlineString.it = cellValue.it; } if (vertAlign != null) { InlineString.va = parseInt(vertAlign); } // ff:string | undefined //font family // fc:string | undefined//font color // fs:number | undefined//font size // cl:number | undefined//strike // un:number | undefined//underline // bl:number | undefined//blod // it:number | undefined//italic // v:string | undefined } else { if (InlineString.ff == null && cellValue.ff != null) { InlineString.ff = cellValue.ff; } if (InlineString.fc == null && cellValue.fc != null) { InlineString.fc = cellValue.fc; } if (InlineString.fs == null && cellValue.fs != null) { InlineString.fs = cellValue.fs; } if (InlineString.cl == null && cellValue.cl != null) { InlineString.cl = cellValue.cl; } if (InlineString.un == null && cellValue.un != null) { InlineString.un = cellValue.un; } if (InlineString.bl == null && cellValue.bl != null) { InlineString.bl = cellValue.bl; } if (InlineString.it == null && cellValue.it != null) { InlineString.it = cellValue.it; } } styles_1.push(InlineString); }); var cellFormat = cellValue.ct; if (cellFormat == null) { cellFormat = new LuckyBase_1.LuckySheetCellFormat(); } cellFormat.t = "inlineStr"; cellFormat.s = styles_1; cellValue.ct = cellFormat; } } // to be confirmed else if (t == constant_1.ST_CellType["InlineString"] && v != null) { cellValue.v = "'" + value; } else { value = method_1.escapeCharacter(value); cellValue.v = value; } } if (quotePrefix != null) { cellValue.qp = parseInt(quotePrefix); } return cellValue; }; LuckySheetCelldata.prototype.replaceSpecialWrap = function (text) { text = text.replace(/_x000D_/g, "").replace(/ /g, "\r\n").replace(/ /g, "\r").replace(/ /g, "\n"); return text; }; LuckySheetCelldata.prototype.getBackgroundByFill = function (fill, clrScheme) { var patternFills = fill.getInnerElements("patternFill"); if (patternFills != null) { var patternFill = patternFills[0]; var fgColors = patternFill.getInnerElements("fgColor"); var bgColors = patternFill.getInnerElements("bgColor"); var fg = void 0, bg = void 0; if (fgColors != null) { var fgColor = fgColors[0]; fg = ReadXml_1.getColor(fgColor, this.styles); } if (bgColors != null) { var bgColor = bgColors[0]; bg = ReadXml_1.getColor(bgColor, this.styles); } // console.log(fgColors,bgColors,clrScheme); if (fg != null) { return fg; } else if (bg != null) { return bg; } } else { var gradientfills = fill.getInnerElements("gradientFill"); if (gradientfills != null) { //graient color fill handler return null; } } }; LuckySheetCelldata.prototype.getBorderInfo = function (borders) { if (borders == null) { return null; } var border = borders[0], attrList = border.attributeList; var clrScheme = this.styles["clrScheme"]; var style = attrList.style; if (style == null || style == "none") { return null; } var colors = border.getInnerElements("color"); var colorRet = "#000000"; if (colors != null) { var color = colors[0]; colorRet = ReadXml_1.getColor(color, this.styles, "b"); if (colorRet == null) { colorRet = "#000000"; } } var ret = new LuckyBase_1.LuckySheetborderInfoCellValueStyle(); ret.style = constant_1.borderTypes[style]; ret.color = colorRet; return ret; }; LuckySheetCelldata.prototype.htmlDecode = function (str) { return str.replace(/&#(x)?([^&]{1,5});/g, function ($, $1, $2) { return String.fromCharCode(parseInt($2, $1 ? 16 : 10)); }); }; ; return LuckySheetCelldata; }(LuckyBase_1.LuckySheetCelldataBase); exports.LuckySheetCelldata = LuckySheetCelldata; },{"../common/constant":16,"../common/method":18,"./LuckyBase":10,"./ReadXml":15}],12:[function(require,module,exports){ "use strict"; var __extends = void 0 && (void 0).__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); exports.LuckyFile = void 0; var LuckySheet_1 = require("./LuckySheet"); var constant_1 = require("../common/constant"); var ReadXml_1 = require("./ReadXml"); var method_1 = require("../common/method"); var LuckyBase_1 = require("./LuckyBase"); var LuckyImage_1 = require("./LuckyImage"); var LuckyFile = /** @class */function (_super) { __extends(LuckyFile, _super); function LuckyFile(files, fileName, dataVerificationSelectCount) { var _this = _super.call(this) || this; _this.columnWidthSet = []; _this.rowHeightSet = []; _this.files = files; _this.fileName = fileName; _this.dataVerificationSelectCount = dataVerificationSelectCount; _this.readXml = new ReadXml_1.ReadXml(files); _this.getSheetNameList(); _this.sharedStrings = _this.readXml.getElementsByTagName("sst/si", constant_1.sharedStringsFile); _this.calcChain = _this.readXml.getElementsByTagName("calcChain/c", constant_1.calcChainFile); _this.styles = {}; _this.styles["cellXfs"] = _this.readXml.getElementsByTagName("cellXfs/xf", constant_1.stylesFile); _this.styles["cellStyleXfs"] = _this.readXml.getElementsByTagName("cellStyleXfs/xf", constant_1.stylesFile); _this.styles["cellStyles"] = _this.readXml.getElementsByTagName("cellStyles/cellStyle", constant_1.stylesFile); _this.styles["fonts"] = _this.readXml.getElementsByTagName("fonts/font", constant_1.stylesFile); _this.styles["fills"] = _this.readXml.getElementsByTagName("fills/fill", constant_1.stylesFile); _this.styles["borders"] = _this.readXml.getElementsByTagName("borders/border", constant_1.stylesFile); _this.styles["clrScheme"] = _this.readXml.getElementsByTagName("a:clrScheme/a:dk1|a:lt1|a:dk2|a:lt2|a:accent1|a:accent2|a:accent3|a:accent4|a:accent5|a:accent6|a:hlink|a:folHlink", constant_1.theme1File); _this.styles["indexedColors"] = _this.readXml.getElementsByTagName("colors/indexedColors/rgbColor", constant_1.stylesFile); _this.styles["mruColors"] = _this.readXml.getElementsByTagName("colors/mruColors/color", constant_1.stylesFile); _this.imageList = new LuckyImage_1.ImageList(files); var numfmts = _this.readXml.getElementsByTagName("numFmt/numFmt", constant_1.stylesFile); var numFmtDefaultC = JSON.parse(JSON.stringify(constant_1.numFmtDefault)); for (var i = 0; i < numfmts.length; i++) { var attrList = numfmts[i].attributeList; var numfmtid = method_1.getXmlAttibute(attrList, "numFmtId", "49"); var formatcode = method_1.getXmlAttibute(attrList, "formatCode", "@"); // console.log(numfmtid, formatcode); if (!(numfmtid in constant_1.numFmtDefault)) { numFmtDefaultC[numfmtid] = constant_1.numFmtDefaultMap[formatcode] || formatcode; } } // console.log(JSON.stringify(numFmtDefaultC), numfmts); _this.styles["numfmts"] = numFmtDefaultC; return _this; } /** * @return All sheet name of workbook */ LuckyFile.prototype.getSheetNameList = function () { var workbookRelList = this.readXml.getElementsByTagName("Relationships/Relationship", constant_1.workbookRels); if (workbookRelList == null) { return; } var regex = new RegExp("worksheets/[^/]*?.xml"); var sheetNames = {}; for (var i = 0; i < workbookRelList.length; i++) { var rel = workbookRelList[i], attrList = rel.attributeList; var id = attrList["Id"], target = attrList["Target"]; if (regex.test(target)) { if (target.indexOf('/xl') === 0) { sheetNames[id] = target.substr(1); } else { sheetNames[id] = "xl/" + target; } } } this.sheetNameList = sheetNames; }; /** * @param sheetName WorkSheet'name * @return sheet file name and path in zip */ LuckyFile.prototype.getSheetFileBysheetId = function (sheetId) { // for(let i=0;i-1){ // return sheetFileName; // } // } return this.sheetNameList[sheetId]; }; /** * @return workBook information */ LuckyFile.prototype.getWorkBookInfo = function () { var Company = this.readXml.getElementsByTagName("Company", constant_1.appFile); var AppVersion = this.readXml.getElementsByTagName("AppVersion", constant_1.appFile); var creator = this.readXml.getElementsByTagName("dc:creator", constant_1.coreFile); var lastModifiedBy = this.readXml.getElementsByTagName("cp:lastModifiedBy", constant_1.coreFile); var created = this.readXml.getElementsByTagName("dcterms:created", constant_1.coreFile); var modified = this.readXml.getElementsByTagName("dcterms:modified", constant_1.coreFile); this.info = new LuckyBase_1.LuckyFileInfo(); this.info.name = this.fileName; this.info.creator = creator.length > 0 ? creator[0].value : ""; this.info.lastmodifiedby = lastModifiedBy.length > 0 ? lastModifiedBy[0].value : ""; this.info.createdTime = created.length > 0 ? created[0].value : ""; this.info.modifiedTime = modified.length > 0 ? modified[0].value : ""; this.info.company = Company.length > 0 ? Company[0].value : ""; this.info.appversion = AppVersion.length > 0 ? AppVersion[0].value : ""; }; /** * @return All sheet , include whole information */ LuckyFile.prototype.getSheetsFull = function (isInitialCell) { if (isInitialCell === void 0) { isInitialCell = true; } var sheets = this.readXml.getElementsByTagName("sheets/sheet", constant_1.workBookFile); var sheetList = {}; for (var key in sheets) { var sheet = sheets[key]; sheetList[sheet.attributeList.name] = sheet.attributeList["sheetId"]; } this.sheets = []; var order = 0; for (var key in sheets) { var sheet = sheets[key]; var sheetName = sheet.attributeList.name; var sheetId = sheet.attributeList["sheetId"]; var rid = sheet.attributeList["r:id"]; var sheetFile = this.getSheetFileBysheetId(rid); var hide = sheet.attributeList.state === "hidden" ? 1 : 0; var drawing = this.readXml.getElementsByTagName("worksheet/drawing", sheetFile), drawingFile = void 0, drawingRelsFile = void 0; if (drawing != null && drawing.length > 0) { var attrList = drawing[0].attributeList; var rid_1 = method_1.getXmlAttibute(attrList, "r:id", null); if (rid_1 != null) { drawingFile = this.getDrawingFile(rid_1, sheetFile); drawingRelsFile = this.getDrawingRelsFile(drawingFile); } } if (sheetFile != null) { var sheet_1 = new LuckySheet_1.LuckySheet(sheetName, sheetId, order, isInitialCell, { sheetFile: sheetFile, readXml: this.readXml, sheetList: sheetList, styles: this.styles, sharedStrings: this.sharedStrings, calcChain: this.calcChain, imageList: this.imageList, drawingFile: drawingFile, drawingRelsFile: drawingRelsFile, hide: hide, dataVerificationSelectCount: this.dataVerificationSelectCount }); this.columnWidthSet = []; this.rowHeightSet = []; this.imagePositionCaculation(sheet_1); this.sheets.push(sheet_1); order++; } } }; LuckyFile.prototype.extendArray = function (index, sets, def, hidden, lens) { if (index < sets.length) { return; } var startIndex = sets.length, endIndex = index; var allGap = 0; if (startIndex > 0) { allGap = sets[startIndex - 1]; } // else{ // sets.push(0); // } for (var i = startIndex; i <= endIndex; i++) { var gap = def, istring = i.toString(); if (istring in hidden) { gap = 0; } else if (istring in lens) { gap = lens[istring]; } allGap += Math.round(gap + 1); sets.push(allGap); } }; LuckyFile.prototype.imagePositionCaculation = function (sheet) { var images = sheet.images, defaultColWidth = sheet.defaultColWidth, defaultRowHeight = sheet.defaultRowHeight; var colhidden = {}; if (sheet.config.colhidden) { colhidden = sheet.config.colhidden; } var columnlen = {}; if (sheet.config.columnlen) { columnlen = sheet.config.columnlen; } var rowhidden = {}; if (sheet.config.rowhidden) { rowhidden = sheet.config.rowhidden; } var rowlen = {}; if (sheet.config.rowlen) { rowlen = sheet.config.rowlen; } for (var key in images) { var imageObject = images[key]; //Image, luckyImage var fromCol = imageObject.fromCol; var fromColOff = imageObject.fromColOff; var fromRow = imageObject.fromRow; var fromRowOff = imageObject.fromRowOff; var toCol = imageObject.toCol; var toColOff = imageObject.toColOff; var toRow = imageObject.toRow; var toRowOff = imageObject.toRowOff; var x_n = 0, y_n = 0; var cx_n = 0, cy_n = 0; if (fromCol >= this.columnWidthSet.length) { this.extendArray(fromCol, this.columnWidthSet, defaultColWidth, colhidden, columnlen); } if (fromCol == 0) { x_n = 0; } else { x_n = this.columnWidthSet[fromCol - 1]; } x_n = x_n + fromColOff; if (fromRow >= this.rowHeightSet.length) { this.extendArray(fromRow, this.rowHeightSet, defaultRowHeight, rowhidden, rowlen); } if (fromRow == 0) { y_n = 0; } else { y_n = this.rowHeightSet[fromRow - 1]; } y_n = y_n + fromRowOff; if (toCol >= this.columnWidthSet.length) { this.extendArray(toCol, this.columnWidthSet, defaultColWidth, colhidden, columnlen); } if (toCol == 0) { cx_n = 0; } else { cx_n = this.columnWidthSet[toCol - 1]; } cx_n = cx_n + toColOff - x_n; if (toRow >= this.rowHeightSet.length) { this.extendArray(toRow, this.rowHeightSet, defaultRowHeight, rowhidden, rowlen); } if (toRow == 0) { cy_n = 0; } else { cy_n = this.rowHeightSet[toRow - 1]; } cy_n = cy_n + toRowOff - y_n; console.log(defaultColWidth, colhidden, columnlen); console.log(fromCol, this.columnWidthSet[fromCol], fromColOff); console.log(toCol, this.columnWidthSet[toCol], toColOff, JSON.stringify(this.columnWidthSet)); imageObject.originWidth = cx_n; imageObject.originHeight = cy_n; imageObject.crop.height = cy_n; imageObject.crop.width = cx_n; imageObject["default"].height = cy_n; imageObject["default"].left = x_n; imageObject["default"].top = y_n; imageObject["default"].width = cx_n; } //console.log(this.columnWidthSet, this.rowHeightSet); }; /** * @return drawing file string */ LuckyFile.prototype.getDrawingFile = function (rid, sheetFile) { var sheetRelsPath = "xl/worksheets/_rels/"; var sheetFileArr = sheetFile.split("/"); var sheetRelsName = sheetFileArr[sheetFileArr.length - 1]; var sheetRelsFile = sheetRelsPath + sheetRelsName + ".rels"; var drawing = this.readXml.getElementsByTagName("Relationships/Relationship", sheetRelsFile); if (drawing.length > 0) { for (var i = 0; i < drawing.length; i++) { var relationship = drawing[i]; var attrList = relationship.attributeList; var relationshipId = method_1.getXmlAttibute(attrList, "Id", null); if (relationshipId == rid) { var target = method_1.getXmlAttibute(attrList, "Target", null); if (target != null) { return target.replace(/\.\.\//g, ""); } } } } return null; }; LuckyFile.prototype.getDrawingRelsFile = function (drawingFile) { var drawingRelsPath = "xl/drawings/_rels/"; var drawingFileArr = drawingFile.split("/"); var drawingRelsName = drawingFileArr[drawingFileArr.length - 1]; var drawingRelsFile = drawingRelsPath + drawingRelsName + ".rels"; return drawingRelsFile; }; /** * @return All sheet base information widthout cell and config */ LuckyFile.prototype.getSheetsWithoutCell = function () { this.getSheetsFull(false); }; /** * @return LuckySheet file json */ LuckyFile.prototype.Parse = function () { // let xml = this.readXml; // for(let key in this.sheetNameList){ // let sheetName=this.sheetNameList[key]; // let sheetColumns = xml.getElementsByTagName("row/c/f", sheetName); // console.log(sheetColumns); // } // return ""; this.getWorkBookInfo(); this.getSheetsFull(); // for(let i=0;i -1) { var fileNameArr = fileKey.split("."); var suffix = fileNameArr[fileNameArr.length - 1].toLowerCase(); if (suffix in { "png": 1, "jpeg": 1, "jpg": 1, "gif": 1, "bmp": 1, "tif": 1, "webp": 1, "emf": 1 }) { if (suffix == "emf") { var pNum = 0; // number of the page, that you want to render var scale = 1; // the scale of the document var wrt = new emf_1.ToContext2D(pNum, scale); var inp, out, stt; emf_1.FromEMF.K = []; inp = emf_1.FromEMF.C; out = emf_1.FromEMF.K; stt = 4; for (var p in inp) out[inp[p]] = p.slice(stt); try { emf_1.FromEMF.Parse(files[fileKey], wrt); this.images[fileKey] = wrt.canvas.toDataURL("image/png"); } catch (error) { this.images[fileKey] = files[fileKey]; } } else { this.images[fileKey] = files[fileKey]; } } } } } ImageList.prototype.getImageByName = function (pathName) { if (pathName in this.images) { var base64 = this.images[pathName]; return new Image(pathName, base64); } return null; }; return ImageList; }(); exports.ImageList = ImageList; var Image = /** @class */function (_super) { __extends(Image, _super); function Image(pathName, base64) { var _this = _super.call(this) || this; _this.src = base64; return _this; } Image.prototype.setDefault = function () {}; return Image; }(LuckyBase_1.LuckyImageBase); },{"../common/emf":17,"./LuckyBase":10}],14:[function(require,module,exports){ "use strict"; var __extends = void 0 && (void 0).__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); var __importDefault = void 0 && (void 0).__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LuckySheet = void 0; var LuckyCell_1 = require("./LuckyCell"); var method_1 = require("../common/method"); var constant_1 = require("../common/constant"); var ReadXml_1 = require("./ReadXml"); var LuckyBase_1 = require("./LuckyBase"); var dayjs_1 = __importDefault(require("dayjs")); var LuckySheet = /** @class */function (_super) { __extends(LuckySheet, _super); function LuckySheet(sheetName, sheetId, sheetOrder, isInitialCell, allFileOption) { if (isInitialCell === void 0) { isInitialCell = false; } var _this = //Private _super.call(this) || this; _this.isInitialCell = isInitialCell; _this.readXml = allFileOption.readXml; _this.sheetFile = allFileOption.sheetFile; _this.styles = allFileOption.styles; _this.sharedStrings = allFileOption.sharedStrings; _this.calcChainEles = allFileOption.calcChain; _this.sheetList = allFileOption.sheetList; _this.imageList = allFileOption.imageList; _this.hide = allFileOption.hide; console.log(allFileOption, 'allFileOption'); _this.dataVerificationSelectCount = allFileOption.dataVerificationSelectCount; //Output _this.name = sheetName; _this.index = sheetId; _this.order = sheetOrder.toString(); _this.config = new LuckyBase_1.LuckyConfig(); _this.celldata = []; _this.mergeCells = _this.readXml.getElementsByTagName("mergeCells/mergeCell", _this.sheetFile); var clrScheme = _this.styles["clrScheme"]; var sheetView = _this.readXml.getElementsByTagName("sheetViews/sheetView", _this.sheetFile); var showGridLines = "1", tabSelected = "0", zoomScale = "100", activeCell = "A1"; if (sheetView.length > 0) { var attrList = sheetView[0].attributeList; showGridLines = method_1.getXmlAttibute(attrList, "showGridLines", "1"); tabSelected = method_1.getXmlAttibute(attrList, "tabSelected", "0"); zoomScale = method_1.getXmlAttibute(attrList, "zoomScale", "100"); // let colorId = getXmlAttibute(attrList, "colorId", "0"); var selections = sheetView[0].getInnerElements("selection"); if (selections != null && selections.length > 0) { activeCell = method_1.getXmlAttibute(selections[0].attributeList, "activeCell", "A1"); var range = method_1.getcellrange(activeCell, _this.sheetList, sheetId); _this.luckysheet_select_save = []; _this.luckysheet_select_save.push(range); } } _this.showGridLines = showGridLines; _this.status = tabSelected; _this.zoomRatio = parseInt(zoomScale) / 100; var tabColors = _this.readXml.getElementsByTagName("sheetPr/tabColor", _this.sheetFile); if (tabColors != null && tabColors.length > 0) { var tabColor = tabColors[0], attrList = tabColor.attributeList; // if(attrList.rgb!=null){ var tc = ReadXml_1.getColor(tabColor, _this.styles, "b"); _this.color = tc; // } } var sheetFormatPr = _this.readXml.getElementsByTagName("sheetFormatPr", _this.sheetFile); var defaultColWidth, defaultRowHeight; if (sheetFormatPr.length > 0) { var attrList = sheetFormatPr[0].attributeList; defaultColWidth = method_1.getXmlAttibute(attrList, "defaultColWidth", "9.21"); defaultRowHeight = method_1.getXmlAttibute(attrList, "defaultRowHeight", "19"); } _this.defaultColWidth = method_1.getColumnWidthPixel(parseFloat(defaultColWidth)); _this.defaultRowHeight = method_1.getRowHeightPixel(parseFloat(defaultRowHeight)); _this.generateConfigColumnLenAndHidden(); var cellOtherInfo = _this.generateConfigRowLenAndHiddenAddCell(); if (_this.calcChain == null) { _this.calcChain = []; } var formulaListExist = {}; for (var c = 0; c < _this.calcChainEles.length; c++) { var calcChainEle = _this.calcChainEles[c], attrList = calcChainEle.attributeList; if (attrList.i != sheetId) { continue; } var r = attrList.r, i = attrList.i, l = attrList.l, s = attrList.s, a = attrList.a, t = attrList.t; var range = method_1.getcellrange(r); var chain = new LuckyBase_1.LuckysheetCalcChain(); chain.r = range.row[0]; chain.c = range.column[0]; chain.index = _this.index; _this.calcChain.push(chain); formulaListExist["r" + r + "c" + c] = null; } if (_this.formulaRefList != null) { for (var key in _this.formulaRefList) { var funclist = _this.formulaRefList[key]; var mainFunc = funclist["mainRef"], mainCellValue = mainFunc.cellValue; var formulaTxt = mainFunc.fv; var mainR = mainCellValue.r, mainC = mainCellValue.c; // let refRange = getcellrange(ref); for (var name_1 in funclist) { if (name_1 == "mainRef") { continue; } var funcValue = funclist[name_1], cellValue = funcValue.cellValue; if (cellValue == null) { continue; } var r = cellValue.r, c = cellValue.c; var func = formulaTxt; var offsetRow = r - mainR, offsetCol = c - mainC; if (offsetRow > 0) { func = "=" + method_1.fromulaRef.functionCopy(func, "down", offsetRow); } else if (offsetRow < 0) { func = "=" + method_1.fromulaRef.functionCopy(func, "up", Math.abs(offsetRow)); } if (offsetCol > 0) { func = "=" + method_1.fromulaRef.functionCopy(func, "right", offsetCol); } else if (offsetCol < 0) { func = "=" + method_1.fromulaRef.functionCopy(func, "left", Math.abs(offsetCol)); } // console.log(offsetRow, offsetCol, func); cellValue.v.f = func; //添加共享公式链 var chain = new LuckyBase_1.LuckysheetCalcChain(); chain.r = cellValue.r; chain.c = cellValue.c; chain.index = _this.index; _this.calcChain.push(chain); } } } //There may be formulas that do not appear in calcChain for (var key in cellOtherInfo.formulaList) { if (!(key in formulaListExist)) { var formulaListItem = cellOtherInfo.formulaList[key]; var chain = new LuckyBase_1.LuckysheetCalcChain(); chain.r = formulaListItem.r; chain.c = formulaListItem.c; chain.index = _this.index; _this.calcChain.push(chain); } } // dataVerification config _this.dataVerification = _this.generateConfigDataValidations(); // hyperlink config _this.hyperlink = _this.generateConfigHyperlinks(); // sheet hide _this.hide = _this.hide; if (_this.mergeCells != null) { for (var i = 0; i < _this.mergeCells.length; i++) { var merge = _this.mergeCells[i], attrList = merge.attributeList; var ref = attrList.ref; if (ref == null) { continue; } var range = method_1.getcellrange(ref, _this.sheetList, sheetId); var mergeValue = new LuckyBase_1.LuckySheetConfigMerge(); mergeValue.r = range.row[0]; mergeValue.c = range.column[0]; mergeValue.rs = range.row[1] - range.row[0] + 1; mergeValue.cs = range.column[1] - range.column[0] + 1; if (_this.config.merge == null) { _this.config.merge = {}; } _this.config.merge[range.row[0] + "_" + range.column[0]] = mergeValue; } } var drawingFile = allFileOption.drawingFile, drawingRelsFile = allFileOption.drawingRelsFile; if (drawingFile != null && drawingRelsFile != null) { var twoCellAnchors = _this.readXml.getElementsByTagName("xdr:twoCellAnchor", drawingFile); if (twoCellAnchors != null && twoCellAnchors.length > 0) { for (var i = 0; i < twoCellAnchors.length; i++) { var twoCellAnchor = twoCellAnchors[i]; var editAs = method_1.getXmlAttibute(twoCellAnchor.attributeList, "editAs", "twoCell"); var xdrFroms = twoCellAnchor.getInnerElements("xdr:from"), xdrTos = twoCellAnchor.getInnerElements("xdr:to"); var xdr_blipfills = twoCellAnchor.getInnerElements("a:blip"); if (xdrFroms != null && xdr_blipfills != null && xdrFroms.length > 0 && xdr_blipfills.length > 0) { var xdrFrom = xdrFroms[0], xdrTo = xdrTos[0], xdr_blipfill = xdr_blipfills[0]; var rembed = method_1.getXmlAttibute(xdr_blipfill.attributeList, "r:embed", null); var imageObject = _this.getBase64ByRid(rembed, drawingRelsFile); // let aoff = xdr_xfrm.getInnerElements("a:off"), aext = xdr_xfrm.getInnerElements("a:ext"); // if(aoff!=null && aext!=null && aoff.length>0 && aext.length>0){ // let aoffAttribute = aoff[0].attributeList, aextAttribute = aext[0].attributeList; // let x = getXmlAttibute(aoffAttribute, "x", null); // let y = getXmlAttibute(aoffAttribute, "y", null); // let cx = getXmlAttibute(aextAttribute, "cx", null); // let cy = getXmlAttibute(aextAttribute, "cy", null); // if(x!=null && y!=null && cx!=null && cy!=null && imageObject !=null){ // let x_n = getPxByEMUs(parseInt(x), "c"),y_n = getPxByEMUs(parseInt(y)); // let cx_n = getPxByEMUs(parseInt(cx), "c"),cy_n = getPxByEMUs(parseInt(cy)); var x_n = 0, y_n = 0; var cx_n = 0, cy_n = 0; imageObject.fromCol = _this.getXdrValue(xdrFrom.getInnerElements("xdr:col")); imageObject.fromColOff = method_1.getPxByEMUs(_this.getXdrValue(xdrFrom.getInnerElements("xdr:colOff"))); imageObject.fromRow = _this.getXdrValue(xdrFrom.getInnerElements("xdr:row")); imageObject.fromRowOff = method_1.getPxByEMUs(_this.getXdrValue(xdrFrom.getInnerElements("xdr:rowOff"))); imageObject.toCol = _this.getXdrValue(xdrTo.getInnerElements("xdr:col")); imageObject.toColOff = method_1.getPxByEMUs(_this.getXdrValue(xdrTo.getInnerElements("xdr:colOff"))); imageObject.toRow = _this.getXdrValue(xdrTo.getInnerElements("xdr:row")); imageObject.toRowOff = method_1.getPxByEMUs(_this.getXdrValue(xdrTo.getInnerElements("xdr:rowOff"))); imageObject.originWidth = cx_n; imageObject.originHeight = cy_n; if (editAs == "absolute") { imageObject.type = "3"; } else if (editAs == "oneCell") { imageObject.type = "2"; } else { imageObject.type = "1"; } imageObject.isFixedPos = false; imageObject.fixedLeft = 0; imageObject.fixedTop = 0; var imageBorder = { color: "#000", radius: 0, style: "solid", width: 0 }; imageObject.border = imageBorder; var imageCrop = { height: cy_n, offsetLeft: 0, offsetTop: 0, width: cx_n }; imageObject.crop = imageCrop; var imageDefault = { height: cy_n, left: x_n, top: y_n, width: cx_n }; imageObject["default"] = imageDefault; if (_this.images == null) { _this.images = {}; } _this.images[method_1.generateRandomIndex("image")] = imageObject; // } // } } } } } return _this; } LuckySheet.prototype.getXdrValue = function (ele) { if (ele == null || ele.length == 0) { return null; } return parseInt(ele[0].value); }; LuckySheet.prototype.getBase64ByRid = function (rid, drawingRelsFile) { var Relationships = this.readXml.getElementsByTagName("Relationships/Relationship", drawingRelsFile); if (Relationships != null && Relationships.length > 0) { for (var i = 0; i < Relationships.length; i++) { var Relationship = Relationships[i]; var attrList = Relationship.attributeList; var Id = method_1.getXmlAttibute(attrList, "Id", null); var src = method_1.getXmlAttibute(attrList, "Target", null); if (Id == rid) { src = src.replace(/\.\.\//g, ""); src = "xl/" + src; var imgage = this.imageList.getImageByName(src); return imgage; } } } return null; }; /** * @desc This will convert cols/col to luckysheet config of column'width */ LuckySheet.prototype.generateConfigColumnLenAndHidden = function () { var cols = this.readXml.getElementsByTagName("cols/col", this.sheetFile); for (var i = 0; i < cols.length; i++) { var col = cols[i], attrList = col.attributeList; var min = method_1.getXmlAttibute(attrList, "min", null); var max = method_1.getXmlAttibute(attrList, "max", null); var width = method_1.getXmlAttibute(attrList, "width", null); var hidden = method_1.getXmlAttibute(attrList, "hidden", null); var customWidth = method_1.getXmlAttibute(attrList, "customWidth", null); if (min == null || max == null) { continue; } var minNum = parseInt(min) - 1, maxNum = parseInt(max) - 1, widthNum = parseFloat(width); for (var m = minNum; m <= maxNum; m++) { if (width != null) { if (this.config.columnlen == null) { this.config.columnlen = {}; } this.config.columnlen[m] = method_1.getColumnWidthPixel(widthNum); } if (hidden == "1") { if (this.config.colhidden == null) { this.config.colhidden = {}; } this.config.colhidden[m] = 0; if (this.config.columnlen) { delete this.config.columnlen[m]; } } if (customWidth != null) { if (this.config.customWidth == null) { this.config.customWidth = {}; } this.config.customWidth[m] = 1; } } } }; /** * @desc This will convert cols/col to luckysheet config of column'width */ LuckySheet.prototype.generateConfigRowLenAndHiddenAddCell = function () { var rows = this.readXml.getElementsByTagName("sheetData/row", this.sheetFile); var cellOtherInfo = {}; var formulaList = {}; cellOtherInfo.formulaList = formulaList; for (var i = 0; i < rows.length; i++) { var row = rows[i], attrList = row.attributeList; var rowNo = method_1.getXmlAttibute(attrList, "r", null); var height = method_1.getXmlAttibute(attrList, "ht", null); var hidden = method_1.getXmlAttibute(attrList, "hidden", null); var customHeight = method_1.getXmlAttibute(attrList, "customHeight", null); if (rowNo == null) { continue; } var rowNoNum = parseInt(rowNo) - 1; if (height != null) { var heightNum = parseFloat(height); if (this.config.rowlen == null) { this.config.rowlen = {}; } this.config.rowlen[rowNoNum] = method_1.getRowHeightPixel(heightNum); } if (hidden == "1") { if (this.config.rowhidden == null) { this.config.rowhidden = {}; } this.config.rowhidden[rowNoNum] = 0; if (this.config.rowlen) { delete this.config.rowlen[rowNoNum]; } } if (customHeight != null) { if (this.config.customHeight == null) { this.config.customHeight = {}; } this.config.customHeight[rowNoNum] = 1; } if (this.isInitialCell) { var cells = row.getInnerElements("c"); for (var key in cells) { var cell = cells[key]; var cellValue = new LuckyCell_1.LuckySheetCelldata(cell, this.styles, this.sharedStrings, this.mergeCells, this.sheetFile, this.readXml); if (cellValue._borderObject != null) { if (this.config.borderInfo == null) { this.config.borderInfo = []; } this.config.borderInfo.push(cellValue._borderObject); delete cellValue._borderObject; } // let borderId = cellValue._borderId; // if(borderId!=null){ // let borders = this.styles["borders"] as Element[]; // if(this.config._borderInfo==null){ // this.config._borderInfo = {}; // } // if( borderId in this.config._borderInfo){ // this.config._borderInfo[borderId].cells.push(cellValue.r + "_" + cellValue.c); // } // else{ // let border = borders[borderId]; // let borderObject = new LuckySheetborderInfoCellForImp(); // borderObject.rangeType = "cellGroup"; // borderObject.cells = []; // let borderCellValue = new LuckySheetborderInfoCellValue(); // let lefts = border.getInnerElements("left"); // let rights = border.getInnerElements("right"); // let tops = border.getInnerElements("top"); // let bottoms = border.getInnerElements("bottom"); // let diagonals = border.getInnerElements("diagonal"); // let left = this.getBorderInfo(lefts); // let right = this.getBorderInfo(rights); // let top = this.getBorderInfo(tops); // let bottom = this.getBorderInfo(bottoms); // let diagonal = this.getBorderInfo(diagonals); // let isAdd = false; // if(left!=null && left.color!=null){ // borderCellValue.l = left; // isAdd = true; // } // if(right!=null && right.color!=null){ // borderCellValue.r = right; // isAdd = true; // } // if(top!=null && top.color!=null){ // borderCellValue.t = top; // isAdd = true; // } // if(bottom!=null && bottom.color!=null){ // borderCellValue.b = bottom; // isAdd = true; // } // if(isAdd){ // borderObject.value = borderCellValue; // this.config._borderInfo[borderId] = borderObject; // } // } // } if (cellValue._formulaType == "shared") { if (this.formulaRefList == null) { this.formulaRefList = {}; } if (this.formulaRefList[cellValue._formulaSi] == null) { this.formulaRefList[cellValue._formulaSi] = {}; } var fv = void 0; if (cellValue.v != null) { fv = cellValue.v.f; } var refValue = { t: cellValue._formulaType, ref: cellValue._fomulaRef, si: cellValue._formulaSi, fv: fv, cellValue: cellValue }; if (cellValue._fomulaRef != null) { this.formulaRefList[cellValue._formulaSi]["mainRef"] = refValue; } else { this.formulaRefList[cellValue._formulaSi][cellValue.r + "_" + cellValue.c] = refValue; } // console.log(refValue, this.formulaRefList); } //There may be formulas that do not appear in calcChain if (cellValue.v != null && cellValue.v.f != null) { var formulaCell = { r: cellValue.r, c: cellValue.c }; cellOtherInfo.formulaList["r" + cellValue.r + "c" + cellValue.c] = formulaCell; } this.celldata.push(cellValue); } } } return cellOtherInfo; }; /** * luckysheet config of dataValidations * * @returns {IluckysheetDataVerification} - dataValidations config */ LuckySheet.prototype.generateConfigDataValidations = function () { var rows = this.readXml.getElementsByTagName("dataValidations/dataValidation", this.sheetFile); var extLst = this.readXml.getElementsByTagName("extLst/ext/x14:dataValidations/x14:dataValidation", this.sheetFile) || []; rows = rows.concat(extLst); var dataVerification = {}; for (var i = 0; i < rows.length; i++) { var row = rows[i]; var attrList = row.attributeList; var formulaValue = row.value; var type = method_1.getXmlAttibute(attrList, "type", null); if (!type) { continue; } var operator = "", sqref = "", sqrefIndexArr = [], valueArr = []; var _prohibitInput = method_1.getXmlAttibute(attrList, "allowBlank", null) !== "1" ? false : true; // x14 processing var formulaReg = new RegExp(/|/g); if (formulaReg.test(formulaValue) && (extLst === null || extLst === void 0 ? void 0 : extLst.length) >= 0) { operator = method_1.getXmlAttibute(attrList, "operator", null); var peelOffData = method_1.getPeelOffX14(formulaValue); sqref = peelOffData === null || peelOffData === void 0 ? void 0 : peelOffData.sqref; sqrefIndexArr = method_1.getMultiSequenceToNum(sqref, this.dataVerificationSelectCount); valueArr = method_1.getMultiFormulaValue(peelOffData === null || peelOffData === void 0 ? void 0 : peelOffData.formula); } else { operator = method_1.getXmlAttibute(attrList, "operator", null); sqref = method_1.getXmlAttibute(attrList, "sqref", null); // sqrefIndexArr = getMultiSequenceToNum(sqref, this.dataVerificationSelectCount); valueArr = method_1.getMultiFormulaValue(formulaValue); } var _type = constant_1.DATA_VERIFICATION_MAP[type]; var _type2 = null; var _value1 = (valueArr === null || valueArr === void 0 ? void 0 : valueArr.length) >= 1 ? valueArr[0] : ""; var _value2 = (valueArr === null || valueArr === void 0 ? void 0 : valueArr.length) === 2 ? valueArr[1] : ""; var _hint = method_1.getXmlAttibute(attrList, "prompt", null); var _hintShow = _hint ? true : false; var matchType = constant_1.COMMON_TYPE2.includes(_type) ? "common" : _type; _type2 = operator ? constant_1.DATA_VERIFICATION_TYPE2_MAP[matchType][operator] : "bw"; // mobile phone number processing if (_type === "text_content" && ((_value1 === null || _value1 === void 0 ? void 0 : _value1.includes("LEN")) || (_value1 === null || _value1 === void 0 ? void 0 : _value1.includes("len"))) && (_value1 === null || _value1 === void 0 ? void 0 : _value1.includes("=11"))) { _type = "validity"; _type2 = "phone"; } // date processing if (_type === "date") { var D1900 = new Date(1899, 11, 30, 0, 0, 0); _value1 = dayjs_1["default"](D1900).clone().add(Number(_value1), "day").format("YYYY-MM-DD"); _value2 = dayjs_1["default"](D1900).clone().add(Number(_value2), "day").format("YYYY-MM-DD"); } // checkbox and dropdown processing if (_type === "checkbox" || _type === "dropdown") { _type2 = null; } // dynamically add dataVerifications for (var _i = 0, sqrefIndexArr_1 = sqrefIndexArr; _i < sqrefIndexArr_1.length; _i++) { var ref = sqrefIndexArr_1[_i]; dataVerification[ref] = { type: _type, type2: _type2, value1: _value1, value2: _value2, checked: false, remote: false, prohibitInput: _prohibitInput, hintShow: _hintShow, hintText: _hint }; } } return dataVerification; }; /** * luckysheet config of hyperlink * * @returns {IluckysheetHyperlink} - hyperlink config */ LuckySheet.prototype.generateConfigHyperlinks = function () { var _a; var rows = this.readXml.getElementsByTagName("hyperlinks/hyperlink", this.sheetFile); var hyperlink = {}; var _loop_1 = function _loop_1(i) { var row = rows[i]; var attrList = row.attributeList; var ref = method_1.getXmlAttibute(attrList, "ref", null), refArr = method_1.getMultiSequenceToNum(ref), _display = method_1.getXmlAttibute(attrList, "display", null), _address = method_1.getXmlAttibute(attrList, "location", null), _tooltip = method_1.getXmlAttibute(attrList, "tooltip", null); var _type = _address ? "internal" : "external"; // external hyperlink if (!_address) { var rid_1 = attrList["r:id"]; var sheetFile = this_1.sheetFile; var relationshipList = this_1.readXml.getElementsByTagName("Relationships/Relationship", "xl/worksheets/_rels/" + sheetFile.replace(constant_1.worksheetFilePath, "") + ".rels"); var findRid = relationshipList === null || relationshipList === void 0 ? void 0 : relationshipList.find(function (e) { return e.attributeList["Id"] === rid_1; }); if (findRid) { _address = findRid.attributeList["Target"]; _type = (_a = findRid.attributeList["TargetMode"]) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase(); } } // match R1C1 var addressReg = new RegExp(/^.*!R([\d$])+C([\d$])*$/g); if (addressReg.test(_address)) { _address = method_1.getTransR1C1ToSequence(_address); } // dynamically add hyperlinks for (var _i = 0, refArr_1 = refArr; _i < refArr_1.length; _i++) { var ref_1 = refArr_1[_i]; hyperlink[ref_1] = { linkAddress: _address, linkTooltip: _tooltip || "", linkType: _type, display: _display || "" }; } }; var this_1 = this; for (var i = 0; i < rows.length; i++) { _loop_1(i); } return hyperlink; }; return LuckySheet; }(LuckyBase_1.LuckySheetBase); exports.LuckySheet = LuckySheet; },{"../common/constant":16,"../common/method":18,"./LuckyBase":10,"./LuckyCell":11,"./ReadXml":15,"dayjs":3}],15:[function(require,module,exports){ "use strict"; var __extends = void 0 && (void 0).__extends || function () { var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return _extendStatics(d, b); }; return function (d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; }(); Object.defineProperty(exports, "__esModule", { value: true }); exports.getlineStringAttr = exports.getColor = exports.Element = exports.ReadXml = void 0; var constant_1 = require("../common/constant"); var method_1 = require("../common/method"); var xmloperation = /** @class */function () { function xmloperation() {} /** * @param tag Search xml tag name , div,title etc. * @param file Xml string * @return Xml element string */ xmloperation.prototype.getElementsByOneTag = function (tag, file) { //: ]+?>.*?: ]+?> var readTagReg; if (tag.indexOf("|") > -1) { var tags = tag.split("|"), tagsRegTxt = ""; for (var i = 0; i < tags.length; i++) { var t = tags[i]; tagsRegTxt += "|<" + t + " [^>]+?[^/]>[\\s\\S]*?|<" + t + " [^>]+?/>|<" + t + ">[\\s\\S]*?|<" + t + "/>"; } tagsRegTxt = tagsRegTxt.substr(1, tagsRegTxt.length); readTagReg = new RegExp(tagsRegTxt, "g"); } else { readTagReg = new RegExp("<" + tag + " [^>]+?[^/]>[\\s\\S]*?|<" + tag + " [^>]+?/>|<" + tag + ">[\\s\\S]*?|<" + tag + "/>", "g"); } var ret = file.match(readTagReg); if (ret == null) { return []; } else { return ret; } }; return xmloperation; }(); var ReadXml = /** @class */function (_super) { __extends(ReadXml, _super); function ReadXml(files) { var _this = _super.call(this) || this; _this.originFile = files; return _this; } /** * @param path Search xml tag group , div,title etc. * @param fileName One of uploadfileList, uploadfileList is file group, {key:value} * @return Xml element calss */ ReadXml.prototype.getElementsByTagName = function (path, fileName) { var file = this.getFileByName(fileName); var pathArr = path.split("/"), ret; for (var key in pathArr) { var path_1 = pathArr[key]; if (ret == undefined) { ret = this.getElementsByOneTag(path_1, file); } else { if (ret instanceof Array) { var items = []; for (var key_1 in ret) { var item = ret[key_1]; items = items.concat(this.getElementsByOneTag(path_1, item)); } ret = items; } else { ret = this.getElementsByOneTag(path_1, ret); } } } var elements = []; for (var i = 0; i < ret.length; i++) { var ele = new Element(ret[i]); elements.push(ele); } return elements; }; /** * @param name One of uploadfileList's name, search for file by this parameter * @retrun Select a file from uploadfileList */ ReadXml.prototype.getFileByName = function (name) { for (var fileKey in this.originFile) { if (fileKey.indexOf(name) > -1) { return this.originFile[fileKey]; } } return ""; }; return ReadXml; }(xmloperation); exports.ReadXml = ReadXml; var Element = /** @class */function (_super) { __extends(Element, _super); function Element(str) { var _this = _super.call(this) || this; _this.elementString = str; _this.setValue(); var readAttrReg = new RegExp('[a-zA-Z0-9_:]*?=".*?"', "g"); var attrList = _this.container.match(readAttrReg); _this.attributeList = {}; if (attrList != null) { for (var key in attrList) { var attrFull = attrList[key]; // let al= attrFull.split("="); if (attrFull.length == 0) { continue; } var attrKey = attrFull.substr(0, attrFull.indexOf('=')); var attrValue = attrFull.substr(attrFull.indexOf('=') + 1); if (attrKey == null || attrValue == null || attrKey.length == 0 || attrValue.length == 0) { continue; } _this.attributeList[attrKey] = attrValue.substr(1, attrValue.length - 2); } } return _this; } /** * @param name Get attribute by key in element * @return Single attribute */ Element.prototype.get = function (name) { return this.attributeList[name]; }; /** * @param tag Get elements by tag in elementString * @return Element group */ Element.prototype.getInnerElements = function (tag) { var ret = this.getElementsByOneTag(tag, this.elementString); var elements = []; for (var i = 0; i < ret.length; i++) { var ele = new Element(ret[i]); elements.push(ele); } if (elements.length == 0) { return null; } return elements; }; /** * @desc get xml dom value and container, value */ Element.prototype.setValue = function () { var str = this.elementString; if (str.substr(str.length - 2, 2) == "/>") { this.value = ""; this.container = str; } else { var firstTag = this.getFirstTag(); var firstTagReg = new RegExp("(<" + firstTag + " [^>]+?[^/]>)([\\s\\S]*?)|(<" + firstTag + ">)([\\s\\S]*?)", "g"); var result = firstTagReg.exec(str); if (result != null) { if (result[1] != null) { this.container = result[1]; this.value = result[2]; } else { this.container = result[3]; this.value = result[4]; } } } }; /** * @desc get xml dom first tag, , get a */ Element.prototype.getFirstTag = function () { var str = this.elementString; var firstTag = str.substr(0, str.indexOf(' ')); if (firstTag == "" || firstTag.indexOf(">") > -1) { firstTag = str.substr(0, str.indexOf('>')); } firstTag = firstTag.substr(1, firstTag.length); return firstTag; }; return Element; }(xmloperation); exports.Element = Element; function combineIndexedColor(indexedColorsInner, indexedColors) { var ret = {}; if (indexedColorsInner == null || indexedColorsInner.length == 0) { return indexedColors; } for (var key in indexedColors) { var value = indexedColors[key], kn = parseInt(key); var inner = indexedColorsInner[kn]; if (inner == null) { ret[key] = value; } else { var rgb = inner.attributeList.rgb; ret[key] = rgb; } } return ret; } //clrScheme:Element[] function getColor(color, styles, type) { if (type === void 0) { type = "g"; } var attrList = color.attributeList; var clrScheme = styles["clrScheme"]; var indexedColorsInner = styles["indexedColors"]; var mruColorsInner = styles["mruColors"]; var indexedColorsList = combineIndexedColor(indexedColorsInner, constant_1.indexedColors); var indexed = attrList.indexed, rgb = attrList.rgb, theme = attrList.theme, tint = attrList.tint; var bg; if (indexed != null) { var indexedNum = parseInt(indexed); bg = indexedColorsList[indexedNum]; if (bg != null) { bg = bg.substring(bg.length - 6, bg.length); bg = "#" + bg; } } else if (rgb != null) { rgb = rgb.substring(rgb.length - 6, rgb.length); bg = "#" + rgb; } else if (theme != null) { var themeNum = parseInt(theme); if (themeNum == 0) { themeNum = 1; } else if (themeNum == 1) { themeNum = 0; } else if (themeNum == 2) { themeNum = 3; } else if (themeNum == 3) { themeNum = 2; } var clrSchemeElement = clrScheme[themeNum]; if (clrSchemeElement != null) { var clrs = clrSchemeElement.getInnerElements("a:sysClr|a:srgbClr"); if (clrs != null) { var clr = clrs[0]; var clrAttrList = clr.attributeList; // console.log(clr.container, ); if (clr.container.indexOf("sysClr") > -1) { // if(type=="g" && clrAttrList.val=="windowText"){ // bg = null; // } // else if((type=="t" || type=="b") && clrAttrList.val=="window"){ // bg = null; // } // else if (clrAttrList.lastClr != null) { bg = "#" + clrAttrList.lastClr; } else if (clrAttrList.val != null) { bg = "#" + clrAttrList.val; } } else if (clr.container.indexOf("srgbClr") > -1) { // console.log(clrAttrList.val); bg = "#" + clrAttrList.val; } } } } if (tint != null) { var tintNum = parseFloat(tint); if (bg != null) { bg = method_1.LightenDarkenColor(bg, tintNum); } } return bg; } exports.getColor = getColor; /** * @dom xml attribute object * @attr attribute name * @d if attribute is null, return default value * @return attribute value */ function getlineStringAttr(frpr, attr) { var attrEle = frpr.getInnerElements(attr), value; if (attrEle != null && attrEle.length > 0) { if (attr == "b" || attr == "i" || attr == "strike") { value = "1"; } else if (attr == "u") { var v = attrEle[0].attributeList.val; if (v == "double") { value = "2"; } else if (v == "singleAccounting") { value = "3"; } else if (v == "doubleAccounting") { value = "4"; } else { value = "1"; } } else if (attr == "vertAlign") { var v = attrEle[0].attributeList.val; if (v == "subscript") { value = "1"; } else if (v == "superscript") { value = "2"; } } else { value = attrEle[0].attributeList.val; } } return value; } exports.getlineStringAttr = getlineStringAttr; },{"../common/constant":16,"../common/method":18}],16:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DATA_VERIFICATION_TYPE2_MAP = exports.COMMON_TYPE2 = exports.DATA_VERIFICATION_MAP = exports.fontFamilys = exports.numFmtDefaultMap = exports.borderTypes = exports.OEM_CHARSET = exports.indexedColors = exports.numFmtDefault = exports.BuiltInCellStyles = exports.ST_CellType = exports.workbookRels = exports.theme1File = exports.worksheetFilePath = exports.sharedStringsFile = exports.stylesFile = exports.calcChainFile = exports.workBookFile = exports.contentTypesFile = exports.appFile = exports.coreFile = exports.columeHeader_word_index = exports.columeHeader_word = void 0; exports.columeHeader_word = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; exports.columeHeader_word_index = { 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9, 'K': 10, 'L': 11, 'M': 12, 'N': 13, 'O': 14, 'P': 15, 'Q': 16, 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24, 'Z': 25 }; exports.coreFile = "docProps/core.xml"; exports.appFile = "docProps/app.xml"; exports.contentTypesFile = "[Content_Types].xml"; exports.workBookFile = "xl/workbook.xml"; exports.calcChainFile = "xl/calcChain.xml"; exports.stylesFile = "xl/styles.xml"; exports.sharedStringsFile = "xl/sharedStrings.xml"; exports.worksheetFilePath = "xl/worksheets/"; exports.theme1File = "xl/theme/theme1.xml"; exports.workbookRels = "xl/_rels/workbook.xml.rels"; //Excel Built-In cell type exports.ST_CellType = { "Boolean": "b", "Date": "d", "Error": "e", "InlineString": "inlineStr", "Number": "n", "SharedString": "s", "String": "str" }; //Excel Built-In cell style exports.BuiltInCellStyles = { "0": "Normal" }; exports.numFmtDefault = { "0": 'General', "1": '0', "2": '0.00', "3": '#,##0', "4": '#,##0.00', "9": '0%', "10": '0.00%', "11": '0.00E+00', "12": '# ?/?', "13": '# ??/??', "14": 'm/d/yy', "15": 'd-mmm-yy', "16": 'd-mmm', "17": 'mmm-yy', "18": 'h:mm AM/PM', "19": 'h:mm:ss AM/PM', "20": 'h:mm', "21": 'h:mm:ss', "22": 'm/d/yy h:mm', "37": '#,##0 ;(#,##0)', "38": '#,##0 ;[Red](#,##0)', "39": '#,##0.00;(#,##0.00)', "40": '#,##0.00;[Red](#,##0.00)', "45": 'mm:ss', "46": '[h]:mm:ss', "47": 'mmss.0', "48": '##0.0E+0', "49": '@' }; exports.indexedColors = { "0": '00000000', "1": '00FFFFFF', "2": '00FF0000', "3": '0000FF00', "4": '000000FF', "5": '00FFFF00', "6": '00FF00FF', "7": '0000FFFF', "8": '00000000', "9": '00FFFFFF', "10": '00FF0000', "11": '0000FF00', "12": '000000FF', "13": '00FFFF00', "14": '00FF00FF', "15": '0000FFFF', "16": '00800000', "17": '00008000', "18": '00000080', "19": '00808000', "20": '00800080', "21": '00008080', "22": '00C0C0C0', "23": '00808080', "24": '009999FF', "25": '00993366', "26": '00FFFFCC', "27": '00CCFFFF', "28": '00660066', "29": '00FF8080', "30": '000066CC', "31": '00CCCCFF', "32": '00000080', "33": '00FF00FF', "34": '00FFFF00', "35": '0000FFFF', "36": '00800080', "37": '00800000', "38": '00008080', "39": '000000FF', "40": '0000CCFF', "41": '00CCFFFF', "42": '00CCFFCC', "43": '00FFFF99', "44": '0099CCFF', "45": '00FF99CC', "46": '00CC99FF', "47": '00FFCC99', "48": '003366FF', "49": '0033CCCC', "50": '0099CC00', "51": '00FFCC00', "52": '00FF9900', "53": '00FF6600', "54": '00666699', "55": '00969696', "56": '00003366', "57": '00339966', "58": '00003300', "59": '00333300', "60": '00993300', "61": '00993366', "62": '00333399', "63": '00333333', "64": null, "65": null }; exports.OEM_CHARSET = { "0": "ANSI_CHARSET", "1": "DEFAULT_CHARSET", "2": "SYMBOL_CHARSET", "77": "MAC_CHARSET", "128": "SHIFTJIS_CHARSET", "129": "HANGUL_CHARSET", "130": "JOHAB_CHARSET", "134": "GB2312_CHARSET", "136": "CHINESEBIG5_CHARSET", "161": "GREEK_CHARSET", "162": "TURKISH_CHARSET", "163": "VIETNAMESE_CHARSET", "177": "HEBREW_CHARSET", "178": "ARABIC_CHARSET", "186": "BALTIC_CHARSET", "204": "RUSSIAN_CHARSET", "222": "THAI_CHARSET", "238": "EASTEUROPE_CHARSET", "255": "OEM_CHARSET" }; exports.borderTypes = { "none": 0, "thin": 1, "hair": 2, "dotted": 3, "dashed": 4, "dashDot": 5, "dashDotDot": 6, "double": 7, "medium": 8, "mediumDashed": 9, "mediumDashDot": 10, "mediumDashDotDot": 11, "slantDashDot": 12, "thick": 13 }; exports.numFmtDefaultMap = { "yyyy/m/d;@": "yyyy/MM/dd", "yyyy"年"m"月"d"日";@": "yyyy"年"MM"月"dd"日"", "[$-409]yyyy/m/d\\ h:mm\\ AM/PM;@": "yyyy/MM/dd hh:mm AM/PM" }; exports.fontFamilys = { "0": "defualt", "1": "Roman", "2": "Swiss", "3": "Modern", "4": "Script", "5": "Decorative" }; exports.DATA_VERIFICATION_MAP = { list: "dropdown", whole: "number_integer", decimal: "number_decimal", custom: "text_content", textLength: "text_length", date: "date", "unknown1": "number", "unknown2": "checkbox", "unknown3": "validity" }; exports.COMMON_TYPE2 = ["number", "number_integer", "number_decimal", "text_length"]; exports.DATA_VERIFICATION_TYPE2_MAP = { common: { between: "bw", notBetween: "nb", equal: "eq", notEqualTo: "ne", moreThanThe: "gt", lessThan: "lt", greaterOrEqualTo: "gte", lessThanOrEqualTo: "lte" }, text_content: { include: "include", exclude: "exclude", equal: "equal" }, date: { between: "bw", notBetween: "nb", equal: "eq", notEqualTo: "ne", earlierThan: "bf", noEarlierThan: "nbf", laterThan: "af", noLaterThan: "naf" }, validity: { card: "card", phone: "phone" } }; },{}],17:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ToContext2D = exports.FromEMF = exports.UDOC = void 0; exports.UDOC = {}; exports.UDOC.G = { concat: function concat(p, r) { for (var i = 0; i < r.cmds.length; i++) p.cmds.push(r.cmds[i]); for (var i = 0; i < r.crds.length; i++) p.crds.push(r.crds[i]); }, getBB: function getBB(ps) { var x0 = 1e99, y0 = 1e99, x1 = -x0, y1 = -y0; for (var i = 0; i < ps.length; i += 2) { var x = ps[i], y = ps[i + 1]; if (x < x0) x0 = x;else if (x > x1) x1 = x; if (y < y0) y0 = y;else if (y > y1) y1 = y; } return [x0, y0, x1, y1]; }, rectToPath: function rectToPath(r) { return { cmds: ["M", "L", "L", "L", "Z"], crds: [r[0], r[1], r[2], r[1], r[2], r[3], r[0], r[3]] }; }, // a inside b insideBox: function insideBox(a, b) { return b[0] <= a[0] && b[1] <= a[1] && a[2] <= b[2] && a[3] <= b[3]; }, isBox: function isBox(p, bb) { var sameCrd8 = function sameCrd8(pcrd, crds) { for (var o = 0; o < 8; o += 2) { var eq = true; for (var j = 0; j < 8; j++) if (Math.abs(crds[j] - pcrd[j + o & 7]) >= 2) { eq = false; break; } if (eq) return true; } return false; }; if (p.cmds.length > 10) return false; var cmds = p.cmds.join(""), crds = p.crds; var sameRect = false; if (cmds == "MLLLZ" && crds.length == 8 || cmds == "MLLLLZ" && crds.length == 10) { if (crds.length == 10) crds = crds.slice(0, 8); var x0 = bb[0], y0 = bb[1], x1 = bb[2], y1 = bb[3]; if (!sameRect) sameRect = sameCrd8(crds, [x0, y0, x1, y0, x1, y1, x0, y1]); if (!sameRect) sameRect = sameCrd8(crds, [x0, y1, x1, y1, x1, y0, x0, y0]); } return sameRect; }, boxArea: function boxArea(a) { var w = a[2] - a[0], h = a[3] - a[1]; return w * h; }, newPath: function newPath(gst) { gst.pth = { cmds: [], crds: [] }; }, moveTo: function moveTo(gst, x, y) { var p = exports.UDOC.M.multPoint(gst.ctm, [x, y]); //if(gst.cpos[0]==p[0] && gst.cpos[1]==p[1]) return; gst.pth.cmds.push("M"); gst.pth.crds.push(p[0], p[1]); gst.cpos = p; }, lineTo: function lineTo(gst, x, y) { var p = exports.UDOC.M.multPoint(gst.ctm, [x, y]); if (gst.cpos[0] == p[0] && gst.cpos[1] == p[1]) return; gst.pth.cmds.push("L"); gst.pth.crds.push(p[0], p[1]); gst.cpos = p; }, curveTo: function curveTo(gst, x1, y1, x2, y2, x3, y3) { var p; p = exports.UDOC.M.multPoint(gst.ctm, [x1, y1]); x1 = p[0]; y1 = p[1]; p = exports.UDOC.M.multPoint(gst.ctm, [x2, y2]); x2 = p[0]; y2 = p[1]; p = exports.UDOC.M.multPoint(gst.ctm, [x3, y3]); x3 = p[0]; y3 = p[1]; gst.cpos = p; gst.pth.cmds.push("C"); gst.pth.crds.push(x1, y1, x2, y2, x3, y3); }, closePath: function closePath(gst) { gst.pth.cmds.push("Z"); }, arc: function arc(gst, x, y, r, a0, a1, neg) { // circle from a0 counter-clock-wise to a1 if (neg) while (a1 > a0) a1 -= 2 * Math.PI;else while (a1 < a0) a1 += 2 * Math.PI; var th = (a1 - a0) / 4; var x0 = Math.cos(th / 2), y0 = -Math.sin(th / 2); var x1 = (4 - x0) / 3, y1 = y0 == 0 ? y0 : (1 - x0) * (3 - x0) / (3 * y0); var x2 = x1, y2 = -y1; var x3 = x0, y3 = -y0; var p0 = [x0, y0], p1 = [x1, y1], p2 = [x2, y2], p3 = [x3, y3]; var pth = { cmds: [gst.pth.cmds.length == 0 ? "M" : "L", "C", "C", "C", "C"], crds: [x0, y0, x1, y1, x2, y2, x3, y3] }; var rot = [1, 0, 0, 1, 0, 0]; exports.UDOC.M.rotate(rot, -th); for (var i = 0; i < 3; i++) { p1 = exports.UDOC.M.multPoint(rot, p1); p2 = exports.UDOC.M.multPoint(rot, p2); p3 = exports.UDOC.M.multPoint(rot, p3); pth.crds.push(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]); } var sc = [r, 0, 0, r, x, y]; exports.UDOC.M.rotate(rot, -a0 + th / 2); exports.UDOC.M.concat(rot, sc); exports.UDOC.M.multArray(rot, pth.crds); exports.UDOC.M.multArray(gst.ctm, pth.crds); exports.UDOC.G.concat(gst.pth, pth); var y = pth.crds.pop(); x = pth.crds.pop(); gst.cpos = [x, y]; }, toPoly: function toPoly(p) { if (p.cmds[0] != "M" || p.cmds[p.cmds.length - 1] != "Z") return null; for (var i = 1; i < p.cmds.length - 1; i++) if (p.cmds[i] != "L") return null; var out = [], cl = p.crds.length; if (p.crds[0] == p.crds[cl - 2] && p.crds[1] == p.crds[cl - 1]) cl -= 2; for (var i = 0; i < cl; i += 2) out.push([p.crds[i], p.crds[i + 1]]); if (exports.UDOC.G.polyArea(p.crds) < 0) out.reverse(); return out; }, fromPoly: function fromPoly(p) { var o = { cmds: [], crds: [] }; for (var i = 0; i < p.length; i++) { o.crds.push(p[i][0], p[i][1]); o.cmds.push(i == 0 ? "M" : "L"); } o.cmds.push("Z"); return o; }, polyArea: function polyArea(p) { if (p.length < 6) return 0; var l = p.length - 2; var sum = (p[0] - p[l]) * (p[l + 1] + p[1]); for (var i = 0; i < l; i += 2) sum += (p[i + 2] - p[i]) * (p[i + 1] + p[i + 3]); return -sum * 0.5; }, polyClip: function polyClip(p0, p1) { var cp1, cp2, s, e; var inside = function inside(p) { return (cp2[0] - cp1[0]) * (p[1] - cp1[1]) > (cp2[1] - cp1[1]) * (p[0] - cp1[0]); }; var isc = function isc() { var dc = [cp1[0] - cp2[0], cp1[1] - cp2[1]], dp = [s[0] - e[0], s[1] - e[1]], n1 = cp1[0] * cp2[1] - cp1[1] * cp2[0], n2 = s[0] * e[1] - s[1] * e[0], n3 = 1.0 / (dc[0] * dp[1] - dc[1] * dp[0]); return [(n1 * dp[0] - n2 * dc[0]) * n3, (n1 * dp[1] - n2 * dc[1]) * n3]; }; var out = p0; cp1 = p1[p1.length - 1]; for (var j in p1) { var cp2 = p1[j]; var inp = out; out = []; s = inp[inp.length - 1]; //last on the input list for (var i in inp) { var e = inp[i]; if (inside(e)) { if (!inside(s)) { out.push(isc()); } out.push(e); } else if (inside(s)) { out.push(isc()); } s = e; } cp1 = cp2; } return out; } }; exports.UDOC.M = { getScale: function getScale(m) { return Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2])); }, translate: function translate(m, x, y) { exports.UDOC.M.concat(m, [1, 0, 0, 1, x, y]); }, rotate: function rotate(m, a) { exports.UDOC.M.concat(m, [Math.cos(a), -Math.sin(a), Math.sin(a), Math.cos(a), 0, 0]); }, scale: function scale(m, x, y) { exports.UDOC.M.concat(m, [x, 0, 0, y, 0, 0]); }, concat: function concat(m, w) { var a = m[0], b = m[1], c = m[2], d = m[3], tx = m[4], ty = m[5]; m[0] = a * w[0] + b * w[2]; m[1] = a * w[1] + b * w[3]; m[2] = c * w[0] + d * w[2]; m[3] = c * w[1] + d * w[3]; m[4] = tx * w[0] + ty * w[2] + w[4]; m[5] = tx * w[1] + ty * w[3] + w[5]; }, invert: function invert(m) { var a = m[0], b = m[1], c = m[2], d = m[3], tx = m[4], ty = m[5], adbc = a * d - b * c; m[0] = d / adbc; m[1] = -b / adbc; m[2] = -c / adbc; m[3] = a / adbc; m[4] = (c * ty - d * tx) / adbc; m[5] = (b * tx - a * ty) / adbc; }, multPoint: function multPoint(m, p) { var x = p[0], y = p[1]; return [x * m[0] + y * m[2] + m[4], x * m[1] + y * m[3] + m[5]]; }, multArray: function multArray(m, a) { for (var i = 0; i < a.length; i += 2) { var x = a[i], y = a[i + 1]; a[i] = x * m[0] + y * m[2] + m[4]; a[i + 1] = x * m[1] + y * m[3] + m[5]; } } }; exports.UDOC.C = { srgbGamma: function srgbGamma(x) { return x < 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1.0 / 2.4) - 0.055; }, cmykToRgb: function cmykToRgb(clr) { var c = clr[0], m = clr[1], y = clr[2], k = clr[3]; // return [1-Math.min(1,c+k), 1-Math.min(1, m+k), 1-Math.min(1,y+k)]; var r = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747); var g = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578); var b = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367); return [Math.max(0, Math.min(1, r / 255)), Math.max(0, Math.min(1, g / 255)), Math.max(0, Math.min(1, b / 255))]; //var iK = 1-c[3]; //return [(1-c[0])*iK, (1-c[1])*iK, (1-c[2])*iK]; }, labToRgb: function labToRgb(lab) { var k = 903.3, e = 0.008856, L = lab[0], a = lab[1], b = lab[2]; var fy = (L + 16) / 116, fy3 = fy * fy * fy; var fz = fy - b / 200, fz3 = fz * fz * fz; var fx = a / 500 + fy, fx3 = fx * fx * fx; var zr = fz3 > e ? fz3 : (116 * fz - 16) / k; var yr = fy3 > e ? fy3 : (116 * fy - 16) / k; var xr = fx3 > e ? fx3 : (116 * fx - 16) / k; var X = xr * 96.72, Y = yr * 100, Z = zr * 81.427, xyz = [X / 100, Y / 100, Z / 100]; var x2s = [3.1338561, -1.6168667, -0.4906146, -0.9787684, 1.9161415, 0.0334540, 0.0719453, -0.2289914, 1.4052427]; var rgb = [x2s[0] * xyz[0] + x2s[1] * xyz[1] + x2s[2] * xyz[2], x2s[3] * xyz[0] + x2s[4] * xyz[1] + x2s[5] * xyz[2], x2s[6] * xyz[0] + x2s[7] * xyz[1] + x2s[8] * xyz[2]]; for (var i = 0; i < 3; i++) rgb[i] = Math.max(0, Math.min(1, exports.UDOC.C.srgbGamma(rgb[i]))); return rgb; } }; exports.UDOC.getState = function (crds) { return { font: exports.UDOC.getFont(), dd: { flat: 1 }, space: "/DeviceGray", // fill ca: 1, colr: [0, 0, 0], sspace: "/DeviceGray", // stroke CA: 1, COLR: [0, 0, 0], bmode: "/Normal", SA: false, OPM: 0, AIS: false, OP: false, op: false, SMask: "/None", lwidth: 1, lcap: 0, ljoin: 0, mlimit: 10, SM: 0.1, doff: 0, dash: [], ctm: [1, 0, 0, 1, 0, 0], cpos: [0, 0], pth: { cmds: [], crds: [] }, cpth: crds ? exports.UDOC.G.rectToPath(crds) : null // clipping path }; }; exports.UDOC.getFont = function () { return { Tc: 0, Tw: 0, Th: 100, Tl: 0, Tf: "Helvetica-Bold", Tfs: 1, Tmode: 0, Trise: 0, Tk: 0, Tal: 0, Tun: 0, Tm: [1, 0, 0, 1, 0, 0], Tlm: [1, 0, 0, 1, 0, 0], Trm: [1, 0, 0, 1, 0, 0] }; }; exports.FromEMF = function () {}; exports.FromEMF.Parse = function (buff, genv) { buff = new Uint8Array(buff); var off = 0; //console.log(buff.slice(0,32)); var prms = { fill: false, strk: false, bb: [0, 0, 1, 1], wbb: [0, 0, 1, 1], fnt: { nam: "Arial", hgh: 25, und: false, orn: 0 }, tclr: [0, 0, 0], talg: 0 }, gst, tab = [], sts = []; var rI = exports.FromEMF.B.readShort, rU = exports.FromEMF.B.readUshort, rI32 = exports.FromEMF.B.readInt, rU32 = exports.FromEMF.B.readUint, rF32 = exports.FromEMF.B.readFloat; var opn = 0; while (true) { var fnc = rU32(buff, off); off += 4; var fnm = exports.FromEMF.K[fnc]; var siz = rU32(buff, off); off += 4; //if(gst && isNaN(gst.ctm[0])) throw "e"; //console.log(fnc,fnm,siz); var loff = off; //if(opn++==253) break; var obj = null, oid = 0; //console.log(fnm, siz); if (false) {} else if (fnm == "EOF") { break; } else if (fnm == "HEADER") { prms.bb = exports.FromEMF._readBox(buff, loff); loff += 16; //console.log(fnm, prms.bb); genv.StartPage(prms.bb[0], prms.bb[1], prms.bb[2], prms.bb[3]); gst = exports.UDOC.getState(prms.bb); } else if (fnm == "SAVEDC") sts.push(JSON.stringify(gst), JSON.stringify(prms));else if (fnm == "RESTOREDC") { var dif = rI32(buff, loff); loff += 4; while (dif < -1) { sts.pop(); sts.pop(); } prms = JSON.parse(sts.pop()); gst = JSON.parse(sts.pop()); } else if (fnm == "SELECTCLIPPATH") { gst.cpth = JSON.parse(JSON.stringify(gst.pth)); } else if (["SETMAPMODE", "SETPOLYFILLMODE", "SETBKMODE" /*,"SETVIEWPORTEXTEX"*/, "SETICMMODE", "SETROP2", "EXTSELECTCLIPRGN"].indexOf(fnm) != -1) {} //else if(fnm=="INTERSECTCLIPRECT") { var r=prms.crct=FromEMF._readBox(buff, loff); /*var y0=r[1],y1=r[3]; if(y0>y1){r[1]=y1; r[3]=y0;}*/ console.log(prms.crct); } else if (fnm == "SETMITERLIMIT") gst.mlimit = rU32(buff, loff);else if (fnm == "SETTEXTCOLOR") prms.tclr = [buff[loff] / 255, buff[loff + 1] / 255, buff[loff + 2] / 255];else if (fnm == "SETTEXTALIGN") prms.talg = rU32(buff, loff);else if (fnm == "SETVIEWPORTEXTEX" || fnm == "SETVIEWPORTORGEX") { if (prms.vbb == null) prms.vbb = []; var coff = fnm == "SETVIEWPORTORGEX" ? 0 : 2; prms.vbb[coff] = rI32(buff, loff); loff += 4; prms.vbb[coff + 1] = rI32(buff, loff); loff += 4; //console.log(prms.vbb); if (fnm == "SETVIEWPORTEXTEX") exports.FromEMF._updateCtm(prms, gst); } else if (fnm == "SETWINDOWEXTEX" || fnm == "SETWINDOWORGEX") { var coff = fnm == "SETWINDOWORGEX" ? 0 : 2; prms.wbb[coff] = rI32(buff, loff); loff += 4; prms.wbb[coff + 1] = rI32(buff, loff); loff += 4; if (fnm == "SETWINDOWEXTEX") exports.FromEMF._updateCtm(prms, gst); } //else if(fnm=="SETMETARGN") {} else if (fnm == "COMMENT") { var ds = rU32(buff, loff); loff += 4; } else if (fnm == "SELECTOBJECT") { var ind = rU32(buff, loff); loff += 4; //console.log(ind.toString(16), tab, tab[ind]); if (ind == 0x80000000) { prms.fill = true; gst.colr = [1, 1, 1]; } // white brush else if (ind == 0x80000005) { prms.fill = false; } // null brush else if (ind == 0x80000007) { prms.strk = true; prms.lwidth = 1; gst.COLR = [0, 0, 0]; } // black pen else if (ind == 0x80000008) { prms.strk = false; } // null pen else if (ind == 0x8000000d) {} // system font else if (ind == 0x8000000e) {} // device default font else { var co = tab[ind]; //console.log(ind, co); if (co.t == "b") { prms.fill = co.stl != 1; if (co.stl == 0) {} else if (co.stl == 1) {} else throw co.stl + " e"; gst.colr = co.clr; } else if (co.t == "p") { prms.strk = co.stl != 5; gst.lwidth = co.wid; gst.COLR = co.clr; } else if (co.t == "f") { prms.fnt = co; gst.font.Tf = co.nam; gst.font.Tfs = Math.abs(co.hgh); gst.font.Tun = co.und; } else throw "e"; } } else if (fnm == "DELETEOBJECT") { var ind = rU32(buff, loff); loff += 4; if (tab[ind] != null) tab[ind] = null;else throw "e"; } else if (fnm == "CREATEBRUSHINDIRECT") { oid = rU32(buff, loff); loff += 4; obj = { t: "b" }; obj.stl = rU32(buff, loff); loff += 4; obj.clr = [buff[loff] / 255, buff[loff + 1] / 255, buff[loff + 2] / 255]; loff += 4; obj.htc = rU32(buff, loff); loff += 4; //console.log(oid, obj); } else if (fnm == "CREATEPEN" || fnm == "EXTCREATEPEN") { oid = rU32(buff, loff); loff += 4; obj = { t: "p" }; if (fnm == "EXTCREATEPEN") { loff += 16; obj.stl = rU32(buff, loff); loff += 4; obj.wid = rU32(buff, loff); loff += 4; //obj.stl = rU32(buff, loff); loff += 4; } else { obj.stl = rU32(buff, loff); loff += 4; obj.wid = rU32(buff, loff); loff += 4; loff += 4; } obj.clr = [buff[loff] / 255, buff[loff + 1] / 255, buff[loff + 2] / 255]; loff += 4; } else if (fnm == "EXTCREATEFONTINDIRECTW") { oid = rU32(buff, loff); loff += 4; obj = { t: "f", nam: "" }; obj.hgh = rI32(buff, loff); loff += 4; loff += 4 * 2; obj.orn = rI32(buff, loff) / 10; loff += 4; var wgh = rU32(buff, loff); loff += 4; //console.log(fnm, obj.orn, wgh); //console.log(rU32(buff,loff), rU32(buff,loff+4), buff.slice(loff,loff+8)); obj.und = buff[loff + 1]; obj.stk = buff[loff + 2]; loff += 4 * 2; while (rU(buff, loff) != 0) { obj.nam += String.fromCharCode(rU(buff, loff)); loff += 2; } if (wgh > 500) obj.nam += "-Bold"; //console.log(wgh, obj.nam); } else if (fnm == "EXTTEXTOUTW") { //console.log(buff.slice(loff-8, loff-8+siz)); loff += 16; var mod = rU32(buff, loff); loff += 4; //console.log(mod); var scx = rF32(buff, loff); loff += 4; var scy = rF32(buff, loff); loff += 4; var rfx = rI32(buff, loff); loff += 4; var rfy = rI32(buff, loff); loff += 4; //console.log(mod, scx, scy,rfx,rfy); gst.font.Tm = [1, 0, 0, -1, 0, 0]; exports.UDOC.M.rotate(gst.font.Tm, prms.fnt.orn * Math.PI / 180); exports.UDOC.M.translate(gst.font.Tm, rfx, rfy); var alg = prms.talg; //console.log(alg.toString(2)); if ((alg & 6) == 6) gst.font.Tal = 2;else if ((alg & 7) == 0) gst.font.Tal = 0;else throw alg + " e"; if ((alg & 24) == 24) {} // baseline else if ((alg & 24) == 0) exports.UDOC.M.translate(gst.font.Tm, 0, gst.font.Tfs);else throw "e"; var crs = rU32(buff, loff); loff += 4; var ofs = rU32(buff, loff); loff += 4; var ops = rU32(buff, loff); loff += 4; //if(ops!=0) throw "e"; //console.log(ofs,ops,crs); loff += 16; var ofD = rU32(buff, loff); loff += 4; //console.log(ops, ofD, loff, ofs+off-8); ofs += off - 8; //console.log(crs, ops); var str = ""; for (var i = 0; i < crs; i++) { var cc = rU(buff, ofs + i * 2); str += String.fromCharCode(cc); } ; var oclr = gst.colr; gst.colr = prms.tclr; //console.log(str, gst.colr, gst.font.Tm); //var otfs = gst.font.Tfs; gst.font.Tfs *= 1/gst.ctm[0]; genv.PutText(gst, str, str.length * gst.font.Tfs * 0.5); gst.colr = oclr; //gst.font.Tfs = otfs; //console.log(rfx, rfy, scx, ops, rcX, rcY, rcW, rcH, offDx, str); } else if (fnm == "BEGINPATH") { exports.UDOC.G.newPath(gst); } else if (fnm == "ENDPATH") {} else if (fnm == "CLOSEFIGURE") exports.UDOC.G.closePath(gst);else if (fnm == "MOVETOEX") { exports.UDOC.G.moveTo(gst, rI32(buff, loff), rI32(buff, loff + 4)); } else if (fnm == "LINETO") { if (gst.pth.cmds.length == 0) { var im = gst.ctm.slice(0); exports.UDOC.M.invert(im); var p = exports.UDOC.M.multPoint(im, gst.cpos); exports.UDOC.G.moveTo(gst, p[0], p[1]); } exports.UDOC.G.lineTo(gst, rI32(buff, loff), rI32(buff, loff + 4)); } else if (fnm == "POLYGON" || fnm == "POLYGON16" || fnm == "POLYLINE" || fnm == "POLYLINE16" || fnm == "POLYLINETO" || fnm == "POLYLINETO16") { loff += 16; var ndf = fnm.startsWith("POLYGON"), isTo = fnm.indexOf("TO") != -1; var cnt = rU32(buff, loff); loff += 4; if (!isTo) exports.UDOC.G.newPath(gst); loff = exports.FromEMF._drawPoly(buff, loff, cnt, gst, fnm.endsWith("16") ? 2 : 4, ndf, isTo); if (!isTo) exports.FromEMF._draw(genv, gst, prms, ndf); //console.log(prms, gst.lwidth); //console.log(JSON.parse(JSON.stringify(gst.pth))); } else if (fnm == "POLYPOLYGON16") { loff += 16; var ndf = fnm.startsWith("POLYPOLYGON"), isTo = fnm.indexOf("TO") != -1; var nop = rU32(buff, loff); loff += 4; loff += 4; var pi = loff; loff += nop * 4; if (!isTo) exports.UDOC.G.newPath(gst); for (var i = 0; i < nop; i++) { var ppp = rU(buff, pi + i * 4); loff = exports.FromEMF._drawPoly(buff, loff, ppp, gst, fnm.endsWith("16") ? 2 : 4, ndf, isTo); } if (!isTo) exports.FromEMF._draw(genv, gst, prms, ndf); } else if (fnm == "POLYBEZIER" || fnm == "POLYBEZIER16" || fnm == "POLYBEZIERTO" || fnm == "POLYBEZIERTO16") { loff += 16; var is16 = fnm.endsWith("16"), rC = is16 ? rI : rI32, nl = is16 ? 2 : 4; var cnt = rU32(buff, loff); loff += 4; if (fnm.indexOf("TO") == -1) { exports.UDOC.G.moveTo(gst, rC(buff, loff), rC(buff, loff + nl)); loff += 2 * nl; cnt--; } while (cnt > 0) { exports.UDOC.G.curveTo(gst, rC(buff, loff), rC(buff, loff + nl), rC(buff, loff + 2 * nl), rC(buff, loff + 3 * nl), rC(buff, loff + 4 * nl), rC(buff, loff + 5 * nl)); loff += 6 * nl; cnt -= 3; } //console.log(JSON.parse(JSON.stringify(gst.pth))); } else if (fnm == "RECTANGLE" || fnm == "ELLIPSE") { exports.UDOC.G.newPath(gst); var bx = exports.FromEMF._readBox(buff, loff); if (fnm == "RECTANGLE") { exports.UDOC.G.moveTo(gst, bx[0], bx[1]); exports.UDOC.G.lineTo(gst, bx[2], bx[1]); exports.UDOC.G.lineTo(gst, bx[2], bx[3]); exports.UDOC.G.lineTo(gst, bx[0], bx[3]); } else { var x = (bx[0] + bx[2]) / 2, y = (bx[1] + bx[3]) / 2; exports.UDOC.G.arc(gst, x, y, (bx[2] - bx[0]) / 2, 0, 2 * Math.PI, false); } exports.UDOC.G.closePath(gst); exports.FromEMF._draw(genv, gst, prms, true); //console.log(prms, gst.lwidth); } else if (fnm == "FILLPATH") genv.Fill(gst, false);else if (fnm == "STROKEPATH") genv.Stroke(gst);else if (fnm == "STROKEANDFILLPATH") { genv.Fill(gst, false); genv.Stroke(gst); } else if (fnm == "SETWORLDTRANSFORM" || fnm == "MODIFYWORLDTRANSFORM") { var mat = []; for (var i = 0; i < 6; i++) mat.push(rF32(buff, loff + i * 4)); loff += 24; //console.log(fnm, gst.ctm.slice(0), mat); if (fnm == "SETWORLDTRANSFORM") gst.ctm = mat;else { var mod = rU32(buff, loff); loff += 4; if (mod == 2) { var om = gst.ctm; gst.ctm = mat; exports.UDOC.M.concat(gst.ctm, om); } else throw "e"; } } else if (fnm == "SETSTRETCHBLTMODE") { var sm = rU32(buff, loff); loff += 4; } else if (fnm == "STRETCHDIBITS") { var bx = exports.FromEMF._readBox(buff, loff); loff += 16; var xD = rI32(buff, loff); loff += 4; var yD = rI32(buff, loff); loff += 4; var xS = rI32(buff, loff); loff += 4; var yS = rI32(buff, loff); loff += 4; var wS = rI32(buff, loff); loff += 4; var hS = rI32(buff, loff); loff += 4; var ofH = rU32(buff, loff) + off - 8; loff += 4; var szH = rU32(buff, loff); loff += 4; var ofB = rU32(buff, loff) + off - 8; loff += 4; var szB = rU32(buff, loff); loff += 4; var usg = rU32(buff, loff); loff += 4; if (usg != 0) throw "e"; var bop = rU32(buff, loff); loff += 4; var wD = rI32(buff, loff); loff += 4; var hD = rI32(buff, loff); loff += 4; //console.log(bop, wD, hD); //console.log(ofH, szH, ofB, szB, ofH+40); //console.log(bx, xD,yD,wD,hD); //console.log(xS,yS,wS,hS); //console.log(ofH,szH,ofB,szB,usg,bop); var hl = rU32(buff, ofH); ofH += 4; var w = rU32(buff, ofH); ofH += 4; var h = rU32(buff, ofH); ofH += 4; if (w != wS || h != hS) throw "e"; var ps = rU(buff, ofH); ofH += 2; var bc = rU(buff, ofH); ofH += 2; if (bc != 8 && bc != 24 && bc != 32) throw bc + " e"; var cpr = rU32(buff, ofH); ofH += 4; if (cpr != 0) throw cpr + " e"; var sz = rU32(buff, ofH); ofH += 4; var xpm = rU32(buff, ofH); ofH += 4; var ypm = rU32(buff, ofH); ofH += 4; var cu = rU32(buff, ofH); ofH += 4; var ci = rU32(buff, ofH); ofH += 4; //console.log(hl, w, h, ps, bc, cpr, sz, xpm, ypm, cu, ci); //console.log(hl,w,h,",",xS,yS,wS,hS,",",xD,yD,wD,hD,",",xpm,ypm); var rl = Math.floor((w * ps * bc + 31 & ~31) / 8); var img = new Uint8Array(w * h * 4); if (bc == 8) { for (var y = 0; y < h; y++) for (var x = 0; x < w; x++) { var qi = y * w + x << 2, ind = buff[ofB + (h - 1 - y) * rl + x] << 2; img[qi] = buff[ofH + ind + 2]; img[qi + 1] = buff[ofH + ind + 1]; img[qi + 2] = buff[ofH + ind + 0]; img[qi + 3] = 255; } } if (bc == 24) { for (var y = 0; y < h; y++) for (var x = 0; x < w; x++) { var qi = y * w + x << 2, ti = ofB + (h - 1 - y) * rl + x * 3; img[qi] = buff[ti + 2]; img[qi + 1] = buff[ti + 1]; img[qi + 2] = buff[ti + 0]; img[qi + 3] = 255; } } if (bc == 32) { for (var y = 0; y < h; y++) for (var x = 0; x < w; x++) { var qi = y * w + x << 2, ti = ofB + (h - 1 - y) * rl + x * 4; img[qi] = buff[ti + 2]; img[qi + 1] = buff[ti + 1]; img[qi + 2] = buff[ti + 0]; img[qi + 3] = buff[ti + 3]; } } var ctm = gst.ctm.slice(0); gst.ctm = [1, 0, 0, 1, 0, 0]; exports.UDOC.M.scale(gst.ctm, wD, -hD); exports.UDOC.M.translate(gst.ctm, xD, yD + hD); exports.UDOC.M.concat(gst.ctm, ctm); genv.PutImage(gst, img, w, h); gst.ctm = ctm; } else { console.log(fnm, siz); } if (obj != null) tab[oid] = obj; off += siz - 8; } //genv.Stroke(gst); genv.ShowPage(); genv.Done(); }; exports.FromEMF._readBox = function (buff, off) { var b = []; for (var i = 0; i < 4; i++) b[i] = exports.FromEMF.B.readInt(buff, off + i * 4); return b; }; exports.FromEMF._updateCtm = function (prms, gst) { var mat = [1, 0, 0, 1, 0, 0]; var wbb = prms.wbb, bb = prms.bb, vbb = prms.vbb && prms.vbb.length == 4 ? prms.vbb : prms.bb; //var y0 = bb[1], y1 = bb[3]; bb[1]=Math.min(y0,y1); bb[3]=Math.max(y0,y1); exports.UDOC.M.translate(mat, -wbb[0], -wbb[1]); exports.UDOC.M.scale(mat, 1 / wbb[2], 1 / wbb[3]); exports.UDOC.M.scale(mat, vbb[2], vbb[3]); //UDOC.M.scale(mat, vbb[2]/(bb[2]-bb[0]), vbb[3]/(bb[3]-bb[1])); //UDOC.M.scale(mat, bb[2]-bb[0],bb[3]-bb[1]); gst.ctm = mat; }; exports.FromEMF._draw = function (genv, gst, prms, needFill) { if (prms.fill && needFill) genv.Fill(gst, false); if (prms.strk && gst.lwidth != 0) genv.Stroke(gst); }; exports.FromEMF._drawPoly = function (buff, off, ppp, gst, nl, clos, justLine) { var rS = nl == 2 ? exports.FromEMF.B.readShort : exports.FromEMF.B.readInt; for (var j = 0; j < ppp; j++) { var px = rS(buff, off); off += nl; var py = rS(buff, off); off += nl; if (j == 0 && !justLine) exports.UDOC.G.moveTo(gst, px, py);else exports.UDOC.G.lineTo(gst, px, py); } if (clos) exports.UDOC.G.closePath(gst); return off; }; exports.FromEMF.B = { uint8: new Uint8Array(4), readShort: function readShort(buff, p) { var u8 = exports.FromEMF.B.uint8; u8[0] = buff[p]; u8[1] = buff[p + 1]; return exports.FromEMF.B.int16[0]; }, readUshort: function readUshort(buff, p) { var u8 = exports.FromEMF.B.uint8; u8[0] = buff[p]; u8[1] = buff[p + 1]; return exports.FromEMF.B.uint16[0]; }, readInt: function readInt(buff, p) { var u8 = exports.FromEMF.B.uint8; u8[0] = buff[p]; u8[1] = buff[p + 1]; u8[2] = buff[p + 2]; u8[3] = buff[p + 3]; return exports.FromEMF.B.int32[0]; }, readUint: function readUint(buff, p) { var u8 = exports.FromEMF.B.uint8; u8[0] = buff[p]; u8[1] = buff[p + 1]; u8[2] = buff[p + 2]; u8[3] = buff[p + 3]; return exports.FromEMF.B.uint32[0]; }, readFloat: function readFloat(buff, p) { var u8 = exports.FromEMF.B.uint8; u8[0] = buff[p]; u8[1] = buff[p + 1]; u8[2] = buff[p + 2]; u8[3] = buff[p + 3]; return exports.FromEMF.B.flot32[0]; }, readASCII: function readASCII(buff, p, l) { var s = ""; for (var i = 0; i < l; i++) s += String.fromCharCode(buff[p + i]); return s; } }; exports.FromEMF.B.int16 = new Int16Array(exports.FromEMF.B.uint8.buffer); exports.FromEMF.B.uint16 = new Uint16Array(exports.FromEMF.B.uint8.buffer); exports.FromEMF.B.int32 = new Int32Array(exports.FromEMF.B.uint8.buffer); exports.FromEMF.B.uint32 = new Uint32Array(exports.FromEMF.B.uint8.buffer); exports.FromEMF.B.flot32 = new Float32Array(exports.FromEMF.B.uint8.buffer); exports.FromEMF.C = { EMR_HEADER: 0x00000001, EMR_POLYBEZIER: 0x00000002, EMR_POLYGON: 0x00000003, EMR_POLYLINE: 0x00000004, EMR_POLYBEZIERTO: 0x00000005, EMR_POLYLINETO: 0x00000006, EMR_POLYPOLYLINE: 0x00000007, EMR_POLYPOLYGON: 0x00000008, EMR_SETWINDOWEXTEX: 0x00000009, EMR_SETWINDOWORGEX: 0x0000000A, EMR_SETVIEWPORTEXTEX: 0x0000000B, EMR_SETVIEWPORTORGEX: 0x0000000C, EMR_SETBRUSHORGEX: 0x0000000D, EMR_EOF: 0x0000000E, EMR_SETPIXELV: 0x0000000F, EMR_SETMAPPERFLAGS: 0x00000010, EMR_SETMAPMODE: 0x00000011, EMR_SETBKMODE: 0x00000012, EMR_SETPOLYFILLMODE: 0x00000013, EMR_SETROP2: 0x00000014, EMR_SETSTRETCHBLTMODE: 0x00000015, EMR_SETTEXTALIGN: 0x00000016, EMR_SETCOLORADJUSTMENT: 0x00000017, EMR_SETTEXTCOLOR: 0x00000018, EMR_SETBKCOLOR: 0x00000019, EMR_OFFSETCLIPRGN: 0x0000001A, EMR_MOVETOEX: 0x0000001B, EMR_SETMETARGN: 0x0000001C, EMR_EXCLUDECLIPRECT: 0x0000001D, EMR_INTERSECTCLIPRECT: 0x0000001E, EMR_SCALEVIEWPORTEXTEX: 0x0000001F, EMR_SCALEWINDOWEXTEX: 0x00000020, EMR_SAVEDC: 0x00000021, EMR_RESTOREDC: 0x00000022, EMR_SETWORLDTRANSFORM: 0x00000023, EMR_MODIFYWORLDTRANSFORM: 0x00000024, EMR_SELECTOBJECT: 0x00000025, EMR_CREATEPEN: 0x00000026, EMR_CREATEBRUSHINDIRECT: 0x00000027, EMR_DELETEOBJECT: 0x00000028, EMR_ANGLEARC: 0x00000029, EMR_ELLIPSE: 0x0000002A, EMR_RECTANGLE: 0x0000002B, EMR_ROUNDRECT: 0x0000002C, EMR_ARC: 0x0000002D, EMR_CHORD: 0x0000002E, EMR_PIE: 0x0000002F, EMR_SELECTPALETTE: 0x00000030, EMR_CREATEPALETTE: 0x00000031, EMR_SETPALETTEENTRIES: 0x00000032, EMR_RESIZEPALETTE: 0x00000033, EMR_REALIZEPALETTE: 0x00000034, EMR_EXTFLOODFILL: 0x00000035, EMR_LINETO: 0x00000036, EMR_ARCTO: 0x00000037, EMR_POLYDRAW: 0x00000038, EMR_SETARCDIRECTION: 0x00000039, EMR_SETMITERLIMIT: 0x0000003A, EMR_BEGINPATH: 0x0000003B, EMR_ENDPATH: 0x0000003C, EMR_CLOSEFIGURE: 0x0000003D, EMR_FILLPATH: 0x0000003E, EMR_STROKEANDFILLPATH: 0x0000003F, EMR_STROKEPATH: 0x00000040, EMR_FLATTENPATH: 0x00000041, EMR_WIDENPATH: 0x00000042, EMR_SELECTCLIPPATH: 0x00000043, EMR_ABORTPATH: 0x00000044, EMR_COMMENT: 0x00000046, EMR_FILLRGN: 0x00000047, EMR_FRAMERGN: 0x00000048, EMR_INVERTRGN: 0x00000049, EMR_PAINTRGN: 0x0000004A, EMR_EXTSELECTCLIPRGN: 0x0000004B, EMR_BITBLT: 0x0000004C, EMR_STRETCHBLT: 0x0000004D, EMR_MASKBLT: 0x0000004E, EMR_PLGBLT: 0x0000004F, EMR_SETDIBITSTODEVICE: 0x00000050, EMR_STRETCHDIBITS: 0x00000051, EMR_EXTCREATEFONTINDIRECTW: 0x00000052, EMR_EXTTEXTOUTA: 0x00000053, EMR_EXTTEXTOUTW: 0x00000054, EMR_POLYBEZIER16: 0x00000055, EMR_POLYGON16: 0x00000056, EMR_POLYLINE16: 0x00000057, EMR_POLYBEZIERTO16: 0x00000058, EMR_POLYLINETO16: 0x00000059, EMR_POLYPOLYLINE16: 0x0000005A, EMR_POLYPOLYGON16: 0x0000005B, EMR_POLYDRAW16: 0x0000005C, EMR_CREATEMONOBRUSH: 0x0000005D, EMR_CREATEDIBPATTERNBRUSHPT: 0x0000005E, EMR_EXTCREATEPEN: 0x0000005F, EMR_POLYTEXTOUTA: 0x00000060, EMR_POLYTEXTOUTW: 0x00000061, EMR_SETICMMODE: 0x00000062, EMR_CREATECOLORSPACE: 0x00000063, EMR_SETCOLORSPACE: 0x00000064, EMR_DELETECOLORSPACE: 0x00000065, EMR_GLSRECORD: 0x00000066, EMR_GLSBOUNDEDRECORD: 0x00000067, EMR_PIXELFORMAT: 0x00000068, EMR_DRAWESCAPE: 0x00000069, EMR_EXTESCAPE: 0x0000006A, EMR_SMALLTEXTOUT: 0x0000006C, EMR_FORCEUFIMAPPING: 0x0000006D, EMR_NAMEDESCAPE: 0x0000006E, EMR_COLORCORRECTPALETTE: 0x0000006F, EMR_SETICMPROFILEA: 0x00000070, EMR_SETICMPROFILEW: 0x00000071, EMR_ALPHABLEND: 0x00000072, EMR_SETLAYOUT: 0x00000073, EMR_TRANSPARENTBLT: 0x00000074, EMR_GRADIENTFILL: 0x00000076, EMR_SETLINKEDUFIS: 0x00000077, EMR_SETTEXTJUSTIFICATION: 0x00000078, EMR_COLORMATCHTOTARGETW: 0x00000079, EMR_CREATECOLORSPACEW: 0x0000007A }; exports.FromEMF.K = []; // (function() { // var inp, out, stt; // inp = FromEMF.C; out = FromEMF.K; stt=4; // for(var p in inp) out[inp[p]] = p.slice(stt); // } )(); exports.ToContext2D = function (needPage, scale) { this.canvas = document.createElement("canvas"); this.ctx = this.canvas.getContext("2d"); this.bb = null; this.currPage = 0; this.needPage = needPage; this.scale = scale; }; exports.ToContext2D.prototype.StartPage = function (x, y, w, h) { if (this.currPage != this.needPage) return; this.bb = [x, y, w, h]; var scl = this.scale, dpr = window.devicePixelRatio; var cnv = this.canvas, ctx = this.ctx; cnv.width = Math.round(w * scl); cnv.height = Math.round(h * scl); ctx.translate(0, h * scl); ctx.scale(scl, -scl); cnv.setAttribute("style", "border:1px solid; width:" + cnv.width / dpr + "px; height:" + cnv.height / dpr + "px"); }; exports.ToContext2D.prototype.Fill = function (gst, evenOdd) { if (this.currPage != this.needPage) return; var ctx = this.ctx; ctx.beginPath(); this._setStyle(gst, ctx); this._draw(gst.pth, ctx); ctx.fill(); }; exports.ToContext2D.prototype.Stroke = function (gst) { if (this.currPage != this.needPage) return; var ctx = this.ctx; ctx.beginPath(); this._setStyle(gst, ctx); this._draw(gst.pth, ctx); ctx.stroke(); }; exports.ToContext2D.prototype.PutText = function (gst, str, stw) { if (this.currPage != this.needPage) return; var scl = this._scale(gst.ctm); var ctx = this.ctx; this._setStyle(gst, ctx); ctx.save(); var m = [1, 0, 0, -1, 0, 0]; this._concat(m, gst.font.Tm); this._concat(m, gst.ctm); //console.log(str, m, gst); throw "e"; ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); ctx.fillText(str, 0, 0); ctx.restore(); }; exports.ToContext2D.prototype.PutImage = function (gst, buff, w, h, msk) { if (this.currPage != this.needPage) return; var ctx = this.ctx; if (buff.length == w * h * 4) { buff = buff.slice(0); if (msk && msk.length == w * h * 4) for (var i = 0; i < buff.length; i += 4) buff[i + 3] = msk[i + 1]; var cnv = document.createElement("canvas"), cctx = cnv.getContext("2d"); cnv.width = w; cnv.height = h; var imgd = cctx.createImageData(w, h); for (var i = 0; i < buff.length; i++) imgd.data[i] = buff[i]; cctx.putImageData(imgd, 0, 0); ctx.save(); var m = [1, 0, 0, 1, 0, 0]; this._concat(m, [1 / w, 0, 0, -1 / h, 0, 1]); this._concat(m, gst.ctm); ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]); ctx.drawImage(cnv, 0, 0); ctx.restore(); } }; exports.ToContext2D.prototype.ShowPage = function () { this.currPage++; }; exports.ToContext2D.prototype.Done = function () {}; function _flt(n) { return "" + parseFloat(n.toFixed(2)); } exports.ToContext2D.prototype._setStyle = function (gst, ctx) { var scl = this._scale(gst.ctm); ctx.fillStyle = this._getFill(gst.colr, gst.ca, ctx); ctx.strokeStyle = this._getFill(gst.COLR, gst.CA, ctx); ctx.lineCap = ["butt", "round", "square"][gst.lcap]; ctx.lineJoin = ["miter", "round", "bevel"][gst.ljoin]; ctx.lineWidth = gst.lwidth * scl; var dsh = gst.dash.slice(0); for (var i = 0; i < dsh.length; i++) dsh[i] = _flt(dsh[i] * scl); ctx.setLineDash(dsh); ctx.miterLimit = gst.mlimit * scl; var fn = gst.font.Tf, ln = fn.toLowerCase(); var p0 = ln.indexOf("bold") != -1 ? "bold " : ""; var p1 = ln.indexOf("italic") != -1 || ln.indexOf("oblique") != -1 ? "italic " : ""; ctx.font = p0 + p1 + gst.font.Tfs + "px \"" + fn + "\""; }; exports.ToContext2D.prototype._getFill = function (colr, ca, ctx) { if (colr.typ == null) return this._colr(colr, ca);else { var grd = colr, crd = grd.crds, mat = grd.mat, scl = this._scale(mat), gf; if (grd.typ == "lin") { var p0 = this._multPoint(mat, crd.slice(0, 2)), p1 = this._multPoint(mat, crd.slice(2)); gf = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); } else if (grd.typ == "rad") { var p0 = this._multPoint(mat, crd.slice(0, 2)), p1 = this._multPoint(mat, crd.slice(3)); gf = ctx.createRadialGradient(p0[0], p0[1], crd[2] * scl, p1[0], p1[1], crd[5] * scl); } for (var i = 0; i < grd.grad.length; i++) gf.addColorStop(grd.grad[i][0], this._colr(grd.grad[i][1], ca)); return gf; } }; exports.ToContext2D.prototype._colr = function (c, a) { return "rgba(" + Math.round(c[0] * 255) + "," + Math.round(c[1] * 255) + "," + Math.round(c[2] * 255) + "," + a + ")"; }; exports.ToContext2D.prototype._scale = function (m) { return Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2])); }; exports.ToContext2D.prototype._concat = function (m, w) { var a = m[0], b = m[1], c = m[2], d = m[3], tx = m[4], ty = m[5]; m[0] = a * w[0] + b * w[2]; m[1] = a * w[1] + b * w[3]; m[2] = c * w[0] + d * w[2]; m[3] = c * w[1] + d * w[3]; m[4] = tx * w[0] + ty * w[2] + w[4]; m[5] = tx * w[1] + ty * w[3] + w[5]; }; exports.ToContext2D.prototype._multPoint = function (m, p) { var x = p[0], y = p[1]; return [x * m[0] + y * m[2] + m[4], x * m[1] + y * m[3] + m[5]]; }, exports.ToContext2D.prototype._draw = function (path, ctx) { var c = 0, crds = path.crds; for (var j = 0; j < path.cmds.length; j++) { var cmd = path.cmds[j]; if (cmd == "M") { ctx.moveTo(crds[c], crds[c + 1]); c += 2; } else if (cmd == "L") { ctx.lineTo(crds[c], crds[c + 1]); c += 2; } else if (cmd == "C") { ctx.bezierCurveTo(crds[c], crds[c + 1], crds[c + 2], crds[c + 3], crds[c + 4], crds[c + 5]); c += 6; } else if (cmd == "Q") { ctx.quadraticCurveTo(crds[c], crds[c + 1], crds[c + 2], crds[c + 3]); c += 4; } else if (cmd == "Z") { ctx.closePath(); } } }; },{}],18:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMultiFormulaValue = exports.getPeelOffX14 = exports.getTransR1C1ToSequence = exports.getSingleSequenceToNum = exports.getSqrefRawArrFormat = exports.getRegionSequence = exports.getMultiSequenceToNum = exports.getBinaryContent = exports.isContainMultiType = exports.isKoera = exports.isJapanese = exports.isChinese = exports.fromulaRef = exports.escapeCharacter = exports.generateRandomIndex = exports.LightenDarkenColor = exports.getRowHeightPixel = exports.getColumnWidthPixel = exports.getXmlAttibute = exports.getPxByEMUs = exports.getptToPxRatioByDPI = exports.getcellrange = exports.getRangetxt = void 0; var constant_1 = require("./constant"); function getRangetxt(range, sheettxt) { var row0 = range["row"][0], row1 = range["row"][1]; var column0 = range["column"][0], column1 = range["column"][1]; if (row0 == null && row1 == null) { return sheettxt + chatatABC(column0) + ":" + chatatABC(column1); } else if (column0 == null && column1 == null) { return sheettxt + (row0 + 1) + ":" + (row1 + 1); } else { if (column0 == column1 && row0 == row1) { return sheettxt + chatatABC(column0) + (row0 + 1); } else { return sheettxt + chatatABC(column0) + (row0 + 1) + ":" + chatatABC(column1) + (row1 + 1); } } } exports.getRangetxt = getRangetxt; function getcellrange(txt, sheets, sheetId) { if (sheets === void 0) { sheets = {}; } if (sheetId === void 0) { sheetId = "1"; } var val = txt.split("!"); var sheettxt = "", rangetxt = "", sheetIndex = -1; if (val.length > 1) { sheettxt = val[0]; rangetxt = val[1]; var si = sheets[sheettxt]; if (si == null) { sheetIndex = parseInt(sheetId); } else { sheetIndex = parseInt(si); } } else { sheetIndex = parseInt(sheetId); rangetxt = val[0]; } if (rangetxt.indexOf(":") == -1) { var row = parseInt(rangetxt.replace(/[^0-9]/g, "")) - 1; var col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, "")); if (!isNaN(row) && !isNaN(col)) { return { "row": [row, row], "column": [col, col], "sheetIndex": sheetIndex }; } else { return null; } } else { var rangetxtArray = rangetxt.split(":"); var row = [], col = []; row[0] = parseInt(rangetxtArray[0].replace(/[^0-9]/g, "")) - 1; row[1] = parseInt(rangetxtArray[1].replace(/[^0-9]/g, "")) - 1; // if (isNaN(row[0])) { // row[0] = 0; // } // if (isNaN(row[1])) { // row[1] = sheetdata.length - 1; // } if (row[0] > row[1]) { return null; } col[0] = ABCatNum(rangetxtArray[0].replace(/[^A-Za-z]/g, "")); col[1] = ABCatNum(rangetxtArray[1].replace(/[^A-Za-z]/g, "")); // if (isNaN(col[0])) { // col[0] = 0; // } // if (isNaN(col[1])) { // col[1] = sheetdata[0].length - 1; // } if (col[0] > col[1]) { return null; } return { "row": row, "column": col, "sheetIndex": sheetIndex }; } } exports.getcellrange = getcellrange; //列下标 字母转数字 function ABCatNum(abc) { abc = abc.toUpperCase(); var abc_len = abc.length; if (abc_len == 0) { return NaN; } var abc_array = abc.split(""); var wordlen = constant_1.columeHeader_word.length; var ret = 0; for (var i = abc_len - 1; i >= 0; i--) { if (i == abc_len - 1) { ret += constant_1.columeHeader_word_index[abc_array[i]]; } else { ret += Math.pow(wordlen, abc_len - i - 1) * (constant_1.columeHeader_word_index[abc_array[i]] + 1); } } return ret; } //列下标 数字转字母 function chatatABC(index) { var wordlen = constant_1.columeHeader_word.length; if (index < wordlen) { return constant_1.columeHeader_word[index]; } else { var last = 0, pre = 0, ret = ""; var i = 1, n = 0; while (index >= wordlen / (wordlen - 1) * (Math.pow(wordlen, i++) - 1)) { n = i; } var index_ab = index - wordlen / (wordlen - 1) * (Math.pow(wordlen, n - 1) - 1); //970 last = index_ab + 1; for (var x = n; x > 0; x--) { var last1 = last, x1 = x; //-702=268, 3 if (x == 1) { last1 = last1 % wordlen; if (last1 == 0) { last1 = 26; } return ret + constant_1.columeHeader_word[last1 - 1]; } last1 = Math.ceil(last1 / Math.pow(wordlen, x - 1)); //last1 = last1 % wordlen; ret += constant_1.columeHeader_word[last1 - 1]; if (x > 1) { last = last - (last1 - 1) * wordlen; } } } } /** * @return ratio, default 0.75 1in = 2.54cm = 25.4mm = 72pt = 6pc, pt = 1/72 In, px = 1/dpi In */ function getptToPxRatioByDPI() { return 72 / 96; } exports.getptToPxRatioByDPI = getptToPxRatioByDPI; /** * @emus EMUs, Excel drawing unit * @return pixel */ function getPxByEMUs(emus) { if (emus == null) { return 0; } var inch = emus / 914400; var pt = inch * 72; var px = pt / getptToPxRatioByDPI(); return px; } exports.getPxByEMUs = getPxByEMUs; /** * @dom xml attribute object * @attr attribute name * @d if attribute is null, return default value * @return attribute value */ function getXmlAttibute(dom, attr, d) { var value = dom[attr]; value = value == null ? d : value; return value; } exports.getXmlAttibute = getXmlAttibute; /** * @columnWidth Excel column width * @return pixel column width */ function getColumnWidthPixel(columnWidth) { var pix = Math.round((columnWidth - 0.83) * 8 + 5); return pix; } exports.getColumnWidthPixel = getColumnWidthPixel; /** * @rowHeight Excel row height * @return pixel row height */ function getRowHeightPixel(rowHeight) { var pix = Math.round(rowHeight / getptToPxRatioByDPI()); return pix; } exports.getRowHeightPixel = getRowHeightPixel; function LightenDarkenColor(sixColor, tint) { var hex = sixColor.substring(sixColor.length - 6, sixColor.length); var rgbArray = hexToRgbArray("#" + hex); var hslArray = rgbToHsl(rgbArray[0], rgbArray[1], rgbArray[2]); if (tint > 0) { hslArray[2] = hslArray[2] * (1.0 - tint) + tint; } else if (tint < 0) { hslArray[2] = hslArray[2] * (1.0 + tint); } else { return "#" + hex; } var newRgbArray = hslToRgb(hslArray[0], hslArray[1], hslArray[2]); return rgbToHex("RGB(" + newRgbArray.join(",") + ")"); } exports.LightenDarkenColor = LightenDarkenColor; function rgbToHex(rgb) { //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; // 如果是rgb颜色表示 if (/^(rgb|RGB)/.test(rgb)) { var aColor = rgb.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(","); var strHex = "#"; for (var i = 0; i < aColor.length; i++) { var hex = Number(aColor[i]).toString(16); if (hex.length < 2) { hex = '0' + hex; } strHex += hex; } if (strHex.length !== 7) { strHex = rgb; } return strHex; } else if (reg.test(rgb)) { var aNum = rgb.replace(/#/, "").split(""); if (aNum.length === 6) { return rgb; } else if (aNum.length === 3) { var numHex = "#"; for (var i = 0; i < aNum.length; i += 1) { numHex += aNum[i] + aNum[i]; } return numHex; } } return rgb; } function hexToRgb(hex) { var sColor = hex.toLowerCase(); //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; // 如果是16进制颜色 if (sColor && reg.test(sColor)) { if (sColor.length === 4) { var sColorNew = "#"; for (var i = 1; i < 4; i += 1) { sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); } sColor = sColorNew; } //处理六位的颜色值 var sColorChange = []; for (var i = 1; i < 7; i += 2) { sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2))); } return "RGB(" + sColorChange.join(",") + ")"; } return sColor; } function hexToRgbArray(hex) { var sColor = hex.toLowerCase(); //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; // 如果是16进制颜色 if (sColor && reg.test(sColor)) { if (sColor.length === 4) { var sColorNew = "#"; for (var i = 1; i < 4; i += 1) { sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); } sColor = sColorNew; } //处理六位的颜色值 var sColorChange = []; for (var i = 1; i < 7; i += 2) { sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2))); } return sColorChange; } return null; } /** * HSL颜色值转换为RGB. * 换算公式改编自 http://en.wikipedia.org/wiki/HSL_color_space. * h, s, 和 l 设定在 [0, 1] 之间 * 返回的 r, g, 和 b 在 [0, 255]之间 * * @param Number h 色相 * @param Number s 饱和度 * @param Number l 亮度 * @return Array RGB色值数值 */ function hslToRgb(h, s, l) { var r, g, b; if (s == 0) { r = g = b = l; // achromatic } else { var hue2rgb = function hue2rgb(p, q, t) { if (t < 0) t += 1; if (t > 1) t -= 1; if (t < 1 / 6) return p + (q - p) * 6 * t; if (t < 1 / 2) return q; if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; return p; }; var q = l < 0.5 ? l * (1 + s) : l + s - l * s; var p = 2 * l - q; r = hue2rgb(p, q, h + 1 / 3); g = hue2rgb(p, q, h); b = hue2rgb(p, q, h - 1 / 3); } return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; } /** * RGB 颜色值转换为 HSL. * 转换公式参考自 http://en.wikipedia.org/wiki/HSL_color_space. * r, g, 和 b 需要在 [0, 255] 范围内 * 返回的 h, s, 和 l 在 [0, 1] 之间 * * @param Number r 红色色值 * @param Number g 绿色色值 * @param Number b 蓝色色值 * @return Array HSL各值数组 */ function rgbToHsl(r, g, b) { r /= 255, g /= 255, b /= 255; var max = Math.max(r, g, b), min = Math.min(r, g, b); var h, s, l = (max + min) / 2; if (max == min) { h = s = 0; // achromatic } else { var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return [h, s, l]; } function generateRandomIndex(prefix) { if (prefix == null) { prefix = "Sheet"; } var userAgent = window.navigator.userAgent.replace(/[^a-zA-Z0-9]/g, "").split(""); var mid = ""; for (var i = 0; i < 5; i++) { mid += userAgent[Math.round(Math.random() * (userAgent.length - 1))]; } var time = new Date().getTime(); return prefix + "_" + mid + "_" + time; } exports.generateRandomIndex = generateRandomIndex; function escapeCharacter(str) { if (str == null || str.length == 0) { return str; } return str.replace(/&/g, "&").replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>').replace(/ /g, ' ').replace(/'/g, "'").replace(/¡/g, "¡").replace(/¢/g, "¢").replace(/£/g, "£").replace(/¤/g, "¤").replace(/¥/g, "¥").replace(/¦/g, "¦").replace(/§/g, "§").replace(/¨/g, "¨").replace(/©/g, "©").replace(/ª/g, "ª").replace(/«/g, "«").replace(/¬/g, "¬").replace(/­/g, "­").replace(/®/g, "®").replace(/¯/g, "¯").replace(/°/g, "°").replace(/±/g, "±").replace(/²/g, "²").replace(/³/g, "³").replace(/´/g, "´").replace(/µ/g, "µ").replace(/¶/g, "¶").replace(/·/g, "·").replace(/¸/g, "¸").replace(/¹/g, "¹").replace(/º/g, "º").replace(/»/g, "»").replace(/¼/g, "¼").replace(/½/g, "½").replace(/¾/g, "¾").replace(/¿/g, "¿").replace(/×/g, "×").replace(/÷/g, "÷").replace(/À/g, "À").replace(/Á/g, "Á").replace(/Â/g, "Â").replace(/Ã/g, "Ã").replace(/Ä/g, "Ä").replace(/Å/g, "Å").replace(/Æ/g, "Æ").replace(/Ç/g, "Ç").replace(/È/g, "È").replace(/É/g, "É").replace(/Ê/g, "Ê").replace(/Ë/g, "Ë").replace(/Ì/g, "Ì").replace(/Í/g, "Í").replace(/Î/g, "Î").replace(/Ï/g, "Ï").replace(/Ð/g, "Ð").replace(/Ñ/g, "Ñ").replace(/Ò/g, "Ò").replace(/Ó/g, "Ó").replace(/Ô/g, "Ô").replace(/Õ/g, "Õ").replace(/Ö/g, "Ö").replace(/Ø/g, "Ø").replace(/Ù/g, "Ù").replace(/Ú/g, "Ú").replace(/Û/g, "Û").replace(/Ü/g, "Ü").replace(/Ý/g, "Ý").replace(/Þ/g, "Þ").replace(/ß/g, "ß").replace(/à/g, "à").replace(/á/g, "á").replace(/â/g, "â").replace(/ã/g, "ã").replace(/ä/g, "ä").replace(/å/g, "å").replace(/æ/g, "æ").replace(/ç/g, "ç").replace(/è/g, "è").replace(/é/g, "é").replace(/ê/g, "ê").replace(/ë/g, "ë").replace(/ì/g, "ì").replace(/í/g, "í").replace(/î/g, "î").replace(/ï/g, "ï").replace(/ð/g, "ð").replace(/ñ/g, "ñ").replace(/ò/g, "ò").replace(/ó/g, "ó").replace(/ô/g, "ô").replace(/õ/g, "õ").replace(/ö/g, "ö").replace(/ø/g, "ø").replace(/ù/g, "ù").replace(/ú/g, "ú").replace(/û/g, "û").replace(/ü/g, "ü").replace(/ý/g, "ý").replace(/þ/g, "þ").replace(/ÿ/g, "ÿ"); } exports.escapeCharacter = escapeCharacter; var fromulaRef = /** @class */function () { function fromulaRef() {} fromulaRef.trim = function (str) { if (str == null) { str = ""; } return str.replace(/(^\s*)|(\s*$)/g, ""); }; fromulaRef.functionCopy = function (txt, mode, step) { var _this = this; if (_this.operatorjson == null) { var arr = _this.operator.split("|"), op = {}; for (var i_1 = 0; i_1 < arr.length; i_1++) { op[arr[i_1].toString()] = 1; } _this.operatorjson = op; } if (mode == null) { mode = "down"; } if (step == null) { step = 1; } if (txt.substr(0, 1) == "=") { txt = txt.substr(1); } var funcstack = txt.split(""); var i = 0, str = "", function_str = "", ispassby = true; var matchConfig = { "bracket": 0, "comma": 0, "squote": 0, "dquote": 0 }; while (i < funcstack.length) { var s = funcstack[i]; if (s == "(" && matchConfig.dquote == 0) { matchConfig.bracket += 1; if (str.length > 0) { function_str += str + "("; } else { function_str += "("; } str = ""; } else if (s == ")" && matchConfig.dquote == 0) { matchConfig.bracket -= 1; function_str += _this.functionCopy(str, mode, step) + ")"; str = ""; } else if (s == '"' && matchConfig.squote == 0) { if (matchConfig.dquote > 0) { function_str += str + '"'; matchConfig.dquote -= 1; str = ""; } else { matchConfig.dquote += 1; str += '"'; } } else if (s == ',' && matchConfig.dquote == 0) { function_str += _this.functionCopy(str, mode, step) + ','; str = ""; } else if (s == '&' && matchConfig.dquote == 0) { if (str.length > 0) { function_str += _this.functionCopy(str, mode, step) + "&"; str = ""; } else { function_str += "&"; } } else if (s in _this.operatorjson && matchConfig.dquote == 0) { var s_next = ""; if (i + 1 < funcstack.length) { s_next = funcstack[i + 1]; } var p = i - 1, s_pre = null; if (p >= 0) { do { s_pre = funcstack[p--]; } while (p >= 0 && s_pre == " "); } if (s + s_next in _this.operatorjson) { if (str.length > 0) { function_str += _this.functionCopy(str, mode, step) + s + s_next; str = ""; } else { function_str += s + s_next; } i++; } else if (!/[^0-9]/.test(s_next) && s == "-" && (s_pre == "(" || s_pre == null || s_pre == "," || s_pre == " " || s_pre in _this.operatorjson)) { str += s; } else { if (str.length > 0) { function_str += _this.functionCopy(str, mode, step) + s; str = ""; } else { function_str += s; } } } else { str += s; } if (i == funcstack.length - 1) { if (_this.iscelldata(_this.trim(str))) { if (mode == "down") { function_str += _this.downparam(_this.trim(str), step); } else if (mode == "up") { function_str += _this.upparam(_this.trim(str), step); } else if (mode == "left") { function_str += _this.leftparam(_this.trim(str), step); } else if (mode == "right") { function_str += _this.rightparam(_this.trim(str), step); } } else { function_str += _this.trim(str); } } i++; } return function_str; }; fromulaRef.downparam = function (txt, step) { return this.updateparam("d", txt, step); }; fromulaRef.upparam = function (txt, step) { return this.updateparam("u", txt, step); }; fromulaRef.leftparam = function (txt, step) { return this.updateparam("l", txt, step); }; fromulaRef.rightparam = function (txt, step) { return this.updateparam("r", txt, step); }; fromulaRef.updateparam = function (orient, txt, step) { var _this = this; var val = txt.split("!"), rangetxt, prefix = ""; if (val.length > 1) { rangetxt = val[1]; prefix = val[0] + "!"; } else { rangetxt = val[0]; } if (rangetxt.indexOf(":") == -1) { var row = parseInt(rangetxt.replace(/[^0-9]/g, "")); var col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, "")); var freezonFuc = _this.isfreezonFuc(rangetxt); var $row = freezonFuc[0] ? "$" : "", $col = freezonFuc[1] ? "$" : ""; if (orient == "u" && !freezonFuc[0]) { row -= step; } else if (orient == "r" && !freezonFuc[1]) { col += step; } else if (orient == "l" && !freezonFuc[1]) { col -= step; } else if (!freezonFuc[0]) { row += step; } if (row < 0 || col < 0) { return _this.error.r; } if (!isNaN(row) && !isNaN(col)) { return prefix + $col + chatatABC(col) + $row + row; } else if (!isNaN(row)) { return prefix + $row + row; } else if (!isNaN(col)) { return prefix + $col + chatatABC(col); } else { return txt; } } else { rangetxt = rangetxt.split(":"); var row = [], col = []; row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, "")); row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, "")); if (row[0] > row[1]) { return txt; } col[0] = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, "")); col[1] = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, "")); if (col[0] > col[1]) { return txt; } var freezonFuc0 = _this.isfreezonFuc(rangetxt[0]); var freezonFuc1 = _this.isfreezonFuc(rangetxt[1]); var $row0 = freezonFuc0[0] ? "$" : "", $col0 = freezonFuc0[1] ? "$" : ""; var $row1 = freezonFuc1[0] ? "$" : "", $col1 = freezonFuc1[1] ? "$" : ""; if (orient == "u") { if (!freezonFuc0[0]) { row[0] -= step; } if (!freezonFuc1[0]) { row[1] -= step; } } else if (orient == "r") { if (!freezonFuc0[1]) { col[0] += step; } if (!freezonFuc1[1]) { col[1] += step; } } else if (orient == "l") { if (!freezonFuc0[1]) { col[0] -= step; } if (!freezonFuc1[1]) { col[1] -= step; } } else { if (!freezonFuc0[0]) { row[0] += step; } if (!freezonFuc1[0]) { row[1] += step; } } if (row[0] < 0 || col[0] < 0) { return _this.error.r; } if (isNaN(col[0]) && isNaN(col[1])) { return prefix + $row0 + row[0] + ":" + $row1 + row[1]; } else if (isNaN(row[0]) && isNaN(row[1])) { return prefix + $col0 + chatatABC(col[0]) + ":" + $col1 + chatatABC(col[1]); } else { return prefix + $col0 + chatatABC(col[0]) + $row0 + row[0] + ":" + $col1 + chatatABC(col[1]) + $row1 + row[1]; } } }; fromulaRef.iscelldata = function (txt) { var val = txt.split("!"), rangetxt; if (val.length > 1) { rangetxt = val[1]; } else { rangetxt = val[0]; } var reg_cell = /^(([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+))$/g; //增加正则判断单元格为字母+数字的格式:如 A1:B3 var reg_cellRange = /^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+))))$/g; //增加正则判断单元格为字母+数字或字母的格式:如 A1:B3,A:A if (rangetxt.indexOf(":") == -1) { var row = parseInt(rangetxt.replace(/[^0-9]/g, "")) - 1; var col = ABCatNum(rangetxt.replace(/[^A-Za-z]/g, "")); if (!isNaN(row) && !isNaN(col) && rangetxt.toString().match(reg_cell)) { return true; } else if (!isNaN(row)) { return false; } else if (!isNaN(col)) { return false; } else { return false; } } else { reg_cellRange = /^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+)))|((([0-9]+)|([$][0-9]+s))))$/g; rangetxt = rangetxt.split(":"); var row = [], col = []; row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, "")) - 1; row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, "")) - 1; if (row[0] > row[1]) { return false; } col[0] = ABCatNum(rangetxt[0].replace(/[^A-Za-z]/g, "")); col[1] = ABCatNum(rangetxt[1].replace(/[^A-Za-z]/g, "")); if (col[0] > col[1]) { return false; } if (rangetxt[0].toString().match(reg_cellRange) && rangetxt[1].toString().match(reg_cellRange)) { return true; } else { return false; } } }; fromulaRef.isfreezonFuc = function (txt) { var row = txt.replace(/[^0-9]/g, ""); var col = txt.replace(/[^A-Za-z]/g, ""); var row$ = txt.substr(txt.indexOf(row) - 1, 1); var col$ = txt.substr(txt.indexOf(col) - 1, 1); var ret = [false, false]; if (row$ == "$") { ret[0] = true; } if (col$ == "$") { ret[1] = true; } return ret; }; fromulaRef.operator = '==|!=|<>|<=|>=|=|+|-|>|<|/|*|%|&|^'; fromulaRef.error = { v: "#VALUE!", n: "#NAME?", na: "#N/A", r: "#REF!", d: "#DIV/0!", nm: "#NUM!", nl: "#NULL!", sp: "#SPILL!" //数组范围有其它值 }; fromulaRef.operatorjson = null; return fromulaRef; }(); exports.fromulaRef = fromulaRef; function isChinese(temp) { var re = /[^\u4e00-\u9fa5]/; var reg = /[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/; if (reg.test(temp)) return true; if (re.test(temp)) return false; return true; } exports.isChinese = isChinese; function isJapanese(temp) { var re = /[^\u0800-\u4e00]/; if (re.test(temp)) return false; return true; } exports.isJapanese = isJapanese; function isKoera(chr) { if (chr > 0x3130 && chr < 0x318F || chr >= 0xAC00 && chr <= 0xD7A3) { return true; } return false; } exports.isKoera = isKoera; function isContainMultiType(str) { var isUnicode = false; if (escape(str).indexOf("%u") > -1) { isUnicode = true; } var isNot = false; var reg = /[0-9a-z]/gi; if (reg.test(str)) { isNot = true; } var reEnSign = /[\x00-\xff]+/g; if (reEnSign.test(str)) { isNot = true; } if (isUnicode && isNot) { return true; } return false; } exports.isContainMultiType = isContainMultiType; function getBinaryContent(path, options) { var promise, resolve, reject; var callback; if (!options) { options = {}; } // taken from jQuery var createStandardXHR = function createStandardXHR() { try { return new window.XMLHttpRequest(); } catch (e) {} }; var createActiveXHR = function createActiveXHR() { try { return new window.ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} }; // Create the request object var createXHR = typeof window !== "undefined" && window.ActiveXObject ? /* Microsoft failed to properly * implement the XMLHttpRequest in IE7 (can't request local files), * so we use the ActiveXObject when it is available * Additionally XMLHttpRequest can be disabled in IE7/IE8 so * we need a fallback. */ function () { return createStandardXHR() || createActiveXHR(); } : // For all other browsers, use the standard XMLHttpRequest object createStandardXHR; // backward compatible callback if (typeof options === "function") { callback = options; options = {}; } else if (typeof options.callback === 'function') { // callback inside options object callback = options.callback; } resolve = function resolve(data) { callback(null, data); }; reject = function reject(err) { callback(err, null); }; try { var xhr = createXHR(); xhr.open('GET', path, true); // recent browsers if ("responseType" in xhr) { xhr.responseType = "arraybuffer"; } // older browser if (xhr.overrideMimeType) { xhr.overrideMimeType("text/plain; charset=x-user-defined"); } xhr.onreadystatechange = function (event) { // use `xhr` and not `this`... thanks IE if (xhr.readyState === 4) { if (xhr.status === 200 || xhr.status === 0) { try { resolve(function (xhr) { // for xhr.responseText, the 0xFF mask is applied by JSZip return xhr.response || xhr.responseText; }(xhr)); } catch (err) { reject(new Error(err)); } } else { reject(new Error("Ajax error for " + path + " : " + this.status + " " + this.statusText)); } } }; if (options.progress) { xhr.onprogress = function (e) { options.progress({ path: path, originalEvent: e, percent: e.loaded / e.total * 100, loaded: e.loaded, total: e.total }); }; } xhr.send(); } catch (e) { reject(new Error(e), null); } // returns a promise or undefined depending on whether a callback was // provided return promise; } exports.getBinaryContent = getBinaryContent; /** * multi sequence conversion * example: * 1、E14 -> 13_4 * 2、E14 J14 O14 T14 Y14 AD14 AI14 AN14 AS14 AX14 -> * ['13_4', '13_9','13_14', '13_19', '13_24', '13_3', '13_8', '13_13', '13_18', '13_23'] * 3、E46:E47 -> ['45_4', '46_4'] * * @param {string} sqref - before sequence * @returns {string[]} */ function getMultiSequenceToNum(sqref, count) { if (!sqref || (sqref === null || sqref === void 0 ? void 0 : sqref.length) <= 0) return []; sqref = sqref.toUpperCase(); var sqrefRawArr = sqref.split(" "); var sqrefArr = sqrefRawArr.filter(function (e) { return e && e.trim(); }); var sqrefLastArr = getSqrefRawArrFormat(sqrefArr, count); var resArr = []; for (var i = 0; i < sqrefLastArr.length; i++) { var _res = getSingleSequenceToNum(sqrefLastArr[i]); if (_res) resArr.push(_res); } return resArr; } exports.getMultiSequenceToNum = getMultiSequenceToNum; /** * get region sequence * example: * 1、[A1:C2'] -> ['A1', 'A2', 'B1', 'B2', 'C1', 'C2'] * * @param {string[]} arr - formats arr * @returns {string[]} - after arr */ function getRegionSequence(arr, count) { var _a, _b; var formatArr = []; var regEn = new RegExp(/[A-Z]+|[0-9]+/g); var startArr = (_a = arr[0]) === null || _a === void 0 ? void 0 : _a.match(regEn); var lastArr = (_b = arr[1]) === null || _b === void 0 ? void 0 : _b.match(regEn); var columnMax = Math.max.apply(Math, [ABCatNum(startArr[0]), ABCatNum(lastArr[0])]); var columnMin = Math.min.apply(Math, [ABCatNum(startArr[0]), ABCatNum(lastArr[0])]); var rowMax = Math.max.apply(Math, [parseInt(startArr[1]), parseInt(lastArr[1])]); var rowMin = Math.min.apply(Math, [parseInt(startArr[1]), parseInt(lastArr[1])]); // 处理最大设置行和列 var countNum = count || 10000; var coMax = Math.min(columnMin + countNum, columnMax); var roMax = Math.min(rowMin + countNum, rowMax); for (var i = columnMin; i <= coMax; i++) { for (var j = rowMin; j <= roMax; j++) { formatArr.push("" + chatatABC(i) + j); } } return formatArr; } exports.getRegionSequence = getRegionSequence; /** * unified processing of conversion formats * example: * 1、['E38', 'A1:C2'] -> ['E38', 'A1', 'A2', 'B1', 'B2', 'C1', 'C2'] * * @param {string[]} arr - formats arr * @returns {string[]} - after arr */ function getSqrefRawArrFormat(arr, count) { arr === null || arr === void 0 ? void 0 : arr.map(function (el) { if (el.includes(":")) { var tempArr = el.split(":"); if ((tempArr === null || tempArr === void 0 ? void 0 : tempArr.length) === 2) { arr = arr.concat(getRegionSequence(tempArr, count)); arr.splice(arr.indexOf(el), 1); } } }); var resultArr = arr.filter(function (value, index, array) { return array.indexOf(value) === index; }); return resultArr; } exports.getSqrefRawArrFormat = getSqrefRawArrFormat; /** * single sequence to number * example: * 1、A1 -> 0_0 * 2、ES14 -> 13_4 * * @param {string} sqref - before sequence * @returns {string} - after sequence */ function getSingleSequenceToNum(sqref) { var sqrefArray = sqref.match(/[A-Z]+|[0-9]+/g); var sqrefLen = sqrefArray.length; var regEn = new RegExp("^[A-Z]+$"); var ret = ""; for (var i = sqrefLen - 1; i >= 0; i--) { var cur = sqrefArray[i]; if (regEn.test(cur)) { ret += ABCatNum(cur) + "_"; } else { ret += parseInt(cur) - 1 + "_"; } } return ret.substring(0, ret.length - 1); } exports.getSingleSequenceToNum = getSingleSequenceToNum; /** * R1C1 to Sequence * example: sheet2!R1C1 => sheet!A1 * * @param {string} value - R1C1 value * @returns */ function getTransR1C1ToSequence(value) { if (!value && (value === null || value === void 0 ? void 0 : value.length) <= 0) return ""; var len = value.length; var index = value.lastIndexOf("!"); var valueArr = [value.slice(0, index), value.slice(index + 1, len)]; var repStr = valueArr[1] || ""; var indexR = repStr.indexOf("R"); var indexC = repStr.indexOf("C"); var row = Number(repStr.slice(indexR + 1, indexC)); var column = chatatABC(Number(repStr.slice(indexC + 1, repStr === null || repStr === void 0 ? void 0 : repStr.length)) - 1); return valueArr[0] + "!" + column + row; } exports.getTransR1C1ToSequence = getTransR1C1ToSequence; /** * strip x14 format data * * @param {string} value * @returns {Object} - { formula, sqref } */ function getPeelOffX14(value) { var _a; if (!value || (value === null || value === void 0 ? void 0 : value.length) <= 0) return {}; // formula var formulaReg = new RegExp("", "g"); var lastIndex = (_a = value.match(formulaReg)) === null || _a === void 0 ? void 0 : _a.length; var lastValue = ""; var lastValueEnd = value.indexOf(lastValue); var formulaValue = value.substring(0, lastValueEnd + lastValue.length); formulaValue = formulaValue.replace(//g, "").replace(/<\/xm:f>/g, "").replace(/x14:/g, "").replace(/\/x14:/g, ""); var formula = formulaValue; // sqref var xmSqrefLen = "".length; var sqrefStart = value.indexOf(""); var sqrefEnd = value.indexOf(""); var sqref = value.substring(sqrefStart + xmSqrefLen, sqrefEnd); return { formula: formula, sqref: sqref }; } exports.getPeelOffX14 = getPeelOffX14; /** * get the value in the formula * * @param {string} value - extracted value * @returns {string[]} */ function getMultiFormulaValue(value) { var _a, _b; if (!value || (value === null || value === void 0 ? void 0 : value.length) <= 0) return []; var lenReg = new RegExp("formula", "g"); var len = (((_a = value.match(lenReg)) === null || _a === void 0 ? void 0 : _a.length) || 0) / 2; if (len === 0) return []; var retArr = []; for (var i = 1; i <= len; i++) { var startLen = (_b = "") === null || _b === void 0 ? void 0 : _b.length; var start = value.indexOf(""); var end = value.indexOf(""); var _value = value.substring(start + startLen, end); retArr.push(escapeCharacter(_value.replace(/"|^\"|\"$/g, ""))); } return retArr; } exports.getMultiFormulaValue = getMultiFormulaValue; },{"./constant":16}],19:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LuckyExcel = void 0; var LuckyFile_1 = require("./ToLuckySheet/LuckyFile"); // import {SecurityDoor,Car} from './content'; var HandleZip_1 = require("./HandleZip"); // //demo // function demoHandler(){ // let upload = document.getElementById("Luckyexcel-demo-file"); // let selectADemo = document.getElementById("Luckyexcel-select-demo"); // let downlodDemo = document.getElementById("Luckyexcel-downlod-file"); // let mask = document.getElementById("lucky-mask-demo"); // if(upload){ // window.onload = () => { // upload.addEventListener("change", function(evt){ // var files:FileList = (evt.target as any).files; // if(files==null || files.length==0){ // alert("No files wait for import"); // return; // } // let name = files[0].name; // let suffixArr = name.split("."), suffix = suffixArr[suffixArr.length-1]; // if(suffix!="xlsx"){ // alert("Currently only supports the import of xlsx files"); // return; // } // LuckyExcel.transformExcelToLucky(files[0], function(exportJson:any, luckysheetfile:string){ // if(exportJson.sheets==null || exportJson.sheets.length==0){ // alert("Failed to read the content of the excel file, currently does not support xls files!"); // return; // } // console.log(exportJson, luckysheetfile); // window.luckysheet.destroy(); // window.luckysheet.create({ // container: 'luckysheet', //luckysheet is the container id // showinfobar:false, // data:exportJson.sheets, // title:exportJson.info.name, // userInfo:exportJson.info.name.creator // }); // }); // }); // selectADemo.addEventListener("change", function(evt){ // var obj:any = selectADemo; // var index = obj.selectedIndex; // var value = obj.options[index].value; // var name = obj.options[index].innerHTML; // if(value==""){ // return; // } // mask.style.display = "flex"; // LuckyExcel.transformExcelToLuckyByUrl(value, name, function(exportJson:any, luckysheetfile:string){ // if(exportJson.sheets==null || exportJson.sheets.length==0){ // alert("Failed to read the content of the excel file, currently does not support xls files!"); // return; // } // console.log(exportJson, luckysheetfile); // mask.style.display = "none"; // window.luckysheet.destroy(); // window.luckysheet.create({ // container: 'luckysheet', //luckysheet is the container id // showinfobar:false, // data:exportJson.sheets, // title:exportJson.info.name, // userInfo:exportJson.info.name.creator // }); // }); // }); // downlodDemo.addEventListener("click", function(evt){ // var obj:any = selectADemo; // var index = obj.selectedIndex; // var value = obj.options[index].value; // if(value.length==0){ // alert("Please select a demo file"); // return; // } // var elemIF:any = document.getElementById("Lucky-download-frame"); // if(elemIF==null){ // elemIF = document.createElement("iframe"); // elemIF.style.display = "none"; // elemIF.id = "Lucky-download-frame"; // document.body.appendChild(elemIF); // } // elemIF.src = value; // // elemIF.parentNode.removeChild(elemIF); // }); // } // } // } // demoHandler(); // api var LuckyExcel = /** @class */function () { function LuckyExcel() {} LuckyExcel.transformExcelToLucky = function (excelFile, callback, dataVerificationSelectCount, errorHandler) { var handleZip = new HandleZip_1.HandleZip(excelFile); handleZip.unzipFile(function (files) { var luckyFile = new LuckyFile_1.LuckyFile(files, excelFile.name, dataVerificationSelectCount); var luckysheetfile = luckyFile.Parse(); var exportJson = JSON.parse(luckysheetfile); if (callback != undefined) { callback(exportJson, luckysheetfile); } }, function (err) { if (errorHandler) { errorHandler(err); } else { console.error(err); } }); }; LuckyExcel.transformExcelToLuckyByUrl = function (url, name, callBack, errorHandler) { var handleZip = new HandleZip_1.HandleZip(); handleZip.unzipFileByUrl(url, function (files) { var luckyFile = new LuckyFile_1.LuckyFile(files, name); var luckysheetfile = luckyFile.Parse(); var exportJson = JSON.parse(luckysheetfile); if (callBack != undefined) { callBack(exportJson, luckysheetfile); } }, function (err) { if (errorHandler) { errorHandler(err); } else { console.error(err); } }); }; LuckyExcel.transformLuckyToExcel = function (LuckyFile, callBack, errorHandler) {}; return LuckyExcel; }(); exports.LuckyExcel = LuckyExcel; },{"./HandleZip":9,"./ToLuckySheet/LuckyFile":12}],20:[function(require,module,exports){ "use strict"; var main_1 = require("./main"); module.exports = main_1.LuckyExcel; },{"./main":19}]},{},[20])(20) });