@vouchfor/embeds 1.3.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/es/embeds.js +1138 -11
- package/dist/es/embeds.js.map +1 -1
- package/dist/es/src/components/DialogEmbed/DialogOverlay.d.ts +2 -1
- package/dist/es/src/components/DialogEmbed/DialogPortal.d.ts +2 -1
- package/dist/es/src/components/DialogEmbed/index.d.ts +3 -1
- package/dist/es/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +1 -1
- package/dist/es/src/components/PlayerEmbed/index.d.ts +3 -2
- package/dist/es/src/components/PlayerEmbed/tests/data.d.ts +1 -1
- package/dist/iife/dialog-embed/embed.iife.js +363 -334
- package/dist/iife/dialog-embed/embed.iife.js.map +1 -1
- package/dist/iife/embeds.iife.js +362 -333
- package/dist/iife/embeds.iife.js.map +1 -1
- package/dist/iife/player-embed/embed.iife.js +346 -317
- package/dist/iife/player-embed/embed.iife.js.map +1 -1
- package/package.json +34 -30
- package/src/components/PlayerEmbed/controllers/tracking/utils.ts +1 -1
- package/src/components/PlayerEmbed/tests/data.ts +1 -1
- package/dist/es/browser-1b4c09f1.js +0 -733
- package/dist/es/browser-1b4c09f1.js.map +0 -1
- package/dist/es/index-37e10211.js +0 -4599
- package/dist/es/index-37e10211.js.map +0 -1
- package/dist/iife/dialog-embed/browser-aef6773c.js +0 -433
- package/dist/iife/dialog-embed/browser-aef6773c.js.map +0 -1
- package/dist/iife/dialog-embed/embed.js +0 -5
- package/dist/iife/dialog-embed/embed.js.map +0 -1
- package/dist/iife/dialog-embed/index-98ee90b7.js +0 -27151
- package/dist/iife/dialog-embed/index-98ee90b7.js.map +0 -1
- package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogOverlay.d.ts +0 -19
- package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogPortal.d.ts +0 -35
- package/dist/iife/dialog-embed/src/components/DialogEmbed/index.d.ts +0 -36
- package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +0 -15
- package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +0 -14
- package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +0 -36
- package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +0 -17
- package/dist/iife/dialog-embed/src/components/PlayerEmbed/index.d.ts +0 -73
- package/dist/iife/dialog-embed/src/components/PlayerEmbed/tests/data.d.ts +0 -3
- package/dist/iife/dialog-embed/src/index.d.ts +0 -2
- package/dist/iife/dialog-embed/src/utils/env.d.ts +0 -12
- package/dist/iife/dialog-embed/src/utils/events.d.ts +0 -2
- package/dist/iife/player-embed/browser-3fc50faa.js +0 -433
- package/dist/iife/player-embed/browser-3fc50faa.js.map +0 -1
- package/dist/iife/player-embed/embed.js +0 -5
- package/dist/iife/player-embed/embed.js.map +0 -1
- package/dist/iife/player-embed/index-ec0750d4.js +0 -26706
- package/dist/iife/player-embed/index-ec0750d4.js.map +0 -1
- package/dist/iife/player-embed/src/components/DialogEmbed/DialogOverlay.d.ts +0 -19
- package/dist/iife/player-embed/src/components/DialogEmbed/DialogPortal.d.ts +0 -35
- package/dist/iife/player-embed/src/components/DialogEmbed/index.d.ts +0 -36
- package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +0 -15
- package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +0 -14
- package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +0 -36
- package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +0 -17
- package/dist/iife/player-embed/src/components/PlayerEmbed/index.d.ts +0 -73
- package/dist/iife/player-embed/src/components/PlayerEmbed/tests/data.d.ts +0 -3
- package/dist/iife/player-embed/src/index.d.ts +0 -2
- package/dist/iife/player-embed/src/utils/env.d.ts +0 -12
- package/dist/iife/player-embed/src/utils/events.d.ts +0 -2
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"browser-1b4c09f1.js","sources":["../../../../node_modules/path-browserify/index.js","../../../../node_modules/skia-canvas/lib/io.js","../../../../node_modules/skia-canvas/lib/browser.js"],"sourcesContent":["// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","\"use strict\"\n\nconst {basename, extname} = require('path')\n\n//\n// Mime type <-> File extension mappings\n//\n\nclass Format{\n constructor(){\n let isWeb = (() => typeof global=='undefined')(),\n png = \"image/png\",\n jpg = \"image/jpeg\",\n jpeg = \"image/jpeg\",\n webp = \"image/webp\",\n pdf = \"application/pdf\",\n svg = \"image/svg+xml\"\n\n Object.assign(this, {\n toMime: this.toMime.bind(this),\n fromMime: this.fromMime.bind(this),\n expected: isWeb ? `\"png\", \"jpg\", or \"webp\"`\n : `\"png\", \"jpg\", \"pdf\", or \"svg\"`,\n formats: isWeb ? {png, jpg, jpeg, webp}\n : {png, jpg, jpeg, pdf, svg},\n mimes: isWeb ? {[png]: \"png\", [jpg]: \"jpg\", [webp]: \"webp\"}\n : {[png]: \"png\", [jpg]: \"jpg\", [pdf]: \"pdf\", [svg]: \"svg\"},\n })\n }\n\n toMime(ext){\n return this.formats[(ext||'').replace(/^\\./, '').toLowerCase()]\n }\n\n fromMime(mime){\n return this.mimes[mime]\n }\n}\n\n//\n// Validation of the options dict shared by the Canvas saveAs, toBuffer, and toDataURL methods\n//\n\nfunction options(pages, {filename='', extension='', format, page, quality, matte, density, outline, archive}={}){\n var {fromMime, toMime, expected} = new Format(),\n archive = archive || 'canvas',\n ext = format || extension.replace(/@\\d+x$/i,'') || extname(filename),\n format = fromMime(toMime(ext) || ext),\n mime = toMime(format),\n pp = pages.length\n\n if(!ext) throw new Error(`Cannot determine image format (use a filename extension or 'format' argument)`)\n if (!format) throw new Error(`Unsupported file format \"${ext}\" (expected ${expected})`)\n if (!pp) throw new RangeError(`Canvas has no associated contexts (try calling getContext or newPage first)`)\n\n let padding, isSequence, pattern = filename.replace(/{(\\d*)}/g, (_, width) => {\n isSequence = true\n width = parseInt(width, 10)\n padding = isFinite(width) ? width : isFinite(padding) ? padding : -1\n return \"{}\"\n })\n\n // allow negative indexing if a specific page is specified\n let idx = page > 0 ? page - 1\n : page < 0 ? pp + page\n : undefined;\n\n if (isFinite(idx) && idx < 0 || idx >= pp) throw new RangeError(\n pp == 1 ? `Canvas only has a ‘page 1’ (${idx} is out of bounds)`\n : `Canvas has pages 1–${pp} (${idx} is out of bounds)`\n )\n\n pages = isFinite(idx) ? [pages[idx]]\n : isSequence || format=='pdf' ? pages\n : pages.slice(-1) // default to the 'current' context\n\n if (quality===undefined){\n quality = 0.92\n }else{\n if (typeof quality!='number' || !isFinite(quality) || quality<0 || quality>1){\n throw new TypeError(\"The quality option must be an number in the 0.0–1.0 range\")\n }\n }\n\n if (density===undefined){\n let m = (extension || basename(filename, ext)).match(/@(\\d+)x$/i)\n density = m ? parseInt(m[1], 10) : 1\n }else if (typeof density!='number' || !Number.isInteger(density) || density<1){\n throw new TypeError(\"The density option must be a non-negative integer\")\n }\n\n if (outline===undefined){\n outline = true\n }else if (format == 'svg'){\n outline = !!outline\n }\n\n return {filename, pattern, format, mime, pages, padding, quality, matte, density, outline, archive}\n}\n\n//\n// Zip (pace Phil Katz & q.v. https://github.com/jimmywarting/StreamSaver.js)\n//\n\nclass Crc32 {\n static for(data){\n return new Crc32().append(data).get()\n }\n\n constructor(){ this.crc = -1 }\n\n get(){ return ~this.crc }\n\n append(data){\n var crc = this.crc | 0,\n table = this.table\n for (var offset = 0, len = data.length | 0; offset < len; offset++) {\n crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF]\n }\n this.crc = crc\n return this\n }\n\n}\n\nCrc32.prototype.table = (() => {\n var i, j, t, table = []\n for (i = 0; i < 256; i++) {\n t = i\n for (j = 0; j < 8; j++) {\n t = (t & 1)\n ? (t >>> 1) ^ 0xEDB88320\n : t >>> 1\n }\n table[i] = t\n }\n return table\n})()\n\nfunction calloc(size){\n let array = new Uint8Array(size),\n view = new DataView(array.buffer),\n buf = {\n array, view, size,\n set8(at, to){ view.setUint8(at, to); return buf },\n set16(at, to){ view.setUint16(at, to, true); return buf },\n set32(at, to){ view.setUint32(at, to, true); return buf },\n bytes(at, to){ array.set(to, at); return buf },\n }\n return buf\n}\n\nclass Zip{\n static encoder = new TextEncoder()\n\n constructor(directory){\n let now = new Date()\n Object.assign(this, {\n directory,\n offset: 0,\n files: [],\n time: (((now.getHours() << 6) | now.getMinutes()) << 5) | now.getSeconds() / 2,\n date: ((((now.getFullYear() - 1980) << 4) | (now.getMonth() + 1)) << 5) | now.getDate(),\n })\n this.add(directory)\n }\n\n async add(filename, blob){\n let folder = !blob,\n name = Zip.encoder.encode(`${this.directory}/${folder ? '' : filename}`),\n data = new Uint8Array(folder ? 0 : await blob.arrayBuffer()),\n preamble = 30 + name.length,\n descriptor = preamble + data.length,\n postamble = 16,\n {offset} = this\n\n let header = calloc(26)\n .set32(0, 0x08080014) // zip version\n .set16(6, this.time) // time\n .set16(8, this.date) // date\n .set32(10, Crc32.for(data)) // checksum\n .set32(14, data.length) // compressed size (w/ zero compression)\n .set32(18, data.length) // un-compressed size\n .set16(22, name.length) // filename length (utf8 bytes)\n offset += preamble\n\n let payload = calloc(preamble + data.length + postamble)\n .set32(0, 0x04034b50) // local header signature\n .bytes(4, header.array) // ...header fields...\n .bytes(30, name) // filename\n .bytes(preamble, data) // blob bytes\n offset += data.length\n\n payload\n .set32(descriptor, 0x08074b50) // signature\n .bytes(descriptor + 4, header.array.slice(10,22)) // length & filemame\n offset += postamble\n\n this.files.push({offset, folder, name, header, payload})\n this.offset = offset\n }\n\n toBuffer(){\n // central directory record\n let length = this.files.reduce((len, {name}) => 46 + name.length + len, 0),\n cdr = calloc(length + 22),\n index = 0\n\n for (var {offset, name, header, folder} of this.files){\n cdr.set32(index, 0x02014b50) // archive file signature\n .set16(index + 4, 0x0014) // version\n .bytes(index + 6, header.array) // ...header fields...\n .set8(index + 38, folder ? 0x10 : 0) // is_dir flag\n .set32(index + 42, offset) // file offset\n .bytes(index + 46, name) // filename\n index += 46 + name.length\n }\n cdr.set32(index, 0x06054b50) // signature\n .set16(index + 8, this.files.length) // № files per-segment\n .set16(index + 10, this.files.length) // № files this segment\n .set32(index + 12, length) // central directory length\n .set32(index + 16, this.offset) // file-offset of directory\n\n // concatenated zipfile data\n let output = new Uint8Array(this.offset + cdr.size),\n cursor = 0;\n\n for (var {payload} of this.files){\n output.set(payload.array, cursor)\n cursor += payload.size\n }\n output.set(cdr.array, cursor)\n\n return output\n }\n\n get blob(){\n return new Blob([this.toBuffer()], {type:\"application/zip\"})\n }\n}\n\n\n//\n// Browser helpers for converting canvas elements to blobs/buffers/files/zips\n//\n\nconst asBlob = (canvas, mime, quality, matte) => {\n if (matte){\n let {width, height} = canvas,\n comp = Object.assign(document.createElement('canvas'), {width, height}),\n ctx = comp.getContext(\"2d\")\n ctx.fillStyle = matte\n ctx.fillRect(0, 0, width, height)\n ctx.drawImage(canvas, 0, 0)\n canvas = comp\n }\n\n return new Promise((res, rej) => canvas.toBlob(res, mime, quality))\n}\n\nconst asBuffer = (...args) => asBlob(...args).then(b => b.arrayBuffer())\n\nconst asDownload = async (canvas, mime, quality, matte, filename) => {\n _download(filename, await asBlob(canvas, mime, quality, matte))\n}\n\nconst asZipDownload = async (pages, mime, quality, matte, archive, pattern, padding) => {\n let filenames = i => pattern.replace('{}', String(i+1).padStart(padding, '0')),\n folder = basename(archive, '.zip') || 'archive',\n zip = new Zip(folder)\n\n await Promise.all(pages.map(async (page, i) => {\n let filename = filenames(i) // serialize filename(s) before awaiting\n await zip.add(filename, await asBlob(page, mime, quality, matte))\n }))\n\n _download(`${folder}.zip`, zip.blob)\n}\n\nconst _download = (filename, blob) => {\n const href = window.URL.createObjectURL(blob),\n link = document.createElement('a')\n link.style.display = 'none'\n link.href = href\n link.setAttribute('download', filename)\n if (typeof link.download === 'undefined') {\n link.setAttribute('target', '_blank')\n }\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n setTimeout(() => window.URL.revokeObjectURL(href), 100)\n}\n\nconst atScale = (pages, density, matte) => pages.map(page => {\n if (density == 1 && !matte) return page.canvas\n\n let scaled = document.createElement('canvas'),\n ctx = scaled.getContext(\"2d\"),\n src = page.canvas ? page.canvas : page\n scaled.width = src.width * density\n scaled.height = src.height * density\n if (matte){\n ctx.fillStyle = matte\n ctx.fillRect(0, 0, scaled.width, scaled.height)\n }\n ctx.scale(density, density)\n ctx.drawImage(src, 0, 0)\n return scaled\n})\n\nmodule.exports = {asBuffer, asDownload, asZipDownload, atScale, options}\n","\"use strict\"\n\nconst {asBuffer, asDownload, asZipDownload, atScale, options} = require('./io')\n\n//\n// Browser equivalents of the skia-canvas convenience initializers and polyfills for\n// the Canvas object’s newPage & export methods\n//\n\nconst _toURL_ = Symbol.for(\"toDataURL\")\n\nconst loadImage = src => {\n let img = Object.assign(new Image(), {crossOrigin:'Anonymous', src})\n return img.decode().then(() => img)\n}\n\nclass Canvas{\n constructor(width, height){\n let elt = document.createElement('canvas'),\n pages = []\n\n Object.defineProperty(elt, \"async\", {value:true, writable:false, enumerable:true})\n\n for (var [prop, get] of Object.entries({\n png: () => asBuffer(elt, 'image/png'),\n jpg: () => asBuffer(elt, 'image/jpeg'),\n pages: () => pages.concat(elt).map(c => c.getContext(\"2d\")),\n })) Object.defineProperty(elt, prop, {get})\n\n return Object.assign(elt, {\n width, height,\n\n newPage(...size){\n var {width, height} = elt,\n page = Object.assign(document.createElement('canvas'), {width, height})\n page.getContext(\"2d\").drawImage(elt, 0, 0)\n pages.push(page)\n\n var [width, height] = size.length ? size : [width, height]\n return Object.assign(elt, {width, height}).getContext(\"2d\")\n },\n\n saveAs(filename, args){\n args = typeof args=='number' ? {quality:args} : args\n let opts = options(this.pages, {filename, ...args}),\n {pattern, padding, mime, quality, matte, density, archive} = opts,\n pages = atScale(opts.pages, density);\n return padding==undefined ? asDownload(pages[0], mime, quality, matte, filename)\n : asZipDownload(pages, mime, quality, matte, archive, pattern, padding)\n },\n\n toBuffer(extension=\"png\", args={}){\n args = typeof args=='number' ? {quality:args} : args\n let opts = options(this.pages, {extension, ...args}),\n {mime, quality, matte, pages, density} = opts,\n canvas = atScale(pages, density, matte)[0]\n return asBuffer(canvas, mime, quality, matte)\n },\n\n [_toURL_]: elt.toDataURL.bind(elt),\n toDataURL(extension=\"png\", args={}){\n args = typeof args=='number' ? {quality:args} : args\n let opts = options(this.pages, {extension, ...args}),\n {mime, quality, matte, pages, density} = opts,\n canvas = atScale(pages, density, matte)[0],\n url = canvas[canvas===elt ? _toURL_ : 'toDataURL'](mime, quality);\n return Promise.resolve(url)\n }\n })\n }\n}\n\nconst {CanvasRenderingContext2D, CanvasGradient, CanvasPattern,\n Image, ImageData, Path2D, DOMMatrix, DOMRect, DOMPoint} = window;\n\nmodule.exports = {\n Canvas, loadImage,\n CanvasRenderingContext2D, CanvasGradient, CanvasPattern,\n Image, ImageData, Path2D, DOMMatrix, DOMRect, DOMPoint\n}"],"names":["isAbsolute","basename","extname","require$$0","global","options","format","name","asBuffer","asDownload","asZipDownload","atScale","width","height","pages"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|