manim-web 0.3.20 → 0.3.22

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 (192) hide show
  1. package/README.md +20 -0
  2. package/dist/AmsConfiguration-OUoC_kJ0.js +847 -0
  3. package/dist/AmsConfiguration-tdje_HlF.js +847 -0
  4. package/dist/ConfigMacrosConfiguration-4OaQYvlr.js +46 -0
  5. package/dist/ConfigMacrosConfiguration-DM3-S5M8.js +46 -0
  6. package/dist/Entities-Dw6381dl.js +429 -0
  7. package/dist/Entities-bJKKDYjE.js +429 -0
  8. package/dist/Factory-Ba6Nqb3M.js +107 -0
  9. package/dist/HtmlNode-1mFtYQ9G.js +981 -0
  10. package/dist/HtmlNode-CQqo5we-.js +981 -0
  11. package/dist/InputJax-D5R2pqUk.js +41 -0
  12. package/dist/InputJax-jNvwWU5P.js +41 -0
  13. package/dist/NewcommandConfiguration-BN_OlLcO.js +32 -0
  14. package/dist/NewcommandConfiguration-DZ3mSCpD.js +32 -0
  15. package/dist/NewcommandMethods-D5bueYYE.js +187 -0
  16. package/dist/NewcommandMethods-DTf_dan5.js +187 -0
  17. package/dist/Options-DMK2wYar.js +63 -0
  18. package/dist/ParseMethods-Deqa7kJ6.js +2636 -0
  19. package/dist/ParseMethods-Dt5bYDSZ.js +2636 -0
  20. package/dist/Styles-BILrGVps.js +293 -0
  21. package/dist/Styles-DQSruwWe.js +293 -0
  22. package/dist/animation/Animation.d.ts +15 -0
  23. package/dist/animation/Animation.d.ts.map +1 -1
  24. package/dist/animation/MasterTimeline.d.ts +88 -1
  25. package/dist/animation/MasterTimeline.d.ts.map +1 -1
  26. package/dist/animation/movement/Rotate.d.ts +2 -7
  27. package/dist/animation/movement/Rotate.d.ts.map +1 -1
  28. package/dist/animation/transform/FadeMorphStrategy.d.ts +18 -0
  29. package/dist/animation/transform/FadeMorphStrategy.d.ts.map +1 -0
  30. package/dist/animation/transform/FadeTransforms.d.ts +2 -0
  31. package/dist/animation/transform/FadeTransforms.d.ts.map +1 -1
  32. package/dist/animation/transform/MorphStrategy.d.ts +8 -0
  33. package/dist/animation/transform/MorphStrategy.d.ts.map +1 -0
  34. package/dist/animation/transform/MovementTransforms.d.ts.map +1 -1
  35. package/dist/animation/transform/PointMorphStrategy.d.ts +36 -0
  36. package/dist/animation/transform/PointMorphStrategy.d.ts.map +1 -0
  37. package/dist/animation/transform/ShapeMorphStrategy.d.ts +39 -0
  38. package/dist/animation/transform/ShapeMorphStrategy.d.ts.map +1 -0
  39. package/dist/animation/transform/Transform.d.ts +9 -91
  40. package/dist/animation/transform/Transform.d.ts.map +1 -1
  41. package/dist/animation/transform/TransformMatching.d.ts.map +1 -1
  42. package/dist/animation/transform/TransformMatchingBase.d.ts +1 -0
  43. package/dist/animation/transform/TransformMatchingBase.d.ts.map +1 -1
  44. package/dist/animation/transform/TransformMatchingShared.d.ts +37 -0
  45. package/dist/animation/transform/TransformMatchingShared.d.ts.map +1 -0
  46. package/dist/animation/transform/TransformPairing.d.ts +19 -0
  47. package/dist/animation/transform/TransformPairing.d.ts.map +1 -0
  48. package/dist/core/AnimateProxy.d.ts +4 -5
  49. package/dist/core/AnimateProxy.d.ts.map +1 -1
  50. package/dist/core/Camera.d.ts +37 -0
  51. package/dist/core/Camera.d.ts.map +1 -1
  52. package/dist/core/CameraExtensions.d.ts +33 -1
  53. package/dist/core/CameraExtensions.d.ts.map +1 -1
  54. package/dist/core/Group.d.ts +5 -11
  55. package/dist/core/Group.d.ts.map +1 -1
  56. package/dist/core/Mobject.d.ts +39 -7
  57. package/dist/core/Mobject.d.ts.map +1 -1
  58. package/dist/core/MobjectPositioning.d.ts +2 -5
  59. package/dist/core/MobjectPositioning.d.ts.map +1 -1
  60. package/dist/core/MobjectTypes.d.ts +21 -4
  61. package/dist/core/MobjectTypes.d.ts.map +1 -1
  62. package/dist/core/Renderer.d.ts +3 -0
  63. package/dist/core/Renderer.d.ts.map +1 -1
  64. package/dist/core/Scene.d.ts +50 -0
  65. package/dist/core/Scene.d.ts.map +1 -1
  66. package/dist/core/TexturedMobject.d.ts +38 -0
  67. package/dist/core/TexturedMobject.d.ts.map +1 -0
  68. package/dist/core/ThreeDScene.d.ts +18 -3
  69. package/dist/core/ThreeDScene.d.ts.map +1 -1
  70. package/dist/core/VGroup.d.ts +11 -19
  71. package/dist/core/VGroup.d.ts.map +1 -1
  72. package/dist/core/VMobject.d.ts +48 -110
  73. package/dist/core/VMobject.d.ts.map +1 -1
  74. package/dist/core/VMobjectCurveUtils.d.ts +106 -0
  75. package/dist/core/VMobjectCurveUtils.d.ts.map +1 -0
  76. package/dist/core/VMobjectGeometry.d.ts +22 -25
  77. package/dist/core/VMobjectGeometry.d.ts.map +1 -1
  78. package/dist/core/VMobjectRendering.d.ts +5 -0
  79. package/dist/core/VMobjectRendering.d.ts.map +1 -1
  80. package/dist/core/VMobjectStrokeGeometry.d.ts +20 -0
  81. package/dist/core/VMobjectStrokeGeometry.d.ts.map +1 -0
  82. package/dist/core/VMobjectTransformAlignment.d.ts +20 -0
  83. package/dist/core/VMobjectTransformAlignment.d.ts.map +1 -0
  84. package/dist/html-Bza5WY1y.js +829 -0
  85. package/dist/html-bhzMuE8p.js +829 -0
  86. package/dist/index.d.ts +4 -3
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +2 -4
  89. package/dist/integrations/react.js +16 -18
  90. package/dist/integrations/vue.js +15 -17
  91. package/dist/interaction/Draggable.d.ts +2 -0
  92. package/dist/interaction/Draggable.d.ts.map +1 -1
  93. package/dist/interaction/OrbitControls.d.ts +1 -1
  94. package/dist/interaction/OrbitControls.d.ts.map +1 -1
  95. package/dist/lengths-D2zTYMUu.js +54 -0
  96. package/dist/liteAdaptor-BkxB5CGC.js +616 -0
  97. package/dist/liteAdaptor-LMKuWwg1.js +616 -0
  98. package/dist/manim-web.browser.js +35821 -30916
  99. package/dist/mathjax-CPQWkQEv.js +121 -0
  100. package/dist/mathjax-b-GTdZgw.js +121 -0
  101. package/dist/mo-D4wFHS6V.js +2675 -0
  102. package/dist/mo-hAX79Dzl.js +2675 -0
  103. package/dist/mobjects/geometry/AngleShapes.d.ts +0 -4
  104. package/dist/mobjects/geometry/AngleShapes.d.ts.map +1 -1
  105. package/dist/mobjects/geometry/BooleanOperations.d.ts +1 -1
  106. package/dist/mobjects/geometry/BooleanOperations.d.ts.map +1 -1
  107. package/dist/mobjects/geometry/CubicBezier.d.ts.map +1 -1
  108. package/dist/mobjects/geometry/PolygonExtensions.d.ts +1 -1
  109. package/dist/mobjects/geometry/PolygonExtensions.d.ts.map +1 -1
  110. package/dist/mobjects/graphing/ComplexPlane.d.ts +59 -1
  111. package/dist/mobjects/graphing/ComplexPlane.d.ts.map +1 -1
  112. package/dist/mobjects/graphing/Vector.d.ts.map +1 -1
  113. package/dist/mobjects/image/index.d.ts +9 -2
  114. package/dist/mobjects/image/index.d.ts.map +1 -1
  115. package/dist/mobjects/point/Mobject1D.d.ts.map +1 -1
  116. package/dist/mobjects/point/Mobject2D.d.ts.map +1 -1
  117. package/dist/mobjects/point/PMobject.d.ts +8 -2
  118. package/dist/mobjects/point/PMobject.d.ts.map +1 -1
  119. package/dist/mobjects/point/PointMobject.d.ts.map +1 -1
  120. package/dist/mobjects/text/Code.d.ts.map +1 -1
  121. package/dist/mobjects/text/MarkupText.d.ts.map +1 -1
  122. package/dist/mobjects/text/MathJaxRenderer.d.ts.map +1 -1
  123. package/dist/mobjects/text/MathTex.d.ts +9 -0
  124. package/dist/mobjects/text/MathTex.d.ts.map +1 -1
  125. package/dist/mobjects/text/MathTexImage.d.ts +9 -3
  126. package/dist/mobjects/text/MathTexImage.d.ts.map +1 -1
  127. package/dist/mobjects/text/Text.d.ts +8 -3
  128. package/dist/mobjects/text/Text.d.ts.map +1 -1
  129. package/dist/mobjects/text/TextGlyphGroup.d.ts.map +1 -1
  130. package/dist/mobjects/text/svgPathParser.d.ts.map +1 -1
  131. package/dist/mobjects/three-d/Line3D.d.ts +10 -56
  132. package/dist/mobjects/three-d/Line3D.d.ts.map +1 -1
  133. package/dist/mobjects/three-d/ThreeDAxes.d.ts +8 -0
  134. package/dist/mobjects/three-d/ThreeDAxes.d.ts.map +1 -1
  135. package/dist/player/Player.d.ts +36 -29
  136. package/dist/player/Player.d.ts.map +1 -1
  137. package/dist/player/PlayerUI.d.ts.map +1 -1
  138. package/dist/player/RecordingScene.d.ts +37 -0
  139. package/dist/player/RecordingScene.d.ts.map +1 -0
  140. package/dist/{src-Db7QTr4S.js → src-BlTk3Bta.js} +34386 -29482
  141. package/dist/svg-DNS5Hwhk.js +28713 -0
  142. package/dist/svg-DVUoAdmC.js +28713 -0
  143. package/dist/test-setup/vitest-setup.d.ts +20 -0
  144. package/dist/test-setup/vitest-setup.d.ts.map +1 -0
  145. package/dist/tex-BQCLd0dF.js +1427 -0
  146. package/dist/tex-Cd_bTYKG.js +1427 -0
  147. package/dist/utils/axis.d.ts +4 -0
  148. package/dist/utils/axis.d.ts.map +1 -0
  149. package/dist/utils/logger.d.ts +37 -0
  150. package/dist/utils/logger.d.ts.map +1 -1
  151. package/dist/utils/math.d.ts +11 -0
  152. package/dist/utils/math.d.ts.map +1 -1
  153. package/dist/utils/vectors.d.ts +54 -1
  154. package/dist/utils/vectors.d.ts.map +1 -1
  155. package/package.json +10 -8
  156. package/dist/AllPackages-B0GtkYjD.js +0 -7912
  157. package/dist/AllPackages-BIAELuhU.js +0 -7912
  158. package/dist/BaseConfiguration-CDf44lxS.js +0 -4402
  159. package/dist/BaseConfiguration-Chcqjv9L.js +0 -4402
  160. package/dist/Entities-B_gwJfrn.js +0 -458
  161. package/dist/Entities-CmJkmuw_.js +0 -458
  162. package/dist/GifExporter-C9lP34Iu.js +0 -338
  163. package/dist/GifExporter-DBak5Vk7.js +0 -338
  164. package/dist/InputJax-C5sGfjJ8.js +0 -43
  165. package/dist/InputJax-Jb4hSThK.js +0 -43
  166. package/dist/MathItem-BmK41eqe.js +0 -77
  167. package/dist/MathItem-C_mZyaeT.js +0 -77
  168. package/dist/Options-Ch1vGsgd.js +0 -188
  169. package/dist/Options-V6ag48Dv.js +0 -188
  170. package/dist/PrioritizedList-DkoCmqPk.js +0 -36
  171. package/dist/PrioritizedList-eKTii0tW.js +0 -36
  172. package/dist/Styles-De4BjKiV.js +0 -411
  173. package/dist/Styles-DgoiBrzf.js +0 -411
  174. package/dist/TeXAtom-DT2wCvcU.js +0 -2025
  175. package/dist/TeXAtom-JogI0lus.js +0 -2025
  176. package/dist/VideoExporter-Bdtz_pWv.js +0 -102
  177. package/dist/VideoExporter-Vjfsnv1h.js +0 -102
  178. package/dist/chunk-3e0lkp8x.js +0 -23
  179. package/dist/html-53__O8r2.js +0 -1587
  180. package/dist/html-DfHFh5II.js +0 -1587
  181. package/dist/lengths-3epoqRj7.js +0 -65
  182. package/dist/lengths-B-bX9Tfk.js +0 -65
  183. package/dist/liteAdaptor-BxFvlO-q.js +0 -828
  184. package/dist/liteAdaptor-CsOIKw2g.js +0 -828
  185. package/dist/mathjax-Bkrmftxh.js +0 -102
  186. package/dist/mathjax-DBrTNl9C.js +0 -102
  187. package/dist/mo-AzagC5AD.js +0 -3271
  188. package/dist/mo-I_6dyJsk.js +0 -3271
  189. package/dist/svg-CoGQ_sAt.js +0 -23880
  190. package/dist/svg-DiIG93Lr.js +0 -23880
  191. package/dist/tex-ChPKMfdv.js +0 -401
  192. package/dist/tex-hYZcjadW.js +0 -401
