@loaders.gl/video 3.3.0-alpha.1 → 3.3.0-alpha.10

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.
Files changed (37) hide show
  1. package/dist/dist.min.js +4 -2
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/gif-builder.js +17 -37
  5. package/dist/es5/gif-builder.js.map +1 -1
  6. package/dist/es5/index.js +4 -7
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/lib/gifshot/gifshot-loader.js +2 -17
  9. package/dist/es5/lib/gifshot/gifshot-loader.js.map +1 -1
  10. package/dist/es5/lib/gifshot/gifshot.js +8 -269
  11. package/dist/es5/lib/gifshot/gifshot.js.map +1 -1
  12. package/dist/es5/lib/parsers/parse-video.js +0 -6
  13. package/dist/es5/lib/parsers/parse-video.js.map +1 -1
  14. package/dist/es5/lib/utils/assert.js +0 -1
  15. package/dist/es5/lib/utils/assert.js.map +1 -1
  16. package/dist/es5/video-loader.js +2 -4
  17. package/dist/es5/video-loader.js.map +1 -1
  18. package/dist/esm/bundle.js +1 -1
  19. package/dist/esm/bundle.js.map +1 -1
  20. package/dist/esm/gif-builder.js +20 -13
  21. package/dist/esm/gif-builder.js.map +1 -1
  22. package/dist/esm/index.js.map +1 -1
  23. package/dist/esm/lib/gifshot/gifshot-loader.js +4 -4
  24. package/dist/esm/lib/gifshot/gifshot-loader.js.map +1 -1
  25. package/dist/esm/lib/gifshot/gifshot.js +9 -269
  26. package/dist/esm/lib/gifshot/gifshot.js.map +1 -1
  27. package/dist/esm/lib/parsers/parse-video.js +1 -0
  28. package/dist/esm/lib/parsers/parse-video.js.map +1 -1
  29. package/dist/esm/lib/utils/assert.js.map +1 -1
  30. package/dist/esm/video-loader.js +3 -1
  31. package/dist/esm/video-loader.js.map +1 -1
  32. package/dist/lib/gifshot/gifshot.d.ts.map +1 -1
  33. package/dist/lib/gifshot/gifshot.js +7 -5
  34. package/dist/video-loader.d.ts +1 -1
  35. package/dist/video-loader.d.ts.map +1 -1
  36. package/package.json +4 -4
  37. package/src/lib/gifshot/gifshot.ts +6 -5
