@loaders.gl/video 5.0.0-alpha.1 → 5.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +14 -3
- package/dist/dist.dev.js +37 -32
- package/dist/dist.min.js +1 -1
- package/dist/index.cjs +29 -21
- package/dist/index.cjs.map +1 -2
- package/dist/lib/parsers/parse-video.d.ts +2 -0
- package/dist/lib/parsers/parse-video.d.ts.map +1 -1
- package/dist/lib/parsers/parse-video.js +6 -6
- package/dist/lib/parsers/parse-video.js.map +1 -1
- package/dist/video-loader-with-parser.d.ts +2 -1
- package/dist/video-loader-with-parser.d.ts.map +1 -1
- package/dist/video-loader-with-parser.js +3 -2
- package/dist/video-loader-with-parser.js.map +1 -1
- package/dist/video-loader.d.ts +1 -0
- package/dist/video-loader.d.ts.map +1 -1
- package/dist/video-loader.js +1 -1
- package/package.json +4 -5
- package/src/lib/parsers/parse-video.ts +7 -6
- package/src/video-loader-with-parser.ts +3 -2
package/LICENSE
CHANGED
|
@@ -24,8 +24,20 @@ THE SOFTWARE.
|
|
|
24
24
|
|
|
25
25
|
Copyright (c) 2015 Uber Technologies, Inc.
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
Portions of modules/images/src/lib/category-api/binary-image-api.ts are based on
|
|
28
|
+
binary-gltf-utils (https://github.com/Qantas94Heavy/binary-gltf-utils) under the
|
|
29
|
+
MIT License reproduced above.
|
|
30
|
+
|
|
31
|
+
Copyright (c) 2016-17 Karl Cheng
|
|
32
|
+
|
|
33
|
+
Portions of modules/schema-utils/src/lib/utils/async-queue.ts are adapted from
|
|
34
|
+
async-iter-demo (https://github.com/rauschma/async-iter-demo) under the MIT
|
|
35
|
+
License reproduced above.
|
|
36
|
+
|
|
37
|
+
Copyright (c) 2016 Axel Rauschmayer
|
|
38
|
+
|
|
39
|
+
loaders.gl includes certain files from Cesium (https://github.com/CesiumGS/cesium)
|
|
40
|
+
under the Apache 2.0 License, including files in modules/3d-tiles.
|
|
29
41
|
|
|
30
42
|
Copyright 2011-2018 CesiumJS Contributors
|
|
31
43
|
|
|
@@ -38,4 +50,3 @@ Unless required by applicable law or agreed to in writing, software
|
|
|
38
50
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
39
51
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
40
52
|
See the License for the specific language governing permissions and limitations under the License.
|
|
41
|
-
|
package/dist/dist.dev.js
CHANGED
|
@@ -12,11 +12,20 @@ var __exports__ = (() => {
|
|
|
12
12
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
13
13
|
var __getProtoOf = Object.getPrototypeOf;
|
|
14
14
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
15
|
-
var __esm = (fn, res) => function __init() {
|
|
16
|
-
|
|
15
|
+
var __esm = (fn, res, err) => function __init() {
|
|
16
|
+
if (err) throw err[0];
|
|
17
|
+
try {
|
|
18
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
19
|
+
} catch (e) {
|
|
20
|
+
throw err = [e], e;
|
|
21
|
+
}
|
|
17
22
|
};
|
|
18
23
|
var __commonJS = (cb, mod) => function __require() {
|
|
19
|
-
|
|
24
|
+
try {
|
|
25
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
26
|
+
} catch (e) {
|
|
27
|
+
throw mod = 0, e;
|
|
28
|
+
}
|
|
20
29
|
};
|
|
21
30
|
var __export = (target, all) => {
|
|
22
31
|
for (var name in all)
|
|
@@ -68,12 +77,14 @@ var __exports__ = (() => {
|
|
|
68
77
|
});
|
|
69
78
|
|
|
70
79
|
// src/lib/parsers/parse-video.ts
|
|
71
|
-
async function
|
|
72
|
-
const blob2 = new Blob([arrayBuffer]);
|
|
80
|
+
async function parseVideoBlob(blob2) {
|
|
73
81
|
const video = document.createElement("video");
|
|
74
82
|
video.src = URL.createObjectURL(blob2);
|
|
75
83
|
return video;
|
|
76
84
|
}
|
|
85
|
+
async function parseVideo(arrayBuffer) {
|
|
86
|
+
return await parseVideoBlob(new Blob([arrayBuffer]));
|
|
87
|
+
}
|
|
77
88
|
var init_parse_video = __esm({
|
|
78
89
|
"src/lib/parsers/parse-video.ts"() {
|
|
79
90
|
"use strict";
|
|
@@ -94,7 +105,8 @@ var __exports__ = (() => {
|
|
|
94
105
|
({ preload: _VideoLoaderPreload, ...VideoLoaderMetadataWithoutPreload } = VideoLoader);
|
|
95
106
|
VideoLoaderWithParser = {
|
|
96
107
|
...VideoLoaderMetadataWithoutPreload,
|
|
97
|
-
parse: parseVideo
|
|
108
|
+
parse: parseVideo,
|
|
109
|
+
parseBlob: parseVideoBlob
|
|
98
110
|
};
|
|
99
111
|
}
|
|
100
112
|
});
|
|
@@ -148,12 +160,11 @@ var __exports__ = (() => {
|
|
|
148
160
|
var document2 = globalThis.document || {};
|
|
149
161
|
var utils = {
|
|
150
162
|
URL: globalThis.URL || globalThis.webkitURL || globalThis.mozURL || globalThis.msURL,
|
|
151
|
-
getUserMedia: function() {
|
|
152
|
-
if (!globalThis.navigator)
|
|
153
|
-
return globalThis.navigator;
|
|
163
|
+
getUserMedia: (function() {
|
|
164
|
+
if (!globalThis.navigator) return globalThis.navigator;
|
|
154
165
|
const getUserMedia = globalThis.navigator.getUserMedia || globalThis.navigator.webkitGetUserMedia || globalThis.navigator.mozGetUserMedia || globalThis.navigator.msGetUserMedia;
|
|
155
166
|
return getUserMedia ? getUserMedia.bind(globalThis.navigator) : getUserMedia;
|
|
156
|
-
}(),
|
|
167
|
+
})(),
|
|
157
168
|
requestAnimFrame: globalThis.requestAnimationFrame || globalThis.webkitRequestAnimationFrame || globalThis.mozRequestAnimationFrame || globalThis.oRequestAnimationFrame || globalThis.msRequestAnimationFrame,
|
|
158
169
|
requestTimeout: function requestTimeout(callback, delay) {
|
|
159
170
|
callback = callback || utils.noop;
|
|
@@ -161,11 +172,11 @@ var __exports__ = (() => {
|
|
|
161
172
|
if (!utils.requestAnimFrame) {
|
|
162
173
|
return setTimeout(callback, delay);
|
|
163
174
|
}
|
|
164
|
-
const start = new Date().getTime();
|
|
175
|
+
const start = (/* @__PURE__ */ new Date()).getTime();
|
|
165
176
|
const handle = new Object();
|
|
166
177
|
const requestAnimFrame = utils.requestAnimFrame;
|
|
167
178
|
const loop = function loop2() {
|
|
168
|
-
const current = new Date().getTime();
|
|
179
|
+
const current = (/* @__PURE__ */ new Date()).getTime();
|
|
169
180
|
const delta = current - start;
|
|
170
181
|
if (delta >= delay) {
|
|
171
182
|
callback.call();
|
|
@@ -177,7 +188,7 @@ var __exports__ = (() => {
|
|
|
177
188
|
return handle;
|
|
178
189
|
},
|
|
179
190
|
Blob: globalThis.Blob || globalThis.BlobBuilder || globalThis.WebKitBlobBuilder || globalThis.MozBlobBuilder || globalThis.MSBlobBuilder,
|
|
180
|
-
btoa: function() {
|
|
191
|
+
btoa: (function() {
|
|
181
192
|
const btoa = globalThis.btoa || function(input) {
|
|
182
193
|
let output = "";
|
|
183
194
|
let i = 0;
|
|
@@ -208,7 +219,7 @@ var __exports__ = (() => {
|
|
|
208
219
|
return output;
|
|
209
220
|
};
|
|
210
221
|
return btoa ? btoa.bind(globalThis) : utils.noop;
|
|
211
|
-
}(),
|
|
222
|
+
})(),
|
|
212
223
|
isObject: function isObject(obj) {
|
|
213
224
|
return obj && Object.prototype.toString.call(obj) === "[object Object]";
|
|
214
225
|
},
|
|
@@ -250,7 +261,7 @@ var __exports__ = (() => {
|
|
|
250
261
|
Uint32Array: function Uint32Array2() {
|
|
251
262
|
return globalThis.Uint32Array;
|
|
252
263
|
},
|
|
253
|
-
videoCodecs: function() {
|
|
264
|
+
videoCodecs: (function() {
|
|
254
265
|
const testEl = document2.createElement("video");
|
|
255
266
|
const supportObj = {
|
|
256
267
|
mp4: false,
|
|
@@ -270,7 +281,7 @@ var __exports__ = (() => {
|
|
|
270
281
|
} catch (_e) {
|
|
271
282
|
}
|
|
272
283
|
return supportObj;
|
|
273
|
-
}()
|
|
284
|
+
})()
|
|
274
285
|
},
|
|
275
286
|
noop: function noop() {
|
|
276
287
|
},
|
|
@@ -978,8 +989,7 @@ var __exports__ = (() => {
|
|
|
978
989
|
gopts = gopts === void 0 ? {} : gopts;
|
|
979
990
|
const loop_count = gopts.loop === void 0 ? null : gopts.loop;
|
|
980
991
|
const global_palette = gopts.palette === void 0 ? null : gopts.palette;
|
|
981
|
-
if (width <= 0 || height <= 0 || width > 65535 || height > 65535)
|
|
982
|
-
throw "Width/Height invalid.";
|
|
992
|
+
if (width <= 0 || height <= 0 || width > 65535 || height > 65535) throw "Width/Height invalid.";
|
|
983
993
|
function check_palette_and_num_colors(palette) {
|
|
984
994
|
const num_colors = palette.length;
|
|
985
995
|
if (num_colors < 2 || num_colors > 256 || num_colors & num_colors - 1)
|
|
@@ -1003,8 +1013,7 @@ var __exports__ = (() => {
|
|
|
1003
1013
|
buf[p++] = background;
|
|
1004
1014
|
buf[p++] = 0;
|
|
1005
1015
|
if (loop_count !== null) {
|
|
1006
|
-
if (loop_count < 0 || loop_count > 65535)
|
|
1007
|
-
throw "Loop count invalid.";
|
|
1016
|
+
if (loop_count < 0 || loop_count > 65535) throw "Loop count invalid.";
|
|
1008
1017
|
buf[p++] = 33;
|
|
1009
1018
|
buf[p++] = 255;
|
|
1010
1019
|
buf[p++] = 11;
|
|
@@ -1032,12 +1041,9 @@ var __exports__ = (() => {
|
|
|
1032
1041
|
ended = false;
|
|
1033
1042
|
}
|
|
1034
1043
|
opts = opts === void 0 ? {} : opts;
|
|
1035
|
-
if (x < 0 || y < 0 || x > 65535 || y > 65535)
|
|
1036
|
-
|
|
1037
|
-
if (
|
|
1038
|
-
throw "Width/Height invalid.";
|
|
1039
|
-
if (indexed_pixels.length < w * h)
|
|
1040
|
-
throw "Not enough pixels for the frame size.";
|
|
1044
|
+
if (x < 0 || y < 0 || x > 65535 || y > 65535) throw "x/y invalid.";
|
|
1045
|
+
if (w <= 0 || h <= 0 || w > 65535 || h > 65535) throw "Width/Height invalid.";
|
|
1046
|
+
if (indexed_pixels.length < w * h) throw "Not enough pixels for the frame size.";
|
|
1041
1047
|
let using_local_palette = true;
|
|
1042
1048
|
let palette = opts.palette;
|
|
1043
1049
|
if (palette === void 0 || palette === null) {
|
|
@@ -1154,8 +1160,7 @@ var __exports__ = (() => {
|
|
|
1154
1160
|
cur_code_size = min_code_size + 1;
|
|
1155
1161
|
code_table = {};
|
|
1156
1162
|
} else {
|
|
1157
|
-
if (next_code >= 1 << cur_code_size)
|
|
1158
|
-
++cur_code_size;
|
|
1163
|
+
if (next_code >= 1 << cur_code_size) ++cur_code_size;
|
|
1159
1164
|
code_table[cur_key] = next_code++;
|
|
1160
1165
|
}
|
|
1161
1166
|
ib_code = k;
|
|
@@ -1233,13 +1238,13 @@ var __exports__ = (() => {
|
|
|
1233
1238
|
freeWorker: function freeWorker(worker) {
|
|
1234
1239
|
this.availableWorkers.push(worker);
|
|
1235
1240
|
},
|
|
1236
|
-
byteMap: function() {
|
|
1241
|
+
byteMap: (function() {
|
|
1237
1242
|
const byteMap = [];
|
|
1238
1243
|
for (let i = 0; i < 256; i++) {
|
|
1239
1244
|
byteMap[i] = String.fromCharCode(i);
|
|
1240
1245
|
}
|
|
1241
1246
|
return byteMap;
|
|
1242
|
-
}(),
|
|
1247
|
+
})(),
|
|
1243
1248
|
bufferToString: function bufferToString(buffer) {
|
|
1244
1249
|
const numberValues = buffer.length;
|
|
1245
1250
|
let str = "";
|
|
@@ -2208,14 +2213,14 @@ var __exports__ = (() => {
|
|
|
2208
2213
|
savedRenderingContexts: []
|
|
2209
2214
|
// Array of canvas image data
|
|
2210
2215
|
};
|
|
2211
|
-
var GIFBuilder = class {
|
|
2216
|
+
var GIFBuilder = class _GIFBuilder {
|
|
2212
2217
|
static get properties() {
|
|
2213
2218
|
return {
|
|
2214
2219
|
id: "gif",
|
|
2215
2220
|
name: "GIF",
|
|
2216
2221
|
extensions: ["gif"],
|
|
2217
2222
|
mimeTypes: ["image/gif"],
|
|
2218
|
-
builder:
|
|
2223
|
+
builder: _GIFBuilder,
|
|
2219
2224
|
options: GIF_BUILDER_OPTIONS
|
|
2220
2225
|
};
|
|
2221
2226
|
}
|
package/dist/dist.min.js
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['loaders'] = factory();
|
|
6
6
|
else root['loaders'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var Pe=Object.create;var de=Object.defineProperty;var De=Object.getOwnPropertyDescriptor;var Ge=Object.getOwnPropertyNames;var je=Object.getPrototypeOf,Ne=Object.prototype.hasOwnProperty;var fe=(t,e)=>()=>(t&&(e=t(t=0)),e);var $e=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),ke=(t,e)=>{for(var n in e)de(t,n,{get:e[n],enumerable:!0})},ce=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ge(e))!Ne.call(t,i)&&i!==n&&de(t,i,{get:()=>e[i],enumerable:!(o=De(e,i))||o.enumerable});return t},me=(t,e,n)=>(ce(t,e,"default"),n&&ce(n,e,"default")),qe=(t,e,n)=>(n=t!=null?Pe(je(t)):{},ce(e||!t||!t.__esModule?de(n,"default",{value:t,enumerable:!0}):n,t)),Xe=t=>ce(de({},"__esModule",{value:!0}),t);var We=$e((ht,Te)=>{Te.exports=globalThis.loaders});var ue,ve=fe(()=>{"use strict";ue={name:"Video",id:"video",module:"video",encoding:"video",format:"video",extensions:["mp4"],mimeTypes:["video/mp4"],category:"video",binary:!0}});async function xe(t){let e=new Blob([t]),n=document.createElement("video");return n.src=URL.createObjectURL(e),n}var Ee=fe(()=>{"use strict"});var Ae={};ke(Ae,{VideoLoaderWithParser:()=>Qe});var wt,Ye,Qe,Ie=fe(()=>{"use strict";Ee();we();({preload:wt,...Ye}=ge),Qe={...Ye,parse:xe}});async function Ze(){let{VideoLoaderWithParser:t}=await Promise.resolve().then(()=>(Ie(),Ae));return t}var Ke,ge,we=fe(()=>{"use strict";ve();Ke="5.0.0-alpha.1";ge={dataType:null,batchType:null,...ue,version:Ke,options:{video:{}},preload:Ze}});var se={};ke(se,{GIFBuilder:()=>K,VideoFormat:()=>ue,VideoLoader:()=>ge});me(se,qe(We(),1));ve();we();function ze(t,e){if(!t)throw new Error(e)}var j=globalThis.document||{},r={URL:globalThis.URL||globalThis.webkitURL||globalThis.mozURL||globalThis.msURL,getUserMedia:function(){if(!globalThis.navigator)return globalThis.navigator;let t=globalThis.navigator.getUserMedia||globalThis.navigator.webkitGetUserMedia||globalThis.navigator.mozGetUserMedia||globalThis.navigator.msGetUserMedia;return t&&t.bind(globalThis.navigator)}(),requestAnimFrame:globalThis.requestAnimationFrame||globalThis.webkitRequestAnimationFrame||globalThis.mozRequestAnimationFrame||globalThis.oRequestAnimationFrame||globalThis.msRequestAnimationFrame,requestTimeout:function(e,n){if(e=e||r.noop,n=n||0,!r.requestAnimFrame)return setTimeout(e,n);let o=new Date().getTime(),i=new Object,a=r.requestAnimFrame,l=function s(){new Date().getTime()-o>=n?e.call():i.value=a(s)};return i.value=a(l),i},Blob:globalThis.Blob||globalThis.BlobBuilder||globalThis.WebKitBlobBuilder||globalThis.MozBlobBuilder||globalThis.MSBlobBuilder,btoa:function(){let t=globalThis.btoa||function(e){let n="",o=0,i=e.length,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l,s,c,h,x,k,m;for(;o<i;)l=e.charCodeAt(o++),s=e.charCodeAt(o++),c=e.charCodeAt(o++),h=l>>2,x=(l&3)<<4|s>>4,k=(s&15)<<2|c>>6,m=c&63,Number.isNaN(s)?k=m=64:Number.isNaN(c)&&(m=64),n=n+a.charAt(h)+a.charAt(x)+a.charAt(k)+a.charAt(m);return n};return t?t.bind(globalThis):r.noop}(),isObject:function(e){return e&&Object.prototype.toString.call(e)==="[object Object]"},isEmptyObject:function(e){return r.isObject(e)&&!Object.keys(e).length},isArray:function(e){return e&&Array.isArray(e)},isFunction:function(e){return e&&typeof e=="function"},isElement:function(e){return e&&e.nodeType===1},isImageBitmap:function(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap},isDrawable:function(e){return r.isElement(e)||r.isImageBitmap(e)},isString:function(e){return typeof e=="string"||Object.prototype.toString.call(e)==="[object String]"},isSupported:{canvas:function(){let e=j.createElement("canvas");return e&&e.getContext&&e.getContext("2d")},webworkers:function(){return globalThis.Worker},blob:function(){return r.Blob},Uint8Array:function(){return globalThis.Uint8Array},Uint32Array:function(){return globalThis.Uint32Array},videoCodecs:function(){let t=j.createElement("video"),e={mp4:!1,h264:!1,ogv:!1,ogg:!1,webm:!1};try{t&&t.canPlayType&&(e.mp4=t.canPlayType('video/mp4; codecs="mp4v.20.8"')!=="",e.h264=(t.canPlayType('video/mp4; codecs="avc1.42E01E"')||t.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"'))!=="",e.ogv=t.canPlayType('video/ogg; codecs="theora"')!=="",e.ogg=t.canPlayType('video/ogg; codecs="theora"')!=="",e.webm=t.canPlayType('video/webm; codecs="vp8, vorbis"')!==-1)}catch{}return e}()},noop:function(){},each:function(e,n){let o,i;if(r.isArray(e))for(o=-1,i=e.length;++o<i&&n(o,e[o])!==!1;);else if(r.isObject(e)){for(o in e)if(e.hasOwnProperty(o)&&n(o,e[o])===!1)break}},normalizeOptions:function(e,n){if(!r.isObject(e)||!r.isObject(n)||!Object.keys)return;let o={};return r.each(e,function(i,a){o[i]=e[i]}),r.each(n,function(i,a){let l=n[i];r.isObject(l)&&e[i]?o[i]=r.normalizeOptions(e[i],l):o[i]=l}),o},setCSSAttr:function(e,n,o){r.isElement(e)&&(r.isString(n)&&r.isString(o)?e.style[n]=o:r.isObject(n)&&r.each(n,function(i,a){e.style[i]=a}))},removeElement:function(e){r.isElement(e)&&e.parentNode&&e.parentNode.removeChild(e)},createWebWorker:function(e){if(!r.isString(e))return{};try{let n=new r.Blob([e],{type:"text/javascript"}),o=r.URL.createObjectURL(n),i=new Worker(o);return{objectUrl:o,worker:i}}catch(n){return`${n}`}},getExtension:function(e){return e.substr(e.lastIndexOf(".")+1,e.length)},getFontSize:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!j.body||e.resizeFont===!1)return e.fontSize;let n=e.text,o=e.gifWidth,i=parseInt(e.fontSize,10),a=parseInt(e.minFontSize,10),l=j.createElement("div"),s=j.createElement("span");for(l.setAttribute("width",o),l.appendChild(s),s.innerHTML=n,s.style.fontSize=`${i}px`,s.style.textIndent="-9999px",s.style.visibility="hidden",j.body.appendChild(s);s.offsetWidth>o&&i>=a;)s.style.fontSize=`${--i}px`;return j.body.removeChild(s),`${i}px`},webWorkerError:!1},Je=Object.freeze({default:r}),q={validate:function(e){e=r.isObject(e)?e:{};let n={};return r.each(q.validators,function(o,i){let a=i.errorCode;if(!e[a]&&!i.condition)return n=i,n.error=!0,!1}),delete n.condition,n},isValid:function(e){return q.validate(e).error!==!0},validators:[{condition:r.isFunction(r.getUserMedia),errorCode:"getUserMedia",errorMsg:"The getUserMedia API is not supported in your browser"},{condition:r.isSupported.canvas(),errorCode:"canvas",errorMsg:"Canvas elements are not supported in your browser"},{condition:r.isSupported.webworkers(),errorCode:"webworkers",errorMsg:"The Web Workers API is not supported in your browser"},{condition:r.isFunction(r.URL),errorCode:"globalThis.URL",errorMsg:"The globalThis.URL API is not supported in your browser"},{condition:r.isSupported.blob(),errorCode:"globalThis.Blob",errorMsg:"The globalThis.Blob File API is not supported in your browser"},{condition:r.isSupported.Uint8Array(),errorCode:"globalThis.Uint8Array",errorMsg:"The globalThis.Uint8Array function constructor is not supported in your browser"},{condition:r.isSupported.Uint32Array(),errorCode:"globalThis.Uint32Array",errorMsg:"The globalThis.Uint32Array function constructor is not supported in your browser"}],messages:{videoCodecs:{errorCode:"videocodec",errorMsg:"The video codec you are trying to use is not supported in your browser"}}},et=Object.freeze({default:q}),Oe=function(){},Ce={sampleInterval:10,numWorkers:2,filter:"",gifWidth:200,gifHeight:200,interval:.1,numFrames:10,frameDuration:1,keepCameraOn:!1,images:[],video:null,webcamVideoElement:null,cameraStream:null,text:"",fontWeight:"normal",fontSize:"16px",minFontSize:"10px",resizeFont:!1,fontFamily:"sans-serif",fontColor:"#ffffff",textAlign:"center",textBaseline:"bottom",textXCoordinate:null,textYCoordinate:null,progressCallback:Oe,completeCallback:Oe,saveRenderingContexts:!1,savedRenderingContexts:[],crossOrigin:"Anonymous"},tt=Object.freeze({default:Ce});function it(){return q.isValid()}function Me(){return q.isValid()}function nt(){let t={getUserMedia:!0};return q.isValid(t)}function ot(t){let e=!1;if(r.isArray(t)&&t.length){if(r.each(t,function(n,o){r.isSupported.videoCodecs[o]&&(e=!0)}),!e)return!1}else if(r.isString(t)&&t.length&&!r.isSupported.videoCodecs[t])return!1;return q.isValid({getUserMedia:!0})}function Ue(){let M,H,G,X,F,P=[],Q=[],Z=[],ee=[];function he(u,p,W){let g,b;for(H=u,G=p,X=W,F=new Array(256),g=0;g<256;g++)F[g]=new Array(4),b=F[g],b[0]=b[1]=b[2]=(g<<4+8)/256|0,Z[g]=65536/256|0,Q[g]=0}function pe(){let u=[],p=new Array(256);for(let g=0;g<256;g++)p[F[g][3]]=g;let W=0;for(let g=0;g<256;g++){let b=p[g];u[W++]=F[b][0],u[W++]=F[b][1],u[W++]=F[b][2]}return u}function te(){let u,p,W,g,b,d,f,S;for(f=0,S=0,u=0;u<256;u++){for(b=F[u],W=u,g=b[1],p=u+1;p<256;p++)d=F[p],d[1]<g&&(W=p,g=d[1]);if(d=F[W],u!==W&&(p=d[0],d[0]=b[0],b[0]=p,p=d[1],d[1]=b[1],b[1]=p,p=d[2],d[2]=b[2],b[2]=p,p=d[3],d[3]=b[3],b[3]=p),g!==f){for(P[f]=S+u>>1,p=f+1;p<g;p++)P[p]=u;f=g,S=u}}for(P[f]=S+255>>1,p=f+1;p<256;p++)P[p]=255}function ie(){let u,p,W,g,b,d,f,S,T,O,$,A,D,Se;for(G<1509&&(X=1),M=30+(X-1)/3,A=H,D=0,Se=G,$=G/(3*X),O=$/100|0,S=1024,d=2048,f=d>>6,f<=1&&(f=0),u=0;u<f;u++)ee[u]=S*((f*f-u*u)*256/(f*f));for(G<1509?T=3:G%499!==0?T=3*499:G%491!==0?T=3*491:G%487!==0?T=3*487:T=3*503,u=0;u<$;)if(W=(A[D+0]&255)<<4,g=(A[D+1]&255)<<4,b=(A[D+2]&255)<<4,p=le(W,g,b),ae(S,p,W,g,b),f!==0&&re(f,p,W,g,b),D+=T,D>=Se&&(D-=G),u++,O===0&&(O=1),u%O===0)for(S-=S/M,d-=d/30,f=d>>6,f<=1&&(f=0),p=0;p<f;p++)ee[p]=S*((f*f-p*p)*256/(f*f))}function ne(u,p,W){let g,b,d,f,S,T,O;for(S=1e3,O=-1,g=P[p],b=g-1;g<256||b>=0;)g<256&&(T=F[g],d=T[1]-p,d>=S?g=256:(g++,d<0&&(d=-d),f=T[0]-u,f<0&&(f=-f),d+=f,d<S&&(f=T[2]-W,f<0&&(f=-f),d+=f,d<S&&(S=d,O=T[3])))),b>=0&&(T=F[b],d=p-T[1],d>=S?b=-1:(b--,d<0&&(d=-d),f=T[0]-u,f<0&&(f=-f),d+=f,d<S&&(f=T[2]-W,f<0&&(f=-f),d+=f,d<S&&(S=d,O=T[3]))));return O}function oe(){return ie(),be(),te(),pe()}function be(){let u,p;for(u=0;u<256;u++)F[u][0]>>=4,F[u][1]>>=4,F[u][2]>>=4,F[u][3]=u}function re(u,p,W,g,b){let d,f,S,T,O,$,A;for(S=p-u,S<-1&&(S=-1),T=p+u,T>256&&(T=256),d=p+1,f=p-1,$=1;d<T||f>S;){if(O=ee[$++],d<T){A=F[d++];try{A[0]-=O*(A[0]-W)/262144|0,A[1]-=O*(A[1]-g)/262144|0,A[2]-=O*(A[2]-b)/262144|0}catch{}}if(f>S){A=F[f--];try{A[0]-=O*(A[0]-W)/262144|0,A[1]-=O*(A[1]-g)/262144|0,A[2]-=O*(A[2]-b)/262144|0}catch{}}}}function ae(u,p,W,g,b){let d=F[p],f=u/1024;d[0]-=f*(d[0]-W)|0,d[1]-=f*(d[1]-g)|0,d[2]-=f*(d[2]-b)|0}function le(u,p,W){let g,b,d,f,S,T,O,$,A,D;for($=~(1<<31),A=$,T=-1,O=T,g=0;g<256;g++)D=F[g],b=D[0]-u,b<0&&(b=-b),d=D[1]-p,d<0&&(d=-d),b+=d,d=D[2]-W,d<0&&(d=-d),b+=d,b<$&&($=b,T=g),f=b-(Q[g]>>16-4),f<A&&(A=f,O=g),S=Z[g]>>10,Z[g]-=S,Q[g]+=S<<10;return Z[T]+=64,Q[T]-=65536,O}he.apply(this,arguments);let J={};return J.map=ne,J.process=oe,J}function Ve(){let t=this;try{globalThis.onmessage=function(n){let o=n.data||{},i;o.gifshot&&(i=e.run(o),postMessage(i))}}catch{}var e={dataToRGB:function(o,i,a){let l=i*a*4,s=0,c=[];for(;s<l;)c.push(o[s++]),c.push(o[s++]),c.push(o[s++]),s++;return c},componentizedPaletteToArray:function(o){o=o||[];let i=[];for(let a=0;a<o.length;a+=3){let l=o[a],s=o[a+1],c=o[a+2];i.push(l<<16|s<<8|c)}return i},processFrameWithQuantizer:function(o,i,a,l){let s=this.dataToRGB(o,i,a),c=new Ue(s,s.length,l),h=c.process(),x=new Uint32Array(this.componentizedPaletteToArray(h)),k=i*a,m=new Uint8Array(k),v=0;for(let w=0;w<k;w++){let E=s[v++],y=s[v++],C=s[v++];m[w]=c.map(E,y,C)}return{pixels:m,palette:x}},run:function(o){o=o||{};let i=o,a=i.height,l=i.palette,s=i.sampleInterval,c=i.width,h=o.data;return this.processFrameWithQuantizer(h,c,a,s)}};return e}function rt(t,e,n,o){let i=0;o=o===void 0?{}:o;let a=o.loop===void 0?null:o.loop,l=o.palette===void 0?null:o.palette;if(e<=0||n<=0||e>65535||n>65535)throw"Width/Height invalid.";function s(m){let v=m.length;if(v<2||v>256||v&v-1)throw"Invalid code/color length, must be power of 2 and 2 .. 256.";return v}t[i++]=71,t[i++]=73,t[i++]=70,t[i++]=56,t[i++]=57,t[i++]=97;let c=0,h=0;if(t[i++]=e&255,t[i++]=e>>8&255,t[i++]=n&255,t[i++]=n>>8&255,t[i++]=(l!==null?128:0)|c,t[i++]=h,t[i++]=0,a!==null){if(a<0||a>65535)throw"Loop count invalid.";t[i++]=33,t[i++]=255,t[i++]=11,t[i++]=78,t[i++]=69,t[i++]=84,t[i++]=83,t[i++]=67,t[i++]=65,t[i++]=80,t[i++]=69,t[i++]=50,t[i++]=46,t[i++]=48,t[i++]=3,t[i++]=1,t[i++]=a&255,t[i++]=a>>8&255,t[i++]=0}let x=!1;this.addFrame=function(m,v,w,E,y,C){if(x===!0&&(--i,x=!1),C=C===void 0?{}:C,m<0||v<0||m>65535||v>65535)throw"x/y invalid.";if(w<=0||E<=0||w>65535||E>65535)throw"Width/Height invalid.";if(y.length<w*E)throw"Not enough pixels for the frame size.";let I=!0,z=C.palette;if(z==null&&(I=!1,z=l),z==null)throw"Must supply either a local or global palette.";let V=s(z),U=0;for(V>>=1;V;)++U,V>>=1;V=1<<U;let R=C.delay===void 0?0:C.delay,M=C.disposal===void 0?0:C.disposal;if(M<0||M>3)throw"Disposal out of range.";let Y=!1,_=0;if(C.transparent!==void 0&&C.transparent!==null&&(Y=!0,_=C.transparent,_<0||_>=V))throw"Transparent color index.";if((M!==0||Y||R!==0)&&(t[i++]=33,t[i++]=249,t[i++]=4,t[i++]=M<<2|(Y===!0?1:0),t[i++]=R&255,t[i++]=R>>8&255,t[i++]=_,t[i++]=0),t[i++]=44,t[i++]=m&255,t[i++]=m>>8&255,t[i++]=v&255,t[i++]=v>>8&255,t[i++]=w&255,t[i++]=w>>8&255,t[i++]=E&255,t[i++]=E>>8&255,t[i++]=I===!0?128|U-1:0,I===!0)for(let L=0,N=z.length;L<N;++L){let H=z[L];t[i++]=H>>16&255,t[i++]=H>>8&255,t[i++]=H&255}i=k(t,i,U<2?2:U,y)},this.end=function(){return x===!1&&(t[i++]=59,x=!0),i};function k(m,v,w,E){m[v++]=w;let y=v++,C=1<<w,I=C-1,z=C+1,V=z+1,U=w+1,R=0,M=0;function Y(H){for(;R>=H;)m[v++]=M&255,M>>=8,R-=8,v===y+256&&(m[y]=255,y=v++)}function _(H){M|=H<<R,R+=U,Y(8)}let L=E[0]&I,N={};_(C);for(let H=1,G=E.length;H<G;++H){let X=E[H]&I,F=L<<8|X,P=N[F];if(P===void 0){for(M|=L<<R,R+=U;R>=8;)m[v++]=M&255,M>>=8,R-=8,v===y+256&&(m[y]=255,y=v++);V===4096?(_(C),V=z+1,U=w+1,N={}):(V>=1<<U&&++U,N[F]=V++),L=X}else L=P}return _(L),_(z),Y(1),y+1===v?m[y]=0:(m[y]=v-y-1,m[v++]=0),v}}var Re=function(){},Fe=function(e){this.canvas=null,this.ctx=null,this.repeat=0,this.frames=[],this.numRenderedFrames=0,this.onRenderCompleteCallback=Re,this.onRenderProgressCallback=Re,this.workers=[],this.availableWorkers=[],this.generatingGIF=!1,this.options=e,this.initializeWebWorkers(e)};Fe.prototype={workerMethods:Ve(),initializeWebWorkers:function(e){let n=this,o=`${Ue.toString()}(${Ve.toString()}());`,i,a,l,s,c=-1,h="";for(s=e.numWorkers;++c<s;)i=r.createWebWorker(o),r.isObject(i)?(a=i.objectUrl,l=i.worker,n.workers.push({worker:l,objectUrl:a}),n.availableWorkers.push(l)):(h=i,r.webWorkerError=Boolean(i));this.workerError=h,this.canvas=j.createElement("canvas"),this.canvas.width=e.gifWidth,this.canvas.height=e.gifHeight,this.ctx=this.canvas.getContext("2d"),this.frames=[]},getWorker:function(){return this.availableWorkers.pop()},freeWorker:function(e){this.availableWorkers.push(e)},byteMap:function(){let t=[];for(let e=0;e<256;e++)t[e]=String.fromCharCode(e);return t}(),bufferToString:function(e){let n=e.length,o="",i=-1;for(;++i<n;)o+=this.byteMap[e[i]];return o},onFrameFinished:function(e){let n=this,o=n.frames,i=n.options,a=Boolean((i.images||[]).length),l=o.every(function(s){return!s.beingProcessed&&s.done});n.numRenderedFrames++,a&&e(n.numRenderedFrames/o.length),n.onRenderProgressCallback(n.numRenderedFrames*.75/o.length),l?n.generatingGIF||n.generateGIF(o,n.onRenderCompleteCallback):r.requestTimeout(function(){n.processNextFrame()},1)},processFrame:function(e){let n=this,o=this.options,i=o.progressCallback,a=o.sampleInterval,l=this.frames,s,c,h=function(){let m=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}).data;delete s.data,s.pixels=Array.prototype.slice.call(m.pixels),s.palette=Array.prototype.slice.call(m.palette),s.done=!0,s.beingProcessed=!1,n.freeWorker(c),n.onFrameFinished(i)};if(s=l[e],s.beingProcessed||s.done){this.onFrameFinished();return}s.sampleInterval=a,s.beingProcessed=!0,s.gifshot=!0,c=this.getWorker(),c?(c.onmessage=h,c.postMessage(s)):h({data:n.workerMethods.run(s)})},startRendering:function(e){this.onRenderCompleteCallback=e;for(let n=0;n<this.options.numWorkers&&n<this.frames.length;n++)this.processFrame(n)},processNextFrame:function(){let e=-1;for(let n=0;n<this.frames.length;n++){let o=this.frames[n];if(!o.done&&!o.beingProcessed){e=n;break}}e>=0&&this.processFrame(e)},generateGIF:function(e,n){let o=[],i={loop:this.repeat},a=this.options,l=a.interval,s=a.frameDuration,c=a.images,h=Boolean(c.length),x=a.gifHeight,k=a.gifWidth,m=new rt(o,k,x,i),v=this.onRenderProgressCallback,w=h?l*100:0,E,y;this.generatingGIF=!0,r.each(e,function(C,I){let z=I.palette;v(.75+.25*I.position*1/e.length);for(let V=0;V<s;V++)m.addFrame(0,0,k,x,I.pixels,{palette:z,delay:w})}),m.end(),v(1),this.frames=[],this.generatingGIF=!1,r.isFunction(n)&&(E=this.bufferToString(o),y=`data:image/gif;base64,${r.btoa(E)}`,n(y))},setRepeat:function(e){this.repeat=e},addFrame:function(e,n){n=r.isObject(n)?n:{};let o=this,i=o.ctx,a=o.options,l=a.gifWidth,s=a.gifHeight,c=r.getFontSize(n),h=n,x=h.filter,k=h.fontColor,m=h.fontFamily,v=h.fontWeight,w=h.gifHeight,E=h.gifWidth,y=h.text,C=h.textAlign,I=h.textBaseline,z=n.textXCoordinate?n.textXCoordinate:C==="left"?1:C==="right"?l:l/2,V=n.textYCoordinate?n.textYCoordinate:I==="top"?1:I==="center"?s/2:s,U=`${v} ${c} ${m}`,R;try{i.filter=x,i.drawImage(e,0,0,l,s),y&&(i.font=U,i.fillStyle=k,i.textAlign=C,i.textBaseline=I,i.fillText(y,z,V)),R=i.getImageData(0,0,l,s),o.addFrameImageData(R)}catch(M){return`${M}`}},addFrameImageData:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=this.frames,o=e.data;this.frames.push({data:o,width:e.width,height:e.height,palette:null,dithering:null,done:!1,beingProcessed:!1,position:n.length})},onRenderProgress:function(e){this.onRenderProgressCallback=e},isRendering:function(){return this.generatingGIF},getBase64GIF:function(e){let n=this,o=function(a){n.destroyWorkers(),r.requestTimeout(function(){e(a)},0)};n.startRendering(o)},destroyWorkers:function(){if(this.workerError)return;let e=this.workers;r.each(e,function(n,o){let i=o.worker,a=o.objectUrl;i.terminate(),r.URL.revokeObjectURL(a)})}};function st(t,e){t.getBase64GIF(function(n){e({error:!1,errorCode:"",errorMsg:"",image:n})})}function at(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=this,n=t.callback,o=t.images,i=t.options,a=t.imagesLength,l={getUserMedia:!0,"globalThis.URL":!0},s=q.validate(l),c=[],h=0,x,k;if(s.error)return n(s);k=new Fe(i),r.each(o,function(v,w){let E=w;r.isDrawable(E)?(i.crossOrigin&&(E.crossOrigin=i.crossOrigin),c[v]=E,h+=1,h===a&&m()):r.isString(E)&&(x=new Image,i.crossOrigin&&(x.crossOrigin=i.crossOrigin),function(y){w.text&&(y.text=w.text),y.onerror=function(C){let I;if(--a,a===0)return I={},I.error="None of the requested images was capable of being retrieved",n(I)},y.onload=function(C){w.text?c[v]={img:y,text:y.text}:c[v]=y,h+=1,h===a&&m(),r.removeElement(y)},y.src=E}(x),r.setCSSAttr(x,{position:"fixed",opacity:"0"}),j.body.appendChild(x))});function m(){r.each(c,function(v,w){w&&(w.text?k.addFrame(w.img,i,w.text):k.addFrame(w,i))}),st(k,n)}}var lt=function(){},ye={getGIF:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments[1];n=r.isFunction(n)?n:lt;let o=j.createElement("canvas"),i,a=e.images,l=Boolean(a.length),s=e.cameraStream,c=e.crop,h=e.filter,x=e.fontColor,k=e.fontFamily,m=e.fontWeight,v=e.keepCameraOn,w=e.numWorkers,E=e.progressCallback,y=e.saveRenderingContexts,C=e.savedRenderingContexts,I=e.text,z=e.textAlign,V=e.textBaseline,U=e.videoElement,R=e.videoHeight,M=e.videoWidth,Y=e.webcamVideoElement,_=Number(e.gifWidth),L=Number(e.gifHeight),N=Number(e.interval),H=Number(e.sampleInterval),G=l?0:N*1e3,X=[],F=C.length?C.length:e.numFrames,P=F,Q=new Fe(e),Z=r.getFontSize(e),ee=e.textXCoordinate?e.textXCoordinate:z==="left"?1:z==="right"?_:_/2,he=e.textYCoordinate?e.textYCoordinate:V==="top"?1:V==="center"?L/2:L,pe=`${m} ${Z} ${k}`,te=c?Math.floor(c.scaledWidth/2):0,ie=c?M-c.scaledWidth:0,ne=c?Math.floor(c.scaledHeight/2):0,oe=c?R-c.scaledHeight:0,be=function re(){let ae=P-1;C.length?(i.putImageData(C[F-P],0,0),J()):le();function le(){try{ie>M&&(ie=M),oe>R&&(oe=R),te<0&&(te=0),ne<0&&(ne=0),i.filter=h,i.drawImage(U,te,ne,ie,oe,0,0,_,L),J()}catch(u){if(u.name==="NS_ERROR_NOT_AVAILABLE")r.requestTimeout(le,100);else throw u}}function J(){let u;y&&X.push(i.getImageData(0,0,_,L)),I&&(i.font=pe,i.fillStyle=x,i.textAlign=z,i.textBaseline=V,i.fillText(I,ee,he)),u=i.getImageData(0,0,_,L),Q.addFrameImageData(u),P=ae,E((F-P)/F),ae>0&&r.requestTimeout(re,G),P||Q.getBase64GIF(function(p){n({error:!1,errorCode:"",errorMsg:"",image:p,cameraStream:s,videoElement:U,webcamVideoElement:Y,savedRenderingContexts:X,keepCameraOn:v})})}};F=F!==void 0?F:10,N=N!==void 0?N:.1,o.width=_,o.height=L,i=o.getContext("2d"),function re(){if(!C.length&&U.currentTime===0){r.requestTimeout(re,100);return}be()}()},getCropDimensions:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.videoWidth,o=e.videoHeight,i=e.gifWidth,a=e.gifHeight,l={width:0,height:0,scaledWidth:0,scaledHeight:0};return n>o?(l.width=Math.round(n*(a/o))-i,l.scaledWidth=Math.round(l.width*(o/a))):(l.height=Math.round(o*(i/n))-a,l.scaledHeight=Math.round(l.height*(n/i))),l}},B={loadedData:!1,defaultVideoDimensions:{width:640,height:480},findVideoSize:function t(e){t.attempts=t.attempts||0;let n=e.cameraStream,o=e.completedCallback,i=e.videoElement;i&&(i.videoWidth>0&&i.videoHeight>0?(i.removeEventListener("loadeddata",B.findVideoSize),o({videoElement:i,cameraStream:n,videoWidth:i.videoWidth,videoHeight:i.videoHeight})):t.attempts<10?(t.attempts+=1,r.requestTimeout(function(){B.findVideoSize(e)},400)):o({videoElement:i,cameraStream:n,videoWidth:B.defaultVideoDimensions.width,videoHeight:B.defaultVideoDimensions.height}))},onStreamingTimeout:function(e){r.isFunction(e)&&e({error:!0,errorCode:"getUserMedia",errorMsg:"There was an issue with the getUserMedia API - Timed out while trying to start streaming",image:null,cameraStream:{}})},stream:function(e){let n=r.isArray(e.existingVideo)?e.existingVideo[0]:e.existingVideo,o=e.cameraStream,i=e.completedCallback,a=e.streamedCallback,l=e.videoElement;if(r.isFunction(a)&&a(),n){if(r.isString(n))l.src=n,l.innerHTML=`<source src="${n}" type="video/${r.getExtension(n)}" />`;else if(n instanceof Blob){try{l.src=r.URL.createObjectURL(n)}catch{}l.innerHTML=`<source src="${n}" type="${n.type}" />`}}else if(l.mozSrcObject)l.mozSrcObject=o;else if(r.URL)try{l.srcObject=o,l.src=r.URL.createObjectURL(o)}catch{l.srcObject=o}l.play(),r.requestTimeout(function s(){s.count=s.count||0,B.loadedData===!0?(B.findVideoSize({videoElement:l,cameraStream:o,completedCallback:i}),B.loadedData=!1):(s.count+=1,s.count>10?B.findVideoSize({videoElement:l,cameraStream:o,completedCallback:i}):s())},0)},startStreaming:function(e){let n=r.isFunction(e.error)?e.error:r.noop,o=r.isFunction(e.streamed)?e.streamed:r.noop,i=r.isFunction(e.completed)?e.completed:r.noop,a=e.crossOrigin,l=e.existingVideo,s=e.lastCameraStream,c=e.options,h=e.webcamVideoElement,x=r.isElement(l)?l:h||j.createElement("video"),k=void 0;a&&(x.crossOrigin=c.crossOrigin),x.autoplay=!0,x.loop=!0,x.muted=!0,x.addEventListener("loadeddata",function(m){B.loadedData=!0,c.offset&&(x.currentTime=c.offset)}),l?B.stream({videoElement:x,existingVideo:l,completedCallback:i}):s?B.stream({videoElement:x,cameraStream:s,streamedCallback:o,completedCallback:i}):r.getUserMedia({video:!0},function(m){B.stream({videoElement:x,cameraStream:m,streamedCallback:o,completedCallback:i})},n)},startVideoStreaming:function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=n.timeout!==void 0?n.timeout:0,i=n.callback,a=n.webcamVideoElement,l;o>0&&(l=r.requestTimeout(function(){B.onStreamingTimeout(i)},1e4)),B.startStreaming({error:function(){i({error:!0,errorCode:"getUserMedia",errorMsg:"There was an issue with the getUserMedia API - the user probably denied permission",image:null,cameraStream:{}})},streamed:function(){clearTimeout(l)},completed:function(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},h=c.cameraStream,x=c.videoElement,k=c.videoHeight,m=c.videoWidth;e({cameraStream:h,videoElement:x,videoHeight:k,videoWidth:m})},lastCameraStream:n.lastCameraStream,webcamVideoElement:a,crossOrigin:n.crossOrigin,options:n})},stopVideoStreaming:function(e){e=r.isObject(e)?e:{};let n=e,o=n.keepCameraOn,i=n.videoElement,a=n.webcamVideoElement,l=e.cameraStream||{},s=l.getTracks?l.getTracks()||[]:[],c=Boolean(s.length),h=s[0];!o&&c&&r.isFunction(h.stop)&&h.stop(),r.isElement(i)&&!a&&(i.pause(),r.isFunction(r.URL.revokeObjectURL)&&!r.webWorkerError&&i.src&&r.URL.revokeObjectURL(i.src),r.removeElement(i))}};function _e(t){t=r.isObject(t)?t:{},B.stopVideoStreaming(t)}function Le(t,e){let n=t.options||{},o=n.images,i=n.video,a=Number(n.gifWidth),l=Number(n.gifHeight),s=Number(n.numFrames),c=t.cameraStream,h=t.videoElement,x=t.videoWidth,k=t.videoHeight,m=ye.getCropDimensions({videoWidth:x,videoHeight:k,gifHeight:l,gifWidth:a}),v=e;n.crop=m,n.videoElement=h,n.videoWidth=x,n.videoHeight=k,n.cameraStream=c,r.isElement(h)&&(h.width=a+m.width,h.height=l+m.height,n.webcamVideoElement||(r.setCSSAttr(h,{position:"fixed",opacity:"0"}),j.body.appendChild(h)),h.play(),ye.getGIF(n,function(w){(!o||!o.length)&&(!i||!i.length)&&_e(w),v(w)}))}function ct(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.callback,n=t.existingVideo,o=t.options,i={getUserMedia:!0,"globalThis.URL":!0},a=q.validate(i),l=0,s,c,h=void 0,x=void 0;if(a.error)return e(a);if(r.isElement(n)&&n.src){if(c=n.src,s=r.getExtension(c),!r.isSupported.videoCodecs[s])return e(q.messages.videoCodecs)}else r.isArray(n)&&r.each(n,function(k,m){if(m instanceof Blob?s=m.type.substr(m.type.lastIndexOf("/")+1,m.length):s=m.substr(m.lastIndexOf(".")+1,m.length),r.isSupported.videoCodecs[s])return n=m,!1});B.startStreaming({completed:function(m){m.options=o||{},Le(m,e)},existingVideo:n,crossOrigin:o.crossOrigin,options:o})}function dt(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.callback,n=t.lastCameraStream,o=t.options,i=t.webcamVideoElement;if(!Me())return e(q.validate());if(o.savedRenderingContexts.length){ye.getGIF(o,function(a){e(a)});return}B.startVideoStreaming(function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};a.options=o||{},Le(a,e)},{lastCameraStream:n,callback:e,webcamVideoElement:i,crossOrigin:o.crossOrigin})}function Be(t,e){if(e=r.isFunction(t)?t:e,t=r.isObject(t)?t:{},!r.isFunction(e))return;let n=r.normalizeOptions(Ce,t)||{},o=t.cameraStream,i=n.images,a=i?i.length:0,l=n.video,s=n.webcamVideoElement;n=r.normalizeOptions(n,{gifWidth:Math.floor(n.gifWidth),gifHeight:Math.floor(n.gifHeight)}),a?at({images:i,imagesLength:a,callback:e,options:n}):l?ct({existingVideo:l,callback:e,options:n}):dt({lastCameraStream:o,callback:e,webcamVideoElement:s,options:n})}function ft(t,e){if(e=r.isFunction(t)?t:e,t=r.isObject(t)?t:{},!r.isFunction(e))return;let n=r.normalizeOptions(Ce,t),o=r.normalizeOptions(n,{interval:.1,numFrames:1,gifWidth:Math.floor(n.gifWidth),gifHeight:Math.floor(n.gifHeight)});Be(o,e)}var mt={utils:Je,error:et,defaultOptions:tt,createGIF:Be,takeSnapShot:ft,stopVideoStreaming:_e,isSupported:it,isWebCamGIFSupported:Me,isExistingVideoGIFSupported:ot,isExistingImagesGIFSupported:nt,VERSION:"0.4.5"},He=mt;var ut={source:"images",width:200,height:200,crossOrigin:"Anonymous",progressCallback:t=>{},completeCallback:()=>{},numWorkers:2,sampleInterval:10,interval:.1,offset:null,numFrames:10,frameDuration:1,filter:"",waterMark:null,waterMarkHeight:null,waterMarkWidth:null,waterMarkXCoordinate:1,waterMarkYCoordinate:1,text:"",showFrameText:!0,fontWeight:"normal",fontSize:"16px",minFontSize:"10px",resizeFont:!1,fontFamily:"sans-serif",fontColor:"#ffffff",textAlign:"center",textBaseline:"bottom",textXCoordinate:null,textYCoordinate:null,webcamVideoElement:null,keepCameraOn:!1,cameraStream:null,saveRenderingContexts:!1,savedRenderingContexts:[]},K=class{static get properties(){return{id:"gif",name:"GIF",extensions:["gif"],mimeTypes:["image/gif"],builder:K,options:ut}}constructor(e){this.options={...e},this.source=e.source,delete e.source,this.files=[],this.gifshot=He}async initialize(e){}async add(e){await this.initialize(),this.files.push(e)}async build(){switch(await this.initialize(),this._cleanOptions(this.options),this.source){case"images":this.options.images=this.files;break;case"video":this.options.video=this.files;break;case"webcam":ze(this.files.length===0);break;default:throw new Error("GIFBuilder: invalid source")}return await this._createGIF()}async _createGIF(){return new Promise((e,n)=>{this.gifshot.createGIF(this.options,o=>{if(o.error){n(o.errorMsg);return}e(o.image)})})}_cleanOptions(e){(e.video||e.images||e.gifWidth||e.gifHeight)&&console.warn("GIFBuilder: ignoring options"),delete e.video,delete e.images,e.gifWidth=e.width,e.gifHeight=e.height,delete e.width,delete e.height}};return Xe(se);})();
|
|
7
|
+
"use strict";var __exports__=(()=>{var Ge=Object.create;var de=Object.defineProperty;var De=Object.getOwnPropertyDescriptor;var je=Object.getOwnPropertyNames;var Ne=Object.getPrototypeOf,$e=Object.prototype.hasOwnProperty;var fe=(t,e,n)=>()=>{if(n)throw n[0];try{return t&&(e=t(t=0)),e}catch(o){throw n=[o],o}};var qe=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(n){throw e=0,n}},Te=(t,e)=>{for(var n in e)de(t,n,{get:e[n],enumerable:!0})},ce=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of je(e))!$e.call(t,i)&&i!==n&&de(t,i,{get:()=>e[i],enumerable:!(o=De(e,i))||o.enumerable});return t},me=(t,e,n)=>(ce(t,e,"default"),n&&ce(n,e,"default")),Xe=(t,e,n)=>(n=t!=null?Ge(Ne(t)):{},ce(e||!t||!t.__esModule?de(n,"default",{value:t,enumerable:!0}):n,t)),Ye=t=>ce(de({},"__esModule",{value:!0}),t);var Ee=qe((pt,We)=>{We.exports=globalThis.loaders});var ue,ve=fe(()=>{"use strict";ue={name:"Video",id:"video",module:"video",encoding:"video",format:"video",extensions:["mp4"],mimeTypes:["video/mp4"],category:"video",binary:!0}});async function xe(t){let e=document.createElement("video");return e.src=URL.createObjectURL(t),e}async function we(t){return await xe(new Blob([t]))}var Ie=fe(()=>{"use strict"});var Ae={};Te(Ae,{VideoLoaderWithParser:()=>Ke});var yt,Qe,Ke,ze=fe(()=>{"use strict";Ie();ye();({preload:yt,...Qe}=ge),Ke={...Qe,parse:we,parseBlob:xe}});async function Je(){let{VideoLoaderWithParser:t}=await Promise.resolve().then(()=>(ze(),Ae));return t}var Ze,ge,ye=fe(()=>{"use strict";ve();Ze="5.0.0-alpha.3";ge={dataType:null,batchType:null,...ue,version:Ze,options:{video:{}},preload:Je}});var se={};Te(se,{GIFBuilder:()=>re,VideoFormat:()=>ue,VideoLoader:()=>ge});me(se,Xe(Ee(),1));ve();ye();function Ve(t,e){if(!t)throw new Error(e)}var j=globalThis.document||{},r={URL:globalThis.URL||globalThis.webkitURL||globalThis.mozURL||globalThis.msURL,getUserMedia:(function(){if(!globalThis.navigator)return globalThis.navigator;let t=globalThis.navigator.getUserMedia||globalThis.navigator.webkitGetUserMedia||globalThis.navigator.mozGetUserMedia||globalThis.navigator.msGetUserMedia;return t&&t.bind(globalThis.navigator)})(),requestAnimFrame:globalThis.requestAnimationFrame||globalThis.webkitRequestAnimationFrame||globalThis.mozRequestAnimationFrame||globalThis.oRequestAnimationFrame||globalThis.msRequestAnimationFrame,requestTimeout:function(e,n){if(e=e||r.noop,n=n||0,!r.requestAnimFrame)return setTimeout(e,n);let o=new Date().getTime(),i=new Object,a=r.requestAnimFrame,l=function s(){new Date().getTime()-o>=n?e.call():i.value=a(s)};return i.value=a(l),i},Blob:globalThis.Blob||globalThis.BlobBuilder||globalThis.WebKitBlobBuilder||globalThis.MozBlobBuilder||globalThis.MSBlobBuilder,btoa:(function(){let t=globalThis.btoa||function(e){let n="",o=0,i=e.length,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l,s,d,h,x,k,m;for(;o<i;)l=e.charCodeAt(o++),s=e.charCodeAt(o++),d=e.charCodeAt(o++),h=l>>2,x=(l&3)<<4|s>>4,k=(s&15)<<2|d>>6,m=d&63,Number.isNaN(s)?k=m=64:Number.isNaN(d)&&(m=64),n=n+a.charAt(h)+a.charAt(x)+a.charAt(k)+a.charAt(m);return n};return t?t.bind(globalThis):r.noop})(),isObject:function(e){return e&&Object.prototype.toString.call(e)==="[object Object]"},isEmptyObject:function(e){return r.isObject(e)&&!Object.keys(e).length},isArray:function(e){return e&&Array.isArray(e)},isFunction:function(e){return e&&typeof e=="function"},isElement:function(e){return e&&e.nodeType===1},isImageBitmap:function(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap},isDrawable:function(e){return r.isElement(e)||r.isImageBitmap(e)},isString:function(e){return typeof e=="string"||Object.prototype.toString.call(e)==="[object String]"},isSupported:{canvas:function(){let e=j.createElement("canvas");return e&&e.getContext&&e.getContext("2d")},webworkers:function(){return globalThis.Worker},blob:function(){return r.Blob},Uint8Array:function(){return globalThis.Uint8Array},Uint32Array:function(){return globalThis.Uint32Array},videoCodecs:(function(){let t=j.createElement("video"),e={mp4:!1,h264:!1,ogv:!1,ogg:!1,webm:!1};try{t&&t.canPlayType&&(e.mp4=t.canPlayType('video/mp4; codecs="mp4v.20.8"')!=="",e.h264=(t.canPlayType('video/mp4; codecs="avc1.42E01E"')||t.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"'))!=="",e.ogv=t.canPlayType('video/ogg; codecs="theora"')!=="",e.ogg=t.canPlayType('video/ogg; codecs="theora"')!=="",e.webm=t.canPlayType('video/webm; codecs="vp8, vorbis"')!==-1)}catch{}return e})()},noop:function(){},each:function(e,n){let o,i;if(r.isArray(e))for(o=-1,i=e.length;++o<i&&n(o,e[o])!==!1;);else if(r.isObject(e)){for(o in e)if(e.hasOwnProperty(o)&&n(o,e[o])===!1)break}},normalizeOptions:function(e,n){if(!r.isObject(e)||!r.isObject(n)||!Object.keys)return;let o={};return r.each(e,function(i,a){o[i]=e[i]}),r.each(n,function(i,a){let l=n[i];r.isObject(l)&&e[i]?o[i]=r.normalizeOptions(e[i],l):o[i]=l}),o},setCSSAttr:function(e,n,o){r.isElement(e)&&(r.isString(n)&&r.isString(o)?e.style[n]=o:r.isObject(n)&&r.each(n,function(i,a){e.style[i]=a}))},removeElement:function(e){r.isElement(e)&&e.parentNode&&e.parentNode.removeChild(e)},createWebWorker:function(e){if(!r.isString(e))return{};try{let n=new r.Blob([e],{type:"text/javascript"}),o=r.URL.createObjectURL(n),i=new Worker(o);return{objectUrl:o,worker:i}}catch(n){return`${n}`}},getExtension:function(e){return e.substr(e.lastIndexOf(".")+1,e.length)},getFontSize:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!j.body||e.resizeFont===!1)return e.fontSize;let n=e.text,o=e.gifWidth,i=parseInt(e.fontSize,10),a=parseInt(e.minFontSize,10),l=j.createElement("div"),s=j.createElement("span");for(l.setAttribute("width",o),l.appendChild(s),s.innerHTML=n,s.style.fontSize=`${i}px`,s.style.textIndent="-9999px",s.style.visibility="hidden",j.body.appendChild(s);s.offsetWidth>o&&i>=a;)s.style.fontSize=`${--i}px`;return j.body.removeChild(s),`${i}px`},webWorkerError:!1},et=Object.freeze({default:r}),q={validate:function(e){e=r.isObject(e)?e:{};let n={};return r.each(q.validators,function(o,i){let a=i.errorCode;if(!e[a]&&!i.condition)return n=i,n.error=!0,!1}),delete n.condition,n},isValid:function(e){return q.validate(e).error!==!0},validators:[{condition:r.isFunction(r.getUserMedia),errorCode:"getUserMedia",errorMsg:"The getUserMedia API is not supported in your browser"},{condition:r.isSupported.canvas(),errorCode:"canvas",errorMsg:"Canvas elements are not supported in your browser"},{condition:r.isSupported.webworkers(),errorCode:"webworkers",errorMsg:"The Web Workers API is not supported in your browser"},{condition:r.isFunction(r.URL),errorCode:"globalThis.URL",errorMsg:"The globalThis.URL API is not supported in your browser"},{condition:r.isSupported.blob(),errorCode:"globalThis.Blob",errorMsg:"The globalThis.Blob File API is not supported in your browser"},{condition:r.isSupported.Uint8Array(),errorCode:"globalThis.Uint8Array",errorMsg:"The globalThis.Uint8Array function constructor is not supported in your browser"},{condition:r.isSupported.Uint32Array(),errorCode:"globalThis.Uint32Array",errorMsg:"The globalThis.Uint32Array function constructor is not supported in your browser"}],messages:{videoCodecs:{errorCode:"videocodec",errorMsg:"The video codec you are trying to use is not supported in your browser"}}},tt=Object.freeze({default:q}),Oe=function(){},Fe={sampleInterval:10,numWorkers:2,filter:"",gifWidth:200,gifHeight:200,interval:.1,numFrames:10,frameDuration:1,keepCameraOn:!1,images:[],video:null,webcamVideoElement:null,cameraStream:null,text:"",fontWeight:"normal",fontSize:"16px",minFontSize:"10px",resizeFont:!1,fontFamily:"sans-serif",fontColor:"#ffffff",textAlign:"center",textBaseline:"bottom",textXCoordinate:null,textYCoordinate:null,progressCallback:Oe,completeCallback:Oe,saveRenderingContexts:!1,savedRenderingContexts:[],crossOrigin:"Anonymous"},it=Object.freeze({default:Fe});function nt(){return q.isValid()}function Ue(){return q.isValid()}function ot(){let t={getUserMedia:!0};return q.isValid(t)}function rt(t){let e=!1;if(r.isArray(t)&&t.length){if(r.each(t,function(n,o){r.isSupported.videoCodecs[o]&&(e=!0)}),!e)return!1}else if(r.isString(t)&&t.length&&!r.isSupported.videoCodecs[t])return!1;return q.isValid({getUserMedia:!0})}function _e(){let M,H,D,X,F,P=[],Q=[],K=[],J=[];function he(u,p,W){let g,b;for(H=u,D=p,X=W,F=new Array(256),g=0;g<256;g++)F[g]=new Array(4),b=F[g],b[0]=b[1]=b[2]=(g<<12)/256|0,K[g]=65536/256|0,Q[g]=0}function pe(){let u=[],p=new Array(256);for(let g=0;g<256;g++)p[F[g][3]]=g;let W=0;for(let g=0;g<256;g++){let b=p[g];u[W++]=F[b][0],u[W++]=F[b][1],u[W++]=F[b][2]}return u}function ee(){let u,p,W,g,b,c,f,S;for(f=0,S=0,u=0;u<256;u++){for(b=F[u],W=u,g=b[1],p=u+1;p<256;p++)c=F[p],c[1]<g&&(W=p,g=c[1]);if(c=F[W],u!==W&&(p=c[0],c[0]=b[0],b[0]=p,p=c[1],c[1]=b[1],b[1]=p,p=c[2],c[2]=b[2],b[2]=p,p=c[3],c[3]=b[3],b[3]=p),g!==f){for(P[f]=S+u>>1,p=f+1;p<g;p++)P[p]=u;f=g,S=u}}for(P[f]=S+255>>1,p=f+1;p<256;p++)P[p]=255}function te(){let u,p,W,g,b,c,f,S,T,V,$,I,G,ke;for(D<1509&&(X=1),M=30+(X-1)/3,I=H,G=0,ke=D,$=D/(3*X),V=$/100|0,S=1024,c=2048,f=c>>6,f<=1&&(f=0),u=0;u<f;u++)J[u]=S*((f*f-u*u)*256/(f*f));for(D<1509?T=3:D%499!==0?T=3*499:D%491!==0?T=3*491:D%487!==0?T=3*487:T=3*503,u=0;u<$;)if(W=(I[G+0]&255)<<4,g=(I[G+1]&255)<<4,b=(I[G+2]&255)<<4,p=le(W,g,b),ae(S,p,W,g,b),f!==0&&oe(f,p,W,g,b),G+=T,G>=ke&&(G-=D),u++,V===0&&(V=1),u%V===0)for(S-=S/M,c-=c/30,f=c>>6,f<=1&&(f=0),p=0;p<f;p++)J[p]=S*((f*f-p*p)*256/(f*f))}function ie(u,p,W){let g,b,c,f,S,T,V;for(S=1e3,V=-1,g=P[p],b=g-1;g<256||b>=0;)g<256&&(T=F[g],c=T[1]-p,c>=S?g=256:(g++,c<0&&(c=-c),f=T[0]-u,f<0&&(f=-f),c+=f,c<S&&(f=T[2]-W,f<0&&(f=-f),c+=f,c<S&&(S=c,V=T[3])))),b>=0&&(T=F[b],c=p-T[1],c>=S?b=-1:(b--,c<0&&(c=-c),f=T[0]-u,f<0&&(f=-f),c+=f,c<S&&(f=T[2]-W,f<0&&(f=-f),c+=f,c<S&&(S=c,V=T[3]))));return V}function ne(){return te(),be(),ee(),pe()}function be(){let u,p;for(u=0;u<256;u++)F[u][0]>>=4,F[u][1]>>=4,F[u][2]>>=4,F[u][3]=u}function oe(u,p,W,g,b){let c,f,S,T,V,$,I;for(S=p-u,S<-1&&(S=-1),T=p+u,T>256&&(T=256),c=p+1,f=p-1,$=1;c<T||f>S;){if(V=J[$++],c<T){I=F[c++];try{I[0]-=V*(I[0]-W)/262144|0,I[1]-=V*(I[1]-g)/262144|0,I[2]-=V*(I[2]-b)/262144|0}catch{}}if(f>S){I=F[f--];try{I[0]-=V*(I[0]-W)/262144|0,I[1]-=V*(I[1]-g)/262144|0,I[2]-=V*(I[2]-b)/262144|0}catch{}}}}function ae(u,p,W,g,b){let c=F[p],f=u/1024;c[0]-=f*(c[0]-W)|0,c[1]-=f*(c[1]-g)|0,c[2]-=f*(c[2]-b)|0}function le(u,p,W){let g,b,c,f,S,T,V,$,I,G;for($=~(1<<31),I=$,T=-1,V=T,g=0;g<256;g++)G=F[g],b=G[0]-u,b<0&&(b=-b),c=G[1]-p,c<0&&(c=-c),b+=c,c=G[2]-W,c<0&&(c=-c),b+=c,b<$&&($=b,T=g),f=b-(Q[g]>>12),f<I&&(I=f,V=g),S=K[g]>>10,K[g]-=S,Q[g]+=S<<10;return K[T]+=64,Q[T]-=65536,V}he.apply(this,arguments);let Z={};return Z.map=ie,Z.process=ne,Z}function Re(){let t=this;try{globalThis.onmessage=function(n){let o=n.data||{},i;o.gifshot&&(i=e.run(o),postMessage(i))}}catch{}var e={dataToRGB:function(o,i,a){let l=i*a*4,s=0,d=[];for(;s<l;)d.push(o[s++]),d.push(o[s++]),d.push(o[s++]),s++;return d},componentizedPaletteToArray:function(o){o=o||[];let i=[];for(let a=0;a<o.length;a+=3){let l=o[a],s=o[a+1],d=o[a+2];i.push(l<<16|s<<8|d)}return i},processFrameWithQuantizer:function(o,i,a,l){let s=this.dataToRGB(o,i,a),d=new _e(s,s.length,l),h=d.process(),x=new Uint32Array(this.componentizedPaletteToArray(h)),k=i*a,m=new Uint8Array(k),v=0;for(let w=0;w<k;w++){let E=s[v++],y=s[v++],C=s[v++];m[w]=d.map(E,y,C)}return{pixels:m,palette:x}},run:function(o){o=o||{};let i=o,a=i.height,l=i.palette,s=i.sampleInterval,d=i.width,h=o.data;return this.processFrameWithQuantizer(h,d,a,s)}};return e}function st(t,e,n,o){let i=0;o=o===void 0?{}:o;let a=o.loop===void 0?null:o.loop,l=o.palette===void 0?null:o.palette;if(e<=0||n<=0||e>65535||n>65535)throw"Width/Height invalid.";function s(m){let v=m.length;if(v<2||v>256||v&v-1)throw"Invalid code/color length, must be power of 2 and 2 .. 256.";return v}t[i++]=71,t[i++]=73,t[i++]=70,t[i++]=56,t[i++]=57,t[i++]=97;let d=0,h=0;if(t[i++]=e&255,t[i++]=e>>8&255,t[i++]=n&255,t[i++]=n>>8&255,t[i++]=(l!==null?128:0)|d,t[i++]=h,t[i++]=0,a!==null){if(a<0||a>65535)throw"Loop count invalid.";t[i++]=33,t[i++]=255,t[i++]=11,t[i++]=78,t[i++]=69,t[i++]=84,t[i++]=83,t[i++]=67,t[i++]=65,t[i++]=80,t[i++]=69,t[i++]=50,t[i++]=46,t[i++]=48,t[i++]=3,t[i++]=1,t[i++]=a&255,t[i++]=a>>8&255,t[i++]=0}let x=!1;this.addFrame=function(m,v,w,E,y,C){if(x===!0&&(--i,x=!1),C=C===void 0?{}:C,m<0||v<0||m>65535||v>65535)throw"x/y invalid.";if(w<=0||E<=0||w>65535||E>65535)throw"Width/Height invalid.";if(y.length<w*E)throw"Not enough pixels for the frame size.";let A=!0,z=C.palette;if(z==null&&(A=!1,z=l),z==null)throw"Must supply either a local or global palette.";let O=s(z),U=0;for(O>>=1;O;)++U,O>>=1;O=1<<U;let R=C.delay===void 0?0:C.delay,M=C.disposal===void 0?0:C.disposal;if(M<0||M>3)throw"Disposal out of range.";let Y=!1,_=0;if(C.transparent!==void 0&&C.transparent!==null&&(Y=!0,_=C.transparent,_<0||_>=O))throw"Transparent color index.";if((M!==0||Y||R!==0)&&(t[i++]=33,t[i++]=249,t[i++]=4,t[i++]=M<<2|(Y===!0?1:0),t[i++]=R&255,t[i++]=R>>8&255,t[i++]=_,t[i++]=0),t[i++]=44,t[i++]=m&255,t[i++]=m>>8&255,t[i++]=v&255,t[i++]=v>>8&255,t[i++]=w&255,t[i++]=w>>8&255,t[i++]=E&255,t[i++]=E>>8&255,t[i++]=A===!0?128|U-1:0,A===!0)for(let L=0,N=z.length;L<N;++L){let H=z[L];t[i++]=H>>16&255,t[i++]=H>>8&255,t[i++]=H&255}i=k(t,i,U<2?2:U,y)},this.end=function(){return x===!1&&(t[i++]=59,x=!0),i};function k(m,v,w,E){m[v++]=w;let y=v++,C=1<<w,A=C-1,z=C+1,O=z+1,U=w+1,R=0,M=0;function Y(H){for(;R>=H;)m[v++]=M&255,M>>=8,R-=8,v===y+256&&(m[y]=255,y=v++)}function _(H){M|=H<<R,R+=U,Y(8)}let L=E[0]&A,N={};_(C);for(let H=1,D=E.length;H<D;++H){let X=E[H]&A,F=L<<8|X,P=N[F];if(P===void 0){for(M|=L<<R,R+=U;R>=8;)m[v++]=M&255,M>>=8,R-=8,v===y+256&&(m[y]=255,y=v++);O===4096?(_(C),O=z+1,U=w+1,N={}):(O>=1<<U&&++U,N[F]=O++),L=X}else L=P}return _(L),_(z),Y(1),y+1===v?m[y]=0:(m[y]=v-y-1,m[v++]=0),v}}var Me=function(){},Se=function(e){this.canvas=null,this.ctx=null,this.repeat=0,this.frames=[],this.numRenderedFrames=0,this.onRenderCompleteCallback=Me,this.onRenderProgressCallback=Me,this.workers=[],this.availableWorkers=[],this.generatingGIF=!1,this.options=e,this.initializeWebWorkers(e)};Se.prototype={workerMethods:Re(),initializeWebWorkers:function(e){let n=this,o=`${_e.toString()}(${Re.toString()}());`,i,a,l,s,d=-1,h="";for(s=e.numWorkers;++d<s;)i=r.createWebWorker(o),r.isObject(i)?(a=i.objectUrl,l=i.worker,n.workers.push({worker:l,objectUrl:a}),n.availableWorkers.push(l)):(h=i,r.webWorkerError=!!i);this.workerError=h,this.canvas=j.createElement("canvas"),this.canvas.width=e.gifWidth,this.canvas.height=e.gifHeight,this.ctx=this.canvas.getContext("2d"),this.frames=[]},getWorker:function(){return this.availableWorkers.pop()},freeWorker:function(e){this.availableWorkers.push(e)},byteMap:(function(){let t=[];for(let e=0;e<256;e++)t[e]=String.fromCharCode(e);return t})(),bufferToString:function(e){let n=e.length,o="",i=-1;for(;++i<n;)o+=this.byteMap[e[i]];return o},onFrameFinished:function(e){let n=this,o=n.frames,a=!!(n.options.images||[]).length,l=o.every(function(s){return!s.beingProcessed&&s.done});n.numRenderedFrames++,a&&e(n.numRenderedFrames/o.length),n.onRenderProgressCallback(n.numRenderedFrames*.75/o.length),l?n.generatingGIF||n.generateGIF(o,n.onRenderCompleteCallback):r.requestTimeout(function(){n.processNextFrame()},1)},processFrame:function(e){let n=this,o=this.options,i=o.progressCallback,a=o.sampleInterval,l=this.frames,s,d,h=function(){let m=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}).data;delete s.data,s.pixels=Array.prototype.slice.call(m.pixels),s.palette=Array.prototype.slice.call(m.palette),s.done=!0,s.beingProcessed=!1,n.freeWorker(d),n.onFrameFinished(i)};if(s=l[e],s.beingProcessed||s.done){this.onFrameFinished();return}s.sampleInterval=a,s.beingProcessed=!0,s.gifshot=!0,d=this.getWorker(),d?(d.onmessage=h,d.postMessage(s)):h({data:n.workerMethods.run(s)})},startRendering:function(e){this.onRenderCompleteCallback=e;for(let n=0;n<this.options.numWorkers&&n<this.frames.length;n++)this.processFrame(n)},processNextFrame:function(){let e=-1;for(let n=0;n<this.frames.length;n++){let o=this.frames[n];if(!o.done&&!o.beingProcessed){e=n;break}}e>=0&&this.processFrame(e)},generateGIF:function(e,n){let o=[],i={loop:this.repeat},a=this.options,l=a.interval,s=a.frameDuration,h=!!a.images.length,x=a.gifHeight,k=a.gifWidth,m=new st(o,k,x,i),v=this.onRenderProgressCallback,w=h?l*100:0,E,y;this.generatingGIF=!0,r.each(e,function(C,A){let z=A.palette;v(.75+.25*A.position*1/e.length);for(let O=0;O<s;O++)m.addFrame(0,0,k,x,A.pixels,{palette:z,delay:w})}),m.end(),v(1),this.frames=[],this.generatingGIF=!1,r.isFunction(n)&&(E=this.bufferToString(o),y=`data:image/gif;base64,${r.btoa(E)}`,n(y))},setRepeat:function(e){this.repeat=e},addFrame:function(e,n){n=r.isObject(n)?n:{};let o=this,i=o.ctx,a=o.options,l=a.gifWidth,s=a.gifHeight,d=r.getFontSize(n),h=n,x=h.filter,k=h.fontColor,m=h.fontFamily,v=h.fontWeight,w=h.gifHeight,E=h.gifWidth,y=h.text,C=h.textAlign,A=h.textBaseline,z=n.textXCoordinate?n.textXCoordinate:C==="left"?1:C==="right"?l:l/2,O=n.textYCoordinate?n.textYCoordinate:A==="top"?1:A==="center"?s/2:s,U=`${v} ${d} ${m}`,R;try{i.filter=x,i.drawImage(e,0,0,l,s),y&&(i.font=U,i.fillStyle=k,i.textAlign=C,i.textBaseline=A,i.fillText(y,z,O)),R=i.getImageData(0,0,l,s),o.addFrameImageData(R)}catch(M){return`${M}`}},addFrameImageData:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=this.frames,o=e.data;this.frames.push({data:o,width:e.width,height:e.height,palette:null,dithering:null,done:!1,beingProcessed:!1,position:n.length})},onRenderProgress:function(e){this.onRenderProgressCallback=e},isRendering:function(){return this.generatingGIF},getBase64GIF:function(e){let n=this,o=function(a){n.destroyWorkers(),r.requestTimeout(function(){e(a)},0)};n.startRendering(o)},destroyWorkers:function(){if(this.workerError)return;let e=this.workers;r.each(e,function(n,o){let i=o.worker,a=o.objectUrl;i.terminate(),r.URL.revokeObjectURL(a)})}};function at(t,e){t.getBase64GIF(function(n){e({error:!1,errorCode:"",errorMsg:"",image:n})})}function lt(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=this,n=t.callback,o=t.images,i=t.options,a=t.imagesLength,l={getUserMedia:!0,"globalThis.URL":!0},s=q.validate(l),d=[],h=0,x,k;if(s.error)return n(s);k=new Se(i),r.each(o,function(v,w){let E=w;r.isDrawable(E)?(i.crossOrigin&&(E.crossOrigin=i.crossOrigin),d[v]=E,h+=1,h===a&&m()):r.isString(E)&&(x=new Image,i.crossOrigin&&(x.crossOrigin=i.crossOrigin),(function(y){w.text&&(y.text=w.text),y.onerror=function(C){let A;if(--a,a===0)return A={},A.error="None of the requested images was capable of being retrieved",n(A)},y.onload=function(C){w.text?d[v]={img:y,text:y.text}:d[v]=y,h+=1,h===a&&m(),r.removeElement(y)},y.src=E})(x),r.setCSSAttr(x,{position:"fixed",opacity:"0"}),j.body.appendChild(x))});function m(){r.each(d,function(v,w){w&&(w.text?k.addFrame(w.img,i,w.text):k.addFrame(w,i))}),at(k,n)}}var ct=function(){},Ce={getGIF:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments[1];n=r.isFunction(n)?n:ct;let o=j.createElement("canvas"),i,l=!!e.images.length,s=e.cameraStream,d=e.crop,h=e.filter,x=e.fontColor,k=e.fontFamily,m=e.fontWeight,v=e.keepCameraOn,w=e.numWorkers,E=e.progressCallback,y=e.saveRenderingContexts,C=e.savedRenderingContexts,A=e.text,z=e.textAlign,O=e.textBaseline,U=e.videoElement,R=e.videoHeight,M=e.videoWidth,Y=e.webcamVideoElement,_=Number(e.gifWidth),L=Number(e.gifHeight),N=Number(e.interval),H=Number(e.sampleInterval),D=l?0:N*1e3,X=[],F=C.length?C.length:e.numFrames,P=F,Q=new Se(e),K=r.getFontSize(e),J=e.textXCoordinate?e.textXCoordinate:z==="left"?1:z==="right"?_:_/2,he=e.textYCoordinate?e.textYCoordinate:O==="top"?1:O==="center"?L/2:L,pe=`${m} ${K} ${k}`,ee=d?Math.floor(d.scaledWidth/2):0,te=d?M-d.scaledWidth:0,ie=d?Math.floor(d.scaledHeight/2):0,ne=d?R-d.scaledHeight:0,be=function oe(){let ae=P-1;C.length?(i.putImageData(C[F-P],0,0),Z()):le();function le(){try{te>M&&(te=M),ne>R&&(ne=R),ee<0&&(ee=0),ie<0&&(ie=0),i.filter=h,i.drawImage(U,ee,ie,te,ne,0,0,_,L),Z()}catch(u){if(u.name==="NS_ERROR_NOT_AVAILABLE")r.requestTimeout(le,100);else throw u}}function Z(){let u;y&&X.push(i.getImageData(0,0,_,L)),A&&(i.font=pe,i.fillStyle=x,i.textAlign=z,i.textBaseline=O,i.fillText(A,J,he)),u=i.getImageData(0,0,_,L),Q.addFrameImageData(u),P=ae,E((F-P)/F),ae>0&&r.requestTimeout(oe,D),P||Q.getBase64GIF(function(p){n({error:!1,errorCode:"",errorMsg:"",image:p,cameraStream:s,videoElement:U,webcamVideoElement:Y,savedRenderingContexts:X,keepCameraOn:v})})}};F=F!==void 0?F:10,N=N!==void 0?N:.1,o.width=_,o.height=L,i=o.getContext("2d"),(function oe(){if(!C.length&&U.currentTime===0){r.requestTimeout(oe,100);return}be()})()},getCropDimensions:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.videoWidth,o=e.videoHeight,i=e.gifWidth,a=e.gifHeight,l={width:0,height:0,scaledWidth:0,scaledHeight:0};return n>o?(l.width=Math.round(n*(a/o))-i,l.scaledWidth=Math.round(l.width*(o/a))):(l.height=Math.round(o*(i/n))-a,l.scaledHeight=Math.round(l.height*(n/i))),l}},B={loadedData:!1,defaultVideoDimensions:{width:640,height:480},findVideoSize:function t(e){t.attempts=t.attempts||0;let n=e.cameraStream,o=e.completedCallback,i=e.videoElement;i&&(i.videoWidth>0&&i.videoHeight>0?(i.removeEventListener("loadeddata",B.findVideoSize),o({videoElement:i,cameraStream:n,videoWidth:i.videoWidth,videoHeight:i.videoHeight})):t.attempts<10?(t.attempts+=1,r.requestTimeout(function(){B.findVideoSize(e)},400)):o({videoElement:i,cameraStream:n,videoWidth:B.defaultVideoDimensions.width,videoHeight:B.defaultVideoDimensions.height}))},onStreamingTimeout:function(e){r.isFunction(e)&&e({error:!0,errorCode:"getUserMedia",errorMsg:"There was an issue with the getUserMedia API - Timed out while trying to start streaming",image:null,cameraStream:{}})},stream:function(e){let n=r.isArray(e.existingVideo)?e.existingVideo[0]:e.existingVideo,o=e.cameraStream,i=e.completedCallback,a=e.streamedCallback,l=e.videoElement;if(r.isFunction(a)&&a(),n){if(r.isString(n))l.src=n,l.innerHTML=`<source src="${n}" type="video/${r.getExtension(n)}" />`;else if(n instanceof Blob){try{l.src=r.URL.createObjectURL(n)}catch{}l.innerHTML=`<source src="${n}" type="${n.type}" />`}}else if(l.mozSrcObject)l.mozSrcObject=o;else if(r.URL)try{l.srcObject=o,l.src=r.URL.createObjectURL(o)}catch{l.srcObject=o}l.play(),r.requestTimeout(function s(){s.count=s.count||0,B.loadedData===!0?(B.findVideoSize({videoElement:l,cameraStream:o,completedCallback:i}),B.loadedData=!1):(s.count+=1,s.count>10?B.findVideoSize({videoElement:l,cameraStream:o,completedCallback:i}):s())},0)},startStreaming:function(e){let n=r.isFunction(e.error)?e.error:r.noop,o=r.isFunction(e.streamed)?e.streamed:r.noop,i=r.isFunction(e.completed)?e.completed:r.noop,a=e.crossOrigin,l=e.existingVideo,s=e.lastCameraStream,d=e.options,h=e.webcamVideoElement,x=r.isElement(l)?l:h||j.createElement("video"),k=void 0;a&&(x.crossOrigin=d.crossOrigin),x.autoplay=!0,x.loop=!0,x.muted=!0,x.addEventListener("loadeddata",function(m){B.loadedData=!0,d.offset&&(x.currentTime=d.offset)}),l?B.stream({videoElement:x,existingVideo:l,completedCallback:i}):s?B.stream({videoElement:x,cameraStream:s,streamedCallback:o,completedCallback:i}):r.getUserMedia({video:!0},function(m){B.stream({videoElement:x,cameraStream:m,streamedCallback:o,completedCallback:i})},n)},startVideoStreaming:function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=n.timeout!==void 0?n.timeout:0,i=n.callback,a=n.webcamVideoElement,l;o>0&&(l=r.requestTimeout(function(){B.onStreamingTimeout(i)},1e4)),B.startStreaming({error:function(){i({error:!0,errorCode:"getUserMedia",errorMsg:"There was an issue with the getUserMedia API - the user probably denied permission",image:null,cameraStream:{}})},streamed:function(){clearTimeout(l)},completed:function(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},h=d.cameraStream,x=d.videoElement,k=d.videoHeight,m=d.videoWidth;e({cameraStream:h,videoElement:x,videoHeight:k,videoWidth:m})},lastCameraStream:n.lastCameraStream,webcamVideoElement:a,crossOrigin:n.crossOrigin,options:n})},stopVideoStreaming:function(e){e=r.isObject(e)?e:{};let n=e,o=n.keepCameraOn,i=n.videoElement,a=n.webcamVideoElement,l=e.cameraStream||{},s=l.getTracks?l.getTracks()||[]:[],d=!!s.length,h=s[0];!o&&d&&r.isFunction(h.stop)&&h.stop(),r.isElement(i)&&!a&&(i.pause(),r.isFunction(r.URL.revokeObjectURL)&&!r.webWorkerError&&i.src&&r.URL.revokeObjectURL(i.src),r.removeElement(i))}};function Le(t){t=r.isObject(t)?t:{},B.stopVideoStreaming(t)}function Be(t,e){let n=t.options||{},o=n.images,i=n.video,a=Number(n.gifWidth),l=Number(n.gifHeight),s=Number(n.numFrames),d=t.cameraStream,h=t.videoElement,x=t.videoWidth,k=t.videoHeight,m=Ce.getCropDimensions({videoWidth:x,videoHeight:k,gifHeight:l,gifWidth:a}),v=e;n.crop=m,n.videoElement=h,n.videoWidth=x,n.videoHeight=k,n.cameraStream=d,r.isElement(h)&&(h.width=a+m.width,h.height=l+m.height,n.webcamVideoElement||(r.setCSSAttr(h,{position:"fixed",opacity:"0"}),j.body.appendChild(h)),h.play(),Ce.getGIF(n,function(w){(!o||!o.length)&&(!i||!i.length)&&Le(w),v(w)}))}function dt(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.callback,n=t.existingVideo,o=t.options,i={getUserMedia:!0,"globalThis.URL":!0},a=q.validate(i),l=0,s,d,h=void 0,x=void 0;if(a.error)return e(a);if(r.isElement(n)&&n.src){if(d=n.src,s=r.getExtension(d),!r.isSupported.videoCodecs[s])return e(q.messages.videoCodecs)}else r.isArray(n)&&r.each(n,function(k,m){if(m instanceof Blob?s=m.type.substr(m.type.lastIndexOf("/")+1,m.length):s=m.substr(m.lastIndexOf(".")+1,m.length),r.isSupported.videoCodecs[s])return n=m,!1});B.startStreaming({completed:function(m){m.options=o||{},Be(m,e)},existingVideo:n,crossOrigin:o.crossOrigin,options:o})}function ft(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.callback,n=t.lastCameraStream,o=t.options,i=t.webcamVideoElement;if(!Ue())return e(q.validate());if(o.savedRenderingContexts.length){Ce.getGIF(o,function(a){e(a)});return}B.startVideoStreaming(function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};a.options=o||{},Be(a,e)},{lastCameraStream:n,callback:e,webcamVideoElement:i,crossOrigin:o.crossOrigin})}function He(t,e){if(e=r.isFunction(t)?t:e,t=r.isObject(t)?t:{},!r.isFunction(e))return;let n=r.normalizeOptions(Fe,t)||{},o=t.cameraStream,i=n.images,a=i?i.length:0,l=n.video,s=n.webcamVideoElement;n=r.normalizeOptions(n,{gifWidth:Math.floor(n.gifWidth),gifHeight:Math.floor(n.gifHeight)}),a?lt({images:i,imagesLength:a,callback:e,options:n}):l?dt({existingVideo:l,callback:e,options:n}):ft({lastCameraStream:o,callback:e,webcamVideoElement:s,options:n})}function mt(t,e){if(e=r.isFunction(t)?t:e,t=r.isObject(t)?t:{},!r.isFunction(e))return;let n=r.normalizeOptions(Fe,t),o=r.normalizeOptions(n,{interval:.1,numFrames:1,gifWidth:Math.floor(n.gifWidth),gifHeight:Math.floor(n.gifHeight)});He(o,e)}var ut={utils:et,error:tt,defaultOptions:it,createGIF:He,takeSnapShot:mt,stopVideoStreaming:Le,isSupported:nt,isWebCamGIFSupported:Ue,isExistingVideoGIFSupported:rt,isExistingImagesGIFSupported:ot,VERSION:"0.4.5"},Pe=ut;var gt={source:"images",width:200,height:200,crossOrigin:"Anonymous",progressCallback:t=>{},completeCallback:()=>{},numWorkers:2,sampleInterval:10,interval:.1,offset:null,numFrames:10,frameDuration:1,filter:"",waterMark:null,waterMarkHeight:null,waterMarkWidth:null,waterMarkXCoordinate:1,waterMarkYCoordinate:1,text:"",showFrameText:!0,fontWeight:"normal",fontSize:"16px",minFontSize:"10px",resizeFont:!1,fontFamily:"sans-serif",fontColor:"#ffffff",textAlign:"center",textBaseline:"bottom",textXCoordinate:null,textYCoordinate:null,webcamVideoElement:null,keepCameraOn:!1,cameraStream:null,saveRenderingContexts:!1,savedRenderingContexts:[]},re=class t{static get properties(){return{id:"gif",name:"GIF",extensions:["gif"],mimeTypes:["image/gif"],builder:t,options:gt}}constructor(e){this.options={...e},this.source=e.source,delete e.source,this.files=[],this.gifshot=Pe}async initialize(e){}async add(e){await this.initialize(),this.files.push(e)}async build(){switch(await this.initialize(),this._cleanOptions(this.options),this.source){case"images":this.options.images=this.files;break;case"video":this.options.video=this.files;break;case"webcam":Ve(this.files.length===0);break;default:throw new Error("GIFBuilder: invalid source")}return await this._createGIF()}async _createGIF(){return new Promise((e,n)=>{this.gifshot.createGIF(this.options,o=>{if(o.error){n(o.errorMsg);return}e(o.image)})})}_cleanOptions(e){(e.video||e.images||e.gifWidth||e.gifHeight)&&console.warn("GIFBuilder: ignoring options"),delete e.video,delete e.images,e.gifWidth=e.width,e.gifHeight=e.height,delete e.width,delete e.height}};return Ye(se);})();
|
|
8
8
|
return __exports__;
|
|
9
9
|
});
|
package/dist/index.cjs
CHANGED
|
@@ -3,8 +3,13 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __esm = (fn, res) => function __init() {
|
|
7
|
-
|
|
6
|
+
var __esm = (fn, res, err) => function __init() {
|
|
7
|
+
if (err) throw err[0];
|
|
8
|
+
try {
|
|
9
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
10
|
+
} catch (e) {
|
|
11
|
+
throw err = [e], e;
|
|
12
|
+
}
|
|
8
13
|
};
|
|
9
14
|
var __export = (target, all) => {
|
|
10
15
|
for (var name in all)
|
|
@@ -40,12 +45,14 @@ var init_video_format = __esm({
|
|
|
40
45
|
});
|
|
41
46
|
|
|
42
47
|
// dist/lib/parsers/parse-video.js
|
|
43
|
-
async function
|
|
44
|
-
const blob2 = new Blob([arrayBuffer]);
|
|
48
|
+
async function parseVideoBlob(blob2) {
|
|
45
49
|
const video = document.createElement("video");
|
|
46
50
|
video.src = URL.createObjectURL(blob2);
|
|
47
51
|
return video;
|
|
48
52
|
}
|
|
53
|
+
async function parseVideo(arrayBuffer) {
|
|
54
|
+
return await parseVideoBlob(new Blob([arrayBuffer]));
|
|
55
|
+
}
|
|
49
56
|
var init_parse_video = __esm({
|
|
50
57
|
"dist/lib/parsers/parse-video.js"() {
|
|
51
58
|
"use strict";
|
|
@@ -66,7 +73,8 @@ var init_video_loader_with_parser = __esm({
|
|
|
66
73
|
({ preload: _VideoLoaderPreload, ...VideoLoaderMetadataWithoutPreload } = VideoLoader);
|
|
67
74
|
VideoLoaderWithParser = {
|
|
68
75
|
...VideoLoaderMetadataWithoutPreload,
|
|
69
|
-
parse: parseVideo
|
|
76
|
+
parse: parseVideo,
|
|
77
|
+
parseBlob: parseVideoBlob
|
|
70
78
|
};
|
|
71
79
|
}
|
|
72
80
|
});
|
|
@@ -81,7 +89,7 @@ var init_video_loader = __esm({
|
|
|
81
89
|
"dist/video-loader.js"() {
|
|
82
90
|
"use strict";
|
|
83
91
|
init_video_format();
|
|
84
|
-
VERSION = true ? "5.0.0-alpha.
|
|
92
|
+
VERSION = true ? "5.0.0-alpha.3" : "latest";
|
|
85
93
|
VideoLoader = {
|
|
86
94
|
dataType: null,
|
|
87
95
|
batchType: null,
|
|
@@ -97,13 +105,13 @@ var init_video_loader = __esm({
|
|
|
97
105
|
});
|
|
98
106
|
|
|
99
107
|
// dist/index.js
|
|
100
|
-
var
|
|
101
|
-
__export(
|
|
108
|
+
var index_exports = {};
|
|
109
|
+
__export(index_exports, {
|
|
102
110
|
GIFBuilder: () => GIFBuilder,
|
|
103
111
|
VideoFormat: () => VideoFormat,
|
|
104
112
|
VideoLoader: () => VideoLoader
|
|
105
113
|
});
|
|
106
|
-
module.exports = __toCommonJS(
|
|
114
|
+
module.exports = __toCommonJS(index_exports);
|
|
107
115
|
init_video_format();
|
|
108
116
|
init_video_loader();
|
|
109
117
|
|
|
@@ -118,12 +126,12 @@ function assert(condition, message) {
|
|
|
118
126
|
var document2 = globalThis.document || {};
|
|
119
127
|
var utils = {
|
|
120
128
|
URL: globalThis.URL || globalThis.webkitURL || globalThis.mozURL || globalThis.msURL,
|
|
121
|
-
getUserMedia: function() {
|
|
129
|
+
getUserMedia: (function() {
|
|
122
130
|
if (!globalThis.navigator)
|
|
123
131
|
return globalThis.navigator;
|
|
124
132
|
const getUserMedia = globalThis.navigator.getUserMedia || globalThis.navigator.webkitGetUserMedia || globalThis.navigator.mozGetUserMedia || globalThis.navigator.msGetUserMedia;
|
|
125
133
|
return getUserMedia ? getUserMedia.bind(globalThis.navigator) : getUserMedia;
|
|
126
|
-
}(),
|
|
134
|
+
})(),
|
|
127
135
|
requestAnimFrame: globalThis.requestAnimationFrame || globalThis.webkitRequestAnimationFrame || globalThis.mozRequestAnimationFrame || globalThis.oRequestAnimationFrame || globalThis.msRequestAnimationFrame,
|
|
128
136
|
requestTimeout: function requestTimeout(callback, delay) {
|
|
129
137
|
callback = callback || utils.noop;
|
|
@@ -131,11 +139,11 @@ var utils = {
|
|
|
131
139
|
if (!utils.requestAnimFrame) {
|
|
132
140
|
return setTimeout(callback, delay);
|
|
133
141
|
}
|
|
134
|
-
const start = new Date().getTime();
|
|
142
|
+
const start = (/* @__PURE__ */ new Date()).getTime();
|
|
135
143
|
const handle = new Object();
|
|
136
144
|
const requestAnimFrame = utils.requestAnimFrame;
|
|
137
145
|
const loop = function loop2() {
|
|
138
|
-
const current = new Date().getTime();
|
|
146
|
+
const current = (/* @__PURE__ */ new Date()).getTime();
|
|
139
147
|
const delta = current - start;
|
|
140
148
|
if (delta >= delay) {
|
|
141
149
|
callback.call();
|
|
@@ -147,7 +155,7 @@ var utils = {
|
|
|
147
155
|
return handle;
|
|
148
156
|
},
|
|
149
157
|
Blob: globalThis.Blob || globalThis.BlobBuilder || globalThis.WebKitBlobBuilder || globalThis.MozBlobBuilder || globalThis.MSBlobBuilder,
|
|
150
|
-
btoa: function() {
|
|
158
|
+
btoa: (function() {
|
|
151
159
|
const btoa = globalThis.btoa || function(input) {
|
|
152
160
|
let output = "";
|
|
153
161
|
let i = 0;
|
|
@@ -178,7 +186,7 @@ var utils = {
|
|
|
178
186
|
return output;
|
|
179
187
|
};
|
|
180
188
|
return btoa ? btoa.bind(globalThis) : utils.noop;
|
|
181
|
-
}(),
|
|
189
|
+
})(),
|
|
182
190
|
isObject: function isObject(obj) {
|
|
183
191
|
return obj && Object.prototype.toString.call(obj) === "[object Object]";
|
|
184
192
|
},
|
|
@@ -220,7 +228,7 @@ var utils = {
|
|
|
220
228
|
Uint32Array: function Uint32Array2() {
|
|
221
229
|
return globalThis.Uint32Array;
|
|
222
230
|
},
|
|
223
|
-
videoCodecs: function() {
|
|
231
|
+
videoCodecs: (function() {
|
|
224
232
|
const testEl = document2.createElement("video");
|
|
225
233
|
const supportObj = {
|
|
226
234
|
mp4: false,
|
|
@@ -240,7 +248,7 @@ var utils = {
|
|
|
240
248
|
} catch (_e) {
|
|
241
249
|
}
|
|
242
250
|
return supportObj;
|
|
243
|
-
}()
|
|
251
|
+
})()
|
|
244
252
|
},
|
|
245
253
|
noop: function noop() {
|
|
246
254
|
},
|
|
@@ -1203,13 +1211,13 @@ AnimatedGIF.prototype = {
|
|
|
1203
1211
|
freeWorker: function freeWorker(worker) {
|
|
1204
1212
|
this.availableWorkers.push(worker);
|
|
1205
1213
|
},
|
|
1206
|
-
byteMap: function() {
|
|
1214
|
+
byteMap: (function() {
|
|
1207
1215
|
const byteMap = [];
|
|
1208
1216
|
for (let i = 0; i < 256; i++) {
|
|
1209
1217
|
byteMap[i] = String.fromCharCode(i);
|
|
1210
1218
|
}
|
|
1211
1219
|
return byteMap;
|
|
1212
|
-
}(),
|
|
1220
|
+
})(),
|
|
1213
1221
|
bufferToString: function bufferToString(buffer) {
|
|
1214
1222
|
const numberValues = buffer.length;
|
|
1215
1223
|
let str = "";
|
|
@@ -2159,14 +2167,14 @@ var GIF_BUILDER_OPTIONS = {
|
|
|
2159
2167
|
savedRenderingContexts: []
|
|
2160
2168
|
// Array of canvas image data
|
|
2161
2169
|
};
|
|
2162
|
-
var GIFBuilder = class {
|
|
2170
|
+
var GIFBuilder = class _GIFBuilder {
|
|
2163
2171
|
static get properties() {
|
|
2164
2172
|
return {
|
|
2165
2173
|
id: "gif",
|
|
2166
2174
|
name: "GIF",
|
|
2167
2175
|
extensions: ["gif"],
|
|
2168
2176
|
mimeTypes: ["image/gif"],
|
|
2169
|
-
builder:
|
|
2177
|
+
builder: _GIFBuilder,
|
|
2170
2178
|
options: GIF_BUILDER_OPTIONS
|
|
2171
2179
|
};
|
|
2172
2180
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/video-format.ts", "../src/lib/parsers/parse-video.ts", "../src/video-loader-with-parser.ts", "../src/video-loader.ts", "../src/index.ts", "../src/lib/utils/assert.ts", "../src/lib/gifshot/gifshot.ts", "../src/gif-builder.ts"],
|
|
4
|
-
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Format} from '@loaders.gl/loader-utils';\n\n/** Video media format. */\nexport const VideoFormat = {\n name: 'Video',\n id: 'video',\n module: 'video',\n encoding: 'video',\n format: 'video',\n extensions: ['mp4'],\n mimeTypes: ['video/mp4'],\n category: 'video',\n binary: true\n} as const satisfies Format;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// Parse to platform defined video type (HTMLVideoElement in browser)\nexport default async function parseVideo(arrayBuffer: ArrayBuffer): Promise<HTMLVideoElement> {\n // TODO It is probably somewhat inefficent to convert a File/Blob to ArrayBuffer and back\n // and could perhaps cause problems for large videos.\n // TODO MIME type is also lost from the File or Response...\n const blob = new Blob([arrayBuffer]);\n const video = document.createElement('video');\n video.src = URL.createObjectURL(blob);\n return video;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport parseVideo from './lib/parsers/parse-video';\nimport {VideoLoader as VideoLoaderMetadata} from './video-loader';\n\nconst {preload: _VideoLoaderPreload, ...VideoLoaderMetadataWithoutPreload} = VideoLoaderMetadata;\n\nexport type VideoLoaderOptions = LoaderOptions & {\n video: {};\n};\n\n/**\n * Loads a platform-specific image type that can be used as input data to WebGL textures\n */\nexport const VideoLoaderWithParser = {\n ...VideoLoaderMetadataWithoutPreload,\n parse: parseVideo\n} as const satisfies LoaderWithParser<HTMLVideoElement, never, VideoLoaderOptions>;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {VideoFormat} from './video-format';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type VideoLoaderOptions = LoaderOptions & {\n video: {};\n};\n\n/** Preloads the parser-bearing video loader implementation. */\nasync function preload() {\n const {VideoLoaderWithParser} = await import('./video-loader-with-parser');\n return VideoLoaderWithParser;\n}\n\n/** Metadata-only loader for platform-specific video elements. */\nexport const VideoLoader = {\n dataType: null as unknown as HTMLVideoElement,\n batchType: null as never,\n ...VideoFormat,\n version: VERSION,\n // tests: arrayBuffer => Boolean(getBinaryImageMetadata(new DataView(arrayBuffer))),\n options: {\n video: {}\n },\n preload\n} as const satisfies Loader<HTMLVideoElement, never, VideoLoaderOptions>;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport type {VideoLoaderOptions} from './video-loader';\nexport {VideoFormat} from './video-format';\nexport {VideoLoader} from './video-loader';\n\nexport {default as GIFBuilder} from './gif-builder';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport function assert(condition: unknown, message: string): void {\n if (!condition) {\n throw new Error(message);\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// @ts-nocheck\n/* eslint-disable */\n\nconst document = globalThis.document || {};\n\n/* Copyrights for code authored by Yahoo Inc. is licensed under the following terms:\nMIT License\nCopyright 2017 Yahoo Inc.\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/*\n utils.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\nvar utils = {\n URL: globalThis.URL || globalThis.webkitURL || globalThis.mozURL || globalThis.msURL,\n getUserMedia: (function () {\n if (!globalThis.navigator) return globalThis.navigator;\n const getUserMedia =\n globalThis.navigator.getUserMedia ||\n globalThis.navigator.webkitGetUserMedia ||\n globalThis.navigator.mozGetUserMedia ||\n globalThis.navigator.msGetUserMedia;\n return getUserMedia ? getUserMedia.bind(globalThis.navigator) : getUserMedia;\n })(),\n requestAnimFrame:\n globalThis.requestAnimationFrame ||\n globalThis.webkitRequestAnimationFrame ||\n globalThis.mozRequestAnimationFrame ||\n globalThis.oRequestAnimationFrame ||\n globalThis.msRequestAnimationFrame,\n requestTimeout: function requestTimeout(callback, delay) {\n callback = callback || utils.noop;\n delay = delay || 0;\n if (!utils.requestAnimFrame) {\n return setTimeout(callback, delay);\n }\n const start = new Date().getTime();\n const handle = new Object();\n const requestAnimFrame = utils.requestAnimFrame;\n const loop = function loop() {\n const current = new Date().getTime();\n const delta = current - start;\n if (delta >= delay) {\n callback.call();\n } else {\n handle.value = requestAnimFrame(loop);\n }\n };\n handle.value = requestAnimFrame(loop);\n return handle;\n },\n Blob:\n globalThis.Blob ||\n globalThis.BlobBuilder ||\n globalThis.WebKitBlobBuilder ||\n globalThis.MozBlobBuilder ||\n globalThis.MSBlobBuilder,\n btoa: (function () {\n const btoa =\n globalThis.btoa ||\n function (input) {\n let output = '';\n let i = 0;\n const l = input.length;\n const key = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n let chr1 = void 0;\n let chr2 = void 0;\n let chr3 = void 0;\n let enc1 = void 0;\n let enc2 = void 0;\n let enc3 = void 0;\n let enc4 = void 0;\n while (i < l) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n if (Number.isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (Number.isNaN(chr3)) {\n enc4 = 64;\n }\n output =\n output + key.charAt(enc1) + key.charAt(enc2) + key.charAt(enc3) + key.charAt(enc4);\n }\n return output;\n };\n return btoa ? btoa.bind(globalThis) : utils.noop;\n })(),\n isObject: function isObject(obj) {\n return obj && Object.prototype.toString.call(obj) === '[object Object]';\n },\n isEmptyObject: function isEmptyObject(obj) {\n return utils.isObject(obj) && !Object.keys(obj).length;\n },\n isArray: function isArray(arr) {\n return arr && Array.isArray(arr);\n },\n isFunction: function isFunction(func) {\n return func && typeof func === 'function';\n },\n isElement: function isElement(elem) {\n return elem && elem.nodeType === 1;\n },\n isImageBitmap: function isImageBitmap(image) {\n return typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap;\n },\n isDrawable: function isDrawable(image) {\n return utils.isElement(image) || utils.isImageBitmap(image);\n },\n isString: function isString(value) {\n return typeof value === 'string' || Object.prototype.toString.call(value) === '[object String]';\n },\n isSupported: {\n canvas: function canvas() {\n const el = document.createElement('canvas');\n return el && el.getContext && el.getContext('2d');\n },\n webworkers: function webworkers() {\n return globalThis.Worker;\n },\n blob: function blob() {\n return utils.Blob;\n },\n Uint8Array: function Uint8Array() {\n return globalThis.Uint8Array;\n },\n Uint32Array: function Uint32Array() {\n return globalThis.Uint32Array;\n },\n videoCodecs: (function () {\n const testEl = document.createElement('video');\n const supportObj = {\n mp4: false,\n h264: false,\n ogv: false,\n ogg: false,\n webm: false\n };\n try {\n if (testEl && testEl.canPlayType) {\n // Check for MPEG-4 support\n supportObj.mp4 = testEl.canPlayType('video/mp4; codecs=\"mp4v.20.8\"') !== '';\n // Check for h264 support\n supportObj.h264 =\n (testEl.canPlayType('video/mp4; codecs=\"avc1.42E01E\"') ||\n testEl.canPlayType('video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"')) !== '';\n // Check for Ogv support\n supportObj.ogv = testEl.canPlayType('video/ogg; codecs=\"theora\"') !== '';\n // Check for Ogg support\n supportObj.ogg = testEl.canPlayType('video/ogg; codecs=\"theora\"') !== '';\n // Check for Webm support\n supportObj.webm = testEl.canPlayType('video/webm; codecs=\"vp8, vorbis\"') !== -1;\n }\n } catch (_e) {}\n return supportObj;\n })()\n },\n noop: function noop() {},\n each: function each(collection, callback) {\n let x = void 0;\n let len = void 0;\n if (utils.isArray(collection)) {\n x = -1;\n len = collection.length;\n while (++x < len) {\n if (callback(x, collection[x]) === false) {\n break;\n }\n }\n } else if (utils.isObject(collection)) {\n for (x in collection) {\n if (collection.hasOwnProperty(x)) {\n if (callback(x, collection[x]) === false) {\n break;\n }\n }\n }\n }\n },\n normalizeOptions: function normalizeOptions(defaultOptions, userOptions) {\n if (!utils.isObject(defaultOptions) || !utils.isObject(userOptions) || !Object.keys) {\n return;\n }\n const newObj = {};\n utils.each(defaultOptions, function (key, val) {\n newObj[key] = defaultOptions[key];\n });\n utils.each(userOptions, function (key, val) {\n const currentUserOption = userOptions[key];\n if (!utils.isObject(currentUserOption)) {\n newObj[key] = currentUserOption;\n } else if (!defaultOptions[key]) {\n newObj[key] = currentUserOption;\n } else {\n newObj[key] = utils.normalizeOptions(defaultOptions[key], currentUserOption);\n }\n });\n return newObj;\n },\n setCSSAttr: function setCSSAttr(elem, attr, val) {\n if (!utils.isElement(elem)) {\n return;\n }\n if (utils.isString(attr) && utils.isString(val)) {\n elem.style[attr] = val;\n } else if (utils.isObject(attr)) {\n utils.each(attr, function (key, val) {\n elem.style[key] = val;\n });\n }\n },\n removeElement: function removeElement(node) {\n if (!utils.isElement(node)) {\n return;\n }\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n },\n createWebWorker: function createWebWorker(content) {\n if (!utils.isString(content)) {\n return {};\n }\n try {\n const blob = new utils.Blob([content], {\n type: 'text/javascript'\n });\n const objectUrl = utils.URL.createObjectURL(blob);\n const worker = new Worker(objectUrl);\n return {\n objectUrl,\n worker\n };\n } catch (e) {\n return `${e}`;\n }\n },\n getExtension: function getExtension(src) {\n return src.substr(src.lastIndexOf('.') + 1, src.length);\n },\n getFontSize: function getFontSize() {\n const options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!document.body || options.resizeFont === false) {\n return options.fontSize;\n }\n const text = options.text;\n const containerWidth = options.gifWidth;\n let fontSize = parseInt(options.fontSize, 10);\n const minFontSize = parseInt(options.minFontSize, 10);\n const div = document.createElement('div');\n const span = document.createElement('span');\n div.setAttribute('width', containerWidth);\n div.appendChild(span);\n span.innerHTML = text;\n span.style.fontSize = `${fontSize}px`;\n span.style.textIndent = '-9999px';\n span.style.visibility = 'hidden';\n document.body.appendChild(span);\n while (span.offsetWidth > containerWidth && fontSize >= minFontSize) {\n span.style.fontSize = `${--fontSize}px`;\n }\n document.body.removeChild(span);\n return `${fontSize}px`;\n },\n webWorkerError: false\n};\nconst utils$2 = Object.freeze({\n default: utils\n});\n/*\n error.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nvar error = {\n validate: function validate(skipObj) {\n skipObj = utils.isObject(skipObj) ? skipObj : {};\n let errorObj = {};\n utils.each(error.validators, function (indece, currentValidator) {\n const errorCode = currentValidator.errorCode;\n if (!skipObj[errorCode] && !currentValidator.condition) {\n errorObj = currentValidator;\n errorObj.error = true;\n return false;\n }\n });\n delete errorObj.condition;\n return errorObj;\n },\n isValid: function isValid(skipObj) {\n const errorObj = error.validate(skipObj);\n const isValid = errorObj.error !== true;\n return isValid;\n },\n validators: [\n {\n condition: utils.isFunction(utils.getUserMedia),\n errorCode: 'getUserMedia',\n errorMsg: 'The getUserMedia API is not supported in your browser'\n },\n {\n condition: utils.isSupported.canvas(),\n errorCode: 'canvas',\n errorMsg: 'Canvas elements are not supported in your browser'\n },\n {\n condition: utils.isSupported.webworkers(),\n errorCode: 'webworkers',\n errorMsg: 'The Web Workers API is not supported in your browser'\n },\n {\n condition: utils.isFunction(utils.URL),\n errorCode: 'globalThis.URL',\n errorMsg: 'The globalThis.URL API is not supported in your browser'\n },\n {\n condition: utils.isSupported.blob(),\n errorCode: 'globalThis.Blob',\n errorMsg: 'The globalThis.Blob File API is not supported in your browser'\n },\n {\n condition: utils.isSupported.Uint8Array(),\n errorCode: 'globalThis.Uint8Array',\n errorMsg: 'The globalThis.Uint8Array function constructor is not supported in your browser'\n },\n {\n condition: utils.isSupported.Uint32Array(),\n errorCode: 'globalThis.Uint32Array',\n errorMsg: 'The globalThis.Uint32Array function constructor is not supported in your browser'\n }\n ],\n messages: {\n videoCodecs: {\n errorCode: 'videocodec',\n errorMsg: 'The video codec you are trying to use is not supported in your browser'\n }\n }\n};\nconst error$2 = Object.freeze({\n default: error\n});\n/*\n defaultOptions.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Helpers\nconst noop = function noop() {};\nconst defaultOptions = {\n sampleInterval: 10,\n numWorkers: 2,\n filter: '',\n gifWidth: 200,\n gifHeight: 200,\n interval: 0.1,\n numFrames: 10,\n frameDuration: 1,\n keepCameraOn: false,\n images: [],\n video: null,\n webcamVideoElement: null,\n cameraStream: null,\n text: '',\n fontWeight: 'normal',\n fontSize: '16px',\n minFontSize: '10px',\n resizeFont: false,\n fontFamily: 'sans-serif',\n fontColor: '#ffffff',\n textAlign: 'center',\n textBaseline: 'bottom',\n textXCoordinate: null,\n textYCoordinate: null,\n progressCallback: noop,\n completeCallback: noop,\n saveRenderingContexts: false,\n savedRenderingContexts: [],\n crossOrigin: 'Anonymous'\n};\nconst defaultOptions$2 = Object.freeze({\n default: defaultOptions\n});\n/*\n isSupported.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nfunction isSupported() {\n return error.isValid();\n}\n/*\n isWebCamGIFSupported.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\nfunction isWebCamGIFSupported() {\n return error.isValid();\n}\n/*\n isSupported.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nfunction isSupported$1() {\n const options = {\n getUserMedia: true\n };\n return error.isValid(options);\n}\n/*\n isExistingVideoGIFSupported.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nfunction isExistingVideoGIFSupported(codecs) {\n let hasValidCodec = false;\n if (utils.isArray(codecs) && codecs.length) {\n utils.each(codecs, function (indece, currentCodec) {\n if (utils.isSupported.videoCodecs[currentCodec]) {\n hasValidCodec = true;\n }\n });\n if (!hasValidCodec) {\n return false;\n }\n } else if (utils.isString(codecs) && codecs.length) {\n if (!utils.isSupported.videoCodecs[codecs]) {\n return false;\n }\n }\n return error.isValid({\n getUserMedia: true\n });\n}\n/*\n NeuQuant.js\n */\n/*\n * NeuQuant Neural-Net Quantization Algorithm\n * ------------------------------------------\n *\n * Copyright (c) 1994 Anthony Dekker\n *\n * NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See\n * \"Kohonen neural networks for optimal colour quantization\" in \"Network:\n * Computation in Neural Systems\" Vol. 5 (1994) pp 351-367. for a discussion of\n * the algorithm.\n *\n * Any party obtaining a copy of these files from the author, directly or\n * indirectly, is granted, free of charge, a full and unrestricted irrevocable,\n * world-wide, paid up, royalty-free, nonexclusive right and license to deal in\n * this software and documentation files (the \"Software\"), including without\n * limitation the rights to use, copy, modify, merge, publish, distribute,\n * sublicense, and/or sell copies of the Software, and to permit persons who\n * receive copies from any such party to do so, with the only requirement being\n * that this copyright notice remain intact.\n */\n/*\n * This class handles Neural-Net quantization algorithm\n * @author Kevin Weiner (original Java version - kweiner@fmsware.com)\n * @author Thibault Imbert (AS3 version - bytearray.org)\n * @version 0.1 AS3 implementation\n * @version 0.2 JS->AS3 \"translation\" by antimatter15\n * @version 0.3 JS clean up + using modern JS idioms by sole - http://soledadpenades.com\n * Also implement fix in color conversion described at http://stackoverflow.com/questions/16371712/neuquant-js-javascript-color-quantization-hidden-bug-in-js-conversion\n */\nfunction NeuQuant() {\n const netsize = 256; // number of colours used\n // four primes near 500 - assume no image has a length so large\n // that it is divisible by all four primes\n const prime1 = 499;\n const prime2 = 491;\n const prime3 = 487;\n const prime4 = 503;\n // minimum size for input image\n const minpicturebytes = 3 * prime4;\n // Network Definitions\n const maxnetpos = netsize - 1;\n const netbiasshift = 4; // bias for colour values\n const ncycles = 100; // no. of learning cycles\n // defs for freq and bias\n const intbiasshift = 16; // bias for fractions\n const intbias = 1 << intbiasshift;\n const gammashift = 10; // gamma = 1024\n const _gamma = 1 << gammashift;\n const betashift = 10;\n const beta = intbias >> betashift; // beta = 1/1024\n const betagamma = intbias << (gammashift - betashift);\n // defs for decreasing radius factor\n // For 256 colors, radius starts at 32.0 biased by 6 bits\n // and decreases by a factor of 1/30 each cycle\n const initrad = netsize >> 3;\n const radiusbiasshift = 6;\n const radiusbias = 1 << radiusbiasshift;\n const initradius = initrad * radiusbias;\n const radiusdec = 30;\n // defs for decreasing alpha factor\n // Alpha starts at 1.0 biased by 10 bits\n const alphabiasshift = 10;\n const initalpha = 1 << alphabiasshift;\n let alphadec;\n // radbias and alpharadbias used for radpower calculation\n const radbiasshift = 8;\n const radbias = 1 << radbiasshift;\n const alpharadbshift = alphabiasshift + radbiasshift;\n const alpharadbias = 1 << alpharadbshift;\n // Input image\n let thepicture;\n // Height * Width * 3\n let lengthcount;\n // Sampling factor 1..30\n let samplefac;\n // The network itself\n let network;\n const netindex = [];\n // for network lookup - really 256\n const bias = [];\n // bias and freq arrays for learning\n const freq = [];\n const radpower = [];\n function NeuQuantConstructor(thepic, len, sample) {\n let i;\n let p;\n thepicture = thepic;\n lengthcount = len;\n samplefac = sample;\n network = new Array(netsize);\n for (i = 0; i < netsize; i++) {\n network[i] = new Array(4);\n p = network[i];\n p[0] = p[1] = p[2] = ((i << (netbiasshift + 8)) / netsize) | 0;\n freq[i] = (intbias / netsize) | 0; // 1 / netsize\n bias[i] = 0;\n }\n }\n function colorMap() {\n const map = [];\n const index = new Array(netsize);\n for (let i = 0; i < netsize; i++) {\n index[network[i][3]] = i;\n }\n let k = 0;\n for (let l = 0; l < netsize; l++) {\n const j = index[l];\n map[k++] = network[j][0];\n map[k++] = network[j][1];\n map[k++] = network[j][2];\n }\n return map;\n }\n // Insertion sort of network and building of netindex[0..255]\n // (to do after unbias)\n function inxbuild() {\n let i;\n let j;\n let smallpos;\n let smallval;\n let p;\n let q;\n let previouscol;\n let startpos;\n previouscol = 0;\n startpos = 0;\n for (i = 0; i < netsize; i++) {\n p = network[i];\n smallpos = i;\n smallval = p[1]; // index on g\n // find smallest in i..netsize-1\n for (j = i + 1; j < netsize; j++) {\n q = network[j];\n if (q[1] < smallval) {\n // index on g\n smallpos = j;\n smallval = q[1]; // index on g\n }\n }\n q = network[smallpos];\n // swap p (i) and q (smallpos) entries\n if (i !== smallpos) {\n j = q[0];\n q[0] = p[0];\n p[0] = j;\n j = q[1];\n q[1] = p[1];\n p[1] = j;\n j = q[2];\n q[2] = p[2];\n p[2] = j;\n j = q[3];\n q[3] = p[3];\n p[3] = j;\n }\n // smallval entry is now in position i\n if (smallval !== previouscol) {\n netindex[previouscol] = (startpos + i) >> 1;\n for (j = previouscol + 1; j < smallval; j++) {\n netindex[j] = i;\n }\n previouscol = smallval;\n startpos = i;\n }\n }\n netindex[previouscol] = (startpos + maxnetpos) >> 1;\n for (j = previouscol + 1; j < 256; j++) {\n netindex[j] = maxnetpos; // really 256\n }\n }\n // Main Learning Loop\n function learn() {\n let i;\n let j;\n let b;\n let g;\n let r;\n let radius;\n let rad;\n let alpha;\n let step;\n let delta;\n let samplepixels;\n let p;\n let pix;\n let lim;\n if (lengthcount < minpicturebytes) {\n samplefac = 1;\n }\n alphadec = 30 + (samplefac - 1) / 3;\n p = thepicture;\n pix = 0;\n lim = lengthcount;\n samplepixels = lengthcount / (3 * samplefac);\n delta = (samplepixels / ncycles) | 0;\n alpha = initalpha;\n radius = initradius;\n rad = radius >> radiusbiasshift;\n if (rad <= 1) {\n rad = 0;\n }\n for (i = 0; i < rad; i++) {\n radpower[i] = alpha * (((rad * rad - i * i) * radbias) / (rad * rad));\n }\n if (lengthcount < minpicturebytes) {\n step = 3;\n } else if (lengthcount % prime1 !== 0) {\n step = 3 * prime1;\n } else if (lengthcount % prime2 !== 0) {\n step = 3 * prime2;\n } else if (lengthcount % prime3 !== 0) {\n step = 3 * prime3;\n } else {\n step = 3 * prime4;\n }\n i = 0;\n while (i < samplepixels) {\n b = (p[pix + 0] & 0xff) << netbiasshift;\n g = (p[pix + 1] & 0xff) << netbiasshift;\n r = (p[pix + 2] & 0xff) << netbiasshift;\n j = contest(b, g, r);\n altersingle(alpha, j, b, g, r);\n if (rad !== 0) {\n // Alter neighbours\n alterneigh(rad, j, b, g, r);\n }\n pix += step;\n if (pix >= lim) {\n pix -= lengthcount;\n }\n i++;\n if (delta === 0) {\n delta = 1;\n }\n if (i % delta === 0) {\n alpha -= alpha / alphadec;\n radius -= radius / radiusdec;\n rad = radius >> radiusbiasshift;\n if (rad <= 1) {\n rad = 0;\n }\n for (j = 0; j < rad; j++) {\n radpower[j] = alpha * (((rad * rad - j * j) * radbias) / (rad * rad));\n }\n }\n }\n }\n // Search for BGR values 0..255 (after net is unbiased) and return colour index\n function map(b, g, r) {\n let i;\n let j;\n let dist;\n let a;\n let bestd;\n let p;\n let best;\n // Biggest possible distance is 256 * 3\n bestd = 1000;\n best = -1;\n i = netindex[g]; // index on g\n j = i - 1; // start at netindex[g] and work outwards\n while (i < netsize || j >= 0) {\n if (i < netsize) {\n p = network[i];\n dist = p[1] - g; // inx key\n if (dist >= bestd) {\n i = netsize; // stop iter\n } else {\n i++;\n if (dist < 0) {\n dist = -dist;\n }\n a = p[0] - b;\n if (a < 0) {\n a = -a;\n }\n dist += a;\n if (dist < bestd) {\n a = p[2] - r;\n if (a < 0) {\n a = -a;\n }\n dist += a;\n if (dist < bestd) {\n bestd = dist;\n best = p[3];\n }\n }\n }\n }\n if (j >= 0) {\n p = network[j];\n dist = g - p[1]; // inx key - reverse dif\n if (dist >= bestd) {\n j = -1; // stop iter\n } else {\n j--;\n if (dist < 0) {\n dist = -dist;\n }\n a = p[0] - b;\n if (a < 0) {\n a = -a;\n }\n dist += a;\n if (dist < bestd) {\n a = p[2] - r;\n if (a < 0) {\n a = -a;\n }\n dist += a;\n if (dist < bestd) {\n bestd = dist;\n best = p[3];\n }\n }\n }\n }\n }\n return best;\n }\n function process() {\n learn();\n unbiasnet();\n inxbuild();\n return colorMap();\n }\n // Unbias network to give byte values 0..255 and record position i\n // to prepare for sort\n function unbiasnet() {\n let i;\n let _j;\n for (i = 0; i < netsize; i++) {\n network[i][0] >>= netbiasshift;\n network[i][1] >>= netbiasshift;\n network[i][2] >>= netbiasshift;\n network[i][3] = i; // record colour no\n }\n }\n // Move adjacent neurons by precomputed alpha*(1-((i-j)^2/[r]^2))\n // in radpower[|i-j|]\n function alterneigh(rad, i, b, g, r) {\n let j;\n let k;\n let lo;\n let hi;\n let a;\n let m;\n let p;\n lo = i - rad;\n if (lo < -1) {\n lo = -1;\n }\n hi = i + rad;\n if (hi > netsize) {\n hi = netsize;\n }\n j = i + 1;\n k = i - 1;\n m = 1;\n while (j < hi || k > lo) {\n a = radpower[m++];\n if (j < hi) {\n p = network[j++];\n try {\n p[0] -= ((a * (p[0] - b)) / alpharadbias) | 0;\n p[1] -= ((a * (p[1] - g)) / alpharadbias) | 0;\n p[2] -= ((a * (p[2] - r)) / alpharadbias) | 0;\n } catch (_e) {}\n }\n if (k > lo) {\n p = network[k--];\n try {\n p[0] -= ((a * (p[0] - b)) / alpharadbias) | 0;\n p[1] -= ((a * (p[1] - g)) / alpharadbias) | 0;\n p[2] -= ((a * (p[2] - r)) / alpharadbias) | 0;\n } catch (_e) {}\n }\n }\n }\n // Move neuron i towards biased (b,g,r) by factor alpha\n function altersingle(alpha, i, b, g, r) {\n // alter hit neuron\n const n = network[i];\n const alphaMult = alpha / initalpha;\n n[0] -= (alphaMult * (n[0] - b)) | 0;\n n[1] -= (alphaMult * (n[1] - g)) | 0;\n n[2] -= (alphaMult * (n[2] - r)) | 0;\n }\n // Search for biased BGR values\n function contest(b, g, r) {\n // finds closest neuron (min dist) and updates freq\n // finds best neuron (min dist-bias) and returns position\n // for frequently chosen neurons, freq[i] is high and bias[i] is negative\n // bias[i] = gamma*((1/netsize)-freq[i])\n let i;\n let dist;\n let a;\n let biasdist;\n let betafreq;\n let bestpos;\n let bestbiaspos;\n let bestd;\n let bestbiasd;\n let n;\n bestd = ~(1 << 31);\n bestbiasd = bestd;\n bestpos = -1;\n bestbiaspos = bestpos;\n for (i = 0; i < netsize; i++) {\n n = network[i];\n dist = n[0] - b;\n if (dist < 0) {\n dist = -dist;\n }\n a = n[1] - g;\n if (a < 0) {\n a = -a;\n }\n dist += a;\n a = n[2] - r;\n if (a < 0) {\n a = -a;\n }\n dist += a;\n if (dist < bestd) {\n bestd = dist;\n bestpos = i;\n }\n biasdist = dist - (bias[i] >> (intbiasshift - netbiasshift));\n if (biasdist < bestbiasd) {\n bestbiasd = biasdist;\n bestbiaspos = i;\n }\n betafreq = freq[i] >> betashift;\n freq[i] -= betafreq;\n bias[i] += betafreq << gammashift;\n }\n freq[bestpos] += beta;\n bias[bestpos] -= betagamma;\n return bestbiaspos;\n }\n NeuQuantConstructor.apply(this, arguments);\n const exports = {};\n exports.map = map;\n exports.process = process;\n return exports;\n}\n/*\n processFrameWorker.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\nfunction workerCode() {\n const _self = this;\n try {\n globalThis.onmessage = function (ev) {\n const data = ev.data || {};\n let response;\n if (data.gifshot) {\n response = workerMethods.run(data);\n postMessage(response);\n }\n };\n } catch (_e) {}\n var workerMethods = {\n dataToRGB: function dataToRGB(data, width, height) {\n const length = width * height * 4;\n let i = 0;\n const rgb = [];\n while (i < length) {\n rgb.push(data[i++]);\n rgb.push(data[i++]);\n rgb.push(data[i++]);\n i++; // for the alpha channel which we don't care about\n }\n return rgb;\n },\n componentizedPaletteToArray: function componentizedPaletteToArray(paletteRGB) {\n paletteRGB = paletteRGB || [];\n const paletteArray = [];\n for (let i = 0; i < paletteRGB.length; i += 3) {\n const r = paletteRGB[i];\n const g = paletteRGB[i + 1];\n const b = paletteRGB[i + 2];\n paletteArray.push((r << 16) | (g << 8) | b);\n }\n return paletteArray;\n },\n // This is the \"traditional\" Animated_GIF style of going from RGBA to indexed color frames\n processFrameWithQuantizer: function processFrameWithQuantizer(\n imageData,\n width,\n height,\n sampleInterval\n ) {\n const rgbComponents = this.dataToRGB(imageData, width, height);\n const nq = new NeuQuant(rgbComponents, rgbComponents.length, sampleInterval);\n const paletteRGB = nq.process();\n const paletteArray = new Uint32Array(this.componentizedPaletteToArray(paletteRGB));\n const numberPixels = width * height;\n const indexedPixels = new Uint8Array(numberPixels);\n let k = 0;\n for (let i = 0; i < numberPixels; i++) {\n const r = rgbComponents[k++];\n const g = rgbComponents[k++];\n const b = rgbComponents[k++];\n indexedPixels[i] = nq.map(r, g, b);\n }\n return {\n pixels: indexedPixels,\n palette: paletteArray\n };\n },\n run: function run(frame) {\n frame = frame || {};\n const _frame = frame;\n const height = _frame.height;\n const _palette = _frame.palette;\n const sampleInterval = _frame.sampleInterval;\n const width = _frame.width;\n const imageData = frame.data;\n return this.processFrameWithQuantizer(imageData, width, height, sampleInterval);\n }\n };\n return workerMethods;\n}\n/*\n gifWriter.js\n */\n// (c) Dean McNamee <dean@gmail.com>, 2013.\n//\n// https://github.com/deanm/omggif\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n//\n// omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n// including animation and compression. It does not rely on any specific\n// underlying system, so should run in the browser, Node, or Plask.\nfunction gifWriter(buf, width, height, gopts) {\n let p = 0;\n gopts = gopts === undefined ? {} : gopts;\n const loop_count = gopts.loop === undefined ? null : gopts.loop;\n const global_palette = gopts.palette === undefined ? null : gopts.palette;\n if (width <= 0 || height <= 0 || width > 65535 || height > 65535) throw 'Width/Height invalid.';\n function check_palette_and_num_colors(palette) {\n const num_colors = palette.length;\n if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors - 1))\n throw 'Invalid code/color length, must be power of 2 and 2 .. 256.';\n return num_colors;\n }\n // - Header.\n buf[p++] = 0x47;\n buf[p++] = 0x49;\n buf[p++] = 0x46; // GIF\n buf[p++] = 0x38;\n buf[p++] = 0x39;\n buf[p++] = 0x61; // 89a\n // Handling of Global Color Table (palette) and background index.\n const gp_num_colors_pow2 = 0;\n const background = 0;\n // - Logical Screen Descriptor.\n // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n buf[p++] = width & 0xff;\n buf[p++] = (width >> 8) & 0xff;\n buf[p++] = height & 0xff;\n buf[p++] = (height >> 8) & 0xff;\n // NOTE: Indicates 0-bpp original color resolution (unused?).\n buf[p++] =\n (global_palette !== null ? 0x80 : 0) | // Global Color Table Flag.\n gp_num_colors_pow2; // NOTE: No sort flag (unused?).\n buf[p++] = background; // Background Color Index.\n buf[p++] = 0; // Pixel aspect ratio (unused?).\n if (loop_count !== null) {\n // Netscape block for looping.\n if (loop_count < 0 || loop_count > 65535) throw 'Loop count invalid.';\n // Extension code, label, and length.\n buf[p++] = 0x21;\n buf[p++] = 0xff;\n buf[p++] = 0x0b;\n // NETSCAPE2.0\n buf[p++] = 0x4e;\n buf[p++] = 0x45;\n buf[p++] = 0x54;\n buf[p++] = 0x53;\n buf[p++] = 0x43;\n buf[p++] = 0x41;\n buf[p++] = 0x50;\n buf[p++] = 0x45;\n buf[p++] = 0x32;\n buf[p++] = 0x2e;\n buf[p++] = 0x30;\n // Sub-block\n buf[p++] = 0x03;\n buf[p++] = 0x01;\n buf[p++] = loop_count & 0xff;\n buf[p++] = (loop_count >> 8) & 0xff;\n buf[p++] = 0x00; // Terminator.\n }\n let ended = false;\n this.addFrame = function (x, y, w, h, indexed_pixels, opts) {\n if (ended === true) {\n --p;\n ended = false;\n } // Un-end.\n opts = opts === undefined ? {} : opts;\n // TODO(deanm): Bounds check x, y. Do they need to be within the virtual\n // canvas width/height, I imagine?\n if (x < 0 || y < 0 || x > 65535 || y > 65535) throw 'x/y invalid.';\n if (w <= 0 || h <= 0 || w > 65535 || h > 65535) throw 'Width/Height invalid.';\n if (indexed_pixels.length < w * h) throw 'Not enough pixels for the frame size.';\n let using_local_palette = true;\n let palette = opts.palette;\n if (palette === undefined || palette === null) {\n using_local_palette = false;\n palette = global_palette;\n }\n if (palette === undefined || palette === null)\n throw 'Must supply either a local or global palette.';\n let num_colors = check_palette_and_num_colors(palette);\n // Compute the min_code_size (power of 2), destroying num_colors.\n let min_code_size = 0;\n num_colors >>= 1;\n while (num_colors) {\n ++min_code_size;\n num_colors >>= 1;\n }\n num_colors = 1 << min_code_size; // Now we can easily get it back.\n const delay = opts.delay === undefined ? 0 : opts.delay;\n // From the spec:\n // 0 - No disposal specified. The decoder is\n // not required to take any action.\n // 1 - Do not dispose. The graphic is to be left\n // in place.\n // 2 - Restore to background color. The area used by the\n // graphic must be restored to the background color.\n // 3 - Restore to previous. The decoder is required to\n // restore the area overwritten by the graphic with\n // what was there prior to rendering the graphic.\n // 4-7 - To be defined.\n // NOTE(deanm): Dispose background doesn't really work, apparently most\n // browsers ignore the background palette index and clear to transparency.\n const disposal = opts.disposal === undefined ? 0 : opts.disposal;\n if (disposal < 0 || disposal > 3)\n // 4-7 is reserved.\n throw 'Disposal out of range.';\n let use_transparency = false;\n let transparent_index = 0;\n if (opts.transparent !== undefined && opts.transparent !== null) {\n use_transparency = true;\n transparent_index = opts.transparent;\n if (transparent_index < 0 || transparent_index >= num_colors)\n throw 'Transparent color index.';\n }\n if (disposal !== 0 || use_transparency || delay !== 0) {\n // - Graphics Control Extension\n buf[p++] = 0x21;\n buf[p++] = 0xf9; // Extension / Label.\n buf[p++] = 4; // Byte size.\n buf[p++] = (disposal << 2) | (use_transparency === true ? 1 : 0);\n buf[p++] = delay & 0xff;\n buf[p++] = (delay >> 8) & 0xff;\n buf[p++] = transparent_index; // Transparent color index.\n buf[p++] = 0; // Block Terminator.\n }\n // - Image Descriptor\n buf[p++] = 0x2c; // Image Seperator.\n buf[p++] = x & 0xff;\n buf[p++] = (x >> 8) & 0xff; // Left.\n buf[p++] = y & 0xff;\n buf[p++] = (y >> 8) & 0xff; // Top.\n buf[p++] = w & 0xff;\n buf[p++] = (w >> 8) & 0xff;\n buf[p++] = h & 0xff;\n buf[p++] = (h >> 8) & 0xff;\n // NOTE: No sort flag (unused?).\n // TODO(deanm): Support interlace.\n buf[p++] = using_local_palette === true ? 0x80 | (min_code_size - 1) : 0;\n // - Local Color Table\n if (using_local_palette === true) {\n for (let i = 0, il = palette.length; i < il; ++i) {\n const rgb = palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n p = GifWriterOutputLZWCodeStream(buf, p, min_code_size < 2 ? 2 : min_code_size, indexed_pixels);\n };\n this.end = function () {\n if (ended === false) {\n buf[p++] = 0x3b; // Trailer.\n ended = true;\n }\n return p;\n };\n // Main compression routine, palette indexes -> LZW code stream.\n // |index_stream| must have at least one entry.\n function GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n buf[p++] = min_code_size;\n let cur_subblock = p++; // Pointing at the length field.\n const clear_code = 1 << min_code_size;\n const code_mask = clear_code - 1;\n const eoi_code = clear_code + 1;\n let next_code = eoi_code + 1;\n let cur_code_size = min_code_size + 1; // Number of bits per code.\n let cur_shift = 0;\n // We have at most 12-bit codes, so we should have to hold a max of 19\n // bits here (and then we would write out).\n let cur = 0;\n function emit_bytes_to_buffer(bit_block_size) {\n while (cur_shift >= bit_block_size) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n }\n function emit_code(c) {\n cur |= c << cur_shift;\n cur_shift += cur_code_size;\n emit_bytes_to_buffer(8);\n }\n // I am not an expert on the topic, and I don't want to write a thesis.\n // However, it is good to outline here the basic algorithm and the few data\n // structures and optimizations here that make this implementation fast.\n // The basic idea behind LZW is to build a table of previously seen runs\n // addressed by a short id (herein called output code). All data is\n // referenced by a code, which represents one or more values from the\n // original input stream. All input bytes can be referenced as the same\n // value as an output code. So if you didn't want any compression, you\n // could more or less just output the original bytes as codes (there are\n // some details to this, but it is the idea). In order to achieve\n // compression, values greater then the input range (codes can be up to\n // 12-bit while input only 8-bit) represent a sequence of previously seen\n // inputs. The decompressor is able to build the same mapping while\n // decoding, so there is always a shared common knowledge between the\n // encoding and decoder, which is also important for \"timing\" aspects like\n // how to handle variable bit width code encoding.\n //\n // One obvious but very important consequence of the table system is there\n // is always a unique id (at most 12-bits) to map the runs. 'A' might be\n // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc. This relationship\n // can be used for an effecient lookup strategy for the code mapping. We\n // need to know if a run has been seen before, and be able to map that run\n // to the output code. Since we start with known unique ids (input bytes),\n // and then from those build more unique ids (table entries), we can\n // continue this chain (almost like a linked list) to always have small\n // integer values that represent the current byte chains in the encoder.\n // This means instead of tracking the input bytes (AAAABCD) to know our\n // current state, we can track the table entry for AAAABC (it is guaranteed\n // to exist by the nature of the algorithm) and the next character D.\n // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n // unique. This allows us to create a simple lookup key for mapping input\n // sequences to codes (table indices) without having to store or search\n // any of the code sequences. So if 'AAAA' has a table entry of 12, the\n // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n // key. This leads to a integer value at most 20-bits, which can always\n // fit in an SMI value and be used as a fast sparse array / object key.\n // Output code for the current contents of the index buffer.\n let ib_code = index_stream[0] & code_mask; // Load first input index.\n let code_table = {}; // Key'd on our 20-bit \"tuple\".\n emit_code(clear_code); // Spec says first code should be a clear code.\n // First index already loaded, process the rest of the stream.\n for (let i = 1, il = index_stream.length; i < il; ++i) {\n const k = index_stream[i] & code_mask;\n const cur_key = (ib_code << 8) | k; // (prev, k) unique tuple.\n const cur_code = code_table[cur_key]; // buffer + k.\n // Check if we have to create a new code table entry.\n if (cur_code === undefined) {\n // We don't have buffer + k.\n // Emit index buffer (without k).\n // This is an inline version of emit_code, because this is the core\n // writing routine of the compressor (and V8 cannot inline emit_code\n // because it is a closure here in a different context). Additionally\n // we can call emit_byte_to_buffer less often, because we can have\n // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n // be 12-bits, so can safely have 18-bits there without overflow.\n // emit_code(ib_code);\n cur |= ib_code << cur_shift;\n cur_shift += cur_code_size;\n while (cur_shift >= 8) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n if (next_code === 4096) {\n // Table full, need a clear.\n emit_code(clear_code);\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_table = {};\n } else {\n // Table not full, insert a new entry.\n // Increase our variable bit code sizes if necessary. This is a bit\n // tricky as it is based on \"timing\" between the encoding and\n // decoder. From the encoders perspective this should happen after\n // we've already emitted the index buffer and are about to create the\n // first table entry that would overflow our current code bit size.\n if (next_code >= 1 << cur_code_size) ++cur_code_size;\n code_table[cur_key] = next_code++; // Insert into code table.\n }\n ib_code = k; // Index buffer to single input k.\n } else {\n ib_code = cur_code; // Index buffer to sequence in code table.\n }\n }\n emit_code(ib_code); // There will still be something in the index buffer.\n emit_code(eoi_code); // End Of Information.\n // Flush / finalize the sub-blocks stream to the buffer.\n emit_bytes_to_buffer(1);\n // Finish the sub-blocks, writing out any unfinished lengths and\n // terminating with a sub-block of length 0. If we have already started\n // but not yet used a sub-block it can just become the terminator.\n if (cur_subblock + 1 === p) {\n // Started but unused.\n buf[cur_subblock] = 0;\n } else {\n // Started and used, write length and additional terminator block.\n buf[cur_subblock] = p - cur_subblock - 1;\n buf[p++] = 0;\n }\n return p;\n }\n}\n/*\n animatedGIF.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\n// Helpers\nconst noop$2 = function noop() {};\nconst AnimatedGIF = function AnimatedGIF(options) {\n this.canvas = null;\n this.ctx = null;\n this.repeat = 0;\n this.frames = [];\n this.numRenderedFrames = 0;\n this.onRenderCompleteCallback = noop$2;\n this.onRenderProgressCallback = noop$2;\n this.workers = [];\n this.availableWorkers = [];\n this.generatingGIF = false;\n this.options = options;\n // Constructs and initializes the the web workers appropriately\n this.initializeWebWorkers(options);\n};\nAnimatedGIF.prototype = {\n workerMethods: workerCode(),\n initializeWebWorkers: function initializeWebWorkers(options) {\n const self = this;\n const processFrameWorkerCode = `${NeuQuant.toString()}(${workerCode.toString()}());`;\n let webWorkerObj = void 0;\n let objectUrl = void 0;\n let webWorker = void 0;\n let numWorkers = void 0;\n let x = -1;\n let workerError = '';\n numWorkers = options.numWorkers;\n while (++x < numWorkers) {\n webWorkerObj = utils.createWebWorker(processFrameWorkerCode);\n if (utils.isObject(webWorkerObj)) {\n objectUrl = webWorkerObj.objectUrl;\n webWorker = webWorkerObj.worker;\n self.workers.push({\n worker: webWorker,\n objectUrl\n });\n self.availableWorkers.push(webWorker);\n } else {\n workerError = webWorkerObj;\n utils.webWorkerError = Boolean(webWorkerObj);\n }\n }\n this.workerError = workerError;\n this.canvas = document.createElement('canvas');\n this.canvas.width = options.gifWidth;\n this.canvas.height = options.gifHeight;\n this.ctx = this.canvas.getContext('2d');\n this.frames = [];\n },\n // Return a worker for processing a frame\n getWorker: function getWorker() {\n return this.availableWorkers.pop();\n },\n // Restores a worker to the pool\n freeWorker: function freeWorker(worker) {\n this.availableWorkers.push(worker);\n },\n byteMap: (function () {\n const byteMap = [];\n for (let i = 0; i < 256; i++) {\n byteMap[i] = String.fromCharCode(i);\n }\n return byteMap;\n })(),\n bufferToString: function bufferToString(buffer) {\n const numberValues = buffer.length;\n let str = '';\n let x = -1;\n while (++x < numberValues) {\n str += this.byteMap[buffer[x]];\n }\n return str;\n },\n onFrameFinished: function onFrameFinished(progressCallback) {\n // The GIF is not written until we're done with all the frames\n // because they might not be processed in the same order\n const self = this;\n const frames = self.frames;\n const options = self.options;\n const hasExistingImages = Boolean((options.images || []).length);\n const allDone = frames.every(function (frame) {\n return !frame.beingProcessed && frame.done;\n });\n self.numRenderedFrames++;\n if (hasExistingImages) {\n progressCallback(self.numRenderedFrames / frames.length);\n }\n self.onRenderProgressCallback((self.numRenderedFrames * 0.75) / frames.length);\n if (allDone) {\n if (!self.generatingGIF) {\n self.generateGIF(frames, self.onRenderCompleteCallback);\n }\n } else {\n utils.requestTimeout(function () {\n self.processNextFrame();\n }, 1);\n }\n },\n processFrame: function processFrame(position) {\n const AnimatedGifContext = this;\n const _options = this.options;\n const progressCallback = _options.progressCallback;\n const sampleInterval = _options.sampleInterval;\n const frames = this.frames;\n let frame = void 0;\n let worker = void 0;\n const done = function done() {\n const ev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const data = ev.data;\n // Delete original data, and free memory\n delete frame.data;\n frame.pixels = Array.prototype.slice.call(data.pixels);\n frame.palette = Array.prototype.slice.call(data.palette);\n frame.done = true;\n frame.beingProcessed = false;\n AnimatedGifContext.freeWorker(worker);\n AnimatedGifContext.onFrameFinished(progressCallback);\n };\n frame = frames[position];\n if (frame.beingProcessed || frame.done) {\n this.onFrameFinished();\n return;\n }\n frame.sampleInterval = sampleInterval;\n frame.beingProcessed = true;\n frame.gifshot = true;\n worker = this.getWorker();\n if (worker) {\n // Process the frame in a web worker\n worker.onmessage = done;\n worker.postMessage(frame);\n } else {\n // Process the frame in the current thread\n done({\n data: AnimatedGifContext.workerMethods.run(frame)\n });\n }\n },\n startRendering: function startRendering(completeCallback) {\n this.onRenderCompleteCallback = completeCallback;\n for (let i = 0; i < this.options.numWorkers && i < this.frames.length; i++) {\n this.processFrame(i);\n }\n },\n processNextFrame: function processNextFrame() {\n let position = -1;\n for (let i = 0; i < this.frames.length; i++) {\n const frame = this.frames[i];\n if (!frame.done && !frame.beingProcessed) {\n position = i;\n break;\n }\n }\n if (position >= 0) {\n this.processFrame(position);\n }\n },\n // Takes the already processed data in frames and feeds it to a new\n // GifWriter instance in order to get the binary GIF file\n generateGIF: function generateGIF(frames, callback) {\n // TODO: Weird: using a simple JS array instead of a typed array,\n // the files are WAY smaller o_o. Patches/explanations welcome!\n const buffer = []; // new Uint8Array(width * height * frames.length * 5);\n const gifOptions = {\n loop: this.repeat\n };\n const options = this.options;\n const interval = options.interval;\n const frameDuration = options.frameDuration;\n const existingImages = options.images;\n const hasExistingImages = Boolean(existingImages.length);\n const height = options.gifHeight;\n const width = options.gifWidth;\n const gifWriter$$1 = new gifWriter(buffer, width, height, gifOptions);\n const onRenderProgressCallback = this.onRenderProgressCallback;\n const delay = hasExistingImages ? interval * 100 : 0;\n let bufferToString = void 0;\n let gif = void 0;\n this.generatingGIF = true;\n utils.each(frames, function (iterator, frame) {\n const framePalette = frame.palette;\n onRenderProgressCallback(0.75 + (0.25 * frame.position * 1.0) / frames.length);\n for (let i = 0; i < frameDuration; i++) {\n gifWriter$$1.addFrame(0, 0, width, height, frame.pixels, {\n palette: framePalette,\n delay\n });\n }\n });\n gifWriter$$1.end();\n onRenderProgressCallback(1.0);\n this.frames = [];\n this.generatingGIF = false;\n if (utils.isFunction(callback)) {\n bufferToString = this.bufferToString(buffer);\n gif = `data:image/gif;base64,${utils.btoa(bufferToString)}`;\n callback(gif);\n }\n },\n // From GIF: 0 = loop forever, null = not looping, n > 0 = loop n times and stop\n setRepeat: function setRepeat(r) {\n this.repeat = r;\n },\n addFrame: function addFrame(element, gifshotOptions) {\n gifshotOptions = utils.isObject(gifshotOptions) ? gifshotOptions : {};\n const self = this;\n const ctx = self.ctx;\n const options = self.options;\n const width = options.gifWidth;\n const height = options.gifHeight;\n const fontSize = utils.getFontSize(gifshotOptions);\n const _gifshotOptions = gifshotOptions;\n const filter = _gifshotOptions.filter;\n const fontColor = _gifshotOptions.fontColor;\n const fontFamily = _gifshotOptions.fontFamily;\n const fontWeight = _gifshotOptions.fontWeight;\n const _gifHeight = _gifshotOptions.gifHeight;\n const _gifWidth = _gifshotOptions.gifWidth;\n const text = _gifshotOptions.text;\n const textAlign = _gifshotOptions.textAlign;\n const textBaseline = _gifshotOptions.textBaseline;\n const textXCoordinate = gifshotOptions.textXCoordinate\n ? gifshotOptions.textXCoordinate\n : textAlign === 'left'\n ? 1\n : textAlign === 'right'\n ? width\n : width / 2;\n const textYCoordinate = gifshotOptions.textYCoordinate\n ? gifshotOptions.textYCoordinate\n : textBaseline === 'top'\n ? 1\n : textBaseline === 'center'\n ? height / 2\n : height;\n const font = `${fontWeight} ${fontSize} ${fontFamily}`;\n let imageData = void 0;\n try {\n ctx.filter = filter;\n ctx.drawImage(element, 0, 0, width, height);\n if (text) {\n ctx.font = font;\n ctx.fillStyle = fontColor;\n ctx.textAlign = textAlign;\n ctx.textBaseline = textBaseline;\n ctx.fillText(text, textXCoordinate, textYCoordinate);\n }\n imageData = ctx.getImageData(0, 0, width, height);\n self.addFrameImageData(imageData);\n } catch (e) {\n return `${e}`;\n }\n },\n addFrameImageData: function addFrameImageData() {\n const imageData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const frames = this.frames;\n const imageDataArray = imageData.data;\n this.frames.push({\n data: imageDataArray,\n width: imageData.width,\n height: imageData.height,\n palette: null,\n dithering: null,\n done: false,\n beingProcessed: false,\n position: frames.length\n });\n },\n onRenderProgress: function onRenderProgress(callback) {\n this.onRenderProgressCallback = callback;\n },\n isRendering: function isRendering() {\n return this.generatingGIF;\n },\n getBase64GIF: function getBase64GIF(completeCallback) {\n const self = this;\n const onRenderComplete = function onRenderComplete(gif) {\n self.destroyWorkers();\n utils.requestTimeout(function () {\n completeCallback(gif);\n }, 0);\n };\n self.startRendering(onRenderComplete);\n },\n destroyWorkers: function destroyWorkers() {\n if (this.workerError) {\n return;\n }\n const workers = this.workers;\n // Explicitly ask web workers to die so they are explicitly GC'ed\n utils.each(workers, function (iterator, workerObj) {\n const worker = workerObj.worker;\n const objectUrl = workerObj.objectUrl;\n worker.terminate();\n utils.URL.revokeObjectURL(objectUrl);\n });\n }\n};\n/*\n getBase64GIF.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\nfunction getBase64GIF(animatedGifInstance, callback) {\n // This is asynchronous, rendered with WebWorkers\n animatedGifInstance.getBase64GIF(function (image) {\n callback({\n error: false,\n errorCode: '',\n errorMsg: '',\n image\n });\n });\n}\n/*\n existingImages.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\nfunction existingImages() {\n const obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const _self = this;\n const callback = obj.callback;\n const images = obj.images;\n const options = obj.options;\n let imagesLength = obj.imagesLength;\n const skipObj = {\n getUserMedia: true,\n 'globalThis.URL': true\n };\n const errorObj = error.validate(skipObj);\n const loadedImages = [];\n let loadedImagesLength = 0;\n let tempImage = void 0;\n let ag = void 0;\n if (errorObj.error) {\n return callback(errorObj);\n }\n // change workerPath to point to where Animated_GIF.worker.js is\n ag = new AnimatedGIF(options);\n utils.each(images, function (index, image) {\n const currentImage = image;\n // if (image.src) {\n // currentImage = currentImage.src;\n // }\n if (utils.isDrawable(currentImage)) {\n if (options.crossOrigin) {\n currentImage.crossOrigin = options.crossOrigin;\n }\n loadedImages[index] = currentImage;\n loadedImagesLength += 1;\n if (loadedImagesLength === imagesLength) {\n addLoadedImagesToGif();\n }\n } else if (utils.isString(currentImage)) {\n tempImage = new Image();\n if (options.crossOrigin) {\n tempImage.crossOrigin = options.crossOrigin;\n }\n (function (tempImage) {\n if (image.text) {\n tempImage.text = image.text;\n }\n tempImage.onerror = function (e) {\n let obj = void 0;\n --imagesLength; // skips over images that error out\n if (imagesLength === 0) {\n obj = {};\n obj.error = 'None of the requested images was capable of being retrieved';\n return callback(obj);\n }\n };\n tempImage.onload = function (e) {\n if (image.text) {\n loadedImages[index] = {\n img: tempImage,\n text: tempImage.text\n };\n } else {\n loadedImages[index] = tempImage;\n }\n loadedImagesLength += 1;\n if (loadedImagesLength === imagesLength) {\n addLoadedImagesToGif();\n }\n utils.removeElement(tempImage);\n };\n tempImage.src = currentImage;\n })(tempImage);\n utils.setCSSAttr(tempImage, {\n position: 'fixed',\n opacity: '0'\n });\n document.body.appendChild(tempImage);\n }\n });\n function addLoadedImagesToGif() {\n utils.each(loadedImages, function (index, loadedImage) {\n if (loadedImage) {\n if (loadedImage.text) {\n ag.addFrame(loadedImage.img, options, loadedImage.text);\n } else {\n ag.addFrame(loadedImage, options);\n }\n }\n });\n getBase64GIF(ag, callback);\n }\n}\n/*\n screenShot.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\n// Helpers\nconst noop$3 = function noop() {};\nconst screenShot = {\n getGIF: function getGIF() {\n const options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments[1];\n callback = utils.isFunction(callback) ? callback : noop$3;\n const canvas = document.createElement('canvas');\n let context = void 0;\n const existingImages = options.images;\n const hasExistingImages = Boolean(existingImages.length);\n const cameraStream = options.cameraStream;\n const crop = options.crop;\n const filter = options.filter;\n const fontColor = options.fontColor;\n const fontFamily = options.fontFamily;\n const fontWeight = options.fontWeight;\n const keepCameraOn = options.keepCameraOn;\n const _numWorkers = options.numWorkers;\n const progressCallback = options.progressCallback;\n const saveRenderingContexts = options.saveRenderingContexts;\n const savedRenderingContexts = options.savedRenderingContexts;\n const text = options.text;\n const textAlign = options.textAlign;\n const textBaseline = options.textBaseline;\n const videoElement = options.videoElement;\n const videoHeight = options.videoHeight;\n const videoWidth = options.videoWidth;\n const webcamVideoElement = options.webcamVideoElement;\n const gifWidth = Number(options.gifWidth);\n const gifHeight = Number(options.gifHeight);\n let interval = Number(options.interval);\n const _sampleInterval = Number(options.sampleInterval);\n const waitBetweenFrames = hasExistingImages ? 0 : interval * 1000;\n const renderingContextsToSave = [];\n let numFrames = savedRenderingContexts.length\n ? savedRenderingContexts.length\n : options.numFrames;\n let pendingFrames = numFrames;\n const ag = new AnimatedGIF(options);\n const fontSize = utils.getFontSize(options);\n const textXCoordinate = options.textXCoordinate\n ? options.textXCoordinate\n : textAlign === 'left'\n ? 1\n : textAlign === 'right'\n ? gifWidth\n : gifWidth / 2;\n const textYCoordinate = options.textYCoordinate\n ? options.textYCoordinate\n : textBaseline === 'top'\n ? 1\n : textBaseline === 'center'\n ? gifHeight / 2\n : gifHeight;\n const font = `${fontWeight} ${fontSize} ${fontFamily}`;\n let sourceX = crop ? Math.floor(crop.scaledWidth / 2) : 0;\n let sourceWidth = crop ? videoWidth - crop.scaledWidth : 0;\n let sourceY = crop ? Math.floor(crop.scaledHeight / 2) : 0;\n let sourceHeight = crop ? videoHeight - crop.scaledHeight : 0;\n const captureFrames = function captureSingleFrame() {\n const framesLeft = pendingFrames - 1;\n if (savedRenderingContexts.length) {\n context.putImageData(savedRenderingContexts[numFrames - pendingFrames], 0, 0);\n finishCapture();\n } else {\n drawVideo();\n }\n function drawVideo() {\n try {\n // Makes sure the canvas video heights/widths are in bounds\n if (sourceWidth > videoWidth) {\n sourceWidth = videoWidth;\n }\n if (sourceHeight > videoHeight) {\n sourceHeight = videoHeight;\n }\n if (sourceX < 0) {\n sourceX = 0;\n }\n if (sourceY < 0) {\n sourceY = 0;\n }\n context.filter = filter;\n context.drawImage(\n videoElement,\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n 0,\n 0,\n gifWidth,\n gifHeight\n );\n finishCapture();\n } catch (e) {\n // There is a Firefox bug that sometimes throws NS_ERROR_NOT_AVAILABLE and\n // and IndexSizeError errors when drawing a video element to the canvas\n if (e.name === 'NS_ERROR_NOT_AVAILABLE') {\n // Wait 100ms before trying again\n utils.requestTimeout(drawVideo, 100);\n } else {\n throw e;\n }\n }\n }\n function finishCapture() {\n let imageData = void 0;\n if (saveRenderingContexts) {\n renderingContextsToSave.push(context.getImageData(0, 0, gifWidth, gifHeight));\n }\n // If there is text to display, make sure to display it on the canvas after the image is drawn\n if (text) {\n context.font = font;\n context.fillStyle = fontColor;\n context.textAlign = textAlign;\n context.textBaseline = textBaseline;\n context.fillText(text, textXCoordinate, textYCoordinate);\n }\n imageData = context.getImageData(0, 0, gifWidth, gifHeight);\n ag.addFrameImageData(imageData);\n pendingFrames = framesLeft;\n // Call back with an r value indicating how far along we are in capture\n progressCallback((numFrames - pendingFrames) / numFrames);\n if (framesLeft > 0) {\n // test\n utils.requestTimeout(captureSingleFrame, waitBetweenFrames);\n }\n if (!pendingFrames) {\n ag.getBase64GIF(function (image) {\n callback({\n error: false,\n errorCode: '',\n errorMsg: '',\n image,\n cameraStream,\n videoElement,\n webcamVideoElement,\n savedRenderingContexts: renderingContextsToSave,\n keepCameraOn\n });\n });\n }\n }\n };\n numFrames = numFrames !== undefined ? numFrames : 10;\n interval = interval !== undefined ? interval : 0.1; // In seconds\n canvas.width = gifWidth;\n canvas.height = gifHeight;\n context = canvas.getContext('2d');\n (function capture() {\n if (!savedRenderingContexts.length && videoElement.currentTime === 0) {\n utils.requestTimeout(capture, 100);\n return;\n }\n captureFrames();\n })();\n },\n getCropDimensions: function getCropDimensions() {\n const obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const width = obj.videoWidth;\n const height = obj.videoHeight;\n const gifWidth = obj.gifWidth;\n const gifHeight = obj.gifHeight;\n const result = {\n width: 0,\n height: 0,\n scaledWidth: 0,\n scaledHeight: 0\n };\n if (width > height) {\n result.width = Math.round(width * (gifHeight / height)) - gifWidth;\n result.scaledWidth = Math.round(result.width * (height / gifHeight));\n } else {\n result.height = Math.round(height * (gifWidth / width)) - gifHeight;\n result.scaledHeight = Math.round(result.height * (width / gifWidth));\n }\n return result;\n }\n};\n/*\n videoStream.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nvar videoStream = {\n loadedData: false,\n defaultVideoDimensions: {\n width: 640,\n height: 480\n },\n findVideoSize: function findVideoSizeMethod(obj) {\n findVideoSizeMethod.attempts = findVideoSizeMethod.attempts || 0;\n const cameraStream = obj.cameraStream;\n const completedCallback = obj.completedCallback;\n const videoElement = obj.videoElement;\n if (!videoElement) {\n return;\n }\n if (videoElement.videoWidth > 0 && videoElement.videoHeight > 0) {\n videoElement.removeEventListener('loadeddata', videoStream.findVideoSize);\n completedCallback({\n videoElement,\n cameraStream,\n videoWidth: videoElement.videoWidth,\n videoHeight: videoElement.videoHeight\n });\n } else if (findVideoSizeMethod.attempts < 10) {\n findVideoSizeMethod.attempts += 1;\n utils.requestTimeout(function () {\n videoStream.findVideoSize(obj);\n }, 400);\n } else {\n completedCallback({\n videoElement,\n cameraStream,\n videoWidth: videoStream.defaultVideoDimensions.width,\n videoHeight: videoStream.defaultVideoDimensions.height\n });\n }\n },\n onStreamingTimeout: function onStreamingTimeout(callback) {\n if (utils.isFunction(callback)) {\n callback({\n error: true,\n errorCode: 'getUserMedia',\n errorMsg:\n 'There was an issue with the getUserMedia API - Timed out while trying to start streaming',\n image: null,\n cameraStream: {}\n });\n }\n },\n stream: function stream(obj) {\n const existingVideo = utils.isArray(obj.existingVideo)\n ? obj.existingVideo[0]\n : obj.existingVideo;\n const cameraStream = obj.cameraStream;\n const completedCallback = obj.completedCallback;\n const streamedCallback = obj.streamedCallback;\n const videoElement = obj.videoElement;\n if (utils.isFunction(streamedCallback)) {\n streamedCallback();\n }\n if (existingVideo) {\n if (utils.isString(existingVideo)) {\n videoElement.src = existingVideo;\n videoElement.innerHTML = `<source src=\"${existingVideo}\" type=\"video/${utils.getExtension(\n existingVideo\n )}\" />`;\n } else if (existingVideo instanceof Blob) {\n try {\n videoElement.src = utils.URL.createObjectURL(existingVideo);\n } catch (_e) {}\n videoElement.innerHTML = `<source src=\"${existingVideo}\" type=\"${existingVideo.type}\" />`;\n }\n } else if (videoElement.mozSrcObject) {\n videoElement.mozSrcObject = cameraStream;\n } else if (utils.URL) {\n try {\n videoElement.srcObject = cameraStream;\n videoElement.src = utils.URL.createObjectURL(cameraStream);\n } catch (_e) {\n videoElement.srcObject = cameraStream;\n }\n }\n videoElement.play();\n utils.requestTimeout(function checkLoadedData() {\n checkLoadedData.count = checkLoadedData.count || 0;\n if (videoStream.loadedData === true) {\n videoStream.findVideoSize({\n videoElement,\n cameraStream,\n completedCallback\n });\n videoStream.loadedData = false;\n } else {\n checkLoadedData.count += 1;\n if (checkLoadedData.count > 10) {\n videoStream.findVideoSize({\n videoElement,\n cameraStream,\n completedCallback\n });\n } else {\n checkLoadedData();\n }\n }\n }, 0);\n },\n startStreaming: function startStreaming(obj) {\n const errorCallback = utils.isFunction(obj.error) ? obj.error : utils.noop;\n const streamedCallback = utils.isFunction(obj.streamed) ? obj.streamed : utils.noop;\n const completedCallback = utils.isFunction(obj.completed) ? obj.completed : utils.noop;\n const crossOrigin = obj.crossOrigin;\n const existingVideo = obj.existingVideo;\n const lastCameraStream = obj.lastCameraStream;\n const options = obj.options;\n const webcamVideoElement = obj.webcamVideoElement;\n const videoElement = utils.isElement(existingVideo)\n ? existingVideo\n : webcamVideoElement\n ? webcamVideoElement\n : document.createElement('video');\n const _cameraStream = void 0;\n if (crossOrigin) {\n videoElement.crossOrigin = options.crossOrigin;\n }\n videoElement.autoplay = true;\n videoElement.loop = true;\n videoElement.muted = true;\n videoElement.addEventListener('loadeddata', function (event) {\n videoStream.loadedData = true;\n if (options.offset) {\n videoElement.currentTime = options.offset;\n }\n });\n if (existingVideo) {\n videoStream.stream({\n videoElement,\n existingVideo,\n completedCallback\n });\n } else if (lastCameraStream) {\n videoStream.stream({\n videoElement,\n cameraStream: lastCameraStream,\n streamedCallback,\n completedCallback\n });\n } else {\n utils.getUserMedia(\n {\n video: true\n },\n function (stream) {\n videoStream.stream({\n videoElement,\n cameraStream: stream,\n streamedCallback,\n completedCallback\n });\n },\n errorCallback\n );\n }\n },\n startVideoStreaming: function startVideoStreaming(callback) {\n const options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const timeoutLength = options.timeout !== undefined ? options.timeout : 0;\n const originalCallback = options.callback;\n const webcamVideoElement = options.webcamVideoElement;\n let noGetUserMediaSupportTimeout = void 0;\n // Some browsers apparently have support for video streaming because of the\n // presence of the getUserMedia function, but then do not answer our\n // calls for streaming.\n // So we'll set up this timeout and if nothing happens after a while, we'll\n // conclude that there's no actual getUserMedia support.\n if (timeoutLength > 0) {\n noGetUserMediaSupportTimeout = utils.requestTimeout(function () {\n videoStream.onStreamingTimeout(originalCallback);\n }, 10000);\n }\n videoStream.startStreaming({\n error: function error() {\n originalCallback({\n error: true,\n errorCode: 'getUserMedia',\n errorMsg:\n 'There was an issue with the getUserMedia API - the user probably denied permission',\n image: null,\n cameraStream: {}\n });\n },\n streamed: function streamed() {\n // The streaming started somehow, so we can assume there is getUserMedia support\n clearTimeout(noGetUserMediaSupportTimeout);\n },\n completed: function completed() {\n const obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const cameraStream = obj.cameraStream;\n const videoElement = obj.videoElement;\n const videoHeight = obj.videoHeight;\n const videoWidth = obj.videoWidth;\n callback({\n cameraStream,\n videoElement,\n videoHeight,\n videoWidth\n });\n },\n lastCameraStream: options.lastCameraStream,\n webcamVideoElement,\n crossOrigin: options.crossOrigin,\n options\n });\n },\n stopVideoStreaming: function stopVideoStreaming(obj) {\n obj = utils.isObject(obj) ? obj : {};\n const _obj = obj;\n const keepCameraOn = _obj.keepCameraOn;\n const videoElement = _obj.videoElement;\n const webcamVideoElement = _obj.webcamVideoElement;\n const cameraStream = obj.cameraStream || {};\n const cameraStreamTracks = cameraStream.getTracks ? cameraStream.getTracks() || [] : [];\n const hasCameraStreamTracks = Boolean(cameraStreamTracks.length);\n const firstCameraStreamTrack = cameraStreamTracks[0];\n if (!keepCameraOn && hasCameraStreamTracks) {\n if (utils.isFunction(firstCameraStreamTrack.stop)) {\n // Stops the camera stream\n firstCameraStreamTrack.stop();\n }\n }\n if (utils.isElement(videoElement) && !webcamVideoElement) {\n // Pauses the video, revokes the object URL (freeing up memory), and remove the video element\n videoElement.pause();\n // Destroys the object url\n if (utils.isFunction(utils.URL.revokeObjectURL) && !utils.webWorkerError) {\n if (videoElement.src) {\n utils.URL.revokeObjectURL(videoElement.src);\n }\n }\n // Removes the video element from the DOM\n utils.removeElement(videoElement);\n }\n }\n};\n/*\n stopVideoStreaming.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\nfunction stopVideoStreaming(options) {\n options = utils.isObject(options) ? options : {};\n videoStream.stopVideoStreaming(options);\n}\n/*\n createAndGetGIF.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nfunction createAndGetGIF(obj, callback) {\n const options = obj.options || {};\n const images = options.images;\n const video = options.video;\n const gifWidth = Number(options.gifWidth);\n const gifHeight = Number(options.gifHeight);\n const _numFrames = Number(options.numFrames);\n const cameraStream = obj.cameraStream;\n const videoElement = obj.videoElement;\n const videoWidth = obj.videoWidth;\n const videoHeight = obj.videoHeight;\n const cropDimensions = screenShot.getCropDimensions({\n videoWidth,\n videoHeight,\n gifHeight,\n gifWidth\n });\n const completeCallback = callback;\n options.crop = cropDimensions;\n options.videoElement = videoElement;\n options.videoWidth = videoWidth;\n options.videoHeight = videoHeight;\n options.cameraStream = cameraStream;\n if (!utils.isElement(videoElement)) {\n return;\n }\n videoElement.width = gifWidth + cropDimensions.width;\n videoElement.height = gifHeight + cropDimensions.height;\n if (!options.webcamVideoElement) {\n utils.setCSSAttr(videoElement, {\n position: 'fixed',\n opacity: '0'\n });\n document.body.appendChild(videoElement);\n }\n // Firefox doesn't seem to obey autoplay if the element is not in the DOM when the content\n // is loaded, so we must manually trigger play after adding it, or the video will be frozen\n videoElement.play();\n screenShot.getGIF(options, function (obj) {\n if ((!images || !images.length) && (!video || !video.length)) {\n stopVideoStreaming(obj);\n }\n completeCallback(obj);\n });\n}\n/*\n existingVideo.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nfunction existingVideo() {\n const obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const callback = obj.callback;\n let existingVideo = obj.existingVideo;\n const options = obj.options;\n const skipObj = {\n getUserMedia: true,\n 'globalThis.URL': true\n };\n const errorObj = error.validate(skipObj);\n const _loadedImages = 0;\n let videoType = void 0;\n let videoSrc = void 0;\n const _tempImage = void 0;\n const _ag = void 0;\n if (errorObj.error) {\n return callback(errorObj);\n }\n if (utils.isElement(existingVideo) && existingVideo.src) {\n videoSrc = existingVideo.src;\n videoType = utils.getExtension(videoSrc);\n if (!utils.isSupported.videoCodecs[videoType]) {\n return callback(error.messages.videoCodecs);\n }\n } else if (utils.isArray(existingVideo)) {\n utils.each(existingVideo, function (iterator, videoSrc) {\n if (videoSrc instanceof Blob) {\n videoType = videoSrc.type.substr(videoSrc.type.lastIndexOf('/') + 1, videoSrc.length);\n } else {\n videoType = videoSrc.substr(videoSrc.lastIndexOf('.') + 1, videoSrc.length);\n }\n if (utils.isSupported.videoCodecs[videoType]) {\n existingVideo = videoSrc;\n return false;\n }\n });\n }\n videoStream.startStreaming({\n completed: function completed(obj) {\n obj.options = options || {};\n createAndGetGIF(obj, callback);\n },\n existingVideo,\n crossOrigin: options.crossOrigin,\n options\n });\n}\n/*\n existingWebcam.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nfunction existingWebcam() {\n const obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const callback = obj.callback;\n const lastCameraStream = obj.lastCameraStream;\n const options = obj.options;\n const webcamVideoElement = obj.webcamVideoElement;\n if (!isWebCamGIFSupported()) {\n return callback(error.validate());\n }\n if (options.savedRenderingContexts.length) {\n screenShot.getGIF(options, function (obj) {\n callback(obj);\n });\n return;\n }\n videoStream.startVideoStreaming(\n function () {\n const obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n obj.options = options || {};\n createAndGetGIF(obj, callback);\n },\n {\n lastCameraStream,\n callback,\n webcamVideoElement,\n crossOrigin: options.crossOrigin\n }\n );\n}\n/*\n createGIF.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nfunction createGIF(userOptions, callback) {\n callback = utils.isFunction(userOptions) ? userOptions : callback;\n userOptions = utils.isObject(userOptions) ? userOptions : {};\n if (!utils.isFunction(callback)) {\n return;\n }\n let options = utils.normalizeOptions(defaultOptions, userOptions) || {};\n const lastCameraStream = userOptions.cameraStream;\n const images = options.images;\n const imagesLength = images ? images.length : 0;\n const video = options.video;\n const webcamVideoElement = options.webcamVideoElement;\n options = utils.normalizeOptions(options, {\n gifWidth: Math.floor(options.gifWidth),\n gifHeight: Math.floor(options.gifHeight)\n });\n // If the user would like to create a GIF from an existing image(s)\n if (imagesLength) {\n existingImages({\n images,\n imagesLength,\n callback,\n options\n });\n } else if (video) {\n // If the user would like to create a GIF from an existing HTML5 video\n existingVideo({\n existingVideo: video,\n callback,\n options\n });\n } else {\n // If the user would like to create a GIF from a webcam stream\n existingWebcam({\n lastCameraStream,\n callback,\n webcamVideoElement,\n options\n });\n }\n}\n/*\n takeSnapShot.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\nfunction takeSnapShot(userOptions, callback) {\n callback = utils.isFunction(userOptions) ? userOptions : callback;\n userOptions = utils.isObject(userOptions) ? userOptions : {};\n if (!utils.isFunction(callback)) {\n return;\n }\n const mergedOptions = utils.normalizeOptions(defaultOptions, userOptions);\n const options = utils.normalizeOptions(mergedOptions, {\n interval: 0.1,\n numFrames: 1,\n gifWidth: Math.floor(mergedOptions.gifWidth),\n gifHeight: Math.floor(mergedOptions.gifHeight)\n });\n createGIF(options, callback);\n}\n/*\n API.js\n */\n/* Copyright 2017 Yahoo Inc.\n * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.\n */\n// Dependencies\nconst API = {\n utils: utils$2,\n error: error$2,\n defaultOptions: defaultOptions$2,\n createGIF,\n takeSnapShot,\n stopVideoStreaming,\n isSupported,\n isWebCamGIFSupported,\n isExistingVideoGIFSupported,\n isExistingImagesGIFSupported: isSupported$1,\n VERSION: '0.4.5'\n};\n\nexport default API;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// A GIFBuilder based on the gifshot module\n// @ts-nocheck\nimport {assert} from './lib/utils/assert';\nimport gifshot from './lib/gifshot/gifshot'; // TODO - load dynamically to avoid bloating\n\n// These are gifshot module options\nconst GIF_BUILDER_OPTIONS = {\n source: 'images',\n width: 200, // Desired width of the image\n height: 200, // Desired height of the image\n\n crossOrigin: 'Anonymous', // Options are 'Anonymous', 'use-credentials', or a falsy value to not set a CORS attribute.\n\n // CALLBACKS\n progressCallback: _captureProgress => {}, // Callback that provides the current progress of the current image\n completeCallback: () => {}, // Callback function that is called when the current image is completed\n\n // QUALITY SETTINGS\n numWorkers: 2, // how many web workers to use to process the animated GIF frames. Default is 2.\n sampleInterval: 10, // pixels to skip when creating the palette. Default is 10. Less is better, but slower.\n interval: 0.1, // The amount of time (in seconds) to wait between each frame capture\n offset: null, // The amount of time (in seconds) to start capturing the GIF (only for HTML5 videos)\n numFrames: 10, // The number of frames to use to create the animated GIF. Note: Each frame is captured every 100 milliseconds of a video and every ms for existing images\n frameDuration: 1, // The amount of time (10 = 1s) to stay on each frame\n\n // CSS FILTER OPTIONS\n filter: '', // CSS filter that will be applied to the image (eg. blur(5px))\n\n // WATERMARK OPTIONS\n waterMark: null, // If an image is given here, it will be stamped on top of the GIF frames\n waterMarkHeight: null, // Height of the waterMark\n waterMarkWidth: null, // Height of the waterMark\n waterMarkXCoordinate: 1, // The X (horizontal) Coordinate of the watermark image\n waterMarkYCoordinate: 1, // The Y (vertical) Coordinate of the watermark image\n\n // TEXT OPTIONS\n text: '', // The text that covers the animated GIF\n showFrameText: true, // If frame-specific text is supplied with the image array, you can force to not be displayed\n fontWeight: 'normal', // The font weight of the text that covers the animated GIF\n fontSize: '16px', // The font size of the text that covers the animated GIF\n minFontSize: '10px', // The minimum font size of the text that covers the animated GIF\n resizeFont: false, // Whether or not the animated GIF text will be resized to fit within the GIF container\n fontFamily: 'sans-serif', // The font family of the text that covers the animated GIF\n fontColor: '#ffffff', // The font color of the text that covers the animated GIF\n textAlign: 'center', // The horizontal text alignment of the text that covers the animated GIF\n textBaseline: 'bottom', // The vertical text alignment of the text that covers the animated GIF\n textXCoordinate: null, // The X (horizontal) Coordinate of the text that covers the animated GIF\n textYCoordinate: null, // The Y (vertical) Coordinate of the text that covers the animated GIF\n\n // ADVANCED OPTIONS\n\n // WEBCAM CAPTURE OPTIONS\n webcamVideoElement: null, // You can pass an existing video element to use for the webcam GIF creation process,\n keepCameraOn: false, // Whether or not you would like the user's camera to stay on after the GIF is created\n cameraStream: null, // Expects a cameraStream Media object\n\n // CANVAS OPTIMIZATION OPTIONS\n saveRenderingContexts: false, // Whether or not you would like to save all of the canvas image binary data\n savedRenderingContexts: [] // Array of canvas image data\n};\n\nexport default class GIFBuilder {\n static get properties() {\n return {\n id: 'gif',\n name: 'GIF',\n extensions: ['gif'],\n mimeTypes: ['image/gif'],\n builder: GIFBuilder,\n options: GIF_BUILDER_OPTIONS\n };\n }\n\n constructor(options) {\n this.options = {...options};\n this.source = options.source;\n delete options.source;\n\n // Allow files to be added\n this.files = [];\n\n // Expose the gifshot module so that the full gifshot API is available to apps (Experimental)\n this.gifshot = gifshot;\n }\n\n async initialize(options): Promise<void> {\n // Expose the gifshot module so that the full gifshot API is available to apps (Experimental)\n // this.gifshot = await loadGifshotModule(options);\n }\n\n async add(file): void {\n await this.initialize();\n this.files.push(file);\n }\n\n async build(): Promise<string> {\n await this.initialize();\n this._cleanOptions(this.options);\n\n switch (this.source) {\n case 'images':\n this.options.images = this.files;\n break;\n case 'video':\n this.options.video = this.files;\n break;\n case 'webcam':\n assert(this.files.length === 0);\n break;\n default:\n throw new Error('GIFBuilder: invalid source');\n }\n\n return await this._createGIF();\n }\n\n // PRIVATE\n\n async _createGIF(): Promise<string> {\n return new Promise((resolve, reject) => {\n this.gifshot.createGIF(this.options, result => {\n // callback object properties\n // --------------------------\n // image - Base 64 image\n // cameraStream - The webRTC MediaStream object\n // error - Boolean that determines if an error occurred\n // errorCode - Helpful error label\n // errorMsg - Helpful error message\n // savedRenderingContexts - An array of canvas image data (will only be set if the saveRenderingContexts option was used)\n\n if (result.error) {\n reject(result.errorMsg);\n return;\n }\n\n // image - Base 64 image\n resolve(result.image);\n\n // var image = obj.image,\n // animatedImage = document.createElement('img');\n // animatedImage.src = image;\n // document.body.appendChild(animatedImage);\n });\n });\n }\n\n // Remove some gifshot options\n _cleanOptions(options): void {\n if (options.video || options.images || options.gifWidth || options.gifHeight) {\n console.warn('GIFBuilder: ignoring options'); // eslint-disable-line\n }\n\n // We control these through options.source instead\n delete options.video;\n delete options.images;\n\n // Use width/height props (to standardize across builders)\n options.gifWidth = options.width;\n options.gifHeight = options.height;\n delete options.width;\n delete options.height;\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAOa;AAPb;;;AAOO,IAAM,cAAc;MACzB,MAAM;MACN,IAAI;MACJ,QAAQ;MACR,UAAU;MACV,QAAQ;MACR,YAAY,CAAC,KAAK;MAClB,WAAW,CAAC,WAAW;MACvB,UAAU;MACV,QAAQ;;;;;;ACXV,eAAsB,eAAeA,OAAU;AAC7C,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,MAAM,IAAI,gBAAgBA,KAAI;AACpC,SAAO;AACT;AAGA,eAAO,WAAkC,aAAwB;AAC/D,SAAO,MAAM,eAAe,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;AACrD;AAdA;;;;;;;ACAA;;;;IAQgB,qBAAwB,mCAS3B;AAjBb;;;AAKA;AACA;AAEA,KAAM,EAAC,SAAS,qBARhB,GAQwC,sCAAqC;AAStE,IAAM,wBAAwB;MACnC,GAAG;MACH,OAAO;MACP,WAAW;;;;;;ACJb,eAAe,UAAO;AACpB,QAAM,EAAC,uBAAAC,uBAAqB,IAAI,MAAM;AACtC,SAAOA;AACT;AAnBA,IASM,SAaO;AAtBb;;;AAKA;AAIA,IAAM,UAAU,OAAoC,kBAAe;AAa5D,IAAM,cAAc;MACzB,UAAU;MACV,WAAW;MACX,GAAG;MACH,SAAS;;MAET,SAAS;QACP,OAAO,CAAA;;MAET;;;;;;AC/BF;;;;;;;AAKA;AACA;;;ACFM,SAAU,OAAO,WAAoB,SAAe;AACxD,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,OAAO;EACzB;AACF;;;ACDA,IAAMC,YAAW,WAAW,YAAY,CAAA;AAexC,IAAI,QAAQ;EACV,KAAK,WAAW,OAAO,WAAW,aAAa,WAAW,UAAU,WAAW;EAC/E,eAAe,WAAA;AACb,QAAI,CAAC,WAAW;AAAW,aAAO,WAAW;AAC7C,UAAM,eACJ,WAAW,UAAU,gBACrB,WAAW,UAAU,sBACrB,WAAW,UAAU,mBACrB,WAAW,UAAU;AACvB,WAAO,eAAe,aAAa,KAAK,WAAW,SAAS,IAAI;EAClE,GAAE;EACF,kBACE,WAAW,yBACX,WAAW,+BACX,WAAW,4BACX,WAAW,0BACX,WAAW;EACb,gBAAgB,SAAS,eAAe,UAAU,OAAK;AACrD,eAAW,YAAY,MAAM;AAC7B,YAAQ,SAAS;AACjB,QAAI,CAAC,MAAM,kBAAkB;AAC3B,aAAO,WAAW,UAAU,KAAK;IACnC;AACA,UAAM,SAAQ,oBAAI,KAAI,GAAG,QAAO;AAChC,UAAM,SAAS,IAAI,OAAM;AACzB,UAAM,mBAAmB,MAAM;AAC/B,UAAM,OAAO,SAASC,QAAI;AACxB,YAAM,WAAU,oBAAI,KAAI,GAAG,QAAO;AAClC,YAAM,QAAQ,UAAU;AACxB,UAAI,SAAS,OAAO;AAClB,iBAAS,KAAI;MACf,OAAO;AACL,eAAO,QAAQ,iBAAiBA,KAAI;MACtC;IACF;AACA,WAAO,QAAQ,iBAAiB,IAAI;AACpC,WAAO;EACT;EACA,MACE,WAAW,QACX,WAAW,eACX,WAAW,qBACX,WAAW,kBACX,WAAW;EACb,OAAO,WAAA;AACL,UAAM,OACJ,WAAW,QACX,SAAU,OAAK;AACb,UAAI,SAAS;AACb,UAAI,IAAI;AACR,YAAM,IAAI,MAAM;AAChB,YAAM,MAAM;AACZ,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,UAAI,OAAO;AACX,aAAO,IAAI,GAAG;AACZ,eAAO,MAAM,WAAW,GAAG;AAC3B,eAAO,MAAM,WAAW,GAAG;AAC3B,eAAO,MAAM,WAAW,GAAG;AAC3B,eAAO,QAAQ;AACf,gBAAS,OAAO,MAAM,IAAM,QAAQ;AACpC,gBAAS,OAAO,OAAO,IAAM,QAAQ;AACrC,eAAO,OAAO;AACd,YAAI,OAAO,MAAM,IAAI,GAAG;AACtB,iBAAO,OAAO;QAChB,WAAW,OAAO,MAAM,IAAI,GAAG;AAC7B,iBAAO;QACT;AACA,iBACE,SAAS,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI;MACrF;AACA,aAAO;IACT;AACF,WAAO,OAAO,KAAK,KAAK,UAAU,IAAI,MAAM;EAC9C,GAAE;EACF,UAAU,SAAS,SAAS,KAAG;AAC7B,WAAO,OAAO,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM;EACxD;EACA,eAAe,SAAS,cAAc,KAAG;AACvC,WAAO,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,KAAK,GAAG,EAAE;EAClD;EACA,SAAS,SAAS,QAAQ,KAAG;AAC3B,WAAO,OAAO,MAAM,QAAQ,GAAG;EACjC;EACA,YAAY,SAAS,WAAW,MAAI;AAClC,WAAO,QAAQ,OAAO,SAAS;EACjC;EACA,WAAW,SAAS,UAAU,MAAI;AAChC,WAAO,QAAQ,KAAK,aAAa;EACnC;EACA,eAAe,SAAS,cAAc,OAAK;AACzC,WAAO,OAAO,gBAAgB,eAAe,iBAAiB;EAChE;EACA,YAAY,SAAS,WAAW,OAAK;AACnC,WAAO,MAAM,UAAU,KAAK,KAAK,MAAM,cAAc,KAAK;EAC5D;EACA,UAAU,SAAS,SAAS,OAAK;AAC/B,WAAO,OAAO,UAAU,YAAY,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;EAChF;EACA,aAAa;IACX,QAAQ,SAAS,SAAM;AACrB,YAAM,KAAKD,UAAS,cAAc,QAAQ;AAC1C,aAAO,MAAM,GAAG,cAAc,GAAG,WAAW,IAAI;IAClD;IACA,YAAY,SAAS,aAAU;AAC7B,aAAO,WAAW;IACpB;IACA,MAAM,SAAS,OAAI;AACjB,aAAO,MAAM;IACf;IACA,YAAY,SAASE,cAAU;AAC7B,aAAO,WAAW;IACpB;IACA,aAAa,SAASC,eAAW;AAC/B,aAAO,WAAW;IACpB;IACA,cAAc,WAAA;AACZ,YAAM,SAASH,UAAS,cAAc,OAAO;AAC7C,YAAM,aAAa;QACjB,KAAK;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,MAAM;;AAER,UAAI;AACF,YAAI,UAAU,OAAO,aAAa;AAEhC,qBAAW,MAAM,OAAO,YAAY,+BAA+B,MAAM;AAEzE,qBAAW,QACR,OAAO,YAAY,iCAAiC,KACnD,OAAO,YAAY,4CAA4C,OAAO;AAE1E,qBAAW,MAAM,OAAO,YAAY,4BAA4B,MAAM;AAEtE,qBAAW,MAAM,OAAO,YAAY,4BAA4B,MAAM;AAEtE,qBAAW,OAAO,OAAO,YAAY,kCAAkC,MAAM;QAC/E;MACF,SAAS,IAAI;MAAC;AACd,aAAO;IACT,GAAE;;EAEJ,MAAM,SAAS,OAAI;EAAI;EACvB,MAAM,SAAS,KAAK,YAAY,UAAQ;AACtC,QAAI,IAAI;AACR,QAAI,MAAM;AACV,QAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,UAAI;AACJ,YAAM,WAAW;AACjB,aAAO,EAAE,IAAI,KAAK;AAChB,YAAI,SAAS,GAAG,WAAW,CAAC,CAAC,MAAM,OAAO;AACxC;QACF;MACF;IACF,WAAW,MAAM,SAAS,UAAU,GAAG;AACrC,WAAK,KAAK,YAAY;AACpB,YAAI,WAAW,eAAe,CAAC,GAAG;AAChC,cAAI,SAAS,GAAG,WAAW,CAAC,CAAC,MAAM,OAAO;AACxC;UACF;QACF;MACF;IACF;EACF;EACA,kBAAkB,SAAS,iBAAiBI,iBAAgB,aAAW;AACrE,QAAI,CAAC,MAAM,SAASA,eAAc,KAAK,CAAC,MAAM,SAAS,WAAW,KAAK,CAAC,OAAO,MAAM;AACnF;IACF;AACA,UAAM,SAAS,CAAA;AACf,UAAM,KAAKA,iBAAgB,SAAU,KAAK,KAAG;AAC3C,aAAO,GAAG,IAAIA,gBAAe,GAAG;IAClC,CAAC;AACD,UAAM,KAAK,aAAa,SAAU,KAAK,KAAG;AACxC,YAAM,oBAAoB,YAAY,GAAG;AACzC,UAAI,CAAC,MAAM,SAAS,iBAAiB,GAAG;AACtC,eAAO,GAAG,IAAI;MAChB,WAAW,CAACA,gBAAe,GAAG,GAAG;AAC/B,eAAO,GAAG,IAAI;MAChB,OAAO;AACL,eAAO,GAAG,IAAI,MAAM,iBAAiBA,gBAAe,GAAG,GAAG,iBAAiB;MAC7E;IACF,CAAC;AACD,WAAO;EACT;EACA,YAAY,SAAS,WAAW,MAAM,MAAM,KAAG;AAC7C,QAAI,CAAC,MAAM,UAAU,IAAI,GAAG;AAC1B;IACF;AACA,QAAI,MAAM,SAAS,IAAI,KAAK,MAAM,SAAS,GAAG,GAAG;AAC/C,WAAK,MAAM,IAAI,IAAI;IACrB,WAAW,MAAM,SAAS,IAAI,GAAG;AAC/B,YAAM,KAAK,MAAM,SAAU,KAAKC,MAAG;AACjC,aAAK,MAAM,GAAG,IAAIA;MACpB,CAAC;IACH;EACF;EACA,eAAe,SAAS,cAAc,MAAI;AACxC,QAAI,CAAC,MAAM,UAAU,IAAI,GAAG;AAC1B;IACF;AACA,QAAI,KAAK,YAAY;AACnB,WAAK,WAAW,YAAY,IAAI;IAClC;EACF;EACA,iBAAiB,SAAS,gBAAgB,SAAO;AAC/C,QAAI,CAAC,MAAM,SAAS,OAAO,GAAG;AAC5B,aAAO,CAAA;IACT;AACA,QAAI;AACF,YAAMC,QAAO,IAAI,MAAM,KAAK,CAAC,OAAO,GAAG;QACrC,MAAM;OACP;AACD,YAAM,YAAY,MAAM,IAAI,gBAAgBA,KAAI;AAChD,YAAM,SAAS,IAAI,OAAO,SAAS;AACnC,aAAO;QACL;QACA;;IAEJ,SAAS,GAAG;AACV,aAAO,GAAG,CAAC;IACb;EACF;EACA,cAAc,SAAS,aAAa,KAAG;AACrC,WAAO,IAAI,OAAO,IAAI,YAAY,GAAG,IAAI,GAAG,IAAI,MAAM;EACxD;EACA,aAAa,SAAS,cAAW;AAC/B,UAAM,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AACpF,QAAI,CAACN,UAAS,QAAQ,QAAQ,eAAe,OAAO;AAClD,aAAO,QAAQ;IACjB;AACA,UAAM,OAAO,QAAQ;AACrB,UAAM,iBAAiB,QAAQ;AAC/B,QAAI,WAAW,SAAS,QAAQ,UAAU,EAAE;AAC5C,UAAM,cAAc,SAAS,QAAQ,aAAa,EAAE;AACpD,UAAM,MAAMA,UAAS,cAAc,KAAK;AACxC,UAAM,OAAOA,UAAS,cAAc,MAAM;AAC1C,QAAI,aAAa,SAAS,cAAc;AACxC,QAAI,YAAY,IAAI;AACpB,SAAK,YAAY;AACjB,SAAK,MAAM,WAAW,GAAG,QAAQ;AACjC,SAAK,MAAM,aAAa;AACxB,SAAK,MAAM,aAAa;AACxB,IAAAA,UAAS,KAAK,YAAY,IAAI;AAC9B,WAAO,KAAK,cAAc,kBAAkB,YAAY,aAAa;AACnE,WAAK,MAAM,WAAW,GAAG,EAAE,QAAQ;IACrC;AACA,IAAAA,UAAS,KAAK,YAAY,IAAI;AAC9B,WAAO,GAAG,QAAQ;EACpB;EACA,gBAAgB;;AAElB,IAAM,UAAU,OAAO,OAAO;EAC5B,SAAS;CACV;AAQD,IAAI,QAAQ;EACV,UAAU,SAAS,SAAS,SAAO;AACjC,cAAU,MAAM,SAAS,OAAO,IAAI,UAAU,CAAA;AAC9C,QAAI,WAAW,CAAA;AACf,UAAM,KAAK,MAAM,YAAY,SAAU,QAAQ,kBAAgB;AAC7D,YAAM,YAAY,iBAAiB;AACnC,UAAI,CAAC,QAAQ,SAAS,KAAK,CAAC,iBAAiB,WAAW;AACtD,mBAAW;AACX,iBAAS,QAAQ;AACjB,eAAO;MACT;IACF,CAAC;AACD,WAAO,SAAS;AAChB,WAAO;EACT;EACA,SAAS,SAAS,QAAQ,SAAO;AAC/B,UAAM,WAAW,MAAM,SAAS,OAAO;AACvC,UAAMO,WAAU,SAAS,UAAU;AACnC,WAAOA;EACT;EACA,YAAY;IACV;MACE,WAAW,MAAM,WAAW,MAAM,YAAY;MAC9C,WAAW;MACX,UAAU;;IAEZ;MACE,WAAW,MAAM,YAAY,OAAM;MACnC,WAAW;MACX,UAAU;;IAEZ;MACE,WAAW,MAAM,YAAY,WAAU;MACvC,WAAW;MACX,UAAU;;IAEZ;MACE,WAAW,MAAM,WAAW,MAAM,GAAG;MACrC,WAAW;MACX,UAAU;;IAEZ;MACE,WAAW,MAAM,YAAY,KAAI;MACjC,WAAW;MACX,UAAU;;IAEZ;MACE,WAAW,MAAM,YAAY,WAAU;MACvC,WAAW;MACX,UAAU;;IAEZ;MACE,WAAW,MAAM,YAAY,YAAW;MACxC,WAAW;MACX,UAAU;;;EAGd,UAAU;IACR,aAAa;MACX,WAAW;MACX,UAAU;;;;AAIhB,IAAM,UAAU,OAAO,OAAO;EAC5B,SAAS;CACV;AAQD,IAAMC,QAAO,SAASA,QAAI;AAAI;AAC9B,IAAM,iBAAiB;EACrB,gBAAgB;EAChB,YAAY;EACZ,QAAQ;EACR,UAAU;EACV,WAAW;EACX,UAAU;EACV,WAAW;EACX,eAAe;EACf,cAAc;EACd,QAAQ,CAAA;EACR,OAAO;EACP,oBAAoB;EACpB,cAAc;EACd,MAAM;EACN,YAAY;EACZ,UAAU;EACV,aAAa;EACb,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,WAAW;EACX,cAAc;EACd,iBAAiB;EACjB,iBAAiB;EACjB,kBAAkBA;EAClB,kBAAkBA;EAClB,uBAAuB;EACvB,wBAAwB,CAAA;EACxB,aAAa;;AAEf,IAAM,mBAAmB,OAAO,OAAO;EACrC,SAAS;CACV;AAQD,SAAS,cAAW;AAClB,SAAO,MAAM,QAAO;AACtB;AAOA,SAAS,uBAAoB;AAC3B,SAAO,MAAM,QAAO;AACtB;AAQA,SAAS,gBAAa;AACpB,QAAM,UAAU;IACd,cAAc;;AAEhB,SAAO,MAAM,QAAQ,OAAO;AAC9B;AAQA,SAAS,4BAA4B,QAAM;AACzC,MAAI,gBAAgB;AACpB,MAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,QAAQ;AAC1C,UAAM,KAAK,QAAQ,SAAU,QAAQ,cAAY;AAC/C,UAAI,MAAM,YAAY,YAAY,YAAY,GAAG;AAC/C,wBAAgB;MAClB;IACF,CAAC;AACD,QAAI,CAAC,eAAe;AAClB,aAAO;IACT;EACF,WAAW,MAAM,SAAS,MAAM,KAAK,OAAO,QAAQ;AAClD,QAAI,CAAC,MAAM,YAAY,YAAY,MAAM,GAAG;AAC1C,aAAO;IACT;EACF;AACA,SAAO,MAAM,QAAQ;IACnB,cAAc;GACf;AACH;AAiCA,SAAS,WAAQ;AACf,QAAM,UAAU;AAGhB,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,SAAS;AAEf,QAAM,kBAAkB,IAAI;AAE5B,QAAM,YAAY,UAAU;AAC5B,QAAM,eAAe;AACrB,QAAM,UAAU;AAEhB,QAAM,eAAe;AACrB,QAAM,UAAU,KAAK;AACrB,QAAM,aAAa;AACnB,QAAM,SAAS,KAAK;AACpB,QAAM,YAAY;AAClB,QAAM,OAAO,WAAW;AACxB,QAAM,YAAY,WAAY,aAAa;AAI3C,QAAM,UAAU,WAAW;AAC3B,QAAM,kBAAkB;AACxB,QAAM,aAAa,KAAK;AACxB,QAAM,aAAa,UAAU;AAC7B,QAAM,YAAY;AAGlB,QAAM,iBAAiB;AACvB,QAAM,YAAY,KAAK;AACvB,MAAI;AAEJ,QAAM,eAAe;AACrB,QAAM,UAAU,KAAK;AACrB,QAAM,iBAAiB,iBAAiB;AACxC,QAAM,eAAe,KAAK;AAE1B,MAAI;AAEJ,MAAI;AAEJ,MAAI;AAEJ,MAAI;AACJ,QAAM,WAAW,CAAA;AAEjB,QAAM,OAAO,CAAA;AAEb,QAAM,OAAO,CAAA;AACb,QAAM,WAAW,CAAA;AACjB,WAAS,oBAAoB,QAAQ,KAAK,QAAM;AAC9C,QAAI;AACJ,QAAI;AACJ,iBAAa;AACb,kBAAc;AACd,gBAAY;AACZ,cAAU,IAAI,MAAM,OAAO;AAC3B,SAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,cAAQ,CAAC,IAAI,IAAI,MAAM,CAAC;AACxB,UAAI,QAAQ,CAAC;AACb,QAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,KAAM,eAAe,KAAM,UAAW;AAC7D,WAAK,CAAC,IAAK,UAAU,UAAW;AAChC,WAAK,CAAC,IAAI;IACZ;EACF;AACA,WAAS,WAAQ;AACf,UAAMC,OAAM,CAAA;AACZ,UAAM,QAAQ,IAAI,MAAM,OAAO;AAC/B,aAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,YAAM,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI;IACzB;AACA,QAAI,IAAI;AACR,aAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,YAAM,IAAI,MAAM,CAAC;AACjB,MAAAA,KAAI,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC;AACvB,MAAAA,KAAI,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC;AACvB,MAAAA,KAAI,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC;IACzB;AACA,WAAOA;EACT;AAGA,WAAS,WAAQ;AACf,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,kBAAc;AACd,eAAW;AACX,SAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,UAAI,QAAQ,CAAC;AACb,iBAAW;AACX,iBAAW,EAAE,CAAC;AAEd,WAAK,IAAI,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,YAAI,QAAQ,CAAC;AACb,YAAI,EAAE,CAAC,IAAI,UAAU;AAEnB,qBAAW;AACX,qBAAW,EAAE,CAAC;QAChB;MACF;AACA,UAAI,QAAQ,QAAQ;AAEpB,UAAI,MAAM,UAAU;AAClB,YAAI,EAAE,CAAC;AACP,UAAE,CAAC,IAAI,EAAE,CAAC;AACV,UAAE,CAAC,IAAI;AACP,YAAI,EAAE,CAAC;AACP,UAAE,CAAC,IAAI,EAAE,CAAC;AACV,UAAE,CAAC,IAAI;AACP,YAAI,EAAE,CAAC;AACP,UAAE,CAAC,IAAI,EAAE,CAAC;AACV,UAAE,CAAC,IAAI;AACP,YAAI,EAAE,CAAC;AACP,UAAE,CAAC,IAAI,EAAE,CAAC;AACV,UAAE,CAAC,IAAI;MACT;AAEA,UAAI,aAAa,aAAa;AAC5B,iBAAS,WAAW,IAAK,WAAW,KAAM;AAC1C,aAAK,IAAI,cAAc,GAAG,IAAI,UAAU,KAAK;AAC3C,mBAAS,CAAC,IAAI;QAChB;AACA,sBAAc;AACd,mBAAW;MACb;IACF;AACA,aAAS,WAAW,IAAK,WAAW,aAAc;AAClD,SAAK,IAAI,cAAc,GAAG,IAAI,KAAK,KAAK;AACtC,eAAS,CAAC,IAAI;IAChB;EACF;AAEA,WAAS,QAAK;AACZ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,cAAc,iBAAiB;AACjC,kBAAY;IACd;AACA,eAAW,MAAM,YAAY,KAAK;AAClC,QAAI;AACJ,UAAM;AACN,UAAM;AACN,mBAAe,eAAe,IAAI;AAClC,YAAS,eAAe,UAAW;AACnC,YAAQ;AACR,aAAS;AACT,UAAM,UAAU;AAChB,QAAI,OAAO,GAAG;AACZ,YAAM;IACR;AACA,SAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,eAAS,CAAC,IAAI,UAAW,MAAM,MAAM,IAAI,KAAK,WAAY,MAAM;IAClE;AACA,QAAI,cAAc,iBAAiB;AACjC,aAAO;IACT,WAAW,cAAc,WAAW,GAAG;AACrC,aAAO,IAAI;IACb,WAAW,cAAc,WAAW,GAAG;AACrC,aAAO,IAAI;IACb,WAAW,cAAc,WAAW,GAAG;AACrC,aAAO,IAAI;IACb,OAAO;AACL,aAAO,IAAI;IACb;AACA,QAAI;AACJ,WAAO,IAAI,cAAc;AACvB,WAAK,EAAE,MAAM,CAAC,IAAI,QAAS;AAC3B,WAAK,EAAE,MAAM,CAAC,IAAI,QAAS;AAC3B,WAAK,EAAE,MAAM,CAAC,IAAI,QAAS;AAC3B,UAAI,QAAQ,GAAG,GAAG,CAAC;AACnB,kBAAY,OAAO,GAAG,GAAG,GAAG,CAAC;AAC7B,UAAI,QAAQ,GAAG;AAEb,mBAAW,KAAK,GAAG,GAAG,GAAG,CAAC;MAC5B;AACA,aAAO;AACP,UAAI,OAAO,KAAK;AACd,eAAO;MACT;AACA;AACA,UAAI,UAAU,GAAG;AACf,gBAAQ;MACV;AACA,UAAI,IAAI,UAAU,GAAG;AACnB,iBAAS,QAAQ;AACjB,kBAAU,SAAS;AACnB,cAAM,UAAU;AAChB,YAAI,OAAO,GAAG;AACZ,gBAAM;QACR;AACA,aAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,mBAAS,CAAC,IAAI,UAAW,MAAM,MAAM,IAAI,KAAK,WAAY,MAAM;QAClE;MACF;IACF;EACF;AAEA,WAAS,IAAI,GAAG,GAAG,GAAC;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,YAAQ;AACR,WAAO;AACP,QAAI,SAAS,CAAC;AACd,QAAI,IAAI;AACR,WAAO,IAAI,WAAW,KAAK,GAAG;AAC5B,UAAI,IAAI,SAAS;AACf,YAAI,QAAQ,CAAC;AACb,eAAO,EAAE,CAAC,IAAI;AACd,YAAI,QAAQ,OAAO;AACjB,cAAI;QACN,OAAO;AACL;AACA,cAAI,OAAO,GAAG;AACZ,mBAAO,CAAC;UACV;AACA,cAAI,EAAE,CAAC,IAAI;AACX,cAAI,IAAI,GAAG;AACT,gBAAI,CAAC;UACP;AACA,kBAAQ;AACR,cAAI,OAAO,OAAO;AAChB,gBAAI,EAAE,CAAC,IAAI;AACX,gBAAI,IAAI,GAAG;AACT,kBAAI,CAAC;YACP;AACA,oBAAQ;AACR,gBAAI,OAAO,OAAO;AAChB,sBAAQ;AACR,qBAAO,EAAE,CAAC;YACZ;UACF;QACF;MACF;AACA,UAAI,KAAK,GAAG;AACV,YAAI,QAAQ,CAAC;AACb,eAAO,IAAI,EAAE,CAAC;AACd,YAAI,QAAQ,OAAO;AACjB,cAAI;QACN,OAAO;AACL;AACA,cAAI,OAAO,GAAG;AACZ,mBAAO,CAAC;UACV;AACA,cAAI,EAAE,CAAC,IAAI;AACX,cAAI,IAAI,GAAG;AACT,gBAAI,CAAC;UACP;AACA,kBAAQ;AACR,cAAI,OAAO,OAAO;AAChB,gBAAI,EAAE,CAAC,IAAI;AACX,gBAAI,IAAI,GAAG;AACT,kBAAI,CAAC;YACP;AACA,oBAAQ;AACR,gBAAI,OAAO,OAAO;AAChB,sBAAQ;AACR,qBAAO,EAAE,CAAC;YACZ;UACF;QACF;MACF;IACF;AACA,WAAO;EACT;AACA,WAAS,UAAO;AACd,UAAK;AACL,cAAS;AACT,aAAQ;AACR,WAAO,SAAQ;EACjB;AAGA,WAAS,YAAS;AAChB,QAAI;AACJ,QAAI;AACJ,SAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,cAAQ,CAAC,EAAE,CAAC,MAAM;AAClB,cAAQ,CAAC,EAAE,CAAC,MAAM;AAClB,cAAQ,CAAC,EAAE,CAAC,MAAM;AAClB,cAAQ,CAAC,EAAE,CAAC,IAAI;IAClB;EACF;AAGA,WAAS,WAAW,KAAK,GAAG,GAAG,GAAG,GAAC;AACjC,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,SAAK,IAAI;AACT,QAAI,KAAK,IAAI;AACX,WAAK;IACP;AACA,SAAK,IAAI;AACT,QAAI,KAAK,SAAS;AAChB,WAAK;IACP;AACA,QAAI,IAAI;AACR,QAAI,IAAI;AACR,QAAI;AACJ,WAAO,IAAI,MAAM,IAAI,IAAI;AACvB,UAAI,SAAS,GAAG;AAChB,UAAI,IAAI,IAAI;AACV,YAAI,QAAQ,GAAG;AACf,YAAI;AACF,YAAE,CAAC,KAAO,KAAK,EAAE,CAAC,IAAI,KAAM,eAAgB;AAC5C,YAAE,CAAC,KAAO,KAAK,EAAE,CAAC,IAAI,KAAM,eAAgB;AAC5C,YAAE,CAAC,KAAO,KAAK,EAAE,CAAC,IAAI,KAAM,eAAgB;QAC9C,SAAS,IAAI;QAAC;MAChB;AACA,UAAI,IAAI,IAAI;AACV,YAAI,QAAQ,GAAG;AACf,YAAI;AACF,YAAE,CAAC,KAAO,KAAK,EAAE,CAAC,IAAI,KAAM,eAAgB;AAC5C,YAAE,CAAC,KAAO,KAAK,EAAE,CAAC,IAAI,KAAM,eAAgB;AAC5C,YAAE,CAAC,KAAO,KAAK,EAAE,CAAC,IAAI,KAAM,eAAgB;QAC9C,SAAS,IAAI;QAAC;MAChB;IACF;EACF;AAEA,WAAS,YAAY,OAAO,GAAG,GAAG,GAAG,GAAC;AAEpC,UAAM,IAAI,QAAQ,CAAC;AACnB,UAAM,YAAY,QAAQ;AAC1B,MAAE,CAAC,KAAM,aAAa,EAAE,CAAC,IAAI,KAAM;AACnC,MAAE,CAAC,KAAM,aAAa,EAAE,CAAC,IAAI,KAAM;AACnC,MAAE,CAAC,KAAM,aAAa,EAAE,CAAC,IAAI,KAAM;EACrC;AAEA,WAAS,QAAQ,GAAG,GAAG,GAAC;AAKtB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,YAAQ,EAAE,KAAK;AACf,gBAAY;AACZ,cAAU;AACV,kBAAc;AACd,SAAK,IAAI,GAAG,IAAI,SAAS,KAAK;AAC5B,UAAI,QAAQ,CAAC;AACb,aAAO,EAAE,CAAC,IAAI;AACd,UAAI,OAAO,GAAG;AACZ,eAAO,CAAC;MACV;AACA,UAAI,EAAE,CAAC,IAAI;AACX,UAAI,IAAI,GAAG;AACT,YAAI,CAAC;MACP;AACA,cAAQ;AACR,UAAI,EAAE,CAAC,IAAI;AACX,UAAI,IAAI,GAAG;AACT,YAAI,CAAC;MACP;AACA,cAAQ;AACR,UAAI,OAAO,OAAO;AAChB,gBAAQ;AACR,kBAAU;MACZ;AACA,iBAAW,QAAQ,KAAK,CAAC,KAAM,eAAe;AAC9C,UAAI,WAAW,WAAW;AACxB,oBAAY;AACZ,sBAAc;MAChB;AACA,iBAAW,KAAK,CAAC,KAAK;AACtB,WAAK,CAAC,KAAK;AACX,WAAK,CAAC,KAAK,YAAY;IACzB;AACA,SAAK,OAAO,KAAK;AACjB,SAAK,OAAO,KAAK;AACjB,WAAO;EACT;AACA,sBAAoB,MAAM,MAAM,SAAS;AACzC,QAAM,UAAU,CAAA;AAChB,UAAQ,MAAM;AACd,UAAQ,UAAU;AAClB,SAAO;AACT;AAOA,SAAS,aAAU;AACjB,QAAM,QAAQ;AACd,MAAI;AACF,eAAW,YAAY,SAAU,IAAE;AACjC,YAAM,OAAO,GAAG,QAAQ,CAAA;AACxB,UAAI;AACJ,UAAI,KAAK,SAAS;AAChB,mBAAW,cAAc,IAAI,IAAI;AACjC,oBAAY,QAAQ;MACtB;IACF;EACF,SAAS,IAAI;EAAC;AACd,MAAI,gBAAgB;IAClB,WAAW,SAAS,UAAU,MAAM,OAAO,QAAM;AAC/C,YAAM,SAAS,QAAQ,SAAS;AAChC,UAAI,IAAI;AACR,YAAM,MAAM,CAAA;AACZ,aAAO,IAAI,QAAQ;AACjB,YAAI,KAAK,KAAK,GAAG,CAAC;AAClB,YAAI,KAAK,KAAK,GAAG,CAAC;AAClB,YAAI,KAAK,KAAK,GAAG,CAAC;AAClB;MACF;AACA,aAAO;IACT;IACA,6BAA6B,SAAS,4BAA4B,YAAU;AAC1E,mBAAa,cAAc,CAAA;AAC3B,YAAM,eAAe,CAAA;AACrB,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AAC7C,cAAM,IAAI,WAAW,CAAC;AACtB,cAAM,IAAI,WAAW,IAAI,CAAC;AAC1B,cAAM,IAAI,WAAW,IAAI,CAAC;AAC1B,qBAAa,KAAM,KAAK,KAAO,KAAK,IAAK,CAAC;MAC5C;AACA,aAAO;IACT;;IAEA,2BAA2B,SAAS,0BAClC,WACA,OACA,QACA,gBAAc;AAEd,YAAM,gBAAgB,KAAK,UAAU,WAAW,OAAO,MAAM;AAC7D,YAAM,KAAK,IAAI,SAAS,eAAe,cAAc,QAAQ,cAAc;AAC3E,YAAM,aAAa,GAAG,QAAO;AAC7B,YAAM,eAAe,IAAI,YAAY,KAAK,4BAA4B,UAAU,CAAC;AACjF,YAAM,eAAe,QAAQ;AAC7B,YAAM,gBAAgB,IAAI,WAAW,YAAY;AACjD,UAAI,IAAI;AACR,eAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACrC,cAAM,IAAI,cAAc,GAAG;AAC3B,cAAM,IAAI,cAAc,GAAG;AAC3B,cAAM,IAAI,cAAc,GAAG;AAC3B,sBAAc,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;MACnC;AACA,aAAO;QACL,QAAQ;QACR,SAAS;;IAEb;IACA,KAAK,SAAS,IAAI,OAAK;AACrB,cAAQ,SAAS,CAAA;AACjB,YAAM,SAAS;AACf,YAAM,SAAS,OAAO;AACtB,YAAM,WAAW,OAAO;AACxB,YAAM,iBAAiB,OAAO;AAC9B,YAAM,QAAQ,OAAO;AACrB,YAAM,YAAY,MAAM;AACxB,aAAO,KAAK,0BAA0B,WAAW,OAAO,QAAQ,cAAc;IAChF;;AAEF,SAAO;AACT;AA6BA,SAAS,UAAU,KAAK,OAAO,QAAQ,OAAK;AAC1C,MAAI,IAAI;AACR,UAAQ,UAAU,SAAY,CAAA,IAAK;AACnC,QAAM,aAAa,MAAM,SAAS,SAAY,OAAO,MAAM;AAC3D,QAAM,iBAAiB,MAAM,YAAY,SAAY,OAAO,MAAM;AAClE,MAAI,SAAS,KAAK,UAAU,KAAK,QAAQ,SAAS,SAAS;AAAO,UAAM;AACxE,WAAS,6BAA6B,SAAO;AAC3C,UAAM,aAAa,QAAQ;AAC3B,QAAI,aAAa,KAAK,aAAa,OAAO,aAAc,aAAa;AACnE,YAAM;AACR,WAAO;EACT;AAEA,MAAI,GAAG,IAAI;AACX,MAAI,GAAG,IAAI;AACX,MAAI,GAAG,IAAI;AACX,MAAI,GAAG,IAAI;AACX,MAAI,GAAG,IAAI;AACX,MAAI,GAAG,IAAI;AAEX,QAAM,qBAAqB;AAC3B,QAAM,aAAa;AAGnB,MAAI,GAAG,IAAI,QAAQ;AACnB,MAAI,GAAG,IAAK,SAAS,IAAK;AAC1B,MAAI,GAAG,IAAI,SAAS;AACpB,MAAI,GAAG,IAAK,UAAU,IAAK;AAE3B,MAAI,GAAG,KACJ,mBAAmB,OAAO,MAAO;EAClC;AACF,MAAI,GAAG,IAAI;AACX,MAAI,GAAG,IAAI;AACX,MAAI,eAAe,MAAM;AAEvB,QAAI,aAAa,KAAK,aAAa;AAAO,YAAM;AAEhD,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AAEX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AAEX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI,aAAa;AACxB,QAAI,GAAG,IAAK,cAAc,IAAK;AAC/B,QAAI,GAAG,IAAI;EACb;AACA,MAAI,QAAQ;AACZ,OAAK,WAAW,SAAU,GAAG,GAAG,GAAG,GAAG,gBAAgB,MAAI;AACxD,QAAI,UAAU,MAAM;AAClB,QAAE;AACF,cAAQ;IACV;AACA,WAAO,SAAS,SAAY,CAAA,IAAK;AAGjC,QAAI,IAAI,KAAK,IAAI,KAAK,IAAI,SAAS,IAAI;AAAO,YAAM;AACpD,QAAI,KAAK,KAAK,KAAK,KAAK,IAAI,SAAS,IAAI;AAAO,YAAM;AACtD,QAAI,eAAe,SAAS,IAAI;AAAG,YAAM;AACzC,QAAI,sBAAsB;AAC1B,QAAI,UAAU,KAAK;AACnB,QAAI,YAAY,UAAa,YAAY,MAAM;AAC7C,4BAAsB;AACtB,gBAAU;IACZ;AACA,QAAI,YAAY,UAAa,YAAY;AACvC,YAAM;AACR,QAAI,aAAa,6BAA6B,OAAO;AAErD,QAAI,gBAAgB;AACpB,mBAAe;AACf,WAAO,YAAY;AACjB,QAAE;AACF,qBAAe;IACjB;AACA,iBAAa,KAAK;AAClB,UAAM,QAAQ,KAAK,UAAU,SAAY,IAAI,KAAK;AAclD,UAAM,WAAW,KAAK,aAAa,SAAY,IAAI,KAAK;AACxD,QAAI,WAAW,KAAK,WAAW;AAE7B,YAAM;AACR,QAAI,mBAAmB;AACvB,QAAI,oBAAoB;AACxB,QAAI,KAAK,gBAAgB,UAAa,KAAK,gBAAgB,MAAM;AAC/D,yBAAmB;AACnB,0BAAoB,KAAK;AACzB,UAAI,oBAAoB,KAAK,qBAAqB;AAChD,cAAM;IACV;AACA,QAAI,aAAa,KAAK,oBAAoB,UAAU,GAAG;AAErD,UAAI,GAAG,IAAI;AACX,UAAI,GAAG,IAAI;AACX,UAAI,GAAG,IAAI;AACX,UAAI,GAAG,IAAK,YAAY,KAAM,qBAAqB,OAAO,IAAI;AAC9D,UAAI,GAAG,IAAI,QAAQ;AACnB,UAAI,GAAG,IAAK,SAAS,IAAK;AAC1B,UAAI,GAAG,IAAI;AACX,UAAI,GAAG,IAAI;IACb;AAEA,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI,IAAI;AACf,QAAI,GAAG,IAAK,KAAK,IAAK;AACtB,QAAI,GAAG,IAAI,IAAI;AACf,QAAI,GAAG,IAAK,KAAK,IAAK;AACtB,QAAI,GAAG,IAAI,IAAI;AACf,QAAI,GAAG,IAAK,KAAK,IAAK;AACtB,QAAI,GAAG,IAAI,IAAI;AACf,QAAI,GAAG,IAAK,KAAK,IAAK;AAGtB,QAAI,GAAG,IAAI,wBAAwB,OAAO,MAAQ,gBAAgB,IAAK;AAEvE,QAAI,wBAAwB,MAAM;AAChC,eAAS,IAAI,GAAG,KAAK,QAAQ,QAAQ,IAAI,IAAI,EAAE,GAAG;AAChD,cAAM,MAAM,QAAQ,CAAC;AACrB,YAAI,GAAG,IAAK,OAAO,KAAM;AACzB,YAAI,GAAG,IAAK,OAAO,IAAK;AACxB,YAAI,GAAG,IAAI,MAAM;MACnB;IACF;AACA,QAAI,6BAA6B,KAAK,GAAG,gBAAgB,IAAI,IAAI,eAAe,cAAc;EAChG;AACA,OAAK,MAAM,WAAA;AACT,QAAI,UAAU,OAAO;AACnB,UAAI,GAAG,IAAI;AACX,cAAQ;IACV;AACA,WAAO;EACT;AAGA,WAAS,6BAA6BC,MAAKC,IAAG,eAAe,cAAY;AACvE,IAAAD,KAAIC,IAAG,IAAI;AACX,QAAI,eAAeA;AACnB,UAAM,aAAa,KAAK;AACxB,UAAM,YAAY,aAAa;AAC/B,UAAM,WAAW,aAAa;AAC9B,QAAI,YAAY,WAAW;AAC3B,QAAI,gBAAgB,gBAAgB;AACpC,QAAI,YAAY;AAGhB,QAAI,MAAM;AACV,aAAS,qBAAqB,gBAAc;AAC1C,aAAO,aAAa,gBAAgB;AAClC,QAAAD,KAAIC,IAAG,IAAI,MAAM;AACjB,gBAAQ;AACR,qBAAa;AACb,YAAIA,OAAM,eAAe,KAAK;AAE5B,UAAAD,KAAI,YAAY,IAAI;AACpB,yBAAeC;QACjB;MACF;IACF;AACA,aAAS,UAAU,GAAC;AAClB,aAAO,KAAK;AACZ,mBAAa;AACb,2BAAqB,CAAC;IACxB;AAsCA,QAAI,UAAU,aAAa,CAAC,IAAI;AAChC,QAAI,aAAa,CAAA;AACjB,cAAU,UAAU;AAEpB,aAAS,IAAI,GAAG,KAAK,aAAa,QAAQ,IAAI,IAAI,EAAE,GAAG;AACrD,YAAM,IAAI,aAAa,CAAC,IAAI;AAC5B,YAAM,UAAW,WAAW,IAAK;AACjC,YAAM,WAAW,WAAW,OAAO;AAEnC,UAAI,aAAa,QAAW;AAU1B,eAAO,WAAW;AAClB,qBAAa;AACb,eAAO,aAAa,GAAG;AACrB,UAAAD,KAAIC,IAAG,IAAI,MAAM;AACjB,kBAAQ;AACR,uBAAa;AACb,cAAIA,OAAM,eAAe,KAAK;AAE5B,YAAAD,KAAI,YAAY,IAAI;AACpB,2BAAeC;UACjB;QACF;AACA,YAAI,cAAc,MAAM;AAEtB,oBAAU,UAAU;AACpB,sBAAY,WAAW;AACvB,0BAAgB,gBAAgB;AAChC,uBAAa,CAAA;QACf,OAAO;AAOL,cAAI,aAAa,KAAK;AAAe,cAAE;AACvC,qBAAW,OAAO,IAAI;QACxB;AACA,kBAAU;MACZ,OAAO;AACL,kBAAU;MACZ;IACF;AACA,cAAU,OAAO;AACjB,cAAU,QAAQ;AAElB,yBAAqB,CAAC;AAItB,QAAI,eAAe,MAAMA,IAAG;AAE1B,MAAAD,KAAI,YAAY,IAAI;IACtB,OAAO;AAEL,MAAAA,KAAI,YAAY,IAAIC,KAAI,eAAe;AACvC,MAAAD,KAAIC,IAAG,IAAI;IACb;AACA,WAAOA;EACT;AACF;AASA,IAAM,SAAS,SAASH,QAAI;AAAI;AAChC,IAAM,cAAc,SAASI,aAAY,SAAO;AAC9C,OAAK,SAAS;AACd,OAAK,MAAM;AACX,OAAK,SAAS;AACd,OAAK,SAAS,CAAA;AACd,OAAK,oBAAoB;AACzB,OAAK,2BAA2B;AAChC,OAAK,2BAA2B;AAChC,OAAK,UAAU,CAAA;AACf,OAAK,mBAAmB,CAAA;AACxB,OAAK,gBAAgB;AACrB,OAAK,UAAU;AAEf,OAAK,qBAAqB,OAAO;AACnC;AACA,YAAY,YAAY;EACtB,eAAe,WAAU;EACzB,sBAAsB,SAAS,qBAAqB,SAAO;AACzD,UAAM,OAAO;AACb,UAAM,yBAAyB,GAAG,SAAS,SAAQ,CAAE,IAAI,WAAW,SAAQ,CAAE;AAC9E,QAAI,eAAe;AACnB,QAAI,YAAY;AAChB,QAAI,YAAY;AAChB,QAAI,aAAa;AACjB,QAAI,IAAI;AACR,QAAI,cAAc;AAClB,iBAAa,QAAQ;AACrB,WAAO,EAAE,IAAI,YAAY;AACvB,qBAAe,MAAM,gBAAgB,sBAAsB;AAC3D,UAAI,MAAM,SAAS,YAAY,GAAG;AAChC,oBAAY,aAAa;AACzB,oBAAY,aAAa;AACzB,aAAK,QAAQ,KAAK;UAChB,QAAQ;UACR;SACD;AACD,aAAK,iBAAiB,KAAK,SAAS;MACtC,OAAO;AACL,sBAAc;AACd,cAAM,iBAAiB,QAAQ,YAAY;MAC7C;IACF;AACA,SAAK,cAAc;AACnB,SAAK,SAASZ,UAAS,cAAc,QAAQ;AAC7C,SAAK,OAAO,QAAQ,QAAQ;AAC5B,SAAK,OAAO,SAAS,QAAQ;AAC7B,SAAK,MAAM,KAAK,OAAO,WAAW,IAAI;AACtC,SAAK,SAAS,CAAA;EAChB;;EAEA,WAAW,SAAS,YAAS;AAC3B,WAAO,KAAK,iBAAiB,IAAG;EAClC;;EAEA,YAAY,SAAS,WAAW,QAAM;AACpC,SAAK,iBAAiB,KAAK,MAAM;EACnC;EACA,UAAU,WAAA;AACR,UAAM,UAAU,CAAA;AAChB,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,cAAQ,CAAC,IAAI,OAAO,aAAa,CAAC;IACpC;AACA,WAAO;EACT,GAAE;EACF,gBAAgB,SAAS,eAAe,QAAM;AAC5C,UAAM,eAAe,OAAO;AAC5B,QAAI,MAAM;AACV,QAAI,IAAI;AACR,WAAO,EAAE,IAAI,cAAc;AACzB,aAAO,KAAK,QAAQ,OAAO,CAAC,CAAC;IAC/B;AACA,WAAO;EACT;EACA,iBAAiB,SAAS,gBAAgB,kBAAgB;AAGxD,UAAM,OAAO;AACb,UAAM,SAAS,KAAK;AACpB,UAAM,UAAU,KAAK;AACrB,UAAM,oBAAoB,SAAS,QAAQ,UAAU,CAAA,GAAI,MAAM;AAC/D,UAAM,UAAU,OAAO,MAAM,SAAU,OAAK;AAC1C,aAAO,CAAC,MAAM,kBAAkB,MAAM;IACxC,CAAC;AACD,SAAK;AACL,QAAI,mBAAmB;AACrB,uBAAiB,KAAK,oBAAoB,OAAO,MAAM;IACzD;AACA,SAAK,yBAA0B,KAAK,oBAAoB,OAAQ,OAAO,MAAM;AAC7E,QAAI,SAAS;AACX,UAAI,CAAC,KAAK,eAAe;AACvB,aAAK,YAAY,QAAQ,KAAK,wBAAwB;MACxD;IACF,OAAO;AACL,YAAM,eAAe,WAAA;AACnB,aAAK,iBAAgB;MACvB,GAAG,CAAC;IACN;EACF;EACA,cAAc,SAAS,aAAa,UAAQ;AAC1C,UAAM,qBAAqB;AAC3B,UAAM,WAAW,KAAK;AACtB,UAAM,mBAAmB,SAAS;AAClC,UAAM,iBAAiB,SAAS;AAChC,UAAM,SAAS,KAAK;AACpB,QAAI,QAAQ;AACZ,QAAI,SAAS;AACb,UAAM,OAAO,SAASa,QAAI;AACxB,YAAM,KAAK,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAC/E,YAAM,OAAO,GAAG;AAEhB,aAAO,MAAM;AACb,YAAM,SAAS,MAAM,UAAU,MAAM,KAAK,KAAK,MAAM;AACrD,YAAM,UAAU,MAAM,UAAU,MAAM,KAAK,KAAK,OAAO;AACvD,YAAM,OAAO;AACb,YAAM,iBAAiB;AACvB,yBAAmB,WAAW,MAAM;AACpC,yBAAmB,gBAAgB,gBAAgB;IACrD;AACA,YAAQ,OAAO,QAAQ;AACvB,QAAI,MAAM,kBAAkB,MAAM,MAAM;AACtC,WAAK,gBAAe;AACpB;IACF;AACA,UAAM,iBAAiB;AACvB,UAAM,iBAAiB;AACvB,UAAM,UAAU;AAChB,aAAS,KAAK,UAAS;AACvB,QAAI,QAAQ;AAEV,aAAO,YAAY;AACnB,aAAO,YAAY,KAAK;IAC1B,OAAO;AAEL,WAAK;QACH,MAAM,mBAAmB,cAAc,IAAI,KAAK;OACjD;IACH;EACF;EACA,gBAAgB,SAAS,eAAe,kBAAgB;AACtD,SAAK,2BAA2B;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,cAAc,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC1E,WAAK,aAAa,CAAC;IACrB;EACF;EACA,kBAAkB,SAAS,mBAAgB;AACzC,QAAI,WAAW;AACf,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,YAAM,QAAQ,KAAK,OAAO,CAAC;AAC3B,UAAI,CAAC,MAAM,QAAQ,CAAC,MAAM,gBAAgB;AACxC,mBAAW;AACX;MACF;IACF;AACA,QAAI,YAAY,GAAG;AACjB,WAAK,aAAa,QAAQ;IAC5B;EACF;;;EAGA,aAAa,SAAS,YAAY,QAAQ,UAAQ;AAGhD,UAAM,SAAS,CAAA;AACf,UAAM,aAAa;MACjB,MAAM,KAAK;;AAEb,UAAM,UAAU,KAAK;AACrB,UAAM,WAAW,QAAQ;AACzB,UAAM,gBAAgB,QAAQ;AAC9B,UAAMC,kBAAiB,QAAQ;AAC/B,UAAM,oBAAoB,QAAQA,gBAAe,MAAM;AACvD,UAAM,SAAS,QAAQ;AACvB,UAAM,QAAQ,QAAQ;AACtB,UAAM,eAAe,IAAI,UAAU,QAAQ,OAAO,QAAQ,UAAU;AACpE,UAAM,2BAA2B,KAAK;AACtC,UAAM,QAAQ,oBAAoB,WAAW,MAAM;AACnD,QAAIC,kBAAiB;AACrB,QAAI,MAAM;AACV,SAAK,gBAAgB;AACrB,UAAM,KAAK,QAAQ,SAAU,UAAU,OAAK;AAC1C,YAAM,eAAe,MAAM;AAC3B,+BAAyB,OAAQ,OAAO,MAAM,WAAW,IAAO,OAAO,MAAM;AAC7E,eAAS,IAAI,GAAG,IAAI,eAAe,KAAK;AACtC,qBAAa,SAAS,GAAG,GAAG,OAAO,QAAQ,MAAM,QAAQ;UACvD,SAAS;UACT;SACD;MACH;IACF,CAAC;AACD,iBAAa,IAAG;AAChB,6BAAyB,CAAG;AAC5B,SAAK,SAAS,CAAA;AACd,SAAK,gBAAgB;AACrB,QAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,MAAAA,kBAAiB,KAAK,eAAe,MAAM;AAC3C,YAAM,yBAAyB,MAAM,KAAKA,eAAc,CAAC;AACzD,eAAS,GAAG;IACd;EACF;;EAEA,WAAW,SAAS,UAAU,GAAC;AAC7B,SAAK,SAAS;EAChB;EACA,UAAU,SAAS,SAAS,SAAS,gBAAc;AACjD,qBAAiB,MAAM,SAAS,cAAc,IAAI,iBAAiB,CAAA;AACnE,UAAM,OAAO;AACb,UAAM,MAAM,KAAK;AACjB,UAAM,UAAU,KAAK;AACrB,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,QAAQ;AACvB,UAAM,WAAW,MAAM,YAAY,cAAc;AACjD,UAAM,kBAAkB;AACxB,UAAM,SAAS,gBAAgB;AAC/B,UAAM,YAAY,gBAAgB;AAClC,UAAM,aAAa,gBAAgB;AACnC,UAAM,aAAa,gBAAgB;AACnC,UAAM,aAAa,gBAAgB;AACnC,UAAM,YAAY,gBAAgB;AAClC,UAAM,OAAO,gBAAgB;AAC7B,UAAM,YAAY,gBAAgB;AAClC,UAAM,eAAe,gBAAgB;AACrC,UAAM,kBAAkB,eAAe,kBACnC,eAAe,kBACf,cAAc,SACZ,IACA,cAAc,UACZ,QACA,QAAQ;AAChB,UAAM,kBAAkB,eAAe,kBACnC,eAAe,kBACf,iBAAiB,QACf,IACA,iBAAiB,WACf,SAAS,IACT;AACR,UAAM,OAAO,GAAG,UAAU,IAAI,QAAQ,IAAI,UAAU;AACpD,QAAI,YAAY;AAChB,QAAI;AACF,UAAI,SAAS;AACb,UAAI,UAAU,SAAS,GAAG,GAAG,OAAO,MAAM;AAC1C,UAAI,MAAM;AACR,YAAI,OAAO;AACX,YAAI,YAAY;AAChB,YAAI,YAAY;AAChB,YAAI,eAAe;AACnB,YAAI,SAAS,MAAM,iBAAiB,eAAe;MACrD;AACA,kBAAY,IAAI,aAAa,GAAG,GAAG,OAAO,MAAM;AAChD,WAAK,kBAAkB,SAAS;IAClC,SAAS,GAAG;AACV,aAAO,GAAG,CAAC;IACb;EACF;EACA,mBAAmB,SAAS,oBAAiB;AAC3C,UAAM,YAAY,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AACtF,UAAM,SAAS,KAAK;AACpB,UAAM,iBAAiB,UAAU;AACjC,SAAK,OAAO,KAAK;MACf,MAAM;MACN,OAAO,UAAU;MACjB,QAAQ,UAAU;MAClB,SAAS;MACT,WAAW;MACX,MAAM;MACN,gBAAgB;MAChB,UAAU,OAAO;KAClB;EACH;EACA,kBAAkB,SAAS,iBAAiB,UAAQ;AAClD,SAAK,2BAA2B;EAClC;EACA,aAAa,SAAS,cAAW;AAC/B,WAAO,KAAK;EACd;EACA,cAAc,SAAS,aAAa,kBAAgB;AAClD,UAAM,OAAO;AACb,UAAM,mBAAmB,SAASC,kBAAiB,KAAG;AACpD,WAAK,eAAc;AACnB,YAAM,eAAe,WAAA;AACnB,yBAAiB,GAAG;MACtB,GAAG,CAAC;IACN;AACA,SAAK,eAAe,gBAAgB;EACtC;EACA,gBAAgB,SAAS,iBAAc;AACrC,QAAI,KAAK,aAAa;AACpB;IACF;AACA,UAAM,UAAU,KAAK;AAErB,UAAM,KAAK,SAAS,SAAU,UAAU,WAAS;AAC/C,YAAM,SAAS,UAAU;AACzB,YAAM,YAAY,UAAU;AAC5B,aAAO,UAAS;AAChB,YAAM,IAAI,gBAAgB,SAAS;IACrC,CAAC;EACH;;AAQF,SAASC,cAAa,qBAAqB,UAAQ;AAEjD,sBAAoB,aAAa,SAAU,OAAK;AAC9C,aAAS;MACP,OAAO;MACP,WAAW;MACX,UAAU;MACV;KACD;EACH,CAAC;AACH;AAOA,SAAS,iBAAc;AACrB,QAAM,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAChF,QAAM,QAAQ;AACd,QAAM,WAAW,IAAI;AACrB,QAAM,SAAS,IAAI;AACnB,QAAM,UAAU,IAAI;AACpB,MAAI,eAAe,IAAI;AACvB,QAAM,UAAU;IACd,cAAc;IACd,kBAAkB;;AAEpB,QAAM,WAAW,MAAM,SAAS,OAAO;AACvC,QAAM,eAAe,CAAA;AACrB,MAAI,qBAAqB;AACzB,MAAI,YAAY;AAChB,MAAI,KAAK;AACT,MAAI,SAAS,OAAO;AAClB,WAAO,SAAS,QAAQ;EAC1B;AAEA,OAAK,IAAI,YAAY,OAAO;AAC5B,QAAM,KAAK,QAAQ,SAAU,OAAO,OAAK;AACvC,UAAM,eAAe;AAIrB,QAAI,MAAM,WAAW,YAAY,GAAG;AAClC,UAAI,QAAQ,aAAa;AACvB,qBAAa,cAAc,QAAQ;MACrC;AACA,mBAAa,KAAK,IAAI;AACtB,4BAAsB;AACtB,UAAI,uBAAuB,cAAc;AACvC,6BAAoB;MACtB;IACF,WAAW,MAAM,SAAS,YAAY,GAAG;AACvC,kBAAY,IAAI,MAAK;AACrB,UAAI,QAAQ,aAAa;AACvB,kBAAU,cAAc,QAAQ;MAClC;AACA,OAAC,SAAUC,YAAS;AAClB,YAAI,MAAM,MAAM;AACd,UAAAA,WAAU,OAAO,MAAM;QACzB;AACA,QAAAA,WAAU,UAAU,SAAU,GAAC;AAC7B,cAAIC,OAAM;AACV,YAAE;AACF,cAAI,iBAAiB,GAAG;AACtB,YAAAA,OAAM,CAAA;AACN,YAAAA,KAAI,QAAQ;AACZ,mBAAO,SAASA,IAAG;UACrB;QACF;AACA,QAAAD,WAAU,SAAS,SAAU,GAAC;AAC5B,cAAI,MAAM,MAAM;AACd,yBAAa,KAAK,IAAI;cACpB,KAAKA;cACL,MAAMA,WAAU;;UAEpB,OAAO;AACL,yBAAa,KAAK,IAAIA;UACxB;AACA,gCAAsB;AACtB,cAAI,uBAAuB,cAAc;AACvC,iCAAoB;UACtB;AACA,gBAAM,cAAcA,UAAS;QAC/B;AACA,QAAAA,WAAU,MAAM;MAClB,GAAG,SAAS;AACZ,YAAM,WAAW,WAAW;QAC1B,UAAU;QACV,SAAS;OACV;AACD,MAAAlB,UAAS,KAAK,YAAY,SAAS;IACrC;EACF,CAAC;AACD,WAAS,uBAAoB;AAC3B,UAAM,KAAK,cAAc,SAAU,OAAO,aAAW;AACnD,UAAI,aAAa;AACf,YAAI,YAAY,MAAM;AACpB,aAAG,SAAS,YAAY,KAAK,SAAS,YAAY,IAAI;QACxD,OAAO;AACL,aAAG,SAAS,aAAa,OAAO;QAClC;MACF;IACF,CAAC;AACD,IAAAiB,cAAa,IAAI,QAAQ;EAC3B;AACF;AASA,IAAM,SAAS,SAAST,QAAI;AAAI;AAChC,IAAM,aAAa;EACjB,QAAQ,SAAS,SAAM;AACrB,UAAM,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AACpF,QAAI,WAAW,UAAU,CAAC;AAC1B,eAAW,MAAM,WAAW,QAAQ,IAAI,WAAW;AACnD,UAAMY,UAASpB,UAAS,cAAc,QAAQ;AAC9C,QAAI,UAAU;AACd,UAAMc,kBAAiB,QAAQ;AAC/B,UAAM,oBAAoB,QAAQA,gBAAe,MAAM;AACvD,UAAM,eAAe,QAAQ;AAC7B,UAAM,OAAO,QAAQ;AACrB,UAAM,SAAS,QAAQ;AACvB,UAAM,YAAY,QAAQ;AAC1B,UAAM,aAAa,QAAQ;AAC3B,UAAM,aAAa,QAAQ;AAC3B,UAAM,eAAe,QAAQ;AAC7B,UAAM,cAAc,QAAQ;AAC5B,UAAM,mBAAmB,QAAQ;AACjC,UAAM,wBAAwB,QAAQ;AACtC,UAAM,yBAAyB,QAAQ;AACvC,UAAM,OAAO,QAAQ;AACrB,UAAM,YAAY,QAAQ;AAC1B,UAAM,eAAe,QAAQ;AAC7B,UAAM,eAAe,QAAQ;AAC7B,UAAM,cAAc,QAAQ;AAC5B,UAAM,aAAa,QAAQ;AAC3B,UAAM,qBAAqB,QAAQ;AACnC,UAAM,WAAW,OAAO,QAAQ,QAAQ;AACxC,UAAM,YAAY,OAAO,QAAQ,SAAS;AAC1C,QAAI,WAAW,OAAO,QAAQ,QAAQ;AACtC,UAAM,kBAAkB,OAAO,QAAQ,cAAc;AACrD,UAAM,oBAAoB,oBAAoB,IAAI,WAAW;AAC7D,UAAM,0BAA0B,CAAA;AAChC,QAAI,YAAY,uBAAuB,SACnC,uBAAuB,SACvB,QAAQ;AACZ,QAAI,gBAAgB;AACpB,UAAM,KAAK,IAAI,YAAY,OAAO;AAClC,UAAM,WAAW,MAAM,YAAY,OAAO;AAC1C,UAAM,kBAAkB,QAAQ,kBAC5B,QAAQ,kBACR,cAAc,SACZ,IACA,cAAc,UACZ,WACA,WAAW;AACnB,UAAM,kBAAkB,QAAQ,kBAC5B,QAAQ,kBACR,iBAAiB,QACf,IACA,iBAAiB,WACf,YAAY,IACZ;AACR,UAAM,OAAO,GAAG,UAAU,IAAI,QAAQ,IAAI,UAAU;AACpD,QAAI,UAAU,OAAO,KAAK,MAAM,KAAK,cAAc,CAAC,IAAI;AACxD,QAAI,cAAc,OAAO,aAAa,KAAK,cAAc;AACzD,QAAI,UAAU,OAAO,KAAK,MAAM,KAAK,eAAe,CAAC,IAAI;AACzD,QAAI,eAAe,OAAO,cAAc,KAAK,eAAe;AAC5D,UAAM,gBAAgB,SAAS,qBAAkB;AAC/C,YAAM,aAAa,gBAAgB;AACnC,UAAI,uBAAuB,QAAQ;AACjC,gBAAQ,aAAa,uBAAuB,YAAY,aAAa,GAAG,GAAG,CAAC;AAC5E,sBAAa;MACf,OAAO;AACL,kBAAS;MACX;AACA,eAAS,YAAS;AAChB,YAAI;AAEF,cAAI,cAAc,YAAY;AAC5B,0BAAc;UAChB;AACA,cAAI,eAAe,aAAa;AAC9B,2BAAe;UACjB;AACA,cAAI,UAAU,GAAG;AACf,sBAAU;UACZ;AACA,cAAI,UAAU,GAAG;AACf,sBAAU;UACZ;AACA,kBAAQ,SAAS;AACjB,kBAAQ,UACN,cACA,SACA,SACA,aACA,cACA,GACA,GACA,UACA,SAAS;AAEX,wBAAa;QACf,SAAS,GAAG;AAGV,cAAI,EAAE,SAAS,0BAA0B;AAEvC,kBAAM,eAAe,WAAW,GAAG;UACrC,OAAO;AACL,kBAAM;UACR;QACF;MACF;AACA,eAAS,gBAAa;AACpB,YAAI,YAAY;AAChB,YAAI,uBAAuB;AACzB,kCAAwB,KAAK,QAAQ,aAAa,GAAG,GAAG,UAAU,SAAS,CAAC;QAC9E;AAEA,YAAI,MAAM;AACR,kBAAQ,OAAO;AACf,kBAAQ,YAAY;AACpB,kBAAQ,YAAY;AACpB,kBAAQ,eAAe;AACvB,kBAAQ,SAAS,MAAM,iBAAiB,eAAe;QACzD;AACA,oBAAY,QAAQ,aAAa,GAAG,GAAG,UAAU,SAAS;AAC1D,WAAG,kBAAkB,SAAS;AAC9B,wBAAgB;AAEhB,0BAAkB,YAAY,iBAAiB,SAAS;AACxD,YAAI,aAAa,GAAG;AAElB,gBAAM,eAAe,oBAAoB,iBAAiB;QAC5D;AACA,YAAI,CAAC,eAAe;AAClB,aAAG,aAAa,SAAU,OAAK;AAC7B,qBAAS;cACP,OAAO;cACP,WAAW;cACX,UAAU;cACV;cACA;cACA;cACA;cACA,wBAAwB;cACxB;aACD;UACH,CAAC;QACH;MACF;IACF;AACA,gBAAY,cAAc,SAAY,YAAY;AAClD,eAAW,aAAa,SAAY,WAAW;AAC/C,IAAAM,QAAO,QAAQ;AACf,IAAAA,QAAO,SAAS;AAChB,cAAUA,QAAO,WAAW,IAAI;AAChC,KAAC,SAAS,UAAO;AACf,UAAI,CAAC,uBAAuB,UAAU,aAAa,gBAAgB,GAAG;AACpE,cAAM,eAAe,SAAS,GAAG;AACjC;MACF;AACA,oBAAa;IACf,GAAE;EACJ;EACA,mBAAmB,SAAS,oBAAiB;AAC3C,UAAM,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAChF,UAAM,QAAQ,IAAI;AAClB,UAAM,SAAS,IAAI;AACnB,UAAM,WAAW,IAAI;AACrB,UAAM,YAAY,IAAI;AACtB,UAAM,SAAS;MACb,OAAO;MACP,QAAQ;MACR,aAAa;MACb,cAAc;;AAEhB,QAAI,QAAQ,QAAQ;AAClB,aAAO,QAAQ,KAAK,MAAM,SAAS,YAAY,OAAO,IAAI;AAC1D,aAAO,cAAc,KAAK,MAAM,OAAO,SAAS,SAAS,UAAU;IACrE,OAAO;AACL,aAAO,SAAS,KAAK,MAAM,UAAU,WAAW,MAAM,IAAI;AAC1D,aAAO,eAAe,KAAK,MAAM,OAAO,UAAU,QAAQ,SAAS;IACrE;AACA,WAAO;EACT;;AASF,IAAI,cAAc;EAChB,YAAY;EACZ,wBAAwB;IACtB,OAAO;IACP,QAAQ;;EAEV,eAAe,SAAS,oBAAoB,KAAG;AAC7C,wBAAoB,WAAW,oBAAoB,YAAY;AAC/D,UAAM,eAAe,IAAI;AACzB,UAAM,oBAAoB,IAAI;AAC9B,UAAM,eAAe,IAAI;AACzB,QAAI,CAAC,cAAc;AACjB;IACF;AACA,QAAI,aAAa,aAAa,KAAK,aAAa,cAAc,GAAG;AAC/D,mBAAa,oBAAoB,cAAc,YAAY,aAAa;AACxE,wBAAkB;QAChB;QACA;QACA,YAAY,aAAa;QACzB,aAAa,aAAa;OAC3B;IACH,WAAW,oBAAoB,WAAW,IAAI;AAC5C,0BAAoB,YAAY;AAChC,YAAM,eAAe,WAAA;AACnB,oBAAY,cAAc,GAAG;MAC/B,GAAG,GAAG;IACR,OAAO;AACL,wBAAkB;QAChB;QACA;QACA,YAAY,YAAY,uBAAuB;QAC/C,aAAa,YAAY,uBAAuB;OACjD;IACH;EACF;EACA,oBAAoB,SAAS,mBAAmB,UAAQ;AACtD,QAAI,MAAM,WAAW,QAAQ,GAAG;AAC9B,eAAS;QACP,OAAO;QACP,WAAW;QACX,UACE;QACF,OAAO;QACP,cAAc,CAAA;OACf;IACH;EACF;EACA,QAAQ,SAAS,OAAO,KAAG;AACzB,UAAMC,iBAAgB,MAAM,QAAQ,IAAI,aAAa,IACjD,IAAI,cAAc,CAAC,IACnB,IAAI;AACR,UAAM,eAAe,IAAI;AACzB,UAAM,oBAAoB,IAAI;AAC9B,UAAM,mBAAmB,IAAI;AAC7B,UAAM,eAAe,IAAI;AACzB,QAAI,MAAM,WAAW,gBAAgB,GAAG;AACtC,uBAAgB;IAClB;AACA,QAAIA,gBAAe;AACjB,UAAI,MAAM,SAASA,cAAa,GAAG;AACjC,qBAAa,MAAMA;AACnB,qBAAa,YAAY,gBAAgBA,cAAa,iBAAiB,MAAM,aAC3EA,cAAa,CACd;MACH,WAAWA,0BAAyB,MAAM;AACxC,YAAI;AACF,uBAAa,MAAM,MAAM,IAAI,gBAAgBA,cAAa;QAC5D,SAAS,IAAI;QAAC;AACd,qBAAa,YAAY,gBAAgBA,cAAa,WAAWA,eAAc,IAAI;MACrF;IACF,WAAW,aAAa,cAAc;AACpC,mBAAa,eAAe;IAC9B,WAAW,MAAM,KAAK;AACpB,UAAI;AACF,qBAAa,YAAY;AACzB,qBAAa,MAAM,MAAM,IAAI,gBAAgB,YAAY;MAC3D,SAAS,IAAI;AACX,qBAAa,YAAY;MAC3B;IACF;AACA,iBAAa,KAAI;AACjB,UAAM,eAAe,SAAS,kBAAe;AAC3C,sBAAgB,QAAQ,gBAAgB,SAAS;AACjD,UAAI,YAAY,eAAe,MAAM;AACnC,oBAAY,cAAc;UACxB;UACA;UACA;SACD;AACD,oBAAY,aAAa;MAC3B,OAAO;AACL,wBAAgB,SAAS;AACzB,YAAI,gBAAgB,QAAQ,IAAI;AAC9B,sBAAY,cAAc;YACxB;YACA;YACA;WACD;QACH,OAAO;AACL,0BAAe;QACjB;MACF;IACF,GAAG,CAAC;EACN;EACA,gBAAgB,SAAS,eAAe,KAAG;AACzC,UAAM,gBAAgB,MAAM,WAAW,IAAI,KAAK,IAAI,IAAI,QAAQ,MAAM;AACtE,UAAM,mBAAmB,MAAM,WAAW,IAAI,QAAQ,IAAI,IAAI,WAAW,MAAM;AAC/E,UAAM,oBAAoB,MAAM,WAAW,IAAI,SAAS,IAAI,IAAI,YAAY,MAAM;AAClF,UAAM,cAAc,IAAI;AACxB,UAAMA,iBAAgB,IAAI;AAC1B,UAAM,mBAAmB,IAAI;AAC7B,UAAM,UAAU,IAAI;AACpB,UAAM,qBAAqB,IAAI;AAC/B,UAAM,eAAe,MAAM,UAAUA,cAAa,IAC9CA,iBACA,qBACE,qBACArB,UAAS,cAAc,OAAO;AACpC,UAAM,gBAAgB;AACtB,QAAI,aAAa;AACf,mBAAa,cAAc,QAAQ;IACrC;AACA,iBAAa,WAAW;AACxB,iBAAa,OAAO;AACpB,iBAAa,QAAQ;AACrB,iBAAa,iBAAiB,cAAc,SAAU,OAAK;AACzD,kBAAY,aAAa;AACzB,UAAI,QAAQ,QAAQ;AAClB,qBAAa,cAAc,QAAQ;MACrC;IACF,CAAC;AACD,QAAIqB,gBAAe;AACjB,kBAAY,OAAO;QACjB;QACA,eAAAA;QACA;OACD;IACH,WAAW,kBAAkB;AAC3B,kBAAY,OAAO;QACjB;QACA,cAAc;QACd;QACA;OACD;IACH,OAAO;AACL,YAAM,aACJ;QACE,OAAO;SAET,SAAUC,SAAM;AACd,oBAAY,OAAO;UACjB;UACA,cAAcA;UACd;UACA;SACD;MACH,GACA,aAAa;IAEjB;EACF;EACA,qBAAqB,SAAS,oBAAoB,UAAQ;AACxD,UAAM,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AACpF,UAAM,gBAAgB,QAAQ,YAAY,SAAY,QAAQ,UAAU;AACxE,UAAM,mBAAmB,QAAQ;AACjC,UAAM,qBAAqB,QAAQ;AACnC,QAAI,+BAA+B;AAMnC,QAAI,gBAAgB,GAAG;AACrB,qCAA+B,MAAM,eAAe,WAAA;AAClD,oBAAY,mBAAmB,gBAAgB;MACjD,GAAG,GAAK;IACV;AACA,gBAAY,eAAe;MACzB,OAAO,SAASC,SAAK;AACnB,yBAAiB;UACf,OAAO;UACP,WAAW;UACX,UACE;UACF,OAAO;UACP,cAAc,CAAA;SACf;MACH;MACA,UAAU,SAAS,WAAQ;AAEzB,qBAAa,4BAA4B;MAC3C;MACA,WAAW,SAAS,YAAS;AAC3B,cAAM,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAChF,cAAM,eAAe,IAAI;AACzB,cAAM,eAAe,IAAI;AACzB,cAAM,cAAc,IAAI;AACxB,cAAM,aAAa,IAAI;AACvB,iBAAS;UACP;UACA;UACA;UACA;SACD;MACH;MACA,kBAAkB,QAAQ;MAC1B;MACA,aAAa,QAAQ;MACrB;KACD;EACH;EACA,oBAAoB,SAAS,mBAAmB,KAAG;AACjD,UAAM,MAAM,SAAS,GAAG,IAAI,MAAM,CAAA;AAClC,UAAM,OAAO;AACb,UAAM,eAAe,KAAK;AAC1B,UAAM,eAAe,KAAK;AAC1B,UAAM,qBAAqB,KAAK;AAChC,UAAM,eAAe,IAAI,gBAAgB,CAAA;AACzC,UAAM,qBAAqB,aAAa,YAAY,aAAa,UAAS,KAAM,CAAA,IAAK,CAAA;AACrF,UAAM,wBAAwB,QAAQ,mBAAmB,MAAM;AAC/D,UAAM,yBAAyB,mBAAmB,CAAC;AACnD,QAAI,CAAC,gBAAgB,uBAAuB;AAC1C,UAAI,MAAM,WAAW,uBAAuB,IAAI,GAAG;AAEjD,+BAAuB,KAAI;MAC7B;IACF;AACA,QAAI,MAAM,UAAU,YAAY,KAAK,CAAC,oBAAoB;AAExD,mBAAa,MAAK;AAElB,UAAI,MAAM,WAAW,MAAM,IAAI,eAAe,KAAK,CAAC,MAAM,gBAAgB;AACxE,YAAI,aAAa,KAAK;AACpB,gBAAM,IAAI,gBAAgB,aAAa,GAAG;QAC5C;MACF;AAEA,YAAM,cAAc,YAAY;IAClC;EACF;;AAQF,SAASC,oBAAmB,SAAO;AACjC,YAAU,MAAM,SAAS,OAAO,IAAI,UAAU,CAAA;AAC9C,cAAY,mBAAmB,OAAO;AACxC;AAQA,SAAS,gBAAgB,KAAK,UAAQ;AACpC,QAAM,UAAU,IAAI,WAAW,CAAA;AAC/B,QAAM,SAAS,QAAQ;AACvB,QAAM,QAAQ,QAAQ;AACtB,QAAM,WAAW,OAAO,QAAQ,QAAQ;AACxC,QAAM,YAAY,OAAO,QAAQ,SAAS;AAC1C,QAAM,aAAa,OAAO,QAAQ,SAAS;AAC3C,QAAM,eAAe,IAAI;AACzB,QAAM,eAAe,IAAI;AACzB,QAAM,aAAa,IAAI;AACvB,QAAM,cAAc,IAAI;AACxB,QAAM,iBAAiB,WAAW,kBAAkB;IAClD;IACA;IACA;IACA;GACD;AACD,QAAM,mBAAmB;AACzB,UAAQ,OAAO;AACf,UAAQ,eAAe;AACvB,UAAQ,aAAa;AACrB,UAAQ,cAAc;AACtB,UAAQ,eAAe;AACvB,MAAI,CAAC,MAAM,UAAU,YAAY,GAAG;AAClC;EACF;AACA,eAAa,QAAQ,WAAW,eAAe;AAC/C,eAAa,SAAS,YAAY,eAAe;AACjD,MAAI,CAAC,QAAQ,oBAAoB;AAC/B,UAAM,WAAW,cAAc;MAC7B,UAAU;MACV,SAAS;KACV;AACD,IAAAxB,UAAS,KAAK,YAAY,YAAY;EACxC;AAGA,eAAa,KAAI;AACjB,aAAW,OAAO,SAAS,SAAUmB,MAAG;AACtC,SAAK,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,SAAS,CAAC,MAAM,SAAS;AAC5D,MAAAK,oBAAmBL,IAAG;IACxB;AACA,qBAAiBA,IAAG;EACtB,CAAC;AACH;AAQA,SAAS,gBAAa;AACpB,QAAM,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAChF,QAAM,WAAW,IAAI;AACrB,MAAIE,iBAAgB,IAAI;AACxB,QAAM,UAAU,IAAI;AACpB,QAAM,UAAU;IACd,cAAc;IACd,kBAAkB;;AAEpB,QAAM,WAAW,MAAM,SAAS,OAAO;AACvC,QAAM,gBAAgB;AACtB,MAAI,YAAY;AAChB,MAAI,WAAW;AACf,QAAM,aAAa;AACnB,QAAM,MAAM;AACZ,MAAI,SAAS,OAAO;AAClB,WAAO,SAAS,QAAQ;EAC1B;AACA,MAAI,MAAM,UAAUA,cAAa,KAAKA,eAAc,KAAK;AACvD,eAAWA,eAAc;AACzB,gBAAY,MAAM,aAAa,QAAQ;AACvC,QAAI,CAAC,MAAM,YAAY,YAAY,SAAS,GAAG;AAC7C,aAAO,SAAS,MAAM,SAAS,WAAW;IAC5C;EACF,WAAW,MAAM,QAAQA,cAAa,GAAG;AACvC,UAAM,KAAKA,gBAAe,SAAU,UAAUI,WAAQ;AACpD,UAAIA,qBAAoB,MAAM;AAC5B,oBAAYA,UAAS,KAAK,OAAOA,UAAS,KAAK,YAAY,GAAG,IAAI,GAAGA,UAAS,MAAM;MACtF,OAAO;AACL,oBAAYA,UAAS,OAAOA,UAAS,YAAY,GAAG,IAAI,GAAGA,UAAS,MAAM;MAC5E;AACA,UAAI,MAAM,YAAY,YAAY,SAAS,GAAG;AAC5C,QAAAJ,iBAAgBI;AAChB,eAAO;MACT;IACF,CAAC;EACH;AACA,cAAY,eAAe;IACzB,WAAW,SAAS,UAAUN,MAAG;AAC/B,MAAAA,KAAI,UAAU,WAAW,CAAA;AACzB,sBAAgBA,MAAK,QAAQ;IAC/B;IACA,eAAAE;IACA,aAAa,QAAQ;IACrB;GACD;AACH;AAQA,SAAS,iBAAc;AACrB,QAAM,MAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAChF,QAAM,WAAW,IAAI;AACrB,QAAM,mBAAmB,IAAI;AAC7B,QAAM,UAAU,IAAI;AACpB,QAAM,qBAAqB,IAAI;AAC/B,MAAI,CAAC,qBAAoB,GAAI;AAC3B,WAAO,SAAS,MAAM,SAAQ,CAAE;EAClC;AACA,MAAI,QAAQ,uBAAuB,QAAQ;AACzC,eAAW,OAAO,SAAS,SAAUF,MAAG;AACtC,eAASA,IAAG;IACd,CAAC;AACD;EACF;AACA,cAAY,oBACV,WAAA;AACE,UAAMA,OAAM,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAChF,IAAAA,KAAI,UAAU,WAAW,CAAA;AACzB,oBAAgBA,MAAK,QAAQ;EAC/B,GACA;IACE;IACA;IACA;IACA,aAAa,QAAQ;GACtB;AAEL;AAQA,SAAS,UAAU,aAAa,UAAQ;AACtC,aAAW,MAAM,WAAW,WAAW,IAAI,cAAc;AACzD,gBAAc,MAAM,SAAS,WAAW,IAAI,cAAc,CAAA;AAC1D,MAAI,CAAC,MAAM,WAAW,QAAQ,GAAG;AAC/B;EACF;AACA,MAAI,UAAU,MAAM,iBAAiB,gBAAgB,WAAW,KAAK,CAAA;AACrE,QAAM,mBAAmB,YAAY;AACrC,QAAM,SAAS,QAAQ;AACvB,QAAM,eAAe,SAAS,OAAO,SAAS;AAC9C,QAAM,QAAQ,QAAQ;AACtB,QAAM,qBAAqB,QAAQ;AACnC,YAAU,MAAM,iBAAiB,SAAS;IACxC,UAAU,KAAK,MAAM,QAAQ,QAAQ;IACrC,WAAW,KAAK,MAAM,QAAQ,SAAS;GACxC;AAED,MAAI,cAAc;AAChB,mBAAe;MACb;MACA;MACA;MACA;KACD;EACH,WAAW,OAAO;AAEhB,kBAAc;MACZ,eAAe;MACf;MACA;KACD;EACH,OAAO;AAEL,mBAAe;MACb;MACA;MACA;MACA;KACD;EACH;AACF;AAOA,SAAS,aAAa,aAAa,UAAQ;AACzC,aAAW,MAAM,WAAW,WAAW,IAAI,cAAc;AACzD,gBAAc,MAAM,SAAS,WAAW,IAAI,cAAc,CAAA;AAC1D,MAAI,CAAC,MAAM,WAAW,QAAQ,GAAG;AAC/B;EACF;AACA,QAAM,gBAAgB,MAAM,iBAAiB,gBAAgB,WAAW;AACxE,QAAM,UAAU,MAAM,iBAAiB,eAAe;IACpD,UAAU;IACV,WAAW;IACX,UAAU,KAAK,MAAM,cAAc,QAAQ;IAC3C,WAAW,KAAK,MAAM,cAAc,SAAS;GAC9C;AACD,YAAU,SAAS,QAAQ;AAC7B;AAQA,IAAM,MAAM;EACV,OAAO;EACP,OAAO;EACP,gBAAgB;EAChB;EACA;EACA,oBAAAK;EACA;EACA;EACA;EACA,8BAA8B;EAC9B,SAAS;;AAGX,IAAA,kBAAe;;;ACh2Ef,IAAM,sBAAsB;EAC1B,QAAQ;EACR,OAAO;;EACP,QAAQ;;EAER,aAAa;;;EAGb,kBAAkB,sBAAmB;EAAE;;EACvC,kBAAkB,MAAK;EAAE;;;EAGzB,YAAY;;EACZ,gBAAgB;;EAChB,UAAU;;EACV,QAAQ;;EACR,WAAW;;EACX,eAAe;;;EAGf,QAAQ;;;EAGR,WAAW;;EACX,iBAAiB;;EACjB,gBAAgB;;EAChB,sBAAsB;;EACtB,sBAAsB;;;EAGtB,MAAM;;EACN,eAAe;;EACf,YAAY;;EACZ,UAAU;;EACV,aAAa;;EACb,YAAY;;EACZ,YAAY;;EACZ,WAAW;;EACX,WAAW;;EACX,cAAc;;EACd,iBAAiB;;EACjB,iBAAiB;;;;EAKjB,oBAAoB;;EACpB,cAAc;;EACd,cAAc;;;EAGd,uBAAuB;;EACvB,wBAAwB,CAAA;;;AAG1B,IAAqB,aAArB,MAAqB,YAAU;EAC7B,WAAW,aAAU;AACnB,WAAO;MACL,IAAI;MACJ,MAAM;MACN,YAAY,CAAC,KAAK;MAClB,WAAW,CAAC,WAAW;MACvB,SAAS;MACT,SAAS;;EAEb;EAEA,YAAY,SAAO;AACjB,SAAK,UAAU,EAAC,GAAG,QAAO;AAC1B,SAAK,SAAS,QAAQ;AACtB,WAAO,QAAQ;AAGf,SAAK,QAAQ,CAAA;AAGb,SAAK,UAAU;EACjB;EAEA,MAAM,WAAW,SAAO;EAGxB;EAEA,MAAM,IAAI,MAAI;AACZ,UAAM,KAAK,WAAU;AACrB,SAAK,MAAM,KAAK,IAAI;EACtB;EAEA,MAAM,QAAK;AACT,UAAM,KAAK,WAAU;AACrB,SAAK,cAAc,KAAK,OAAO;AAE/B,YAAQ,KAAK,QAAQ;MACnB,KAAK;AACH,aAAK,QAAQ,SAAS,KAAK;AAC3B;MACF,KAAK;AACH,aAAK,QAAQ,QAAQ,KAAK;AAC1B;MACF,KAAK;AACH,eAAO,KAAK,MAAM,WAAW,CAAC;AAC9B;MACF;AACE,cAAM,IAAI,MAAM,4BAA4B;IAChD;AAEA,WAAO,MAAM,KAAK,WAAU;EAC9B;;EAIA,MAAM,aAAU;AACd,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAU;AACrC,WAAK,QAAQ,UAAU,KAAK,SAAS,YAAS;AAU5C,YAAI,OAAO,OAAO;AAChB,iBAAO,OAAO,QAAQ;AACtB;QACF;AAGA,gBAAQ,OAAO,KAAK;MAMtB,CAAC;IACH,CAAC;EACH;;EAGA,cAAc,SAAO;AACnB,QAAI,QAAQ,SAAS,QAAQ,UAAU,QAAQ,YAAY,QAAQ,WAAW;AAC5E,cAAQ,KAAK,8BAA8B;IAC7C;AAGA,WAAO,QAAQ;AACf,WAAO,QAAQ;AAGf,YAAQ,WAAW,QAAQ;AAC3B,YAAQ,YAAY,QAAQ;AAC5B,WAAO,QAAQ;AACf,WAAO,QAAQ;EACjB;;",
|
|
6
5
|
"names": ["blob", "VideoLoaderWithParser", "document", "loop", "Uint8Array", "Uint32Array", "defaultOptions", "val", "blob", "isValid", "noop", "map", "buf", "p", "AnimatedGIF", "done", "existingImages", "bufferToString", "onRenderComplete", "getBase64GIF", "tempImage", "obj", "canvas", "existingVideo", "stream", "error", "stopVideoStreaming", "videoSrc"]
|
|
7
6
|
}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
/** Parse a Blob to a platform defined video type (HTMLVideoElement in browser). */
|
|
2
|
+
export declare function parseVideoBlob(blob: Blob): Promise<HTMLVideoElement>;
|
|
1
3
|
export default function parseVideo(arrayBuffer: ArrayBuffer): Promise<HTMLVideoElement>;
|
|
2
4
|
//# sourceMappingURL=parse-video.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-video.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-video.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-video.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-video.ts"],"names":[],"mappings":"AAIA,mFAAmF;AACnF,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAI1E;AAGD,wBAA8B,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAE5F"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
// TODO It is probably somewhat inefficent to convert a File/Blob to ArrayBuffer and back
|
|
7
|
-
// and could perhaps cause problems for large videos.
|
|
8
|
-
// TODO MIME type is also lost from the File or Response...
|
|
9
|
-
const blob = new Blob([arrayBuffer]);
|
|
4
|
+
/** Parse a Blob to a platform defined video type (HTMLVideoElement in browser). */
|
|
5
|
+
export async function parseVideoBlob(blob) {
|
|
10
6
|
const video = document.createElement('video');
|
|
11
7
|
video.src = URL.createObjectURL(blob);
|
|
12
8
|
return video;
|
|
13
9
|
}
|
|
10
|
+
// Parse to platform defined video type (HTMLVideoElement in browser)
|
|
11
|
+
export default async function parseVideo(arrayBuffer) {
|
|
12
|
+
return await parseVideoBlob(new Blob([arrayBuffer]));
|
|
13
|
+
}
|
|
14
14
|
//# sourceMappingURL=parse-video.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-video.js","sourceRoot":"","sources":["../../../src/lib/parsers/parse-video.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,
|
|
1
|
+
{"version":3,"file":"parse-video.js","sourceRoot":"","sources":["../../../src/lib/parsers/parse-video.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAU;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,UAAU,CAAC,WAAwB;IAC/D,OAAO,MAAM,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
|
-
import parseVideo from "./lib/parsers/parse-video.js";
|
|
2
|
+
import parseVideo, { parseVideoBlob } from "./lib/parsers/parse-video.js";
|
|
3
3
|
export type VideoLoaderOptions = LoaderOptions & {
|
|
4
4
|
video: {};
|
|
5
5
|
};
|
|
@@ -8,6 +8,7 @@ export type VideoLoaderOptions = LoaderOptions & {
|
|
|
8
8
|
*/
|
|
9
9
|
export declare const VideoLoaderWithParser: {
|
|
10
10
|
readonly parse: typeof parseVideo;
|
|
11
|
+
readonly parseBlob: typeof parseVideoBlob;
|
|
11
12
|
readonly version: any;
|
|
12
13
|
readonly options: {
|
|
13
14
|
readonly video: {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-loader-with-parser.d.ts","sourceRoot":"","sources":["../src/video-loader-with-parser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,UAAU,qCAAkC;
|
|
1
|
+
{"version":3,"file":"video-loader-with-parser.d.ts","sourceRoot":"","sources":["../src/video-loader-with-parser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,UAAU,EAAE,EAAC,cAAc,EAAC,qCAAkC;AAKrE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,EAAE,EAAE,CAAC;CACX,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;CAIgD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import parseVideo from "./lib/parsers/parse-video.js";
|
|
4
|
+
import parseVideo, { parseVideoBlob } from "./lib/parsers/parse-video.js";
|
|
5
5
|
import { VideoLoader as VideoLoaderMetadata } from "./video-loader.js";
|
|
6
6
|
const { preload: _VideoLoaderPreload, ...VideoLoaderMetadataWithoutPreload } = VideoLoaderMetadata;
|
|
7
7
|
/**
|
|
@@ -9,6 +9,7 @@ const { preload: _VideoLoaderPreload, ...VideoLoaderMetadataWithoutPreload } = V
|
|
|
9
9
|
*/
|
|
10
10
|
export const VideoLoaderWithParser = {
|
|
11
11
|
...VideoLoaderMetadataWithoutPreload,
|
|
12
|
-
parse: parseVideo
|
|
12
|
+
parse: parseVideo,
|
|
13
|
+
parseBlob: parseVideoBlob
|
|
13
14
|
};
|
|
14
15
|
//# sourceMappingURL=video-loader-with-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-loader-with-parser.js","sourceRoot":"","sources":["../src/video-loader-with-parser.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,UAAU,qCAAkC;
|
|
1
|
+
{"version":3,"file":"video-loader-with-parser.js","sourceRoot":"","sources":["../src/video-loader-with-parser.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,UAAU,EAAE,EAAC,cAAc,EAAC,qCAAkC;AACrE,OAAO,EAAC,WAAW,IAAI,mBAAmB,EAAC,0BAAuB;AAElE,MAAM,EAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,iCAAiC,EAAC,GAAG,mBAAmB,CAAC;AAMjG;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,GAAG,iCAAiC;IACpC,KAAK,EAAE,UAAU;IACjB,SAAS,EAAE,cAAc;CACuD,CAAC"}
|
package/dist/video-loader.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export type VideoLoaderOptions = LoaderOptions & {
|
|
|
5
5
|
/** Preloads the parser-bearing video loader implementation. */
|
|
6
6
|
declare function preload(): Promise<{
|
|
7
7
|
readonly parse: typeof import("./lib/parsers/parse-video").default;
|
|
8
|
+
readonly parseBlob: typeof import("./lib/parsers/parse-video").parseVideoBlob;
|
|
8
9
|
readonly version: any;
|
|
9
10
|
readonly options: {
|
|
10
11
|
readonly video: {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-loader.d.ts","sourceRoot":"","sources":["../src/video-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAOpE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,EAAE,EAAE,CAAC;CACX,CAAC;AAEF,+DAA+D;AAC/D,iBAAe,OAAO
|
|
1
|
+
{"version":3,"file":"video-loader.d.ts","sourceRoot":"","sources":["../src/video-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAOpE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,KAAK,EAAE,EAAE,CAAC;CACX,CAAC;AAEF,+DAA+D;AAC/D,iBAAe,OAAO;;;;;;;;;;;;;;;;uBAOS,gBAAgB;wBAC1B,KAAK;GALzB;AAED,iEAAiE;AACjE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;uBACO,gBAAgB;wBAC1B,KAAK;CAQ8C,CAAC"}
|
package/dist/video-loader.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { VideoFormat } from "./video-format.js";
|
|
5
5
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
6
6
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
7
|
-
const VERSION = typeof "5.0.0-alpha.
|
|
7
|
+
const VERSION = typeof "5.0.0-alpha.3" !== 'undefined' ? "5.0.0-alpha.3" : 'latest';
|
|
8
8
|
/** Preloads the parser-bearing video loader implementation. */
|
|
9
9
|
async function preload() {
|
|
10
10
|
const { VideoLoaderWithParser } = await import("./video-loader-with-parser.js");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/video",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.3",
|
|
4
4
|
"description": "Framework-independent loaders and writers for video (MP4, WEBM, ...)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -49,12 +49,11 @@
|
|
|
49
49
|
"build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@loaders.gl/loader-utils": "5.0.0-alpha.
|
|
53
|
-
"@loaders.gl/worker-utils": "5.0.0-alpha.
|
|
54
|
-
"gifshot": "^0.4.5"
|
|
52
|
+
"@loaders.gl/loader-utils": "5.0.0-alpha.3",
|
|
53
|
+
"@loaders.gl/worker-utils": "5.0.0-alpha.3"
|
|
55
54
|
},
|
|
56
55
|
"peerDependencies": {
|
|
57
56
|
"@loaders.gl/core": "~5.0.0-alpha.0"
|
|
58
57
|
},
|
|
59
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "6e6f532b04a2798191ee2d9a932ca73b7c7f3c8d"
|
|
60
59
|
}
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
// TODO It is probably somewhat inefficent to convert a File/Blob to ArrayBuffer and back
|
|
8
|
-
// and could perhaps cause problems for large videos.
|
|
9
|
-
// TODO MIME type is also lost from the File or Response...
|
|
10
|
-
const blob = new Blob([arrayBuffer]);
|
|
5
|
+
/** Parse a Blob to a platform defined video type (HTMLVideoElement in browser). */
|
|
6
|
+
export async function parseVideoBlob(blob: Blob): Promise<HTMLVideoElement> {
|
|
11
7
|
const video = document.createElement('video');
|
|
12
8
|
video.src = URL.createObjectURL(blob);
|
|
13
9
|
return video;
|
|
14
10
|
}
|
|
11
|
+
|
|
12
|
+
// Parse to platform defined video type (HTMLVideoElement in browser)
|
|
13
|
+
export default async function parseVideo(arrayBuffer: ArrayBuffer): Promise<HTMLVideoElement> {
|
|
14
|
+
return await parseVideoBlob(new Blob([arrayBuffer]));
|
|
15
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
5
|
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
6
|
-
import parseVideo from './lib/parsers/parse-video';
|
|
6
|
+
import parseVideo, {parseVideoBlob} from './lib/parsers/parse-video';
|
|
7
7
|
import {VideoLoader as VideoLoaderMetadata} from './video-loader';
|
|
8
8
|
|
|
9
9
|
const {preload: _VideoLoaderPreload, ...VideoLoaderMetadataWithoutPreload} = VideoLoaderMetadata;
|
|
@@ -17,5 +17,6 @@ export type VideoLoaderOptions = LoaderOptions & {
|
|
|
17
17
|
*/
|
|
18
18
|
export const VideoLoaderWithParser = {
|
|
19
19
|
...VideoLoaderMetadataWithoutPreload,
|
|
20
|
-
parse: parseVideo
|
|
20
|
+
parse: parseVideo,
|
|
21
|
+
parseBlob: parseVideoBlob
|
|
21
22
|
} as const satisfies LoaderWithParser<HTMLVideoElement, never, VideoLoaderOptions>;
|