@chao-component/bag-animation-ui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +778 -0
- package/dist/index.mjs +772 -0
- package/package.json +34 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,772 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
19
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
20
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
21
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
22
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
23
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
24
|
+
mod
|
|
25
|
+
));
|
|
26
|
+
|
|
27
|
+
// node_modules/apng-js/lib/index.js
|
|
28
|
+
var require_lib = __commonJS({
|
|
29
|
+
"node_modules/apng-js/lib/index.js"(exports, module) {
|
|
30
|
+
"use strict";
|
|
31
|
+
(function webpackUniversalModuleDefinition(root, factory) {
|
|
32
|
+
if (typeof exports === "object" && typeof module === "object")
|
|
33
|
+
module.exports = factory();
|
|
34
|
+
else if (typeof define === "function" && define.amd)
|
|
35
|
+
define([], factory);
|
|
36
|
+
else if (typeof exports === "object")
|
|
37
|
+
exports["apng-js"] = factory();
|
|
38
|
+
else
|
|
39
|
+
root["apng-js"] = factory();
|
|
40
|
+
})(exports, function() {
|
|
41
|
+
return (
|
|
42
|
+
/******/
|
|
43
|
+
(function(modules) {
|
|
44
|
+
var installedModules = {};
|
|
45
|
+
function __webpack_require__(moduleId) {
|
|
46
|
+
if (installedModules[moduleId])
|
|
47
|
+
return installedModules[moduleId].exports;
|
|
48
|
+
var module2 = installedModules[moduleId] = {
|
|
49
|
+
/******/
|
|
50
|
+
exports: {},
|
|
51
|
+
/******/
|
|
52
|
+
id: moduleId,
|
|
53
|
+
/******/
|
|
54
|
+
loaded: false
|
|
55
|
+
/******/
|
|
56
|
+
};
|
|
57
|
+
modules[moduleId].call(module2.exports, module2, module2.exports, __webpack_require__);
|
|
58
|
+
module2.loaded = true;
|
|
59
|
+
return module2.exports;
|
|
60
|
+
}
|
|
61
|
+
__webpack_require__.m = modules;
|
|
62
|
+
__webpack_require__.c = installedModules;
|
|
63
|
+
__webpack_require__.p = "";
|
|
64
|
+
return __webpack_require__(0);
|
|
65
|
+
})([
|
|
66
|
+
/* 0 */
|
|
67
|
+
/***/
|
|
68
|
+
(function(module2, exports2, __webpack_require__) {
|
|
69
|
+
"use strict";
|
|
70
|
+
Object.defineProperty(exports2, "__esModule", {
|
|
71
|
+
value: true
|
|
72
|
+
});
|
|
73
|
+
exports2.isNotPNG = isNotPNG;
|
|
74
|
+
exports2.isNotAPNG = isNotAPNG;
|
|
75
|
+
exports2.default = parseAPNG2;
|
|
76
|
+
var _crc = __webpack_require__(1);
|
|
77
|
+
var _crc2 = _interopRequireDefault(_crc);
|
|
78
|
+
var _structs = __webpack_require__(2);
|
|
79
|
+
function _interopRequireDefault(obj) {
|
|
80
|
+
return obj && obj.__esModule ? obj : { default: obj };
|
|
81
|
+
}
|
|
82
|
+
var errNotPNG = new Error("Not a PNG");
|
|
83
|
+
var errNotAPNG = new Error("Not an animated PNG");
|
|
84
|
+
function isNotPNG(err) {
|
|
85
|
+
return err === errNotPNG;
|
|
86
|
+
}
|
|
87
|
+
function isNotAPNG(err) {
|
|
88
|
+
return err === errNotAPNG;
|
|
89
|
+
}
|
|
90
|
+
var PNGSignature = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]);
|
|
91
|
+
function parseAPNG2(buffer) {
|
|
92
|
+
var bytes = new Uint8Array(buffer);
|
|
93
|
+
if (Array.prototype.some.call(PNGSignature, function(b, i) {
|
|
94
|
+
return b !== bytes[i];
|
|
95
|
+
})) {
|
|
96
|
+
return errNotPNG;
|
|
97
|
+
}
|
|
98
|
+
var isAnimated = false;
|
|
99
|
+
eachChunk(bytes, function(type) {
|
|
100
|
+
return !(isAnimated = type === "acTL");
|
|
101
|
+
});
|
|
102
|
+
if (!isAnimated) {
|
|
103
|
+
return errNotAPNG;
|
|
104
|
+
}
|
|
105
|
+
var preDataParts = [], postDataParts = [];
|
|
106
|
+
var headerDataBytes = null, frame = null, frameNumber = 0, apng = new _structs.APNG();
|
|
107
|
+
eachChunk(bytes, function(type, bytes2, off, length) {
|
|
108
|
+
var dv = new DataView(bytes2.buffer);
|
|
109
|
+
switch (type) {
|
|
110
|
+
case "IHDR":
|
|
111
|
+
headerDataBytes = bytes2.subarray(off + 8, off + 8 + length);
|
|
112
|
+
apng.width = dv.getUint32(off + 8);
|
|
113
|
+
apng.height = dv.getUint32(off + 12);
|
|
114
|
+
break;
|
|
115
|
+
case "acTL":
|
|
116
|
+
apng.numPlays = dv.getUint32(off + 8 + 4);
|
|
117
|
+
break;
|
|
118
|
+
case "fcTL":
|
|
119
|
+
if (frame) {
|
|
120
|
+
apng.frames.push(frame);
|
|
121
|
+
frameNumber++;
|
|
122
|
+
}
|
|
123
|
+
frame = new _structs.Frame();
|
|
124
|
+
frame.width = dv.getUint32(off + 8 + 4);
|
|
125
|
+
frame.height = dv.getUint32(off + 8 + 8);
|
|
126
|
+
frame.left = dv.getUint32(off + 8 + 12);
|
|
127
|
+
frame.top = dv.getUint32(off + 8 + 16);
|
|
128
|
+
var delayN = dv.getUint16(off + 8 + 20);
|
|
129
|
+
var delayD = dv.getUint16(off + 8 + 22);
|
|
130
|
+
if (delayD === 0) {
|
|
131
|
+
delayD = 100;
|
|
132
|
+
}
|
|
133
|
+
frame.delay = 1e3 * delayN / delayD;
|
|
134
|
+
if (frame.delay <= 10) {
|
|
135
|
+
frame.delay = 100;
|
|
136
|
+
}
|
|
137
|
+
apng.playTime += frame.delay;
|
|
138
|
+
frame.disposeOp = dv.getUint8(off + 8 + 24);
|
|
139
|
+
frame.blendOp = dv.getUint8(off + 8 + 25);
|
|
140
|
+
frame.dataParts = [];
|
|
141
|
+
if (frameNumber === 0 && frame.disposeOp === 2) {
|
|
142
|
+
frame.disposeOp = 1;
|
|
143
|
+
}
|
|
144
|
+
break;
|
|
145
|
+
case "fdAT":
|
|
146
|
+
if (frame) {
|
|
147
|
+
frame.dataParts.push(bytes2.subarray(off + 8 + 4, off + 8 + length));
|
|
148
|
+
}
|
|
149
|
+
break;
|
|
150
|
+
case "IDAT":
|
|
151
|
+
if (frame) {
|
|
152
|
+
frame.dataParts.push(bytes2.subarray(off + 8, off + 8 + length));
|
|
153
|
+
}
|
|
154
|
+
break;
|
|
155
|
+
case "IEND":
|
|
156
|
+
postDataParts.push(subBuffer(bytes2, off, 12 + length));
|
|
157
|
+
break;
|
|
158
|
+
default:
|
|
159
|
+
preDataParts.push(subBuffer(bytes2, off, 12 + length));
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
if (frame) {
|
|
163
|
+
apng.frames.push(frame);
|
|
164
|
+
}
|
|
165
|
+
if (apng.frames.length == 0) {
|
|
166
|
+
return errNotAPNG;
|
|
167
|
+
}
|
|
168
|
+
var preBlob = new Blob(preDataParts), postBlob = new Blob(postDataParts);
|
|
169
|
+
apng.frames.forEach(function(frame2) {
|
|
170
|
+
var bb = [];
|
|
171
|
+
bb.push(PNGSignature);
|
|
172
|
+
headerDataBytes.set(makeDWordArray(frame2.width), 0);
|
|
173
|
+
headerDataBytes.set(makeDWordArray(frame2.height), 4);
|
|
174
|
+
bb.push(makeChunkBytes("IHDR", headerDataBytes));
|
|
175
|
+
bb.push(preBlob);
|
|
176
|
+
frame2.dataParts.forEach(function(p) {
|
|
177
|
+
return bb.push(makeChunkBytes("IDAT", p));
|
|
178
|
+
});
|
|
179
|
+
bb.push(postBlob);
|
|
180
|
+
frame2.imageData = new Blob(bb, { "type": "image/png" });
|
|
181
|
+
delete frame2.dataParts;
|
|
182
|
+
bb = null;
|
|
183
|
+
});
|
|
184
|
+
return apng;
|
|
185
|
+
}
|
|
186
|
+
function eachChunk(bytes, callback) {
|
|
187
|
+
var dv = new DataView(bytes.buffer);
|
|
188
|
+
var off = 8, type = void 0, length = void 0, res = void 0;
|
|
189
|
+
do {
|
|
190
|
+
length = dv.getUint32(off);
|
|
191
|
+
type = readString(bytes, off + 4, 4);
|
|
192
|
+
res = callback(type, bytes, off, length);
|
|
193
|
+
off += 12 + length;
|
|
194
|
+
} while (res !== false && type != "IEND" && off < bytes.length);
|
|
195
|
+
}
|
|
196
|
+
function readString(bytes, off, length) {
|
|
197
|
+
var chars = Array.prototype.slice.call(bytes.subarray(off, off + length));
|
|
198
|
+
return String.fromCharCode.apply(String, chars);
|
|
199
|
+
}
|
|
200
|
+
function makeStringArray(x) {
|
|
201
|
+
var res = new Uint8Array(x.length);
|
|
202
|
+
for (var i = 0; i < x.length; i++) {
|
|
203
|
+
res[i] = x.charCodeAt(i);
|
|
204
|
+
}
|
|
205
|
+
return res;
|
|
206
|
+
}
|
|
207
|
+
function subBuffer(bytes, start, length) {
|
|
208
|
+
var a = new Uint8Array(length);
|
|
209
|
+
a.set(bytes.subarray(start, start + length));
|
|
210
|
+
return a;
|
|
211
|
+
}
|
|
212
|
+
var makeChunkBytes = function makeChunkBytes2(type, dataBytes) {
|
|
213
|
+
var crcLen = type.length + dataBytes.length;
|
|
214
|
+
var bytes = new Uint8Array(crcLen + 8);
|
|
215
|
+
var dv = new DataView(bytes.buffer);
|
|
216
|
+
dv.setUint32(0, dataBytes.length);
|
|
217
|
+
bytes.set(makeStringArray(type), 4);
|
|
218
|
+
bytes.set(dataBytes, 8);
|
|
219
|
+
var crc = (0, _crc2.default)(bytes, 4, crcLen);
|
|
220
|
+
dv.setUint32(crcLen + 4, crc);
|
|
221
|
+
return bytes;
|
|
222
|
+
};
|
|
223
|
+
var makeDWordArray = function makeDWordArray2(x) {
|
|
224
|
+
return new Uint8Array([x >>> 24 & 255, x >>> 16 & 255, x >>> 8 & 255, x & 255]);
|
|
225
|
+
};
|
|
226
|
+
}),
|
|
227
|
+
/* 1 */
|
|
228
|
+
/***/
|
|
229
|
+
(function(module2, exports2) {
|
|
230
|
+
"use strict";
|
|
231
|
+
Object.defineProperty(exports2, "__esModule", {
|
|
232
|
+
value: true
|
|
233
|
+
});
|
|
234
|
+
exports2.default = function(bytes) {
|
|
235
|
+
var start = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
|
|
236
|
+
var length = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : bytes.length - start;
|
|
237
|
+
var crc = -1;
|
|
238
|
+
for (var _i = start, l = start + length; _i < l; _i++) {
|
|
239
|
+
crc = crc >>> 8 ^ table[(crc ^ bytes[_i]) & 255];
|
|
240
|
+
}
|
|
241
|
+
return crc ^ -1;
|
|
242
|
+
};
|
|
243
|
+
var table = new Uint32Array(256);
|
|
244
|
+
for (var i = 0; i < 256; i++) {
|
|
245
|
+
var c = i;
|
|
246
|
+
for (var k = 0; k < 8; k++) {
|
|
247
|
+
c = (c & 1) !== 0 ? 3988292384 ^ c >>> 1 : c >>> 1;
|
|
248
|
+
}
|
|
249
|
+
table[i] = c;
|
|
250
|
+
}
|
|
251
|
+
}),
|
|
252
|
+
/* 2 */
|
|
253
|
+
/***/
|
|
254
|
+
(function(module2, exports2, __webpack_require__) {
|
|
255
|
+
"use strict";
|
|
256
|
+
Object.defineProperty(exports2, "__esModule", {
|
|
257
|
+
value: true
|
|
258
|
+
});
|
|
259
|
+
exports2.Frame = exports2.APNG = void 0;
|
|
260
|
+
var _createClass = /* @__PURE__ */ (function() {
|
|
261
|
+
function defineProperties(target, props) {
|
|
262
|
+
for (var i = 0; i < props.length; i++) {
|
|
263
|
+
var descriptor = props[i];
|
|
264
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
265
|
+
descriptor.configurable = true;
|
|
266
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
267
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return function(Constructor, protoProps, staticProps) {
|
|
271
|
+
if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
|
272
|
+
if (staticProps) defineProperties(Constructor, staticProps);
|
|
273
|
+
return Constructor;
|
|
274
|
+
};
|
|
275
|
+
})();
|
|
276
|
+
var _player = __webpack_require__(3);
|
|
277
|
+
var _player2 = _interopRequireDefault(_player);
|
|
278
|
+
function _interopRequireDefault(obj) {
|
|
279
|
+
return obj && obj.__esModule ? obj : { default: obj };
|
|
280
|
+
}
|
|
281
|
+
function _classCallCheck(instance, Constructor) {
|
|
282
|
+
if (!(instance instanceof Constructor)) {
|
|
283
|
+
throw new TypeError("Cannot call a class as a function");
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
var APNG = exports2.APNG = (function() {
|
|
287
|
+
function APNG2() {
|
|
288
|
+
_classCallCheck(this, APNG2);
|
|
289
|
+
this.width = 0;
|
|
290
|
+
this.height = 0;
|
|
291
|
+
this.numPlays = 0;
|
|
292
|
+
this.playTime = 0;
|
|
293
|
+
this.frames = [];
|
|
294
|
+
}
|
|
295
|
+
_createClass(APNG2, [{
|
|
296
|
+
key: "createImages",
|
|
297
|
+
/**
|
|
298
|
+
*
|
|
299
|
+
* @return {Promise.<*>}
|
|
300
|
+
*/
|
|
301
|
+
value: function createImages() {
|
|
302
|
+
return Promise.all(this.frames.map(function(f) {
|
|
303
|
+
return f.createImage();
|
|
304
|
+
}));
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
*
|
|
308
|
+
* @param {CanvasRenderingContext2D} context
|
|
309
|
+
* @param {boolean} autoPlay
|
|
310
|
+
* @return {Promise.<Player>}
|
|
311
|
+
*/
|
|
312
|
+
}, {
|
|
313
|
+
key: "getPlayer",
|
|
314
|
+
value: function getPlayer(context) {
|
|
315
|
+
var _this = this;
|
|
316
|
+
var autoPlay = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
|
|
317
|
+
return this.createImages().then(function() {
|
|
318
|
+
return new _player2.default(_this, context, autoPlay);
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}]);
|
|
322
|
+
return APNG2;
|
|
323
|
+
})();
|
|
324
|
+
var Frame = exports2.Frame = (function() {
|
|
325
|
+
function Frame2() {
|
|
326
|
+
_classCallCheck(this, Frame2);
|
|
327
|
+
this.left = 0;
|
|
328
|
+
this.top = 0;
|
|
329
|
+
this.width = 0;
|
|
330
|
+
this.height = 0;
|
|
331
|
+
this.delay = 0;
|
|
332
|
+
this.disposeOp = 0;
|
|
333
|
+
this.blendOp = 0;
|
|
334
|
+
this.imageData = null;
|
|
335
|
+
this.imageElement = null;
|
|
336
|
+
}
|
|
337
|
+
_createClass(Frame2, [{
|
|
338
|
+
key: "createImage",
|
|
339
|
+
value: function createImage() {
|
|
340
|
+
var _this2 = this;
|
|
341
|
+
if (this.imageElement) {
|
|
342
|
+
return Promise.resolve();
|
|
343
|
+
}
|
|
344
|
+
return new Promise(function(resolve, reject) {
|
|
345
|
+
var url = URL.createObjectURL(_this2.imageData);
|
|
346
|
+
_this2.imageElement = document.createElement("img");
|
|
347
|
+
_this2.imageElement.onload = function() {
|
|
348
|
+
URL.revokeObjectURL(url);
|
|
349
|
+
resolve();
|
|
350
|
+
};
|
|
351
|
+
_this2.imageElement.onerror = function() {
|
|
352
|
+
URL.revokeObjectURL(url);
|
|
353
|
+
_this2.imageElement = null;
|
|
354
|
+
reject(new Error("Image creation error"));
|
|
355
|
+
};
|
|
356
|
+
_this2.imageElement.src = url;
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
}]);
|
|
360
|
+
return Frame2;
|
|
361
|
+
})();
|
|
362
|
+
}),
|
|
363
|
+
/* 3 */
|
|
364
|
+
/***/
|
|
365
|
+
(function(module2, exports2, __webpack_require__) {
|
|
366
|
+
"use strict";
|
|
367
|
+
Object.defineProperty(exports2, "__esModule", {
|
|
368
|
+
value: true
|
|
369
|
+
});
|
|
370
|
+
var _createClass = /* @__PURE__ */ (function() {
|
|
371
|
+
function defineProperties(target, props) {
|
|
372
|
+
for (var i = 0; i < props.length; i++) {
|
|
373
|
+
var descriptor = props[i];
|
|
374
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
375
|
+
descriptor.configurable = true;
|
|
376
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
377
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return function(Constructor, protoProps, staticProps) {
|
|
381
|
+
if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
|
382
|
+
if (staticProps) defineProperties(Constructor, staticProps);
|
|
383
|
+
return Constructor;
|
|
384
|
+
};
|
|
385
|
+
})();
|
|
386
|
+
var _events = __webpack_require__(4);
|
|
387
|
+
var _events2 = _interopRequireDefault(_events);
|
|
388
|
+
function _interopRequireDefault(obj) {
|
|
389
|
+
return obj && obj.__esModule ? obj : { default: obj };
|
|
390
|
+
}
|
|
391
|
+
function _classCallCheck(instance, Constructor) {
|
|
392
|
+
if (!(instance instanceof Constructor)) {
|
|
393
|
+
throw new TypeError("Cannot call a class as a function");
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
function _possibleConstructorReturn(self, call) {
|
|
397
|
+
if (!self) {
|
|
398
|
+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
399
|
+
}
|
|
400
|
+
return call && (typeof call === "object" || typeof call === "function") ? call : self;
|
|
401
|
+
}
|
|
402
|
+
function _inherits(subClass, superClass) {
|
|
403
|
+
if (typeof superClass !== "function" && superClass !== null) {
|
|
404
|
+
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
|
|
405
|
+
}
|
|
406
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });
|
|
407
|
+
if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
|
|
408
|
+
}
|
|
409
|
+
var _class = (function(_EventEmitter) {
|
|
410
|
+
_inherits(_class2, _EventEmitter);
|
|
411
|
+
function _class2(apng, context, autoPlay) {
|
|
412
|
+
_classCallCheck(this, _class2);
|
|
413
|
+
var _this = _possibleConstructorReturn(this, (_class2.__proto__ || Object.getPrototypeOf(_class2)).call(this));
|
|
414
|
+
_this.playbackRate = 1;
|
|
415
|
+
_this._currentFrameNumber = 0;
|
|
416
|
+
_this._ended = false;
|
|
417
|
+
_this._paused = true;
|
|
418
|
+
_this._numPlays = 0;
|
|
419
|
+
_this._rafId = null;
|
|
420
|
+
_this._apng = apng;
|
|
421
|
+
_this.context = context;
|
|
422
|
+
_this.stop();
|
|
423
|
+
if (autoPlay) {
|
|
424
|
+
_this.play();
|
|
425
|
+
}
|
|
426
|
+
return _this;
|
|
427
|
+
}
|
|
428
|
+
_createClass(_class2, [{
|
|
429
|
+
key: "renderNextFrame",
|
|
430
|
+
value: function renderNextFrame() {
|
|
431
|
+
this._currentFrameNumber = (this._currentFrameNumber + 1) % this._apng.frames.length;
|
|
432
|
+
if (this._currentFrameNumber === this._apng.frames.length - 1) {
|
|
433
|
+
this._numPlays++;
|
|
434
|
+
if (this._apng.numPlays !== 0 && this._numPlays >= this._apng.numPlays) {
|
|
435
|
+
this._ended = true;
|
|
436
|
+
this._paused = true;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
if (this._prevFrame && this._prevFrame.disposeOp == 1) {
|
|
440
|
+
this.context.clearRect(this._prevFrame.left, this._prevFrame.top, this._prevFrame.width, this._prevFrame.height);
|
|
441
|
+
} else if (this._prevFrame && this._prevFrame.disposeOp == 2) {
|
|
442
|
+
this.context.putImageData(this._prevFrameData, this._prevFrame.left, this._prevFrame.top);
|
|
443
|
+
}
|
|
444
|
+
var frame = this.currentFrame;
|
|
445
|
+
this._prevFrame = frame;
|
|
446
|
+
this._prevFrameData = null;
|
|
447
|
+
if (frame.disposeOp == 2) {
|
|
448
|
+
this._prevFrameData = this.context.getImageData(frame.left, frame.top, frame.width, frame.height);
|
|
449
|
+
}
|
|
450
|
+
if (frame.blendOp == 0) {
|
|
451
|
+
this.context.clearRect(frame.left, frame.top, frame.width, frame.height);
|
|
452
|
+
}
|
|
453
|
+
this.context.drawImage(frame.imageElement, frame.left, frame.top);
|
|
454
|
+
this.emit("frame", this._currentFrameNumber);
|
|
455
|
+
if (this._ended) {
|
|
456
|
+
this.emit("end");
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
// playback
|
|
460
|
+
}, {
|
|
461
|
+
key: "play",
|
|
462
|
+
value: function play() {
|
|
463
|
+
var _this2 = this;
|
|
464
|
+
if (this._rafId) {
|
|
465
|
+
cancelAnimationFrame(this._rafId);
|
|
466
|
+
}
|
|
467
|
+
this.emit("play");
|
|
468
|
+
if (this._ended) {
|
|
469
|
+
this.stop();
|
|
470
|
+
}
|
|
471
|
+
this._paused = false;
|
|
472
|
+
var nextRenderTime = performance.now() + this.currentFrame.delay / this.playbackRate;
|
|
473
|
+
var tick = function tick2(now) {
|
|
474
|
+
if (_this2._ended || _this2._paused) {
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
if (now >= nextRenderTime) {
|
|
478
|
+
while (now - nextRenderTime >= _this2._apng.playTime / _this2.playbackRate) {
|
|
479
|
+
nextRenderTime += _this2._apng.playTime / _this2.playbackRate;
|
|
480
|
+
_this2._numPlays++;
|
|
481
|
+
}
|
|
482
|
+
do {
|
|
483
|
+
_this2.renderNextFrame();
|
|
484
|
+
nextRenderTime += _this2.currentFrame.delay / _this2.playbackRate;
|
|
485
|
+
} while (!_this2._ended && !_this2._paused && now > nextRenderTime);
|
|
486
|
+
}
|
|
487
|
+
_this2._rafId = requestAnimationFrame(tick2);
|
|
488
|
+
};
|
|
489
|
+
this._rafId = requestAnimationFrame(tick);
|
|
490
|
+
}
|
|
491
|
+
}, {
|
|
492
|
+
key: "pause",
|
|
493
|
+
value: function pause() {
|
|
494
|
+
if (!this._paused) {
|
|
495
|
+
if (this._rafId) {
|
|
496
|
+
cancelAnimationFrame(this._rafId);
|
|
497
|
+
this._rafId = null;
|
|
498
|
+
}
|
|
499
|
+
this.emit("pause");
|
|
500
|
+
this._paused = true;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}, {
|
|
504
|
+
key: "stop",
|
|
505
|
+
value: function stop() {
|
|
506
|
+
if (this._rafId) {
|
|
507
|
+
cancelAnimationFrame(this._rafId);
|
|
508
|
+
this._rafId = null;
|
|
509
|
+
}
|
|
510
|
+
this.emit("stop");
|
|
511
|
+
this._numPlays = 0;
|
|
512
|
+
this._ended = false;
|
|
513
|
+
this._paused = true;
|
|
514
|
+
this._currentFrameNumber = -1;
|
|
515
|
+
this.context.clearRect(0, 0, this._apng.width, this._apng.height);
|
|
516
|
+
this.renderNextFrame();
|
|
517
|
+
}
|
|
518
|
+
}, {
|
|
519
|
+
key: "currentFrameNumber",
|
|
520
|
+
get: function get() {
|
|
521
|
+
return this._currentFrameNumber;
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
*
|
|
525
|
+
* @return {Frame}
|
|
526
|
+
*/
|
|
527
|
+
}, {
|
|
528
|
+
key: "currentFrame",
|
|
529
|
+
get: function get() {
|
|
530
|
+
return this._apng.frames[this._currentFrameNumber];
|
|
531
|
+
}
|
|
532
|
+
}, {
|
|
533
|
+
key: "paused",
|
|
534
|
+
get: function get() {
|
|
535
|
+
return this._paused;
|
|
536
|
+
}
|
|
537
|
+
}, {
|
|
538
|
+
key: "ended",
|
|
539
|
+
get: function get() {
|
|
540
|
+
return this._ended;
|
|
541
|
+
}
|
|
542
|
+
}]);
|
|
543
|
+
return _class2;
|
|
544
|
+
})(_events2.default);
|
|
545
|
+
exports2.default = _class;
|
|
546
|
+
}),
|
|
547
|
+
/* 4 */
|
|
548
|
+
/***/
|
|
549
|
+
(function(module2, exports2) {
|
|
550
|
+
function EventEmitter() {
|
|
551
|
+
this._events = this._events || {};
|
|
552
|
+
this._maxListeners = this._maxListeners || void 0;
|
|
553
|
+
}
|
|
554
|
+
module2.exports = EventEmitter;
|
|
555
|
+
EventEmitter.EventEmitter = EventEmitter;
|
|
556
|
+
EventEmitter.prototype._events = void 0;
|
|
557
|
+
EventEmitter.prototype._maxListeners = void 0;
|
|
558
|
+
EventEmitter.defaultMaxListeners = 10;
|
|
559
|
+
EventEmitter.prototype.setMaxListeners = function(n) {
|
|
560
|
+
if (!isNumber(n) || n < 0 || isNaN(n))
|
|
561
|
+
throw TypeError("n must be a positive number");
|
|
562
|
+
this._maxListeners = n;
|
|
563
|
+
return this;
|
|
564
|
+
};
|
|
565
|
+
EventEmitter.prototype.emit = function(type) {
|
|
566
|
+
var er, handler, len, args, i, listeners;
|
|
567
|
+
if (!this._events)
|
|
568
|
+
this._events = {};
|
|
569
|
+
if (type === "error") {
|
|
570
|
+
if (!this._events.error || isObject(this._events.error) && !this._events.error.length) {
|
|
571
|
+
er = arguments[1];
|
|
572
|
+
if (er instanceof Error) {
|
|
573
|
+
throw er;
|
|
574
|
+
} else {
|
|
575
|
+
var err = new Error('Uncaught, unspecified "error" event. (' + er + ")");
|
|
576
|
+
err.context = er;
|
|
577
|
+
throw err;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
handler = this._events[type];
|
|
582
|
+
if (isUndefined(handler))
|
|
583
|
+
return false;
|
|
584
|
+
if (isFunction(handler)) {
|
|
585
|
+
switch (arguments.length) {
|
|
586
|
+
// fast cases
|
|
587
|
+
case 1:
|
|
588
|
+
handler.call(this);
|
|
589
|
+
break;
|
|
590
|
+
case 2:
|
|
591
|
+
handler.call(this, arguments[1]);
|
|
592
|
+
break;
|
|
593
|
+
case 3:
|
|
594
|
+
handler.call(this, arguments[1], arguments[2]);
|
|
595
|
+
break;
|
|
596
|
+
// slower
|
|
597
|
+
default:
|
|
598
|
+
args = Array.prototype.slice.call(arguments, 1);
|
|
599
|
+
handler.apply(this, args);
|
|
600
|
+
}
|
|
601
|
+
} else if (isObject(handler)) {
|
|
602
|
+
args = Array.prototype.slice.call(arguments, 1);
|
|
603
|
+
listeners = handler.slice();
|
|
604
|
+
len = listeners.length;
|
|
605
|
+
for (i = 0; i < len; i++)
|
|
606
|
+
listeners[i].apply(this, args);
|
|
607
|
+
}
|
|
608
|
+
return true;
|
|
609
|
+
};
|
|
610
|
+
EventEmitter.prototype.addListener = function(type, listener) {
|
|
611
|
+
var m;
|
|
612
|
+
if (!isFunction(listener))
|
|
613
|
+
throw TypeError("listener must be a function");
|
|
614
|
+
if (!this._events)
|
|
615
|
+
this._events = {};
|
|
616
|
+
if (this._events.newListener)
|
|
617
|
+
this.emit(
|
|
618
|
+
"newListener",
|
|
619
|
+
type,
|
|
620
|
+
isFunction(listener.listener) ? listener.listener : listener
|
|
621
|
+
);
|
|
622
|
+
if (!this._events[type])
|
|
623
|
+
this._events[type] = listener;
|
|
624
|
+
else if (isObject(this._events[type]))
|
|
625
|
+
this._events[type].push(listener);
|
|
626
|
+
else
|
|
627
|
+
this._events[type] = [this._events[type], listener];
|
|
628
|
+
if (isObject(this._events[type]) && !this._events[type].warned) {
|
|
629
|
+
if (!isUndefined(this._maxListeners)) {
|
|
630
|
+
m = this._maxListeners;
|
|
631
|
+
} else {
|
|
632
|
+
m = EventEmitter.defaultMaxListeners;
|
|
633
|
+
}
|
|
634
|
+
if (m && m > 0 && this._events[type].length > m) {
|
|
635
|
+
this._events[type].warned = true;
|
|
636
|
+
console.error(
|
|
637
|
+
"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",
|
|
638
|
+
this._events[type].length
|
|
639
|
+
);
|
|
640
|
+
if (typeof console.trace === "function") {
|
|
641
|
+
console.trace();
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
return this;
|
|
646
|
+
};
|
|
647
|
+
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
|
|
648
|
+
EventEmitter.prototype.once = function(type, listener) {
|
|
649
|
+
if (!isFunction(listener))
|
|
650
|
+
throw TypeError("listener must be a function");
|
|
651
|
+
var fired = false;
|
|
652
|
+
function g() {
|
|
653
|
+
this.removeListener(type, g);
|
|
654
|
+
if (!fired) {
|
|
655
|
+
fired = true;
|
|
656
|
+
listener.apply(this, arguments);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
g.listener = listener;
|
|
660
|
+
this.on(type, g);
|
|
661
|
+
return this;
|
|
662
|
+
};
|
|
663
|
+
EventEmitter.prototype.removeListener = function(type, listener) {
|
|
664
|
+
var list, position, length, i;
|
|
665
|
+
if (!isFunction(listener))
|
|
666
|
+
throw TypeError("listener must be a function");
|
|
667
|
+
if (!this._events || !this._events[type])
|
|
668
|
+
return this;
|
|
669
|
+
list = this._events[type];
|
|
670
|
+
length = list.length;
|
|
671
|
+
position = -1;
|
|
672
|
+
if (list === listener || isFunction(list.listener) && list.listener === listener) {
|
|
673
|
+
delete this._events[type];
|
|
674
|
+
if (this._events.removeListener)
|
|
675
|
+
this.emit("removeListener", type, listener);
|
|
676
|
+
} else if (isObject(list)) {
|
|
677
|
+
for (i = length; i-- > 0; ) {
|
|
678
|
+
if (list[i] === listener || list[i].listener && list[i].listener === listener) {
|
|
679
|
+
position = i;
|
|
680
|
+
break;
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
if (position < 0)
|
|
684
|
+
return this;
|
|
685
|
+
if (list.length === 1) {
|
|
686
|
+
list.length = 0;
|
|
687
|
+
delete this._events[type];
|
|
688
|
+
} else {
|
|
689
|
+
list.splice(position, 1);
|
|
690
|
+
}
|
|
691
|
+
if (this._events.removeListener)
|
|
692
|
+
this.emit("removeListener", type, listener);
|
|
693
|
+
}
|
|
694
|
+
return this;
|
|
695
|
+
};
|
|
696
|
+
EventEmitter.prototype.removeAllListeners = function(type) {
|
|
697
|
+
var key, listeners;
|
|
698
|
+
if (!this._events)
|
|
699
|
+
return this;
|
|
700
|
+
if (!this._events.removeListener) {
|
|
701
|
+
if (arguments.length === 0)
|
|
702
|
+
this._events = {};
|
|
703
|
+
else if (this._events[type])
|
|
704
|
+
delete this._events[type];
|
|
705
|
+
return this;
|
|
706
|
+
}
|
|
707
|
+
if (arguments.length === 0) {
|
|
708
|
+
for (key in this._events) {
|
|
709
|
+
if (key === "removeListener") continue;
|
|
710
|
+
this.removeAllListeners(key);
|
|
711
|
+
}
|
|
712
|
+
this.removeAllListeners("removeListener");
|
|
713
|
+
this._events = {};
|
|
714
|
+
return this;
|
|
715
|
+
}
|
|
716
|
+
listeners = this._events[type];
|
|
717
|
+
if (isFunction(listeners)) {
|
|
718
|
+
this.removeListener(type, listeners);
|
|
719
|
+
} else if (listeners) {
|
|
720
|
+
while (listeners.length)
|
|
721
|
+
this.removeListener(type, listeners[listeners.length - 1]);
|
|
722
|
+
}
|
|
723
|
+
delete this._events[type];
|
|
724
|
+
return this;
|
|
725
|
+
};
|
|
726
|
+
EventEmitter.prototype.listeners = function(type) {
|
|
727
|
+
var ret;
|
|
728
|
+
if (!this._events || !this._events[type])
|
|
729
|
+
ret = [];
|
|
730
|
+
else if (isFunction(this._events[type]))
|
|
731
|
+
ret = [this._events[type]];
|
|
732
|
+
else
|
|
733
|
+
ret = this._events[type].slice();
|
|
734
|
+
return ret;
|
|
735
|
+
};
|
|
736
|
+
EventEmitter.prototype.listenerCount = function(type) {
|
|
737
|
+
if (this._events) {
|
|
738
|
+
var evlistener = this._events[type];
|
|
739
|
+
if (isFunction(evlistener))
|
|
740
|
+
return 1;
|
|
741
|
+
else if (evlistener)
|
|
742
|
+
return evlistener.length;
|
|
743
|
+
}
|
|
744
|
+
return 0;
|
|
745
|
+
};
|
|
746
|
+
EventEmitter.listenerCount = function(emitter, type) {
|
|
747
|
+
return emitter.listenerCount(type);
|
|
748
|
+
};
|
|
749
|
+
function isFunction(arg) {
|
|
750
|
+
return typeof arg === "function";
|
|
751
|
+
}
|
|
752
|
+
function isNumber(arg) {
|
|
753
|
+
return typeof arg === "number";
|
|
754
|
+
}
|
|
755
|
+
function isObject(arg) {
|
|
756
|
+
return typeof arg === "object" && arg !== null;
|
|
757
|
+
}
|
|
758
|
+
function isUndefined(arg) {
|
|
759
|
+
return arg === void 0;
|
|
760
|
+
}
|
|
761
|
+
})
|
|
762
|
+
/******/
|
|
763
|
+
])
|
|
764
|
+
);
|
|
765
|
+
});
|
|
766
|
+
}
|
|
767
|
+
});
|
|
768
|
+
|
|
769
|
+
// src/BagAnimation.tsx
|
|
770
|
+
var import_apng_js = __toESM(require_lib());
|
|
771
|
+
import { useEffect, useRef, useState } from "react";
|
|
772
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|