@@ -4,31 +4,29 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
7
8
  var utils = {
8
9
  URL: globalThis.URL || globalThis.webkitURL || globalThis.mozURL || globalThis.msURL,
9
10
  getUserMedia: function () {
10
- var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
11
- return getUserMedia ? getUserMedia.bind(navigator) : getUserMedia;
11
+ if (!globalThis.navigator) return globalThis.navigator;
12
+ var getUserMedia = globalThis.navigator.getUserMedia || globalThis.navigator.webkitGetUserMedia || globalThis.navigator.mozGetUserMedia || globalThis.navigator.msGetUserMedia;
13
+ return getUserMedia ? getUserMedia.bind(globalThis.navigator) : getUserMedia;
12
14
  }(),
13
15
  requestAnimFrame: globalThis.requestAnimationFrame || globalThis.webkitRequestAnimationFrame || globalThis.mozRequestAnimationFrame || globalThis.oRequestAnimationFrame || globalThis.msRequestAnimationFrame,
14
16
  requestTimeout: function requestTimeout(callback, delay) {
15
17
  callback = callback || utils.noop;
16
18
  delay = delay || 0;
17
-
18
19
  if (!utils.requestAnimFrame) {
19
20
  return setTimeout(callback, delay);
20
21
  }
21
-
22
22
  var start = new Date().getTime();
23
23
  var handle = new Object();
24
24
  var requestAnimFrame = utils.requestAnimFrame;
25
-
26
25
  var loop = function loop() {
27
26
  var current = new Date().getTime();
28
27
  var delta = current - start;
29
28
  delta >= delay ? callback.call() : handle.value = requestAnimFrame(loop);
30
29
  };
31
-
32
30
  handle.value = requestAnimFrame(loop);
33
31
  return handle;
34
32
  },
@@ -46,7 +44,6 @@ var utils = {
46
44
  var enc2 = void 0;
47
45
  var enc3 = void 0;
48
46
  var enc4 = void 0;
49
-
50
47
  while (i < l) {
51
48
  chr1 = input.charCodeAt(i++);
52
49
  chr2 = input.charCodeAt(i++);
@@ -55,19 +52,15 @@ var utils = {
55
52
  enc2 = (chr1 & 3) << 4 | chr2 >> 4;
56
53
  enc3 = (chr2 & 15) << 2 | chr3 >> 6;
57
54
  enc4 = chr3 & 63;
58
-
59
55
  if (isNaN(chr2)) {
60
56
  enc3 = enc4 = 64;
61
57
  } else if (isNaN(chr3)) {
62
58
  enc4 = 64;
63
59
  }
64
-
65
60
  output = output + key.charAt(enc1) + key.charAt(enc2) + key.charAt(enc3) + key.charAt(enc4);
66
61
  }
67
-
68
62
  return output;
69
63
  };
70
-
71
64
  return btoa ? btoa.bind(globalThis) : utils.noop;
72
65
  }(),
73
66
  isObject: function isObject(obj) {
@@ -114,7 +107,6 @@ var utils = {
114
107
  ogg: false,
115
108
  webm: false
116
109
  };
117
-
118
110
  try {
119
111
  if (testEl && testEl.canPlayType) {
120
112
  supportObj.mp4 = testEl.canPlayType('video/mp4; codecs="mp4v.20.8"') !== '';
@@ -124,7 +116,6 @@ var utils = {
124
116
  supportObj.webm = testEl.canPlayType('video/webm; codecs="vp8, vorbis"') !== -1;
125
117
  }
126
118
  } catch (e) {}
127
-
128
119
  return supportObj;
129
120
  }()
130
121
  },
@@ -132,11 +123,9 @@ var utils = {
132
123
  each: function each(collection, callback) {
133
124
  var x = void 0;
134
125
  var len = void 0;
135
-
136
126
  if (utils.isArray(collection)) {
137
127
  x = -1;
138
128
  len = collection.length;
139
-
140
129
  while (++x < len) {
141
130
  if (callback(x, collection[x]) === false) {
142
131
  break;
@@ -156,14 +145,12 @@ var utils = {
156
145
  if (!utils.isObject(defaultOptions) || !utils.isObject(userOptions) || !Object.keys) {
157
146
  return;
158
147
  }
159
-
160
148
  var newObj = {};
161
149
  utils.each(defaultOptions, function (key, val) {
162
150
  newObj[key] = defaultOptions[key];
163
151
  });
164
152
  utils.each(userOptions, function (key, val) {
165
153
  var currentUserOption = userOptions[key];
166
-
167
154
  if (!utils.isObject(currentUserOption)) {
168
155
  newObj[key] = currentUserOption;
169
156
  } else if (!defaultOptions[key]) {
@@ -178,7 +165,6 @@ var utils = {
178
165
  if (!utils.isElement(elem)) {
179
166
  return;
180
167
  }
181
-
182
168
  if (utils.isString(attr) && utils.isString(val)) {
183
169
  elem.style[attr] = val;
184
170
  } else if (utils.isObject(attr)) {
@@ -191,7 +177,6 @@ var utils = {
191
177
  if (!utils.isElement(node)) {
192
178
  return;
193
179
  }
194
-
195
180
  if (node.parentNode) {
196
181
  node.parentNode.removeChild(node);
197
182
  }
@@ -200,7 +185,6 @@ var utils = {
200
185
  if (!utils.isString(content)) {
201
186
  return {};
202
187
  }
203
-
204
188
  try {
205
189
  var blob = new utils.Blob([content], {
206
190
  type: 'text/javascript'
@@ -220,11 +204,9 @@ var utils = {
220
204
  },
221
205
  getFontSize: function getFontSize() {
222
206
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
223
-
224
207
  if (!document.body || options.resizeFont === false) {
225
208
  return options.fontSize;
226
209
  }
227
-
228
210
  var text = options.text;
229
211
  var containerWidth = options.gifWidth;
230
212
  var fontSize = parseInt(options.fontSize, 10);
@@ -238,11 +220,9 @@ var utils = {
238
220
  span.style.textIndent = '-9999px';
239
221
  span.style.visibility = 'hidden';
240
222
  document.body.appendChild(span);
241
-
242
223
  while (span.offsetWidth > containerWidth && fontSize >= minFontSize) {
243
224
  span.style.fontSize = "".concat(--fontSize, "px");
244
225
  }
245
-
246
226
  document.body.removeChild(span);
247
227
  return "".concat(fontSize, "px");
248
228
  },
@@ -257,7 +237,6 @@ var error = {
257
237
  var errorObj = {};
258
238
  utils.each(error.validators, function (indece, currentValidator) {
259
239
  var errorCode = currentValidator.errorCode;
260
-
261
240
  if (!skipObj[errorCode] && !currentValidator.condition) {
262
241
  errorObj = currentValidator;
263
242
  errorObj.error = true;
@@ -311,9 +290,7 @@ var error = {
311
290
  var error$2 = Object.freeze({
312
291
  default: error
313
292
  });
314
-
315
293
  var noop = function noop() {};
316
-
317
294
  var defaultOptions = {
318
295
  sampleInterval: 10,
319
296
  numWorkers: 2,
@@ -348,32 +325,26 @@ var defaultOptions = {
348
325
  var defaultOptions$2 = Object.freeze({
349
326
  default: defaultOptions
350
327
  });
351
-
352
328
  function isSupported() {
353
329
  return error.isValid();
354
330
  }
355
-
356
331
  function isWebCamGIFSupported() {
357
332
  return error.isValid();
358
333
  }
359
-
360
334
  function isSupported$1() {
361
335
  var options = {
362
336
  getUserMedia: true
363
337
  };
364
338
  return error.isValid(options);
365
339
  }
366
-
367
340
  function isExistingVideoGIFSupported(codecs) {
368
341
  var hasValidCodec = false;
369
-
370
342
  if (utils.isArray(codecs) && codecs.length) {
371
343
  utils.each(codecs, function (indece, currentCodec) {
372
344
  if (utils.isSupported.videoCodecs[currentCodec]) {
373
345
  hasValidCodec = true;
374
346
  }
375
347
  });
376
-
377
348
  if (!hasValidCodec) {
378
349
  return false;
379
350
  }
@@ -382,12 +353,10 @@ function isExistingVideoGIFSupported(codecs) {
382
353
  return false;
383
354
  }
384
355
  }
385
-
386
356
  return error.isValid({
387
357
  getUserMedia: true
388
358
  });
389
359
  }
390
-
391
360
  function NeuQuant() {
392
361
  var netsize = 256;
393
362
  var prime1 = 499;
@@ -425,7 +394,6 @@ function NeuQuant() {
425
394
  var bias = [];
426
395
  var freq = [];
427
396
  var radpower = [];
428
-
429
397
  function NeuQuantConstructor(thepic, len, sample) {
430
398
  var i;
431
399
  var p;
@@ -433,7 +401,6 @@ function NeuQuant() {
433
401
  lengthcount = len;
434
402
  samplefac = sample;
435
403
  network = new Array(netsize);
436
-
437
404
  for (i = 0; i < netsize; i++) {
438
405
  network[i] = new Array(4);
439
406
  p = network[i];
@@ -442,27 +409,21 @@ function NeuQuant() {
442
409
  bias[i] = 0;
443
410
  }
444
411
  }
445
-
446
412
  function colorMap() {
447
413
  var map = [];
448
414
  var index = new Array(netsize);
449
-
450
415
  for (var i = 0; i < netsize; i++) {
451
416
  index[network[i][3]] = i;
452
417
  }
453
-
454
418
  var k = 0;
455
-
456
419
  for (var l = 0; l < netsize; l++) {
457
420
  var j = index[l];
458
421
  map[k++] = network[j][0];
459
422
  map[k++] = network[j][1];
460
423
  map[k++] = network[j][2];
461
424
  }
462
-
463
425
  return map;
464
426
  }
465
-
466
427
  function inxbuild() {
467
428
  var i;
468
429
  var j;
@@ -474,15 +435,12 @@ function NeuQuant() {
474
435
  var startpos;
475
436
  previouscol = 0;
476
437
  startpos = 0;
477
-
478
438
  for (i = 0; i < netsize; i++) {
479
439
  p = network[i];
480
440
  smallpos = i;
481
441
  smallval = p[1];
482
-
483
442
  for (j = i + 1; j < netsize; j++) {
484
443
  q = network[j];
485
-
486
444
  if (q[1] < smallval) {
487
445
  smallpos = j;
488
446
  smallval = q[1];
@@ -490,7 +448,6 @@ function NeuQuant() {
490
448
  }
491
449
 
492
450
  q = network[smallpos];
493
-
494
451
  if (i != smallpos) {
495
452
  j = q[0];
496
453
  q[0] = p[0];
@@ -505,26 +462,20 @@ function NeuQuant() {
505
462
  q[3] = p[3];
506
463
  p[3] = j;
507
464
  }
508
-
509
465
  if (smallval != previouscol) {
510
466
  netindex[previouscol] = startpos + i >> 1;
511
-
512
467
  for (j = previouscol + 1; j < smallval; j++) {
513
468
  netindex[j] = i;
514
469
  }
515
-
516
470
  previouscol = smallval;
517
471
  startpos = i;
518
472
  }
519
473
  }
520
-
521
474
  netindex[previouscol] = startpos + maxnetpos >> 1;
522
-
523
475
  for (j = previouscol + 1; j < 256; j++) {
524
476
  netindex[j] = maxnetpos;
525
477
  }
526
478
  }
527
-
528
479
  function learn() {
529
480
  var i;
530
481
  var j;
@@ -540,11 +491,9 @@ function NeuQuant() {
540
491
  var p;
541
492
  var pix;
542
493
  var lim;
543
-
544
494
  if (lengthcount < minpicturebytes) {
545
495
  samplefac = 1;
546
496
  }
547
-
548
497
  alphadec = 30 + (samplefac - 1) / 3;
549
498
  p = thepicture;
550
499
  pix = 0;
@@ -554,15 +503,12 @@ function NeuQuant() {
554
503
  alpha = initalpha;
555
504
  radius = initradius;
556
505
  rad = radius >> radiusbiasshift;
557
-
558
506
  if (rad <= 1) {
559
507
  rad = 0;
560
508
  }
561
-
562
509
  for (i = 0; i < rad; i++) {
563
510
  radpower[i] = alpha * ((rad * rad - i * i) * radbias / (rad * rad));
564
511
  }
565
-
566
512
  if (lengthcount < minpicturebytes) {
567
513
  step = 3;
568
514
  } else if (lengthcount % prime1 !== 0) {
@@ -574,48 +520,37 @@ function NeuQuant() {
574
520
  } else {
575
521
  step = 3 * prime4;
576
522
  }
577
-
578
523
  i = 0;
579
-
580
524
  while (i < samplepixels) {
581
525
  b = (p[pix + 0] & 0xff) << netbiasshift;
582
526
  g = (p[pix + 1] & 0xff) << netbiasshift;
583
527
  r = (p[pix + 2] & 0xff) << netbiasshift;
584
528
  j = contest(b, g, r);
585
529
  altersingle(alpha, j, b, g, r);
586
-
587
530
  if (rad !== 0) {
588
531
  alterneigh(rad, j, b, g, r);
589
532
  }
590
-
591
533
  pix += step;
592
-
593
534
  if (pix >= lim) {
594
535
  pix -= lengthcount;
595
536
  }
596
-
597
537
  i++;
598
-
599
538
  if (delta === 0) {
600
539
  delta = 1;
601
540
  }
602
-
603
541
  if (i % delta === 0) {
604
542
  alpha -= alpha / alphadec;
605
543
  radius -= radius / radiusdec;
606
544
  rad = radius >> radiusbiasshift;
607
-
608
545
  if (rad <= 1) {
609
546
  rad = 0;
610
547
  }
611
-
612
548
  for (j = 0; j < rad; j++) {
613
549
  radpower[j] = alpha * ((rad * rad - j * j) * radbias / (rad * rad));
614
550
  }
615
551
  }
616
552
  }
617
553
  }
618
-
619
554
  function map(b, g, r) {
620
555
  var i;
621
556
  var j;
@@ -628,38 +563,28 @@ function NeuQuant() {
628
563
  best = -1;
629
564
  i = netindex[g];
630
565
  j = i - 1;
631
-
632
566
  while (i < netsize || j >= 0) {
633
567
  if (i < netsize) {
634
568
  p = network[i];
635
569
  dist = p[1] - g;
636
-
637
570
  if (dist >= bestd) {
638
571
  i = netsize;
639
572
  } else {
640
573
  i++;
641
-
642
574
  if (dist < 0) {
643
575
  dist = -dist;
644
576
  }
645
-
646
577
  a = p[0] - b;
647
-
648
578
  if (a < 0) {
649
579
  a = -a;
650
580
  }
651
-
652
581
  dist += a;
653
-
654
582
  if (dist < bestd) {
655
583
  a = p[2] - r;
656
-
657
584
  if (a < 0) {
658
585
  a = -a;
659
586
  }
660
-
661
587
  dist += a;
662
-
663
588
  if (dist < bestd) {
664
589
  bestd = dist;
665
590
  best = p[3];
@@ -667,37 +592,27 @@ function NeuQuant() {
667
592
  }
668
593
  }
669
594
  }
670
-
671
595
  if (j >= 0) {
672
596
  p = network[j];
673
597
  dist = g - p[1];
674
-
675
598
  if (dist >= bestd) {
676
599
  j = -1;
677
600
  } else {
678
601
  j--;
679
-
680
602
  if (dist < 0) {
681
603
  dist = -dist;
682
604
  }
683
-
684
605
  a = p[0] - b;
685
-
686
606
  if (a < 0) {
687
607
  a = -a;
688
608
  }
689
-
690
609
  dist += a;
691
-
692
610
  if (dist < bestd) {
693
611
  a = p[2] - r;
694
-
695
612
  if (a < 0) {
696
613
  a = -a;
697
614
  }
698
-
699
615
  dist += a;
700
-
701
616
  if (dist < bestd) {
702
617
  bestd = dist;
703
618
  best = p[3];
@@ -706,21 +621,17 @@ function NeuQuant() {
706
621
  }
707
622
  }
708
623
  }
709
-
710
624
  return best;
711
625
  }
712
-
713
626
  function process() {
714
627
  learn();
715
628
  unbiasnet();
716
629
  inxbuild();
717
630
  return colorMap();
718
631
  }
719
-
720
632
  function unbiasnet() {
721
633
  var i;
722
634
  var j;
723
-
724
635
  for (i = 0; i < netsize; i++) {
725
636
  network[i][0] >>= netbiasshift;
726
637
  network[i][1] >>= netbiasshift;
@@ -728,7 +639,6 @@ function NeuQuant() {
728
639
  network[i][3] = i;
729
640
  }
730
641
  }
731
-
732
642
  function alterneigh(rad, i, b, g, r) {
733
643
  var j;
734
644
  var k;
@@ -738,37 +648,28 @@ function NeuQuant() {
738
648
  var m;
739
649
  var p;
740
650
  lo = i - rad;
741
-
742
651
  if (lo < -1) {
743
652
  lo = -1;
744
653
  }
745
-
746
654
  hi = i + rad;
747
-
748
655
  if (hi > netsize) {
749
656
  hi = netsize;
750
657
  }
751
-
752
658
  j = i + 1;
753
659
  k = i - 1;
754
660
  m = 1;
755
-
756
661
  while (j < hi || k > lo) {
757
662
  a = radpower[m++];
758
-
759
663
  if (j < hi) {
760
664
  p = network[j++];
761
-
762
665
  try {
763
666
  p[0] -= a * (p[0] - b) / alpharadbias | 0;
764
667
  p[1] -= a * (p[1] - g) / alpharadbias | 0;
765
668
  p[2] -= a * (p[2] - r) / alpharadbias | 0;
766
669
  } catch (e) {}
767
670
  }
768
-
769
671
  if (k > lo) {
770
672
  p = network[k--];
771
-
772
673
  try {
773
674
  p[0] -= a * (p[0] - b) / alpharadbias | 0;
774
675
  p[1] -= a * (p[1] - g) / alpharadbias | 0;
@@ -777,7 +678,6 @@ function NeuQuant() {
777
678
  }
778
679
  }
779
680
  }
780
-
781
681
  function altersingle(alpha, i, b, g, r) {
782
682
  var n = network[i];
783
683
  var alphaMult = alpha / initalpha;
@@ -785,7 +685,6 @@ function NeuQuant() {
785
685
  n[1] -= alphaMult * (n[1] - g) | 0;
786
686
  n[2] -= alphaMult * (n[2] - r) | 0;
787
687
  }
788
-
789
688
  function contest(b, g, r) {
790
689
  var i;
791
690
  var dist;
@@ -801,80 +700,62 @@ function NeuQuant() {
801
700
  bestbiasd = bestd;
802
701
  bestpos = -1;
803
702
  bestbiaspos = bestpos;
804
-
805
703
  for (i = 0; i < netsize; i++) {
806
704
  n = network[i];
807
705
  dist = n[0] - b;
808
-
809
706
  if (dist < 0) {
810
707
  dist = -dist;
811
708
  }
812
-
813
709
  a = n[1] - g;
814
-
815
710
  if (a < 0) {
816
711
  a = -a;
817
712
  }
818
-
819
713
  dist += a;
820
714
  a = n[2] - r;
821
-
822
715
  if (a < 0) {
823
716
  a = -a;
824
717
  }
825
-
826
718
  dist += a;
827
-
828
719
  if (dist < bestd) {
829
720
  bestd = dist;
830
721
  bestpos = i;
831
722
  }
832
-
833
723
  biasdist = dist - (bias[i] >> intbiasshift - netbiasshift);
834
-
835
724
  if (biasdist < bestbiasd) {
836
725
  bestbiasd = biasdist;
837
726
  bestbiaspos = i;
838
727
  }
839
-
840
728
  betafreq = freq[i] >> betashift;
841
729
  freq[i] -= betafreq;
842
730
  bias[i] += betafreq << gammashift;
843
731
  }
844
-
845
732
  freq[bestpos] += beta;
846
733
  bias[bestpos] -= betagamma;
847
734
  return bestbiaspos;
848
735
  }
849
-
850
736
  NeuQuantConstructor.apply(this, arguments);
851
737
  var exports = {};
852
738
  exports.map = map;
853
739
  exports.process = process;
854
740
  return exports;
855
741
  }
856
-
857
742
  function workerCode() {
858
743
  var self = this;
859
-
860
744
  try {
861
745
  globalThis.onmessage = function (ev) {
862
746
  var data = ev.data || {};
863
747
  var response;
864
-
865
748
  if (data.gifshot) {
866
749
  response = workerMethods.run(data);
867
750
  postMessage(response);
868
751
  }
869
752
  };
870
753
  } catch (e) {}
871
-
872
754
  var workerMethods = {
873
755
  dataToRGB: function dataToRGB(data, width, height) {
874
756
  var length = width * height * 4;
875
757
  var i = 0;
876
758
  var rgb = [];
877
-
878
759
  while (i < length) {
879
760
  rgb.push(data[i++]);
880
761
  rgb.push(data[i++]);
@@ -887,14 +768,12 @@ function workerCode() {
887
768
  componentizedPaletteToArray: function componentizedPaletteToArray(paletteRGB) {
888
769
  paletteRGB = paletteRGB || [];
889
770
  var paletteArray = [];
890
-
891
771
  for (var i = 0; i < paletteRGB.length; i += 3) {
892
772
  var r = paletteRGB[i];
893
773
  var g = paletteRGB[i + 1];
894
774
  var b = paletteRGB[i + 2];
895
775
  paletteArray.push(r << 16 | g << 8 | b);
896
776
  }
897
-
898
777
  return paletteArray;
899
778
  },
900
779
  processFrameWithQuantizer: function processFrameWithQuantizer(imageData, width, height, sampleInterval) {
@@ -905,14 +784,12 @@ function workerCode() {
905
784
  var numberPixels = width * height;
906
785
  var indexedPixels = new Uint8Array(numberPixels);
907
786
  var k = 0;
908
-
909
787
  for (var i = 0; i < numberPixels; i++) {
910
788
  var r = rgbComponents[k++];
911
789
  var g = rgbComponents[k++];
912
790
  var b = rgbComponents[k++];
913
791
  indexedPixels[i] = nq.map(r, g, b);
914
792
  }
915
-
916
793
  return {
917
794
  pixels: indexedPixels,
918
795
  palette: paletteArray
@@ -931,20 +808,17 @@ function workerCode() {
931
808
  };
932
809
  return workerMethods;
933
810
  }
934
-
935
811
  function gifWriter(buf, width, height, gopts) {
936
812
  var p = 0;
937
813
  gopts = gopts === undefined ? {} : gopts;
938
814
  var loop_count = gopts.loop === undefined ? null : gopts.loop;
939
815
  var global_palette = gopts.palette === undefined ? null : gopts.palette;
940
816
  if (width <= 0 || height <= 0 || width > 65535 || height > 65535) throw 'Width/Height invalid.';
941
-
942
817
  function check_palette_and_num_colors(palette) {
943
818
  var num_colors = palette.length;
944
819
  if (num_colors < 2 || num_colors > 256 || num_colors & num_colors - 1) throw 'Invalid code/color length, must be power of 2 and 2 .. 256.';
945
820
  return num_colors;
946
821
  }
947
-
948
822
  buf[p++] = 0x47;
949
823
  buf[p++] = 0x49;
950
824
  buf[p++] = 0x46;
@@ -957,10 +831,10 @@ function gifWriter(buf, width, height, gopts) {
957
831
  buf[p++] = width >> 8 & 0xff;
958
832
  buf[p++] = height & 0xff;
959
833
  buf[p++] = height >> 8 & 0xff;
960
- buf[p++] = (global_palette !== null ? 0x80 : 0) | gp_num_colors_pow2;
834
+ buf[p++] = (global_palette !== null ? 0x80 : 0) |
835
+ gp_num_colors_pow2;
961
836
  buf[p++] = background;
962
837
  buf[p++] = 0;
963
-
964
838
  if (loop_count !== null) {
965
839
  if (loop_count < 0 || loop_count > 65535) throw 'Loop count invalid.';
966
840
  buf[p++] = 0x21;
@@ -985,46 +859,39 @@ function gifWriter(buf, width, height, gopts) {
985
859
  }
986
860
 
987
861
  var ended = false;
988
-
989
862
  this.addFrame = function (x, y, w, h, indexed_pixels, opts) {
990
863
  if (ended === true) {
991
864
  --p;
992
865
  ended = false;
993
866
  }
994
-
995
867
  opts = opts === undefined ? {} : opts;
996
868
  if (x < 0 || y < 0 || x > 65535 || y > 65535) throw 'x/y invalid.';
997
869
  if (w <= 0 || h <= 0 || w > 65535 || h > 65535) throw 'Width/Height invalid.';
998
870
  if (indexed_pixels.length < w * h) throw 'Not enough pixels for the frame size.';
999
871
  var using_local_palette = true;
1000
872
  var palette = opts.palette;
1001
-
1002
873
  if (palette === undefined || palette === null) {
1003
874
  using_local_palette = false;
1004
875
  palette = global_palette;
1005
876
  }
1006
-
1007
877
  if (palette === undefined || palette === null) throw 'Must supply either a local or global palette.';
1008
878
  var num_colors = check_palette_and_num_colors(palette);
1009
879
  var min_code_size = 0;
1010
-
1011
880
  while (num_colors >>= 1) {
1012
881
  ++min_code_size;
1013
882
  }
1014
-
1015
883
  num_colors = 1 << min_code_size;
1016
884
  var delay = opts.delay === undefined ? 0 : opts.delay;
1017
885
  var disposal = opts.disposal === undefined ? 0 : opts.disposal;
1018
- if (disposal < 0 || disposal > 3) throw 'Disposal out of range.';
886
+ if (disposal < 0 || disposal > 3)
887
+ throw 'Disposal out of range.';
1019
888
  var use_transparency = false;
1020
889
  var transparent_index = 0;
1021
-
1022
890
  if (opts.transparent !== undefined && opts.transparent !== null) {
1023
891
  use_transparency = true;
1024
892
  transparent_index = opts.transparent;
1025
893
  if (transparent_index < 0 || transparent_index >= num_colors) throw 'Transparent color index.';
1026
894
  }
1027
-
1028
895
  if (disposal !== 0 || use_transparency || delay !== 0) {
1029
896
  buf[p++] = 0x21;
1030
897
  buf[p++] = 0xf9;
@@ -1035,7 +902,6 @@ function gifWriter(buf, width, height, gopts) {
1035
902
  buf[p++] = transparent_index;
1036
903
  buf[p++] = 0;
1037
904
  }
1038
-
1039
905
  buf[p++] = 0x2c;
1040
906
  buf[p++] = x & 0xff;
1041
907
  buf[p++] = x >> 8 & 0xff;
@@ -1046,7 +912,6 @@ function gifWriter(buf, width, height, gopts) {
1046
912
  buf[p++] = h & 0xff;
1047
913
  buf[p++] = h >> 8 & 0xff;
1048
914
  buf[p++] = using_local_palette === true ? 0x80 | min_code_size - 1 : 0;
1049
-
1050
915
  if (using_local_palette === true) {
1051
916
  for (var i = 0, il = palette.length; i < il; ++i) {
1052
917
  var rgb = palette[i];
@@ -1055,19 +920,15 @@ function gifWriter(buf, width, height, gopts) {
1055
920
  buf[p++] = rgb & 0xff;
1056
921
  }
1057
922
  }
1058
-
1059
923
  p = GifWriterOutputLZWCodeStream(buf, p, min_code_size < 2 ? 2 : min_code_size, indexed_pixels);
1060
924
  };
1061
-
1062
925
  this.end = function () {
1063
926
  if (ended === false) {
1064
927
  buf[p++] = 0x3b;
1065
928
  ended = true;
1066
929
  }
1067
-
1068
930
  return p;
1069
931
  };
1070
-
1071
932
  function GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {
1072
933
  buf[p++] = min_code_size;
1073
934
  var cur_subblock = p++;
@@ -1078,50 +939,41 @@ function gifWriter(buf, width, height, gopts) {
1078
939
  var cur_code_size = min_code_size + 1;
1079
940
  var cur_shift = 0;
1080
941
  var cur = 0;
1081
-
1082
942
  function emit_bytes_to_buffer(bit_block_size) {
1083
943
  while (cur_shift >= bit_block_size) {
1084
944
  buf[p++] = cur & 0xff;
1085
945
  cur >>= 8;
1086
946
  cur_shift -= 8;
1087
-
1088
947
  if (p === cur_subblock + 256) {
1089
948
  buf[cur_subblock] = 255;
1090
949
  cur_subblock = p++;
1091
950
  }
1092
951
  }
1093
952
  }
1094
-
1095
953
  function emit_code(c) {
1096
954
  cur |= c << cur_shift;
1097
955
  cur_shift += cur_code_size;
1098
956
  emit_bytes_to_buffer(8);
1099
957
  }
1100
-
1101
958
  var ib_code = index_stream[0] & code_mask;
1102
959
  var code_table = {};
1103
960
  emit_code(clear_code);
1104
-
1105
961
  for (var i = 1, il = index_stream.length; i < il; ++i) {
1106
962
  var k = index_stream[i] & code_mask;
1107
963
  var cur_key = ib_code << 8 | k;
1108
964
  var cur_code = code_table[cur_key];
1109
-
1110
965
  if (cur_code === undefined) {
1111
966
  cur |= ib_code << cur_shift;
1112
967
  cur_shift += cur_code_size;
1113
-
1114
968
  while (cur_shift >= 8) {
1115
969
  buf[p++] = cur & 0xff;
1116
970
  cur >>= 8;
1117
971
  cur_shift -= 8;
1118
-
1119
972
  if (p === cur_subblock + 256) {
1120
973
  buf[cur_subblock] = 255;
1121
974
  cur_subblock = p++;
1122
975
  }
1123
976
  }
1124
-
1125
977
  if (next_code === 4096) {
1126
978
  emit_code(clear_code);
1127
979
  next_code = eoi_code + 1;
@@ -1141,20 +993,16 @@ function gifWriter(buf, width, height, gopts) {
1141
993
  emit_code(ib_code);
1142
994
  emit_code(eoi_code);
1143
995
  emit_bytes_to_buffer(1);
1144
-
1145
996
  if (cur_subblock + 1 === p) {
1146
997
  buf[cur_subblock] = 0;
1147
998
  } else {
1148
999
  buf[cur_subblock] = p - cur_subblock - 1;
1149
1000
  buf[p++] = 0;
1150
1001
  }
1151
-
1152
1002
  return p;
1153
1003
  }
1154
1004
  }
1155
-
1156
1005
  var noop$2 = function noop() {};
1157
-
1158
1006
  var AnimatedGIF = function AnimatedGIF(options) {
1159
1007
  this.canvas = null;
1160
1008
  this.ctx = null;
@@ -1169,7 +1017,6 @@ var AnimatedGIF = function AnimatedGIF(options) {
1169
1017
  this.options = options;
1170
1018
  this.initializeWebWorkers(options);
1171
1019
  };
1172
-
1173
1020
  AnimatedGIF.prototype = {
1174
1021
  workerMethods: workerCode(),
1175
1022
  initializeWebWorkers: function initializeWebWorkers(options) {
@@ -1182,10 +1029,8 @@ AnimatedGIF.prototype = {
1182
1029
  var x = -1;
1183
1030
  var workerError = '';
1184
1031
  numWorkers = options.numWorkers;
1185
-
1186
1032
  while (++x < numWorkers) {
1187
1033
  webWorkerObj = utils.createWebWorker(processFrameWorkerCode);
1188
-
1189
1034
  if (utils.isObject(webWorkerObj)) {
1190
1035
  objectUrl = webWorkerObj.objectUrl;
1191
1036
  webWorker = webWorkerObj.worker;
@@ -1199,7 +1044,6 @@ AnimatedGIF.prototype = {
1199
1044
  utils.webWorkerError = Boolean(webWorkerObj);
1200
1045
  }
1201
1046
  }
1202
-
1203
1047
  this.workerError = workerError;
1204
1048
  this.canvas = document.createElement('canvas');
1205
1049
  this.canvas.width = options.gifWidth;
@@ -1215,22 +1059,18 @@ AnimatedGIF.prototype = {
1215
1059
  },
1216
1060
  byteMap: function () {
1217
1061
  var byteMap = [];
1218
-
1219
1062
  for (var i = 0; i < 256; i++) {
1220
1063
  byteMap[i] = String.fromCharCode(i);
1221
1064
  }
1222
-
1223
1065
  return byteMap;
1224
1066
  }(),
1225
1067
  bufferToString: function bufferToString(buffer) {
1226
1068
  var numberValues = buffer.length;
1227
1069
  var str = '';
1228
1070
  var x = -1;
1229
-
1230
1071
  while (++x < numberValues) {
1231
1072
  str += this.byteMap[buffer[x]];
1232
1073
  }
1233
-
1234
1074
  return str;
1235
1075
  },
1236
1076
  onFrameFinished: function onFrameFinished(progressCallback) {
@@ -1242,13 +1082,10 @@ AnimatedGIF.prototype = {
1242
1082
  return !frame.beingProcessed && frame.done;
1243
1083
  });
1244
1084
  self.numRenderedFrames++;
1245
-
1246
1085
  if (hasExistingImages) {
1247
1086
  progressCallback(self.numRenderedFrames / frames.length);
1248
1087
  }
1249
-
1250
1088
  self.onRenderProgressCallback(self.numRenderedFrames * 0.75 / frames.length);
1251
-
1252
1089
  if (allDone) {
1253
1090
  if (!self.generatingGIF) {
1254
1091
  self.generateGIF(frames, self.onRenderCompleteCallback);
@@ -1268,7 +1105,6 @@ AnimatedGIF.prototype = {
1268
1105
  var frames = this.frames;
1269
1106
  var frame = void 0;
1270
1107
  var worker = void 0;
1271
-
1272
1108
  var done = function done() {
1273
1109
  var ev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1274
1110
  var data = ev.data;
@@ -1280,19 +1116,15 @@ AnimatedGIF.prototype = {
1280
1116
  AnimatedGifContext.freeWorker(worker);
1281
1117
  AnimatedGifContext.onFrameFinished(progressCallback);
1282
1118
  };
1283
-
1284
1119
  frame = frames[position];
1285
-
1286
1120
  if (frame.beingProcessed || frame.done) {
1287
1121
  this.onFrameFinished();
1288
1122
  return;
1289
1123
  }
1290
-
1291
1124
  frame.sampleInterval = sampleInterval;
1292
1125
  frame.beingProcessed = true;
1293
1126
  frame.gifshot = true;
1294
1127
  worker = this.getWorker();
1295
-
1296
1128
  if (worker) {
1297
1129
  worker.onmessage = done;
1298
1130
  worker.postMessage(frame);
@@ -1304,23 +1136,19 @@ AnimatedGIF.prototype = {
1304
1136
  },
1305
1137
  startRendering: function startRendering(completeCallback) {
1306
1138
  this.onRenderCompleteCallback = completeCallback;
1307
-
1308
1139
  for (var i = 0; i < this.options.numWorkers && i < this.frames.length; i++) {
1309
1140
  this.processFrame(i);
1310
1141
  }
1311
1142
  },
1312
1143
  processNextFrame: function processNextFrame() {
1313
1144
  var position = -1;
1314
-
1315
1145
  for (var i = 0; i < this.frames.length; i++) {
1316
1146
  var frame = this.frames[i];
1317
-
1318
1147
  if (!frame.done && !frame.beingProcessed) {
1319
1148
  position = i;
1320
1149
  break;
1321
1150
  }
1322
1151
  }
1323
-
1324
1152
  if (position >= 0) {
1325
1153
  this.processFrame(position);
1326
1154
  }
@@ -1346,7 +1174,6 @@ AnimatedGIF.prototype = {
1346
1174
  utils.each(frames, function (iterator, frame) {
1347
1175
  var framePalette = frame.palette;
1348
1176
  onRenderProgressCallback(0.75 + 0.25 * frame.position * 1.0 / frames.length);
1349
-
1350
1177
  for (var i = 0; i < frameDuration; i++) {
1351
1178
  gifWriter$$1.addFrame(0, 0, width, height, frame.pixels, {
1352
1179
  palette: framePalette,
@@ -1358,7 +1185,6 @@ AnimatedGIF.prototype = {
1358
1185
  onRenderProgressCallback(1.0);
1359
1186
  this.frames = [];
1360
1187
  this.generatingGIF = false;
1361
-
1362
1188
  if (utils.isFunction(callback)) {
1363
1189
  bufferToString = this.bufferToString(buffer);
1364
1190
  gif = "data:image/gif;base64,".concat(utils.btoa(bufferToString));
@@ -1390,11 +1216,9 @@ AnimatedGIF.prototype = {
1390
1216
  var textYCoordinate = gifshotOptions.textYCoordinate ? gifshotOptions.textYCoordinate : textBaseline === 'top' ? 1 : textBaseline === 'center' ? height / 2 : height;
1391
1217
  var font = "".concat(fontWeight, " ").concat(fontSize, " ").concat(fontFamily);
1392
1218
  var imageData = void 0;
1393
-
1394
1219
  try {
1395
1220
  ctx.filter = filter;
1396
1221
  ctx.drawImage(element, 0, 0, width, height);
1397
-
1398
1222
  if (text) {
1399
1223
  ctx.font = font;
1400
1224
  ctx.fillStyle = fontColor;
@@ -1402,7 +1226,6 @@ AnimatedGIF.prototype = {
1402
1226
  ctx.textBaseline = textBaseline;
1403
1227
  ctx.fillText(text, textXCoordinate, textYCoordinate);
1404
1228
  }
1405
-
1406
1229
  imageData = ctx.getImageData(0, 0, width, height);
1407
1230
  self.addFrameImageData(imageData);
1408
1231
  } catch (e) {
@@ -1432,21 +1255,18 @@ AnimatedGIF.prototype = {
1432
1255
  },
1433
1256
  getBase64GIF: function getBase64GIF(completeCallback) {
1434
1257
  var self = this;
1435
-
1436
1258
  var onRenderComplete = function onRenderComplete(gif) {
1437
1259
  self.destroyWorkers();
1438
1260
  utils.requestTimeout(function () {
1439
1261
  completeCallback(gif);
1440
1262
  }, 0);
1441
1263
  };
1442
-
1443
1264
  self.startRendering(onRenderComplete);
1444
1265
  },
1445
1266
  destroyWorkers: function destroyWorkers() {
1446
1267
  if (this.workerError) {
1447
1268
  return;
1448
1269
  }
1449
-
1450
1270
  var workers = this.workers;
1451
1271
  utils.each(workers, function (iterator, workerObj) {
1452
1272
  var worker = workerObj.worker;
@@ -1456,7 +1276,6 @@ AnimatedGIF.prototype = {
1456
1276
  });
1457
1277
  }
1458
1278
  };
1459
-
1460
1279
  function getBase64GIF(animatedGifInstance, callback) {
1461
1280
  animatedGifInstance.getBase64GIF(function (image) {
1462
1281
  callback({
@@ -1467,7 +1286,6 @@ function getBase64GIF(animatedGifInstance, callback) {
1467
1286
  });
1468
1287
  });
1469
1288
  }
1470
-
1471
1289
  function existingImages() {
1472
1290
  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1473
1291
  var self = this;
@@ -1484,49 +1302,39 @@ function existingImages() {
1484
1302
  var loadedImagesLength = 0;
1485
1303
  var tempImage = void 0;
1486
1304
  var ag = void 0;
1487
-
1488
1305
  if (errorObj.error) {
1489
1306
  return callback(errorObj);
1490
1307
  }
1491
-
1492
1308
  ag = new AnimatedGIF(options);
1493
1309
  utils.each(images, function (index, image) {
1494
1310
  var currentImage = image;
1495
-
1496
1311
  if (utils.isElement(currentImage)) {
1497
1312
  if (options.crossOrigin) {
1498
1313
  currentImage.crossOrigin = options.crossOrigin;
1499
1314
  }
1500
-
1501
1315
  loadedImages[index] = currentImage;
1502
1316
  loadedImagesLength += 1;
1503
-
1504
1317
  if (loadedImagesLength === imagesLength) {
1505
1318
  addLoadedImagesToGif();
1506
1319
  }
1507
1320
  } else if (utils.isString(currentImage)) {
1508
1321
  tempImage = new Image();
1509
-
1510
1322
  if (options.crossOrigin) {
1511
1323
  tempImage.crossOrigin = options.crossOrigin;
1512
1324
  }
1513
-
1514
1325
  (function (tempImage) {
1515
1326
  if (image.text) {
1516
1327
  tempImage.text = image.text;
1517
1328
  }
1518
-
1519
1329
  tempImage.onerror = function (e) {
1520
1330
  var obj = void 0;
1521
1331
  --imagesLength;
1522
-
1523
1332
  if (imagesLength === 0) {
1524
1333
  obj = {};
1525
1334
  obj.error = 'None of the requested images was capable of being retrieved';
1526
1335
  return callback(obj);
1527
1336
  }
1528
1337
  };
1529
-
1530
1338
  tempImage.onload = function (e) {
1531
1339
  if (image.text) {
1532
1340
  loadedImages[index] = {
@@ -1536,19 +1344,14 @@ function existingImages() {
1536
1344
  } else {
1537
1345
  loadedImages[index] = tempImage;
1538
1346
  }
1539
-
1540
1347
  loadedImagesLength += 1;
1541
-
1542
1348
  if (loadedImagesLength === imagesLength) {
1543
1349
  addLoadedImagesToGif();
1544
1350
  }
1545
-
1546
1351
  utils.removeElement(tempImage);
1547
1352
  };
1548
-
1549
1353
  tempImage.src = currentImage;
1550
1354
  })(tempImage);
1551
-
1552
1355
  utils.setCSSAttr(tempImage, {
1553
1356
  position: 'fixed',
1554
1357
  opacity: '0'
@@ -1556,7 +1359,6 @@ function existingImages() {
1556
1359
  document.body.appendChild(tempImage);
1557
1360
  }
1558
1361
  });
1559
-
1560
1362
  function addLoadedImagesToGif() {
1561
1363
  utils.each(loadedImages, function (index, loadedImage) {
1562
1364
  if (loadedImage) {
@@ -1570,9 +1372,7 @@ function existingImages() {
1570
1372
  getBase64GIF(ag, callback);
1571
1373
  }
1572
1374
  }
1573
-
1574
1375
  var noop$3 = function noop() {};
1575
-
1576
1376
  var screenShot = {
1577
1377
  getGIF: function getGIF() {
1578
1378
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -1617,35 +1417,28 @@ var screenShot = {
1617
1417
  var sourceWidth = crop ? videoWidth - crop.scaledWidth : 0;
1618
1418
  var sourceY = crop ? Math.floor(crop.scaledHeight / 2) : 0;
1619
1419
  var sourceHeight = crop ? videoHeight - crop.scaledHeight : 0;
1620
-
1621
1420
  var captureFrames = function captureSingleFrame() {
1622
1421
  var framesLeft = pendingFrames - 1;
1623
-
1624
1422
  if (savedRenderingContexts.length) {
1625
1423
  context.putImageData(savedRenderingContexts[numFrames - pendingFrames], 0, 0);
1626
1424
  finishCapture();
1627
1425
  } else {
1628
1426
  drawVideo();
1629
1427
  }
1630
-
1631
1428
  function drawVideo() {
1632
1429
  try {
1633
1430
  if (sourceWidth > videoWidth) {
1634
1431
  sourceWidth = videoWidth;
1635
1432
  }
1636
-
1637
1433
  if (sourceHeight > videoHeight) {
1638
1434
  sourceHeight = videoHeight;
1639
1435
  }
1640
-
1641
1436
  if (sourceX < 0) {
1642
1437
  sourceX = 0;
1643
1438
  }
1644
-
1645
1439
  if (sourceY < 0) {
1646
1440
  sourceY = 0;
1647
1441
  }
1648
-
1649
1442
  context.filter = filter;
1650
1443
  context.drawImage(videoElement, sourceX, sourceY, sourceWidth, sourceHeight, 0, 0, gifWidth, gifHeight);
1651
1444
  finishCapture();
@@ -1657,14 +1450,11 @@ var screenShot = {
1657
1450
  }
1658
1451
  }
1659
1452
  }
1660
-
1661
1453
  function finishCapture() {
1662
1454
  var imageData = void 0;
1663
-
1664
1455
  if (saveRenderingContexts) {
1665
1456
  renderingContextsToSave.push(context.getImageData(0, 0, gifWidth, gifHeight));
1666
1457
  }
1667
-
1668
1458
  if (text) {
1669
1459
  context.font = font;
1670
1460
  context.fillStyle = fontColor;
@@ -1672,16 +1462,13 @@ var screenShot = {
1672
1462
  context.textBaseline = textBaseline;
1673
1463
  context.fillText(text, textXCoordinate, textYCoordinate);
1674
1464
  }
1675
-
1676
1465
  imageData = context.getImageData(0, 0, gifWidth, gifHeight);
1677
1466
  ag.addFrameImageData(imageData);
1678
1467
  pendingFrames = framesLeft;
1679
1468
  progressCallback((numFrames - pendingFrames) / numFrames);
1680
-
1681
1469
  if (framesLeft > 0) {
1682
1470
  utils.requestTimeout(captureSingleFrame, waitBetweenFrames);
1683
1471
  }
1684
-
1685
1472
  if (!pendingFrames) {
1686
1473
  ag.getBase64GIF(function (image) {
1687
1474
  callback({
@@ -1699,19 +1486,16 @@ var screenShot = {
1699
1486
  }
1700
1487
  }
1701
1488
  };
1702
-
1703
1489
  numFrames = numFrames !== undefined ? numFrames : 10;
1704
1490
  interval = interval !== undefined ? interval : 0.1;
1705
1491
  canvas.width = gifWidth;
1706
1492
  canvas.height = gifHeight;
1707
1493
  context = canvas.getContext('2d');
1708
-
1709
1494
  (function capture() {
1710
1495
  if (!savedRenderingContexts.length && videoElement.currentTime === 0) {
1711
1496
  utils.requestTimeout(capture, 100);
1712
1497
  return;
1713
1498
  }
1714
-
1715
1499
  captureFrames();
1716
1500
  })();
1717
1501
  },
@@ -1727,7 +1511,6 @@ var screenShot = {
1727
1511
  scaledWidth: 0,
1728
1512
  scaledHeight: 0
1729
1513
  };
1730
-
1731
1514
  if (width > height) {
1732
1515
  result.width = Math.round(width * (gifHeight / height)) - gifWidth;
1733
1516
  result.scaledWidth = Math.round(result.width * (height / gifHeight));
@@ -1735,7 +1518,6 @@ var screenShot = {
1735
1518
  result.height = Math.round(height * (gifWidth / width)) - gifHeight;
1736
1519
  result.scaledHeight = Math.round(result.height * (width / gifWidth));
1737
1520
  }
1738
-
1739
1521
  return result;
1740
1522
  }
1741
1523
  };
@@ -1750,11 +1532,9 @@ var videoStream = {
1750
1532
  var cameraStream = obj.cameraStream;
1751
1533
  var completedCallback = obj.completedCallback;
1752
1534
  var videoElement = obj.videoElement;
1753
-
1754
1535
  if (!videoElement) {
1755
1536
  return;
1756
1537
  }
1757
-
1758
1538
  if (videoElement.videoWidth > 0 && videoElement.videoHeight > 0) {
1759
1539
  videoElement.removeEventListener('loadeddata', videoStream.findVideoSize);
1760
1540
  completedCallback({
@@ -1794,11 +1574,9 @@ var videoStream = {
1794
1574
  var completedCallback = obj.completedCallback;
1795
1575
  var streamedCallback = obj.streamedCallback;
1796
1576
  var videoElement = obj.videoElement;
1797
-
1798
1577
  if (utils.isFunction(streamedCallback)) {
1799
1578
  streamedCallback();
1800
1579
  }
1801
-
1802
1580
  if (existingVideo) {
1803
1581
  if (utils.isString(existingVideo)) {
1804
1582
  videoElement.src = existingVideo;
@@ -1807,7 +1585,6 @@ var videoStream = {
1807
1585
  try {
1808
1586
  videoElement.src = utils.URL.createObjectURL(existingVideo);
1809
1587
  } catch (e) {}
1810
-
1811
1588
  videoElement.innerHTML = "<source src=\"".concat(existingVideo, "\" type=\"").concat(existingVideo.type, "\" />");
1812
1589
  }
1813
1590
  } else if (videoElement.mozSrcObject) {
@@ -1820,11 +1597,9 @@ var videoStream = {
1820
1597
  videoElement.srcObject = cameraStream;
1821
1598
  }
1822
1599
  }
1823
-
1824
1600
  videoElement.play();
1825
1601
  utils.requestTimeout(function checkLoadedData() {
1826
1602
  checkLoadedData.count = checkLoadedData.count || 0;
1827
-
1828
1603
  if (videoStream.loadedData === true) {
1829
1604
  videoStream.findVideoSize({
1830
1605
  videoElement: videoElement,
@@ -1834,7 +1609,6 @@ var videoStream = {
1834
1609
  videoStream.loadedData = false;
1835
1610
  } else {
1836
1611
  checkLoadedData.count += 1;
1837
-
1838
1612
  if (checkLoadedData.count > 10) {
1839
1613
  videoStream.findVideoSize({
1840
1614
  videoElement: videoElement,
@@ -1858,22 +1632,18 @@ var videoStream = {
1858
1632
  var webcamVideoElement = obj.webcamVideoElement;
1859
1633
  var videoElement = utils.isElement(existingVideo) ? existingVideo : webcamVideoElement ? webcamVideoElement : document.createElement('video');
1860
1634
  var cameraStream = void 0;
1861
-
1862
1635
  if (crossOrigin) {
1863
1636
  videoElement.crossOrigin = options.crossOrigin;
1864
1637
  }
1865
-
1866
1638
  videoElement.autoplay = true;
1867
1639
  videoElement.loop = true;
1868
1640
  videoElement.muted = true;
1869
1641
  videoElement.addEventListener('loadeddata', function (event) {
1870
1642
  videoStream.loadedData = true;
1871
-
1872
1643
  if (options.offset) {
1873
1644
  videoElement.currentTime = options.offset;
1874
1645
  }
1875
1646
  });
1876
-
1877
1647
  if (existingVideo) {
1878
1648
  videoStream.stream({
1879
1649
  videoElement: videoElement,
@@ -1906,13 +1676,11 @@ var videoStream = {
1906
1676
  var originalCallback = options.callback;
1907
1677
  var webcamVideoElement = options.webcamVideoElement;
1908
1678
  var noGetUserMediaSupportTimeout = void 0;
1909
-
1910
1679
  if (timeoutLength > 0) {
1911
1680
  noGetUserMediaSupportTimeout = utils.requestTimeout(function () {
1912
1681
  videoStream.onStreamingTimeout(originalCallback);
1913
1682
  }, 10000);
1914
1683
  }
1915
-
1916
1684
  videoStream.startStreaming({
1917
1685
  error: function error() {
1918
1686
  originalCallback({
@@ -1955,32 +1723,26 @@ var videoStream = {
1955
1723
  var cameraStreamTracks = cameraStream.getTracks ? cameraStream.getTracks() || [] : [];
1956
1724
  var hasCameraStreamTracks = Boolean(cameraStreamTracks.length);
1957
1725
  var firstCameraStreamTrack = cameraStreamTracks[0];
1958
-
1959
1726
  if (!keepCameraOn && hasCameraStreamTracks) {
1960
1727
  if (utils.isFunction(firstCameraStreamTrack.stop)) {
1961
1728
  firstCameraStreamTrack.stop();
1962
1729
  }
1963
1730
  }
1964
-
1965
1731
  if (utils.isElement(videoElement) && !webcamVideoElement) {
1966
1732
  videoElement.pause();
1967
-
1968
1733
  if (utils.isFunction(utils.URL.revokeObjectURL) && !utils.webWorkerError) {
1969
1734
  if (videoElement.src) {
1970
1735
  utils.URL.revokeObjectURL(videoElement.src);
1971
1736
  }
1972
1737
  }
1973
-
1974
1738
  utils.removeElement(videoElement);
1975
1739
  }
1976
1740
  }
1977
1741
  };
1978
-
1979
1742
  function stopVideoStreaming(options) {
1980
1743
  options = utils.isObject(options) ? options : {};
1981
1744
  videoStream.stopVideoStreaming(options);
1982
1745
  }
1983
-
1984
1746
  function createAndGetGIF(obj, callback) {
1985
1747
  var options = obj.options || {};
1986
1748
  var images = options.images;
@@ -2004,14 +1766,11 @@ function createAndGetGIF(obj, callback) {
2004
1766
  options.videoWidth = videoWidth;
2005
1767
  options.videoHeight = videoHeight;
2006
1768
  options.cameraStream = cameraStream;
2007
-
2008
1769
  if (!utils.isElement(videoElement)) {
2009
1770
  return;
2010
1771
  }
2011
-
2012
1772
  videoElement.width = gifWidth + cropDimensions.width;
2013
1773
  videoElement.height = gifHeight + cropDimensions.height;
2014
-
2015
1774
  if (!options.webcamVideoElement) {
2016
1775
  utils.setCSSAttr(videoElement, {
2017
1776
  position: 'fixed',
@@ -2019,17 +1778,14 @@ function createAndGetGIF(obj, callback) {
2019
1778
  });
2020
1779
  document.body.appendChild(videoElement);
2021
1780
  }
2022
-
2023
1781
  videoElement.play();
2024
1782
  screenShot.getGIF(options, function (obj) {
2025
1783
  if ((!images || !images.length) && (!video || !video.length)) {
2026
1784
  stopVideoStreaming(obj);
2027
1785
  }
2028
-
2029
1786
  completeCallback(obj);
2030
1787
  });
2031
1788
  }
2032
-
2033
1789
  function existingVideo() {
2034
1790
  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2035
1791
  var callback = obj.callback;
@@ -2045,15 +1801,12 @@ function existingVideo() {
2045
1801
  var videoSrc = void 0;
2046
1802
  var tempImage = void 0;
2047
1803
  var ag = void 0;
2048
-
2049
1804
  if (errorObj.error) {
2050
1805
  return callback(errorObj);
2051
1806
  }
2052
-
2053
1807
  if (utils.isElement(existingVideo) && existingVideo.src) {
2054
1808
  videoSrc = existingVideo.src;
2055
1809
  videoType = utils.getExtension(videoSrc);
2056
-
2057
1810
  if (!utils.isSupported.videoCodecs[videoType]) {
2058
1811
  return callback(error.messages.videoCodecs);
2059
1812
  }
@@ -2064,14 +1817,12 @@ function existingVideo() {
2064
1817
  } else {
2065
1818
  videoType = videoSrc.substr(videoSrc.lastIndexOf('.') + 1, videoSrc.length);
2066
1819
  }
2067
-
2068
1820
  if (utils.isSupported.videoCodecs[videoType]) {
2069
1821
  existingVideo = videoSrc;
2070
1822
  return false;
2071
1823
  }
2072
1824
  });
2073
1825
  }
2074
-
2075
1826
  videoStream.startStreaming({
2076
1827
  completed: function completed(obj) {
2077
1828
  obj.options = options || {};
@@ -2082,25 +1833,21 @@ function existingVideo() {
2082
1833
  options: options
2083
1834
  });
2084
1835
  }
2085
-
2086
1836
  function existingWebcam() {
2087
1837
  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2088
1838
  var callback = obj.callback;
2089
1839
  var lastCameraStream = obj.lastCameraStream;
2090
1840
  var options = obj.options;
2091
1841
  var webcamVideoElement = obj.webcamVideoElement;
2092
-
2093
1842
  if (!isWebCamGIFSupported()) {
2094
1843
  return callback(error.validate());
2095
1844
  }
2096
-
2097
1845
  if (options.savedRenderingContexts.length) {
2098
1846
  screenShot.getGIF(options, function (obj) {
2099
1847
  callback(obj);
2100
1848
  });
2101
1849
  return;
2102
1850
  }
2103
-
2104
1851
  videoStream.startVideoStreaming(function () {
2105
1852
  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2106
1853
  obj.options = options || {};
@@ -2112,15 +1859,12 @@ function existingWebcam() {
2112
1859
  crossOrigin: options.crossOrigin
2113
1860
  });
2114
1861
  }
2115
-
2116
1862
  function createGIF(userOptions, callback) {
2117
1863
  callback = utils.isFunction(userOptions) ? userOptions : callback;
2118
1864
  userOptions = utils.isObject(userOptions) ? userOptions : {};
2119
-
2120
1865
  if (!utils.isFunction(callback)) {
2121
1866
  return;
2122
1867
  }
2123
-
2124
1868
  var options = utils.normalizeOptions(defaultOptions, userOptions) || {};
2125
1869
  var lastCameraStream = userOptions.cameraStream;
2126
1870
  var images = options.images;
@@ -2131,7 +1875,6 @@ function createGIF(userOptions, callback) {
2131
1875
  gifWidth: Math.floor(options.gifWidth),
2132
1876
  gifHeight: Math.floor(options.gifHeight)
2133
1877
  });
2134
-
2135
1878
  if (imagesLength) {
2136
1879
  existingImages({
2137
1880
  images: images,
@@ -2154,15 +1897,12 @@ function createGIF(userOptions, callback) {
2154
1897
  });
2155
1898
  }
2156
1899
  }
2157
-
2158
1900
  function takeSnapShot(userOptions, callback) {
2159
1901
  callback = utils.isFunction(userOptions) ? userOptions : callback;
2160
1902
  userOptions = utils.isObject(userOptions) ? userOptions : {};
2161
-
2162
1903
  if (!utils.isFunction(callback)) {
2163
1904
  return;
2164
1905
  }
2165
-
2166
1906
  var mergedOptions = utils.normalizeOptions(defaultOptions, userOptions);
2167
1907
  var options = utils.normalizeOptions(mergedOptions, {
2168
1908
  interval: 0.1,
@@ -2172,7 +1912,6 @@ function takeSnapShot(userOptions, callback) {
2172
1912
  });
2173
1913
  createGIF(options, callback);
2174
1914
  }
2175
-
2176
1915
  var API = {
2177
1916
  utils: utils$2,
2178
1917
  error: error$2,