@@ -1,338 +0,0 @@
1
- import { i as e, n as t, r as n, t as r } from "./chunk-3e0lkp8x.js";
2
- //#region node_modules/gif.js/dist/gif.js
3
- var i = /* @__PURE__ */ r(((e, t) => {
4
- (function(n) {
5
- if (typeof e == "object" && t !== void 0) t.exports = n();
6
- else if (typeof define == "function" && define.amd) define([], n);
7
- else {
8
- var r = typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : this;
9
- r.GIF = n();
10
- }
11
- })(function() {
12
- return function e(t, r, i) {
13
- function a(s, c) {
14
- if (!r[s]) {
15
- if (!t[s]) {
16
- var l = typeof n == "function" && n;
17
- if (!c && l) return l(s, !0);
18
- if (o) return o(s, !0);
19
- var u = /* @__PURE__ */ Error("Cannot find module '" + s + "'");
20
- throw u.code = "MODULE_NOT_FOUND", u;
21
- }
22
- var d = r[s] = { exports: {} };
23
- t[s][0].call(d.exports, function(e) {
24
- var n = t[s][1][e];
25
- return a(n || e);
26
- }, d, d.exports, e, t, r, i);
27
- }
28
- return r[s].exports;
29
- }
30
- for (var o = typeof n == "function" && n, s = 0; s < i.length; s++) a(i[s]);
31
- return a;
32
- }({
33
- 1: [function(e, t, n) {
34
- function r() {
35
- this._events = this._events || {}, this._maxListeners = this._maxListeners || void 0;
36
- }
37
- t.exports = r, r.EventEmitter = r, r.prototype._events = void 0, r.prototype._maxListeners = void 0, r.defaultMaxListeners = 10, r.prototype.setMaxListeners = function(e) {
38
- if (!a(e) || e < 0 || isNaN(e)) throw TypeError("n must be a positive number");
39
- return this._maxListeners = e, this;
40
- }, r.prototype.emit = function(e) {
41
- var t, n, r, a, c, l;
42
- if (this._events ||= {}, e === "error" && (!this._events.error || o(this._events.error) && !this._events.error.length)) {
43
- if (t = arguments[1], t instanceof Error) throw t;
44
- var u = /* @__PURE__ */ Error("Uncaught, unspecified \"error\" event. (" + t + ")");
45
- throw u.context = t, u;
46
- }
47
- if (n = this._events[e], s(n)) return !1;
48
- if (i(n)) switch (arguments.length) {
49
- case 1:
50
- n.call(this);
51
- break;
52
- case 2:
53
- n.call(this, arguments[1]);
54
- break;
55
- case 3:
56
- n.call(this, arguments[1], arguments[2]);
57
- break;
58
- default: a = Array.prototype.slice.call(arguments, 1), n.apply(this, a);
59
- }
60
- else if (o(n)) for (a = Array.prototype.slice.call(arguments, 1), l = n.slice(), r = l.length, c = 0; c < r; c++) l[c].apply(this, a);
61
- return !0;
62
- }, r.prototype.addListener = function(e, t) {
63
- var n;
64
- if (!i(t)) throw TypeError("listener must be a function");
65
- return this._events ||= {}, this._events.newListener && this.emit("newListener", e, i(t.listener) ? t.listener : t), this._events[e] ? o(this._events[e]) ? this._events[e].push(t) : this._events[e] = [this._events[e], t] : this._events[e] = t, o(this._events[e]) && !this._events[e].warned && (n = s(this._maxListeners) ? r.defaultMaxListeners : this._maxListeners, n && n > 0 && this._events[e].length > n && (this._events[e].warned = !0, console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", this._events[e].length), typeof console.trace == "function" && console.trace())), this;
66
- }, r.prototype.on = r.prototype.addListener, r.prototype.once = function(e, t) {
67
- if (!i(t)) throw TypeError("listener must be a function");
68
- var n = !1;
69
- function r() {
70
- this.removeListener(e, r), n || (n = !0, t.apply(this, arguments));
71
- }
72
- return r.listener = t, this.on(e, r), this;
73
- }, r.prototype.removeListener = function(e, t) {
74
- var n, r, a, s;
75
- if (!i(t)) throw TypeError("listener must be a function");
76
- if (!this._events || !this._events[e]) return this;
77
- if (n = this._events[e], a = n.length, r = -1, n === t || i(n.listener) && n.listener === t) delete this._events[e], this._events.removeListener && this.emit("removeListener", e, t);
78
- else if (o(n)) {
79
- for (s = a; s-- > 0;) if (n[s] === t || n[s].listener && n[s].listener === t) {
80
- r = s;
81
- break;
82
- }
83
- if (r < 0) return this;
84
- n.length === 1 ? (n.length = 0, delete this._events[e]) : n.splice(r, 1), this._events.removeListener && this.emit("removeListener", e, t);
85
- }
86
- return this;
87
- }, r.prototype.removeAllListeners = function(e) {
88
- var t, n;
89
- if (!this._events) return this;
90
- if (!this._events.removeListener) return arguments.length === 0 ? this._events = {} : this._events[e] && delete this._events[e], this;
91
- if (arguments.length === 0) {
92
- for (t in this._events) t !== "removeListener" && this.removeAllListeners(t);
93
- return this.removeAllListeners("removeListener"), this._events = {}, this;
94
- }
95
- if (n = this._events[e], i(n)) this.removeListener(e, n);
96
- else if (n) for (; n.length;) this.removeListener(e, n[n.length - 1]);
97
- return delete this._events[e], this;
98
- }, r.prototype.listeners = function(e) {
99
- return !this._events || !this._events[e] ? [] : i(this._events[e]) ? [this._events[e]] : this._events[e].slice();
100
- }, r.prototype.listenerCount = function(e) {
101
- if (this._events) {
102
- var t = this._events[e];
103
- if (i(t)) return 1;
104
- if (t) return t.length;
105
- }
106
- return 0;
107
- }, r.listenerCount = function(e, t) {
108
- return e.listenerCount(t);
109
- };
110
- function i(e) {
111
- return typeof e == "function";
112
- }
113
- function a(e) {
114
- return typeof e == "number";
115
- }
116
- function o(e) {
117
- return typeof e == "object" && !!e;
118
- }
119
- function s(e) {
120
- return e === void 0;
121
- }
122
- }, {}],
123
- 2: [function(e, t, n) {
124
- var r, i, a, o, s = navigator.userAgent.toLowerCase();
125
- o = navigator.platform.toLowerCase(), r = s.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/) || [
126
- null,
127
- "unknown",
128
- 0
129
- ], a = r[1] === "ie" && document.documentMode, i = {
130
- name: r[1] === "version" ? r[3] : r[1],
131
- version: a || parseFloat(r[1] === "opera" && r[4] ? r[4] : r[2]),
132
- platform: { name: s.match(/ip(?:ad|od|hone)/) ? "ios" : (s.match(/(?:webos|android)/) || o.match(/mac|win|linux/) || ["other"])[0] }
133
- }, i[i.name] = !0, i[i.name + parseInt(i.version, 10)] = !0, i.platform[i.platform.name] = !0, t.exports = i;
134
- }, {}],
135
- 3: [function(e, t, n) {
136
- var r, i, a, o = function(e, t) {
137
- for (var n in t) s.call(t, n) && (e[n] = t[n]);
138
- function r() {
139
- this.constructor = e;
140
- }
141
- return r.prototype = t.prototype, e.prototype = new r(), e.__super__ = t.prototype, e;
142
- }, s = {}.hasOwnProperty, c = [].indexOf || function(e) {
143
- for (var t = 0, n = this.length; t < n; t++) if (t in this && this[t] === e) return t;
144
- return -1;
145
- }, l = [].slice;
146
- r = e("events").EventEmitter, a = e("./browser.coffee"), i = function(e) {
147
- var t, n;
148
- o(r, e), t = {
149
- workerScript: "gif.worker.js",
150
- workers: 2,
151
- repeat: 0,
152
- background: "#fff",
153
- quality: 10,
154
- width: null,
155
- height: null,
156
- transparent: null,
157
- debug: !1,
158
- dither: !1
159
- }, n = {
160
- delay: 500,
161
- copy: !1
162
- };
163
- function r(e) {
164
- var n, r, i;
165
- for (r in this.running = !1, this.options = {}, this.frames = [], this.freeWorkers = [], this.activeWorkers = [], this.setOptions(e), t) i = t[r], (n = this.options)[r] ?? (n[r] = i);
166
- }
167
- return r.prototype.setOption = function(e, t) {
168
- if (this.options[e] = t, this._canvas != null && (e === "width" || e === "height")) return this._canvas[e] = t;
169
- }, r.prototype.setOptions = function(e) {
170
- var t, n = [], r;
171
- for (t in e) s.call(e, t) && (r = e[t], n.push(this.setOption(t, r)));
172
- return n;
173
- }, r.prototype.addFrame = function(e, t) {
174
- var r, i;
175
- for (i in t ??= {}, r = {}, r.transparent = this.options.transparent, n) r[i] = t[i] || n[i];
176
- if (this.options.width ?? this.setOption("width", e.width), this.options.height ?? this.setOption("height", e.height), typeof ImageData < "u" && ImageData !== null && e instanceof ImageData) r.data = e.data;
177
- else if (typeof CanvasRenderingContext2D < "u" && CanvasRenderingContext2D !== null && e instanceof CanvasRenderingContext2D || typeof WebGLRenderingContext < "u" && WebGLRenderingContext !== null && e instanceof WebGLRenderingContext) t.copy ? r.data = this.getContextData(e) : r.context = e;
178
- else if (e.childNodes != null) t.copy ? r.data = this.getImageData(e) : r.image = e;
179
- else throw Error("Invalid image");
180
- return this.frames.push(r);
181
- }, r.prototype.render = function() {
182
- var e, t, n;
183
- if (this.running) throw Error("Already running");
184
- if (this.options.width == null || this.options.height == null) throw Error("Width and height must be set prior to rendering");
185
- if (this.running = !0, this.nextFrame = 0, this.finishedFrames = 0, this.imageParts = function() {
186
- var e, t, n = [];
187
- for (e = 0, t = this.frames.length; 0 <= t ? e < t : e > t; 0 <= t ? ++e : --e) n.push(null);
188
- return n;
189
- }.call(this), t = this.spawnWorkers(), this.options.globalPalette === !0) this.renderNextFrame();
190
- else for (e = 0, n = t; 0 <= n ? e < n : e > n; 0 <= n ? ++e : --e) this.renderNextFrame();
191
- return this.emit("start"), this.emit("progress", 0);
192
- }, r.prototype.abort = function() {
193
- for (var e; e = this.activeWorkers.shift(), e != null;) this.log("killing active worker"), e.terminate();
194
- return this.running = !1, this.emit("abort");
195
- }, r.prototype.spawnWorkers = function() {
196
- var e = Math.min(this.options.workers, this.frames.length), t, n;
197
- return (function() {
198
- n = [];
199
- for (var r = t = this.freeWorkers.length; t <= e ? r < e : r > e; t <= e ? r++ : r--) n.push(r);
200
- return n;
201
- }).apply(this).forEach(function(e) {
202
- return function(t) {
203
- var n;
204
- return e.log("spawning worker " + t), n = new Worker(e.options.workerScript), n.onmessage = function(t) {
205
- return e.activeWorkers.splice(e.activeWorkers.indexOf(n), 1), e.freeWorkers.push(n), e.frameFinished(t.data);
206
- }, e.freeWorkers.push(n);
207
- };
208
- }(this)), e;
209
- }, r.prototype.frameFinished = function(e) {
210
- var t, n;
211
- if (this.log("frame " + e.index + " finished - " + this.activeWorkers.length + " active"), this.finishedFrames++, this.emit("progress", this.finishedFrames / this.frames.length), this.imageParts[e.index] = e, this.options.globalPalette === !0 && (this.options.globalPalette = e.globalPalette, this.log("global palette analyzed"), this.frames.length > 2)) for (t = 1, n = this.freeWorkers.length; 1 <= n ? t < n : t > n; 1 <= n ? ++t : --t) this.renderNextFrame();
212
- return c.call(this.imageParts, null) >= 0 ? this.renderNextFrame() : this.finishRendering();
213
- }, r.prototype.finishRendering = function() {
214
- var e, t, n, r, i, a, o, s = 0, c, l, u, d, f, p = this.imageParts, m, h;
215
- for (i = 0, c = p.length; i < c; i++) t = p[i], s += (t.data.length - 1) * t.pageSize + t.cursor;
216
- for (s += t.pageSize - t.cursor, this.log("rendering finished - filesize " + Math.round(s / 1e3) + "kb"), e = new Uint8Array(s), d = 0, m = this.imageParts, a = 0, l = m.length; a < l; a++) for (t = m[a], h = t.data, n = o = 0, u = h.length; o < u; n = ++o) f = h[n], e.set(f, d), n === t.data.length - 1 ? d += t.cursor : d += t.pageSize;
217
- return r = new Blob([e], { type: "image/gif" }), this.emit("finished", r, e);
218
- }, r.prototype.renderNextFrame = function() {
219
- var e, t, n;
220
- if (this.freeWorkers.length === 0) throw Error("No free workers");
221
- if (!(this.nextFrame >= this.frames.length)) return e = this.frames[this.nextFrame++], n = this.freeWorkers.shift(), t = this.getTask(e), this.log("starting frame " + (t.index + 1) + " of " + this.frames.length), this.activeWorkers.push(n), n.postMessage(t);
222
- }, r.prototype.getContextData = function(e) {
223
- return e.getImageData(0, 0, this.options.width, this.options.height).data;
224
- }, r.prototype.getImageData = function(e) {
225
- var t;
226
- return this._canvas ?? (this._canvas = document.createElement("canvas"), this._canvas.width = this.options.width, this._canvas.height = this.options.height), t = this._canvas.getContext("2d"), t.setFill = this.options.background, t.fillRect(0, 0, this.options.width, this.options.height), t.drawImage(e, 0, 0), this.getContextData(t);
227
- }, r.prototype.getTask = function(e) {
228
- var t = this.frames.indexOf(e), n = {
229
- index: t,
230
- last: t === this.frames.length - 1,
231
- delay: e.delay,
232
- transparent: e.transparent,
233
- width: this.options.width,
234
- height: this.options.height,
235
- quality: this.options.quality,
236
- dither: this.options.dither,
237
- globalPalette: this.options.globalPalette,
238
- repeat: this.options.repeat,
239
- canTransfer: a.name === "chrome"
240
- };
241
- if (e.data != null) n.data = e.data;
242
- else if (e.context != null) n.data = this.getContextData(e.context);
243
- else if (e.image != null) n.data = this.getImageData(e.image);
244
- else throw Error("Invalid frame");
245
- return n;
246
- }, r.prototype.log = function() {
247
- var e = 1 <= arguments.length ? l.call(arguments, 0) : [];
248
- if (this.options.debug) return console.log.apply(console, e);
249
- }, r;
250
- }(r), t.exports = i;
251
- }, {
252
- "./browser.coffee": 2,
253
- events: 1
254
- }]
255
- }, {}, [3])(3);
256
- });
257
- })), a = /* @__PURE__ */ t({
258
- GifExporter: () => s,
259
- createGifExporter: () => c
260
- }), o = /* @__PURE__ */ e(i(), 1), s = class e {
261
- _scene;
262
- _options;
263
- constructor(e, t) {
264
- this._scene = e, this._options = {
265
- fps: t?.fps ?? 30,
266
- quality: t?.quality ?? 10,
267
- width: t?.width ?? e.renderer.width,
268
- height: t?.height ?? e.renderer.height,
269
- duration: t?.duration ?? 0,
270
- workers: t?.workers ?? 4,
271
- repeat: t?.repeat ?? 0,
272
- onProgress: t?.onProgress ?? (() => {})
273
- };
274
- }
275
- async exportTimeline(e) {
276
- let t = (e || this._options.duration || this._getTimelineDuration()) ?? 5, n = Math.ceil(t * this._options.fps), r = Math.round(1e3 / this._options.fps), i = await this._createWorkerBlobUrl(), a = new o.default({
277
- workers: this._options.workers,
278
- quality: this._options.quality,
279
- width: this._options.width,
280
- height: this._options.height,
281
- repeat: this._options.repeat,
282
- workerScript: i
283
- }), s = this._scene.getCanvas(), c = document.createElement("canvas");
284
- c.width = this._options.width, c.height = this._options.height;
285
- let l = c.getContext("2d");
286
- for (let e = 0; e < n; e++) {
287
- let t = e / this._options.fps;
288
- this._scene.seek(t), l.clearRect(0, 0, c.width, c.height), l.drawImage(s, 0, 0, c.width, c.height);
289
- let i = l.getImageData(0, 0, c.width, c.height);
290
- a.addFrame(i, { delay: r }), this._options.onProgress(e / n * .5);
291
- }
292
- return new Promise((e, t) => {
293
- let n = setTimeout(() => {
294
- a.abort(), URL.revokeObjectURL(i), t(/* @__PURE__ */ Error("GIF encoding timed out after 60 seconds"));
295
- }, 6e4);
296
- a.on("progress", (e) => {
297
- this._options.onProgress(.5 + e * .5);
298
- }), a.on("finished", (t) => {
299
- clearTimeout(n), URL.revokeObjectURL(i), e(t);
300
- }), a.on("abort", () => {
301
- clearTimeout(n), URL.revokeObjectURL(i), t(/* @__PURE__ */ Error("GIF encoding was aborted"));
302
- });
303
- try {
304
- a.render();
305
- } catch (e) {
306
- clearTimeout(n), URL.revokeObjectURL(i), t(e);
307
- }
308
- });
309
- }
310
- _getTimelineDuration() {
311
- let e = this._scene.timeline;
312
- return e ? e.getDuration() : null;
313
- }
314
- async _createWorkerBlobUrl() {
315
- let e = await fetch("/node_modules/gif.js/dist/gif.worker.js");
316
- if (!e.ok) {
317
- let e = await fetch("https://cdn.jsdelivr.net/npm/gif.js@0.2.0/dist/gif.worker.js");
318
- if (!e.ok) throw Error("Failed to load gif.js worker script");
319
- let t = await e.text();
320
- return URL.createObjectURL(new Blob([t], { type: "application/javascript" }));
321
- }
322
- let t = await e.text();
323
- return URL.createObjectURL(new Blob([t], { type: "application/javascript" }));
324
- }
325
- static download(e, t = "animation.gif") {
326
- let n = URL.createObjectURL(e), r = document.createElement("a");
327
- r.href = n, r.download = t, document.body.appendChild(r), r.click(), document.body.removeChild(r), URL.revokeObjectURL(n);
328
- }
329
- async exportAndDownload(t = "animation.gif", n) {
330
- let r = await this.exportTimeline(n);
331
- e.download(r, t);
332
- }
333
- };
334
- function c(e, t) {
335
- return new s(e, t);
336
- }
337
- //#endregion
338
- export { a as n, c as r, s as t };
@@ -1,338 +0,0 @@
1
- import { i as e, n as t, r as n, t as r } from "./chunk-3e0lkp8x.js";
2
- //#region node_modules/gif.js/dist/gif.js
3
- var i = /* @__PURE__ */ r(((e, t) => {
4
- (function(n) {
5
- if (typeof e == "object" && t !== void 0) t.exports = n();
6
- else if (typeof define == "function" && define.amd) define([], n);
7
- else {
8
- var r = typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : this;
9
- r.GIF = n();
10
- }
11
- })(function() {
12
- return function e(t, r, i) {
13
- function a(s, c) {
14
- if (!r[s]) {
15
- if (!t[s]) {
16
- var l = typeof n == "function" && n;
17
- if (!c && l) return l(s, !0);
18
- if (o) return o(s, !0);
19
- var u = /* @__PURE__ */ Error("Cannot find module '" + s + "'");
20
- throw u.code = "MODULE_NOT_FOUND", u;
21
- }
22
- var d = r[s] = { exports: {} };
23
- t[s][0].call(d.exports, function(e) {
24
- var n = t[s][1][e];
25
- return a(n || e);
26
- }, d, d.exports, e, t, r, i);
27
- }
28
- return r[s].exports;
29
- }
30
- for (var o = typeof n == "function" && n, s = 0; s < i.length; s++) a(i[s]);
31
- return a;
32
- }({
33
- 1: [function(e, t, n) {
34
- function r() {
35
- this._events = this._events || {}, this._maxListeners = this._maxListeners || void 0;
36
- }
37
- t.exports = r, r.EventEmitter = r, r.prototype._events = void 0, r.prototype._maxListeners = void 0, r.defaultMaxListeners = 10, r.prototype.setMaxListeners = function(e) {
38
- if (!a(e) || e < 0 || isNaN(e)) throw TypeError("n must be a positive number");
39
- return this._maxListeners = e, this;
40
- }, r.prototype.emit = function(e) {
41
- var t, n, r, a, c, l;
42
- if (this._events ||= {}, e === "error" && (!this._events.error || o(this._events.error) && !this._events.error.length)) {
43
- if (t = arguments[1], t instanceof Error) throw t;
44
- var u = /* @__PURE__ */ Error("Uncaught, unspecified \"error\" event. (" + t + ")");
45
- throw u.context = t, u;
46
- }
47
- if (n = this._events[e], s(n)) return !1;
48
- if (i(n)) switch (arguments.length) {
49
- case 1:
50
- n.call(this);
51
- break;
52
- case 2:
53
- n.call(this, arguments[1]);
54
- break;
55
- case 3:
56
- n.call(this, arguments[1], arguments[2]);
57
- break;
58
- default: a = Array.prototype.slice.call(arguments, 1), n.apply(this, a);
59
- }
60
- else if (o(n)) for (a = Array.prototype.slice.call(arguments, 1), l = n.slice(), r = l.length, c = 0; c < r; c++) l[c].apply(this, a);
61
- return !0;
62
- }, r.prototype.addListener = function(e, t) {
63
- var n;
64
- if (!i(t)) throw TypeError("listener must be a function");
65
- return this._events ||= {}, this._events.newListener && this.emit("newListener", e, i(t.listener) ? t.listener : t), this._events[e] ? o(this._events[e]) ? this._events[e].push(t) : this._events[e] = [this._events[e], t] : this._events[e] = t, o(this._events[e]) && !this._events[e].warned && (n = s(this._maxListeners) ? r.defaultMaxListeners : this._maxListeners, n && n > 0 && this._events[e].length > n && (this._events[e].warned = !0, console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", this._events[e].length), typeof console.trace == "function" && console.trace())), this;
66
- }, r.prototype.on = r.prototype.addListener, r.prototype.once = function(e, t) {
67
- if (!i(t)) throw TypeError("listener must be a function");
68
- var n = !1;
69
- function r() {
70
- this.removeListener(e, r), n || (n = !0, t.apply(this, arguments));
71
- }
72
- return r.listener = t, this.on(e, r), this;
73
- }, r.prototype.removeListener = function(e, t) {
74
- var n, r, a, s;
75
- if (!i(t)) throw TypeError("listener must be a function");
76
- if (!this._events || !this._events[e]) return this;
77
- if (n = this._events[e], a = n.length, r = -1, n === t || i(n.listener) && n.listener === t) delete this._events[e], this._events.removeListener && this.emit("removeListener", e, t);
78
- else if (o(n)) {
79
- for (s = a; s-- > 0;) if (n[s] === t || n[s].listener && n[s].listener === t) {
80
- r = s;
81
- break;
82
- }
83
- if (r < 0) return this;
84
- n.length === 1 ? (n.length = 0, delete this._events[e]) : n.splice(r, 1), this._events.removeListener && this.emit("removeListener", e, t);
85
- }
86
- return this;
87
- }, r.prototype.removeAllListeners = function(e) {
88
- var t, n;
89
- if (!this._events) return this;
90
- if (!this._events.removeListener) return arguments.length === 0 ? this._events = {} : this._events[e] && delete this._events[e], this;
91
- if (arguments.length === 0) {
92
- for (t in this._events) t !== "removeListener" && this.removeAllListeners(t);
93
- return this.removeAllListeners("removeListener"), this._events = {}, this;
94
- }
95
- if (n = this._events[e], i(n)) this.removeListener(e, n);
96
- else if (n) for (; n.length;) this.removeListener(e, n[n.length - 1]);
97
- return delete this._events[e], this;
98
- }, r.prototype.listeners = function(e) {
99
- return !this._events || !this._events[e] ? [] : i(this._events[e]) ? [this._events[e]] : this._events[e].slice();
100
- }, r.prototype.listenerCount = function(e) {
101
- if (this._events) {
102
- var t = this._events[e];
103
- if (i(t)) return 1;
104
- if (t) return t.length;
105
- }
106
- return 0;
107
- }, r.listenerCount = function(e, t) {
108
- return e.listenerCount(t);
109
- };
110
- function i(e) {
111
- return typeof e == "function";
112
- }
113
- function a(e) {
114
- return typeof e == "number";
115
- }
116
- function o(e) {
117
- return typeof e == "object" && !!e;
118
- }
119
- function s(e) {
120
- return e === void 0;
121
- }
122
- }, {}],
123
- 2: [function(e, t, n) {
124
- var r, i, a, o, s = navigator.userAgent.toLowerCase();
125
- o = navigator.platform.toLowerCase(), r = s.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/) || [
126
- null,
127
- "unknown",
128
- 0
129
- ], a = r[1] === "ie" && document.documentMode, i = {
130
- name: r[1] === "version" ? r[3] : r[1],
131
- version: a || parseFloat(r[1] === "opera" && r[4] ? r[4] : r[2]),
132
- platform: { name: s.match(/ip(?:ad|od|hone)/) ? "ios" : (s.match(/(?:webos|android)/) || o.match(/mac|win|linux/) || ["other"])[0] }
133
- }, i[i.name] = !0, i[i.name + parseInt(i.version, 10)] = !0, i.platform[i.platform.name] = !0, t.exports = i;
134
- }, {}],
135
- 3: [function(e, t, n) {
136
- var r, i, a, o = function(e, t) {
137
- for (var n in t) s.call(t, n) && (e[n] = t[n]);
138
- function r() {
139
- this.constructor = e;
140
- }
141
- return r.prototype = t.prototype, e.prototype = new r(), e.__super__ = t.prototype, e;
142
- }, s = {}.hasOwnProperty, c = [].indexOf || function(e) {
143
- for (var t = 0, n = this.length; t < n; t++) if (t in this && this[t] === e) return t;
144
- return -1;
145
- }, l = [].slice;
146
- r = e("events").EventEmitter, a = e("./browser.coffee"), i = function(e) {
147
- var t, n;
148
- o(r, e), t = {
149
- workerScript: "gif.worker.js",
150
- workers: 2,
151
- repeat: 0,
152
- background: "#fff",
153
- quality: 10,
154
- width: null,
155
- height: null,
156
- transparent: null,
157
- debug: !1,
158
- dither: !1
159
- }, n = {
160
- delay: 500,
161
- copy: !1
162
- };
163
- function r(e) {
164
- var n, r, i;
165
- for (r in this.running = !1, this.options = {}, this.frames = [], this.freeWorkers = [], this.activeWorkers = [], this.setOptions(e), t) i = t[r], (n = this.options)[r] ?? (n[r] = i);
166
- }
167
- return r.prototype.setOption = function(e, t) {
168
- if (this.options[e] = t, this._canvas != null && (e === "width" || e === "height")) return this._canvas[e] = t;
169
- }, r.prototype.setOptions = function(e) {
170
- var t, n = [], r;
171
- for (t in e) s.call(e, t) && (r = e[t], n.push(this.setOption(t, r)));
172
- return n;
173
- }, r.prototype.addFrame = function(e, t) {
174
- var r, i;
175
- for (i in t ??= {}, r = {}, r.transparent = this.options.transparent, n) r[i] = t[i] || n[i];
176
- if (this.options.width ?? this.setOption("width", e.width), this.options.height ?? this.setOption("height", e.height), typeof ImageData < "u" && ImageData !== null && e instanceof ImageData) r.data = e.data;
177
- else if (typeof CanvasRenderingContext2D < "u" && CanvasRenderingContext2D !== null && e instanceof CanvasRenderingContext2D || typeof WebGLRenderingContext < "u" && WebGLRenderingContext !== null && e instanceof WebGLRenderingContext) t.copy ? r.data = this.getContextData(e) : r.context = e;
178
- else if (e.childNodes != null) t.copy ? r.data = this.getImageData(e) : r.image = e;
179
- else throw Error("Invalid image");
180
- return this.frames.push(r);
181
- }, r.prototype.render = function() {
182
- var e, t, n;
183
- if (this.running) throw Error("Already running");
184
- if (this.options.width == null || this.options.height == null) throw Error("Width and height must be set prior to rendering");
185
- if (this.running = !0, this.nextFrame = 0, this.finishedFrames = 0, this.imageParts = function() {
186
- var e, t, n = [];
187
- for (e = 0, t = this.frames.length; 0 <= t ? e < t : e > t; 0 <= t ? ++e : --e) n.push(null);
188
- return n;
189
- }.call(this), t = this.spawnWorkers(), this.options.globalPalette === !0) this.renderNextFrame();
190
- else for (e = 0, n = t; 0 <= n ? e < n : e > n; 0 <= n ? ++e : --e) this.renderNextFrame();
191
- return this.emit("start"), this.emit("progress", 0);
192
- }, r.prototype.abort = function() {
193
- for (var e; e = this.activeWorkers.shift(), e != null;) this.log("killing active worker"), e.terminate();
194
- return this.running = !1, this.emit("abort");
195
- }, r.prototype.spawnWorkers = function() {
196
- var e = Math.min(this.options.workers, this.frames.length), t, n;
197
- return (function() {
198
- n = [];
199
- for (var r = t = this.freeWorkers.length; t <= e ? r < e : r > e; t <= e ? r++ : r--) n.push(r);
200
- return n;
201
- }).apply(this).forEach(function(e) {
202
- return function(t) {
203
- var n;
204
- return e.log("spawning worker " + t), n = new Worker(e.options.workerScript), n.onmessage = function(t) {
205
- return e.activeWorkers.splice(e.activeWorkers.indexOf(n), 1), e.freeWorkers.push(n), e.frameFinished(t.data);
206
- }, e.freeWorkers.push(n);
207
- };
208
- }(this)), e;
209
- }, r.prototype.frameFinished = function(e) {
210
- var t, n;
211
- if (this.log("frame " + e.index + " finished - " + this.activeWorkers.length + " active"), this.finishedFrames++, this.emit("progress", this.finishedFrames / this.frames.length), this.imageParts[e.index] = e, this.options.globalPalette === !0 && (this.options.globalPalette = e.globalPalette, this.log("global palette analyzed"), this.frames.length > 2)) for (t = 1, n = this.freeWorkers.length; 1 <= n ? t < n : t > n; 1 <= n ? ++t : --t) this.renderNextFrame();
212
- return c.call(this.imageParts, null) >= 0 ? this.renderNextFrame() : this.finishRendering();
213
- }, r.prototype.finishRendering = function() {
214
- var e, t, n, r, i, a, o, s = 0, c, l, u, d, f, p = this.imageParts, m, h;
215
- for (i = 0, c = p.length; i < c; i++) t = p[i], s += (t.data.length - 1) * t.pageSize + t.cursor;
216
- for (s += t.pageSize - t.cursor, this.log("rendering finished - filesize " + Math.round(s / 1e3) + "kb"), e = new Uint8Array(s), d = 0, m = this.imageParts, a = 0, l = m.length; a < l; a++) for (t = m[a], h = t.data, n = o = 0, u = h.length; o < u; n = ++o) f = h[n], e.set(f, d), n === t.data.length - 1 ? d += t.cursor : d += t.pageSize;
217
- return r = new Blob([e], { type: "image/gif" }), this.emit("finished", r, e);
218
- }, r.prototype.renderNextFrame = function() {
219
- var e, t, n;
220
- if (this.freeWorkers.length === 0) throw Error("No free workers");
221
- if (!(this.nextFrame >= this.frames.length)) return e = this.frames[this.nextFrame++], n = this.freeWorkers.shift(), t = this.getTask(e), this.log("starting frame " + (t.index + 1) + " of " + this.frames.length), this.activeWorkers.push(n), n.postMessage(t);
222
- }, r.prototype.getContextData = function(e) {
223
- return e.getImageData(0, 0, this.options.width, this.options.height).data;
224
- }, r.prototype.getImageData = function(e) {
225
- var t;
226
- return this._canvas ?? (this._canvas = document.createElement("canvas"), this._canvas.width = this.options.width, this._canvas.height = this.options.height), t = this._canvas.getContext("2d"), t.setFill = this.options.background, t.fillRect(0, 0, this.options.width, this.options.height), t.drawImage(e, 0, 0), this.getContextData(t);
227
- }, r.prototype.getTask = function(e) {
228
- var t = this.frames.indexOf(e), n = {
229
- index: t,
230
- last: t === this.frames.length - 1,
231
- delay: e.delay,
232
- transparent: e.transparent,
233
- width: this.options.width,
234
- height: this.options.height,
235
- quality: this.options.quality,
236
- dither: this.options.dither,
237
- globalPalette: this.options.globalPalette,
238
- repeat: this.options.repeat,
239
- canTransfer: a.name === "chrome"
240
- };
241
- if (e.data != null) n.data = e.data;
242
- else if (e.context != null) n.data = this.getContextData(e.context);
243
- else if (e.image != null) n.data = this.getImageData(e.image);
244
- else throw Error("Invalid frame");
245
- return n;
246
- }, r.prototype.log = function() {
247
- var e = 1 <= arguments.length ? l.call(arguments, 0) : [];
248
- if (this.options.debug) return console.log.apply(console, e);
249
- }, r;
250
- }(r), t.exports = i;
251
- }, {
252
- "./browser.coffee": 2,
253
- events: 1
254
- }]
255
- }, {}, [3])(3);
256
- });
257
- })), a = /* @__PURE__ */ t({
258
- GifExporter: () => s,
259
- createGifExporter: () => c
260
- }), o = /* @__PURE__ */ e(i(), 1), s = class e {
261
- _scene;
262
- _options;
263
- constructor(e, t) {
264
- this._scene = e, this._options = {
265
- fps: t?.fps ?? 30,
266
- quality: t?.quality ?? 10,
267
- width: t?.width ?? e.renderer.width,
268
- height: t?.height ?? e.renderer.height,
269
- duration: t?.duration ?? 0,
270
- workers: t?.workers ?? 4,
271
- repeat: t?.repeat ?? 0,
272
- onProgress: t?.onProgress ?? (() => {})
273
- };
274
- }
275
- async exportTimeline(e) {
276
- let t = (e || this._options.duration || this._getTimelineDuration()) ?? 5, n = Math.ceil(t * this._options.fps), r = Math.round(1e3 / this._options.fps), i = await this._createWorkerBlobUrl(), a = new o.default({
277
- workers: this._options.workers,
278
- quality: this._options.quality,
279
- width: this._options.width,
280
- height: this._options.height,
281
- repeat: this._options.repeat,
282
- workerScript: i
283
- }), s = this._scene.getCanvas(), c = document.createElement("canvas");
284
- c.width = this._options.width, c.height = this._options.height;
285
- let l = c.getContext("2d");
286
- for (let e = 0; e < n; e++) {
287
- let t = e / this._options.fps;
288
- this._scene.seek(t), l.clearRect(0, 0, c.width, c.height), l.drawImage(s, 0, 0, c.width, c.height);
289
- let i = l.getImageData(0, 0, c.width, c.height);
290
- a.addFrame(i, { delay: r }), this._options.onProgress(e / n * .5);
291
- }
292
- return new Promise((e, t) => {
293
- let n = setTimeout(() => {
294
- a.abort(), URL.revokeObjectURL(i), t(/* @__PURE__ */ Error("GIF encoding timed out after 60 seconds"));
295
- }, 6e4);
296
- a.on("progress", (e) => {
297
- this._options.onProgress(.5 + e * .5);
298
- }), a.on("finished", (t) => {
299
- clearTimeout(n), URL.revokeObjectURL(i), e(t);
300
- }), a.on("abort", () => {
301
- clearTimeout(n), URL.revokeObjectURL(i), t(/* @__PURE__ */ Error("GIF encoding was aborted"));
302
- });
303
- try {
304
- a.render();
305
- } catch (e) {
306
- clearTimeout(n), URL.revokeObjectURL(i), t(e);
307
- }
308
- });
309
- }
310
- _getTimelineDuration() {
311
- let e = this._scene.timeline;
312
- return e ? e.getDuration() : null;
313
- }
314
- async _createWorkerBlobUrl() {
315
- let e = await fetch("/node_modules/gif.js/dist/gif.worker.js");
316
- if (!e.ok) {
317
- let e = await fetch("https://cdn.jsdelivr.net/npm/gif.js@0.2.0/dist/gif.worker.js");
318
- if (!e.ok) throw Error("Failed to load gif.js worker script");
319
- let t = await e.text();
320
- return URL.createObjectURL(new Blob([t], { type: "application/javascript" }));
321
- }
322
- let t = await e.text();
323
- return URL.createObjectURL(new Blob([t], { type: "application/javascript" }));
324
- }
325
- static download(e, t = "animation.gif") {
326
- let n = URL.createObjectURL(e), r = document.createElement("a");
327
- r.href = n, r.download = t, document.body.appendChild(r), r.click(), document.body.removeChild(r), URL.revokeObjectURL(n);
328
- }
329
- async exportAndDownload(t = "animation.gif", n) {
330
- let r = await this.exportTimeline(n);
331
- e.download(r, t);
332
- }
333
- };
334
- function c(e, t) {
335
- return new s(e, t);
336
- }
337
- //#endregion
338
- export { a as n, c as r, s as t };