@yqg/aminofx-css-kit 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -30
- package/dist/esm/index.js +97 -71
- package/dist/umd/aminofx-css-kit.min.js +1 -1
- package/package.json +1 -1
- package/src/index.ts +35 -20
package/README.md
CHANGED
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
npm install aminofx-css-kit
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
|
|
23
22
|
## 🏗️ 核心接口
|
|
24
23
|
|
|
25
24
|
### IJsonSchema
|
|
@@ -43,19 +42,19 @@ interface IJsonSchema {
|
|
|
43
42
|
interface IPlayerOptions {
|
|
44
43
|
/** 弹窗垂直对齐方式 */
|
|
45
44
|
alignItems?: 'center' | 'flex-start' | 'flex-end';
|
|
46
|
-
|
|
45
|
+
|
|
47
46
|
/** 直接传入 JSON Schema 数据 */
|
|
48
47
|
jsonSchema?: IJsonSchema;
|
|
49
|
-
|
|
48
|
+
|
|
50
49
|
/** 通过 URL 加载 JSON Schema(jsonSchema 优先级更高) */
|
|
51
50
|
jsonUrl?: string;
|
|
52
|
-
|
|
51
|
+
|
|
53
52
|
/** 需要预加载的图片列表 */
|
|
54
53
|
preloadImgList?: string[];
|
|
55
|
-
|
|
54
|
+
|
|
56
55
|
/** 是否自动循环播放 */
|
|
57
56
|
autoLoop?: boolean;
|
|
58
|
-
|
|
57
|
+
|
|
59
58
|
/** 动态数据,用于替换模板变量 */
|
|
60
59
|
dynamicData?: Record<string, string | number | boolean>;
|
|
61
60
|
}
|
|
@@ -69,12 +68,12 @@ interface IPlayerOptions {
|
|
|
69
68
|
|
|
70
69
|
#### 方法列表
|
|
71
70
|
|
|
72
|
-
| 方法
|
|
73
|
-
|
|
74
|
-
| `play()`
|
|
75
|
-
| `ready()`
|
|
76
|
-
| `destroy()`
|
|
77
|
-
| `updateSchema(options)` | 更新动画配置并重新初始化 | `options: IPlayerOptions` | `void`
|
|
71
|
+
| 方法 | 描述 | 参数 | 返回值 |
|
|
72
|
+
| ----------------------- | ------------------------ | ------------------------- | --------------- |
|
|
73
|
+
| `play()` | 开始播放动画 | - | `Promise<void>` |
|
|
74
|
+
| `ready()` | 等待资源加载完成 | - | `Promise<void>` |
|
|
75
|
+
| `destroy()` | 销毁播放器,清理资源 | - | `void` |
|
|
76
|
+
| `updateSchema(options)` | 更新动画配置并重新初始化 | `options: IPlayerOptions` | `void` |
|
|
78
77
|
|
|
79
78
|
## 🏭 工厂函数
|
|
80
79
|
|
|
@@ -85,7 +84,7 @@ interface IPlayerOptions {
|
|
|
85
84
|
```typescript
|
|
86
85
|
function createCssAnimationPlayer(
|
|
87
86
|
containerId: string,
|
|
88
|
-
options: IPlayerOptions
|
|
87
|
+
options: IPlayerOptions,
|
|
89
88
|
): AnimationPlayer;
|
|
90
89
|
```
|
|
91
90
|
|
|
@@ -113,7 +112,7 @@ function createCssAnimationPlayer(
|
|
|
113
112
|
</head>
|
|
114
113
|
<body>
|
|
115
114
|
<div id="demo-container"></div>
|
|
116
|
-
|
|
115
|
+
|
|
117
116
|
<script>
|
|
118
117
|
const player = window.createCssAnimationPlayer('demo-container', {
|
|
119
118
|
jsonUrl: 'https://example.com/animation.json',
|
|
@@ -154,9 +153,7 @@ const player = createCssAnimationPlayer('demo-container', {
|
|
|
154
153
|
<div class="animation-box"></div>
|
|
155
154
|
`,
|
|
156
155
|
},
|
|
157
|
-
preloadImgList: [
|
|
158
|
-
'https://example.com/bg.png',
|
|
159
|
-
],
|
|
156
|
+
preloadImgList: ['https://example.com/bg.png'],
|
|
160
157
|
});
|
|
161
158
|
|
|
162
159
|
// 播放动画
|
|
@@ -272,9 +269,17 @@ export const AnimationComponent: React.FC = () => {
|
|
|
272
269
|
playerRef.current = player;
|
|
273
270
|
|
|
274
271
|
// 等待资源加载
|
|
275
|
-
player
|
|
276
|
-
|
|
277
|
-
|
|
272
|
+
player
|
|
273
|
+
.ready()
|
|
274
|
+
.then(() => {
|
|
275
|
+
// sdk初始化成功
|
|
276
|
+
setIsReady(true);
|
|
277
|
+
// 开始播放
|
|
278
|
+
player.play();
|
|
279
|
+
})
|
|
280
|
+
.catch((error) => {
|
|
281
|
+
console.error('sdk初始化失败', error);
|
|
282
|
+
});
|
|
278
283
|
|
|
279
284
|
// 清理
|
|
280
285
|
return () => {
|
|
@@ -283,16 +288,10 @@ export const AnimationComponent: React.FC = () => {
|
|
|
283
288
|
};
|
|
284
289
|
}, []);
|
|
285
290
|
|
|
286
|
-
const handlePlay = () => {
|
|
287
|
-
playerRef.current?.play();
|
|
288
|
-
};
|
|
289
|
-
|
|
290
291
|
return (
|
|
291
292
|
<div>
|
|
292
|
-
<div id=
|
|
293
|
-
<button
|
|
294
|
-
{isReady ? '播放动画' : '加载中...'}
|
|
295
|
-
</button>
|
|
293
|
+
<div id='animation-container' ref={containerRef} />
|
|
294
|
+
<button disabled={!isReady}>{isReady ? '播放动画' : '加载中...'}</button>
|
|
296
295
|
</div>
|
|
297
296
|
);
|
|
298
297
|
};
|
|
@@ -313,6 +312,7 @@ await player.play();
|
|
|
313
312
|
#### ready()
|
|
314
313
|
|
|
315
314
|
等待所有资源(特别是图片)加载完成。此方法会:
|
|
315
|
+
|
|
316
316
|
- 预加载所有指定的图片
|
|
317
317
|
- 确保图片解码完成
|
|
318
318
|
- 返回 Promise,资源准备完成后 resolve
|
|
@@ -325,6 +325,7 @@ console.log('所有资源已加载完成');
|
|
|
325
325
|
#### destroy()
|
|
326
326
|
|
|
327
327
|
销毁播放器,清理所有资源:
|
|
328
|
+
|
|
328
329
|
- 清除循环定时器
|
|
329
330
|
- 清空容器内容
|
|
330
331
|
- 重置内部状态
|
|
@@ -336,6 +337,7 @@ player.destroy();
|
|
|
336
337
|
#### updateSchema(options)
|
|
337
338
|
|
|
338
339
|
更新动画配置并重新初始化。会:
|
|
340
|
+
|
|
339
341
|
- 清理旧的定时器
|
|
340
342
|
- 重置播放器状态
|
|
341
343
|
- 加载新的动画配置
|
|
@@ -376,7 +378,7 @@ player.play();
|
|
|
376
378
|
// React
|
|
377
379
|
useEffect(() => {
|
|
378
380
|
const player = createCssAnimationPlayer('container', options);
|
|
379
|
-
|
|
381
|
+
|
|
380
382
|
return () => {
|
|
381
383
|
player.destroy(); // 清理资源
|
|
382
384
|
};
|
|
@@ -417,6 +419,7 @@ const player = createCssAnimationPlayer('container', {
|
|
|
417
419
|
### Q: 动画不显示?
|
|
418
420
|
|
|
419
421
|
**A:** 检查以下几点:
|
|
422
|
+
|
|
420
423
|
- 容器元素是否存在(`document.getElementById(containerId)` 不为 null)
|
|
421
424
|
- JSON Schema 的 `content` 字段是否包含有效的 HTML 和 CSS
|
|
422
425
|
- 检查浏览器控制台是否有错误信息
|
|
@@ -424,7 +427,8 @@ const player = createCssAnimationPlayer('container', {
|
|
|
424
427
|
|
|
425
428
|
### Q: 图片加载失败?
|
|
426
429
|
|
|
427
|
-
**A:**
|
|
430
|
+
**A:**
|
|
431
|
+
|
|
428
432
|
- 检查图片 URL 是否正确
|
|
429
433
|
- 确认服务器是否配置了正确的 CORS 头
|
|
430
434
|
- 查看浏览器网络面板,确认图片请求状态
|
|
@@ -433,6 +437,7 @@ const player = createCssAnimationPlayer('container', {
|
|
|
433
437
|
### Q: 循环播放不工作?
|
|
434
438
|
|
|
435
439
|
**A:**
|
|
440
|
+
|
|
436
441
|
- 确保 `autoLoop` 设置为 `true`
|
|
437
442
|
- 检查 `jsonSchema.duration` 是否正确设置
|
|
438
443
|
- 循环播放基于定时器实现,确保页面未被挂起
|
package/dist/esm/index.js
CHANGED
|
@@ -115,8 +115,6 @@ var AnimationPlayer = /*#__PURE__*/function () {
|
|
|
115
115
|
key: "init",
|
|
116
116
|
value: function () {
|
|
117
117
|
var _init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
118
|
-
var _this$options;
|
|
119
|
-
var _this$options2, _this$options$jsonSch, response, data;
|
|
120
118
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
121
119
|
while (1) switch (_context2.prev = _context2.next) {
|
|
122
120
|
case 0:
|
|
@@ -130,36 +128,9 @@ var AnimationPlayer = /*#__PURE__*/function () {
|
|
|
130
128
|
backgroundColor: 'rgba(0, 0, 0, 0.85)',
|
|
131
129
|
backdropFilter: 'blur(10px)'
|
|
132
130
|
});
|
|
133
|
-
|
|
134
|
-
_context2.next = 5;
|
|
135
|
-
break;
|
|
136
|
-
}
|
|
137
|
-
this.container.innerHTML = this.replacePlaceholders(this.options.jsonSchema.content);
|
|
138
|
-
_context2.next = 17;
|
|
139
|
-
break;
|
|
140
|
-
case 5:
|
|
141
|
-
if (!((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.jsonUrl)) {
|
|
142
|
-
_context2.next = 16;
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
_context2.next = 8;
|
|
146
|
-
return fetch((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.jsonUrl);
|
|
147
|
-
case 8:
|
|
148
|
-
response = _context2.sent;
|
|
149
|
-
_context2.next = 11;
|
|
150
|
-
return response.json();
|
|
151
|
-
case 11:
|
|
152
|
-
data = _context2.sent;
|
|
153
|
-
this.options.jsonSchema = data;
|
|
154
|
-
this.container.innerHTML = this.replacePlaceholders(((_this$options$jsonSch = this.options.jsonSchema) === null || _this$options$jsonSch === void 0 ? void 0 : _this$options$jsonSch.content) || '');
|
|
155
|
-
_context2.next = 17;
|
|
156
|
-
break;
|
|
157
|
-
case 16:
|
|
158
|
-
throw new Error('没有提供jsonSchema或jsonUrl');
|
|
159
|
-
case 17:
|
|
160
|
-
_context2.next = 19;
|
|
131
|
+
_context2.next = 3;
|
|
161
132
|
return this.ready();
|
|
162
|
-
case
|
|
133
|
+
case 3:
|
|
163
134
|
case "end":
|
|
164
135
|
return _context2.stop();
|
|
165
136
|
}
|
|
@@ -195,11 +166,11 @@ var AnimationPlayer = /*#__PURE__*/function () {
|
|
|
195
166
|
}, {
|
|
196
167
|
key: "handleLoop",
|
|
197
168
|
value: function handleLoop() {
|
|
198
|
-
var _this$options$
|
|
169
|
+
var _this$options$jsonSch,
|
|
199
170
|
_this3 = this,
|
|
200
|
-
_this$options$
|
|
201
|
-
_this$options$
|
|
202
|
-
if (!this.options.autoLoop || !((_this$options$
|
|
171
|
+
_this$options$jsonSch2,
|
|
172
|
+
_this$options$jsonSch3;
|
|
173
|
+
if (!this.options.autoLoop || !Number((_this$options$jsonSch = this.options.jsonSchema) === null || _this$options$jsonSch === void 0 ? void 0 : _this$options$jsonSch.duration)) {
|
|
203
174
|
return;
|
|
204
175
|
}
|
|
205
176
|
|
|
@@ -217,66 +188,121 @@ var AnimationPlayer = /*#__PURE__*/function () {
|
|
|
217
188
|
_this3.loopTimerId = null;
|
|
218
189
|
_this3.play();
|
|
219
190
|
}, 100);
|
|
220
|
-
}, (_this$options$
|
|
221
|
-
console.log("aminofx: \uD83D\uDD04 \u542F\u52A8\u5FAA\u73AF\u5B9A\u65F6\u5668\uFF0C\u65F6\u957F: ".concat((_this$options$
|
|
191
|
+
}, Number((_this$options$jsonSch2 = this.options.jsonSchema) === null || _this$options$jsonSch2 === void 0 ? void 0 : _this$options$jsonSch2.duration));
|
|
192
|
+
console.log("aminofx: \uD83D\uDD04 \u542F\u52A8\u5FAA\u73AF\u5B9A\u65F6\u5668\uFF0C\u65F6\u957F: ".concat((_this$options$jsonSch3 = this.options.jsonSchema) === null || _this$options$jsonSch3 === void 0 ? void 0 : _this$options$jsonSch3.duration, "ms"));
|
|
222
193
|
}
|
|
223
194
|
}, {
|
|
224
195
|
key: "ready",
|
|
225
196
|
value: function () {
|
|
226
|
-
var _ready = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
197
|
+
var _ready = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
227
198
|
var _this4 = this;
|
|
228
|
-
return _regeneratorRuntime().wrap(function
|
|
229
|
-
while (1) switch (
|
|
199
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
200
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
230
201
|
case 0:
|
|
231
202
|
if (!this.isReady) {
|
|
232
|
-
|
|
203
|
+
_context5.next = 3;
|
|
233
204
|
break;
|
|
234
205
|
}
|
|
235
206
|
console.log('aminofx: ✅ 动画已准备就绪,直接返回');
|
|
236
|
-
return
|
|
207
|
+
return _context5.abrupt("return", Promise.resolve());
|
|
237
208
|
case 3:
|
|
238
209
|
if (!this.readyPromise) {
|
|
239
|
-
|
|
210
|
+
_context5.next = 6;
|
|
240
211
|
break;
|
|
241
212
|
}
|
|
242
213
|
console.log('aminofx: ⏳ 正在准备中,等待现有Promise...');
|
|
243
|
-
return
|
|
214
|
+
return _context5.abrupt("return", this.readyPromise);
|
|
244
215
|
case 6:
|
|
245
216
|
this.readyPromise = new Promise( /*#__PURE__*/function () {
|
|
246
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
247
|
-
|
|
248
|
-
|
|
217
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(resolve, reject) {
|
|
218
|
+
var jsonPromise, imgPromise;
|
|
219
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
220
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
249
221
|
case 0:
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
222
|
+
_context4.prev = 0;
|
|
223
|
+
jsonPromise = new Promise( /*#__PURE__*/function () {
|
|
224
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(resolve, reject) {
|
|
225
|
+
var _this4$options;
|
|
226
|
+
var _this4$options2, _this4$options$jsonSc, response, data;
|
|
227
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
228
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
229
|
+
case 0:
|
|
230
|
+
if (!_this4.options.jsonSchema) {
|
|
231
|
+
_context3.next = 5;
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
_this4.container.innerHTML = _this4.replacePlaceholders(_this4.options.jsonSchema.content);
|
|
235
|
+
resolve();
|
|
236
|
+
_context3.next = 24;
|
|
237
|
+
break;
|
|
238
|
+
case 5:
|
|
239
|
+
if (!((_this4$options = _this4.options) !== null && _this4$options !== void 0 && _this4$options.jsonUrl)) {
|
|
240
|
+
_context3.next = 23;
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
_context3.prev = 6;
|
|
244
|
+
_context3.next = 9;
|
|
245
|
+
return fetch((_this4$options2 = _this4.options) === null || _this4$options2 === void 0 ? void 0 : _this4$options2.jsonUrl);
|
|
246
|
+
case 9:
|
|
247
|
+
response = _context3.sent;
|
|
248
|
+
_context3.next = 12;
|
|
249
|
+
return response.json();
|
|
250
|
+
case 12:
|
|
251
|
+
data = _context3.sent;
|
|
252
|
+
_this4.options.jsonSchema = data;
|
|
253
|
+
_this4.container.innerHTML = _this4.replacePlaceholders(((_this4$options$jsonSc = _this4.options.jsonSchema) === null || _this4$options$jsonSc === void 0 ? void 0 : _this4$options$jsonSc.content) || '');
|
|
254
|
+
resolve();
|
|
255
|
+
_context3.next = 21;
|
|
256
|
+
break;
|
|
257
|
+
case 18:
|
|
258
|
+
_context3.prev = 18;
|
|
259
|
+
_context3.t0 = _context3["catch"](6);
|
|
260
|
+
reject(_context3.t0);
|
|
261
|
+
case 21:
|
|
262
|
+
_context3.next = 24;
|
|
263
|
+
break;
|
|
264
|
+
case 23:
|
|
265
|
+
throw new Error('没有提供jsonSchema或jsonUrl');
|
|
266
|
+
case 24:
|
|
267
|
+
case "end":
|
|
268
|
+
return _context3.stop();
|
|
269
|
+
}
|
|
270
|
+
}, _callee3, null, [[6, 18]]);
|
|
271
|
+
}));
|
|
272
|
+
return function (_x4, _x5) {
|
|
273
|
+
return _ref2.apply(this, arguments);
|
|
274
|
+
};
|
|
275
|
+
}());
|
|
276
|
+
imgPromise = ResourceLoader.loadImages(_this4.options.preloadImgList || []);
|
|
277
|
+
_context4.next = 5;
|
|
278
|
+
return Promise.all([jsonPromise, imgPromise]);
|
|
279
|
+
case 5:
|
|
254
280
|
_this4.isReady = true; // 设置准备完成状态
|
|
281
|
+
resolve();
|
|
255
282
|
console.log('aminofx: 🎉 动画准备完成,可以开始播放');
|
|
256
|
-
|
|
283
|
+
_context4.next = 14;
|
|
257
284
|
break;
|
|
258
|
-
case 7:
|
|
259
|
-
_context3.prev = 7;
|
|
260
|
-
_context3.t0 = _context3["catch"](0);
|
|
261
|
-
console.error('aminofx: ❌ 动画准备失败:', _context3.t0);
|
|
262
285
|
case 10:
|
|
263
|
-
|
|
264
|
-
|
|
286
|
+
_context4.prev = 10;
|
|
287
|
+
_context4.t0 = _context4["catch"](0);
|
|
288
|
+
reject(_context4.t0);
|
|
289
|
+
console.error('aminofx: ❌ 动画准备失败:', _context4.t0);
|
|
290
|
+
case 14:
|
|
265
291
|
case "end":
|
|
266
|
-
return
|
|
292
|
+
return _context4.stop();
|
|
267
293
|
}
|
|
268
|
-
},
|
|
294
|
+
}, _callee4, null, [[0, 10]]);
|
|
269
295
|
}));
|
|
270
|
-
return function (_x2) {
|
|
296
|
+
return function (_x2, _x3) {
|
|
271
297
|
return _ref.apply(this, arguments);
|
|
272
298
|
};
|
|
273
299
|
}());
|
|
274
|
-
return
|
|
300
|
+
return _context5.abrupt("return", this.readyPromise);
|
|
275
301
|
case 8:
|
|
276
302
|
case "end":
|
|
277
|
-
return
|
|
303
|
+
return _context5.stop();
|
|
278
304
|
}
|
|
279
|
-
},
|
|
305
|
+
}, _callee5, this);
|
|
280
306
|
}));
|
|
281
307
|
function ready() {
|
|
282
308
|
return _ready.apply(this, arguments);
|
|
@@ -286,16 +312,16 @@ var AnimationPlayer = /*#__PURE__*/function () {
|
|
|
286
312
|
}, {
|
|
287
313
|
key: "play",
|
|
288
314
|
value: function () {
|
|
289
|
-
var _play = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
290
|
-
return _regeneratorRuntime().wrap(function
|
|
291
|
-
while (1) switch (
|
|
315
|
+
var _play = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
|
|
316
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
317
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
292
318
|
case 0:
|
|
293
319
|
if (this.isReady) {
|
|
294
|
-
|
|
320
|
+
_context6.next = 4;
|
|
295
321
|
break;
|
|
296
322
|
}
|
|
297
323
|
console.warn('aminofx: ⚠️ 动画尚未准备就绪,自动调用ready()...');
|
|
298
|
-
|
|
324
|
+
_context6.next = 4;
|
|
299
325
|
return this.ready();
|
|
300
326
|
case 4:
|
|
301
327
|
this.container.style.display = 'flex';
|
|
@@ -306,9 +332,9 @@ var AnimationPlayer = /*#__PURE__*/function () {
|
|
|
306
332
|
}
|
|
307
333
|
case 6:
|
|
308
334
|
case "end":
|
|
309
|
-
return
|
|
335
|
+
return _context6.stop();
|
|
310
336
|
}
|
|
311
|
-
},
|
|
337
|
+
}, _callee6, this);
|
|
312
338
|
}));
|
|
313
339
|
function play() {
|
|
314
340
|
return _play.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["@yqg/aminofx-css-kit"]=e():t["@yqg/aminofx-css-kit"]=e()}(self,(function(){return function(){var t={506:function(){},365:function(t){function e(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}t.exports=function(t){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=t.apply(r,n);function s(t){e(a,o,i,s,c,"next",t)}function c(t){e(a,o,i,s,c,"throw",t)}s(void 0)}))}},t.exports.__esModule=!0,t.exports.default=t.exports},156:function(t){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.__esModule=!0,t.exports.default=t.exports},499:function(t,e,r){var n=r(714);function o(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,n(o.key),o)}}t.exports=function(t,e,r){return e&&o(t.prototype,e),r&&o(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t},t.exports.__esModule=!0,t.exports.default=t.exports},173:function(t,e,r){var n=r(714);t.exports=function(t,e,r){return(e=n(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.__esModule=!0,t.exports.default=t.exports},298:function(t,e,r){var n=r(241).default;function o(){"use strict";t.exports=o=function(){return r},t.exports.__esModule=!0,t.exports.default=t.exports;var e,r={},i=Object.prototype,a=i.hasOwnProperty,s=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",f=c.toStringTag||"@@toStringTag";function p(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{p({},"")}catch(e){p=function(t,e,r){return t[e]=r}}function h(t,e,r,n){var o=e&&e.prototype instanceof g?e:g,i=Object.create(o.prototype),a=new M(n||[]);return s(i,"_invoke",{value:S(t,r,a)}),i}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=h;var y="suspendedStart",v="executing",m="completed",x={};function g(){}function w(){}function b(){}var j={};p(j,u,(function(){return this}));var P=Object.getPrototypeOf,_=P&&P(P(C([])));_&&_!==i&&a.call(_,u)&&(j=_);var k=b.prototype=g.prototype=Object.create(j);function L(t){["next","throw","return"].forEach((function(e){p(t,e,(function(t){return this._invoke(e,t)}))}))}function E(t,e){function r(o,i,s,c){var u=d(t[o],t,i);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==n(f)&&a.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,s,c)}),(function(t){r("throw",t,s,c)})):e.resolve(f).then((function(t){l.value=t,s(l)}),(function(t){return r("throw",t,s,c)}))}c(u.arg)}var o;s(this,"_invoke",{value:function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}})}function S(t,r,n){var o=y;return function(i,a){if(o===v)throw new Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var c=T(s,n);if(c){if(c===x)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===y)throw o=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=v;var u=d(t,r,n);if("normal"===u.type){if(o=n.done?m:"suspendedYield",u.arg===x)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=m,n.method="throw",n.arg=u.arg)}}}function T(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,T(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),x;var i=d(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,x;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,x):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,x)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function M(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function C(t){if(t||""===t){var r=t[u];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function r(){for(;++o<t.length;)if(a.call(t,o))return r.value=t[o],r.done=!1,r;return r.value=e,r.done=!0,r};return i.next=i}}throw new TypeError(n(t)+" is not iterable")}return w.prototype=b,s(k,"constructor",{value:b,configurable:!0}),s(b,"constructor",{value:w,configurable:!0}),w.displayName=p(b,f,"GeneratorFunction"),r.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===w||"GeneratorFunction"===(e.displayName||e.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,p(t,f,"GeneratorFunction")),t.prototype=Object.create(k),t},r.awrap=function(t){return{__await:t}},L(E.prototype),p(E.prototype,l,(function(){return this})),r.AsyncIterator=E,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new E(h(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},L(k),p(k,f,"Generator"),p(k,u,(function(){return this})),p(k,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=C,M.prototype={constructor:M,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var r in this)"t"===r.charAt(0)&&a.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function n(n,o){return s.type="throw",s.arg=t,r.next=n,o&&(r.method="next",r.arg=e),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=a.call(i,"catchLoc"),u=a.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,x):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),x},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),I(r),x}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;I(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:C(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),x}},r}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},569:function(t,e,r){var n=r(241).default;t.exports=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,e||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports},714:function(t,e,r){var n=r(241).default,o=r(569);t.exports=function(t){var e=o(t,"string");return"symbol"==n(e)?e:String(e)},t.exports.__esModule=!0,t.exports.default=t.exports},241:function(t){function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.exports}r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return function(){"use strict";r.r(n),r.d(n,{AnimationPlayer:function(){return v}});var t=r(298),e=r.n(t),o=r(365),i=r.n(o),a=r(156),s=r.n(a),c=r(499),u=r.n(c),l=r(173),f=r.n(l),p=r(506),h={};for(var d in p)["default","AnimationPlayer"].indexOf(d)<0&&(h[d]=function(t){return p[t]}.bind(0,d));r.d(n,h);var y=function(){function t(){s()(this,t)}var r;return u()(t,null,[{key:"loadImages",value:(r=i()(e()().mark((function t(r){var n,o=this;return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(Array.isArray(r)&&0!==r.length){t.next=2;break}return t.abrupt("return",Promise.resolve());case 2:return n=r.map((function(t,e){if(!t.startsWith("http"))return Promise.resolve();if(o.imageCache.has(t))return console.log("aminofx: ✅ 图片 ".concat(e+1," 已缓存: ").concat(t)),Promise.resolve();if(o.loadingQueue.has(t))return o.loadingQueue.get(t);var r=new Promise((function(r){var n=new Image;n.onload=function(){o.imageCache.set(t,!0),o.loadingQueue.delete(t),console.log("aminofx: ✅ 图片 ".concat(e+1," 加载成功: ").concat(t)),"function"==typeof n.decode?n.decode().then((function(){console.log("aminofx: 🎨 图片 ".concat(e+1," 解码完成: ").concat(t)),r()})).catch((function(){console.log("aminofx: ⚠️ 图片 ".concat(e+1," decode失败,使用fallback: ").concat(t)),r()})):(console.log("aminofx: 📱 图片 ".concat(e+1," 使用兼容模式: ").concat(t)),r())},n.src=t,n.onerror=function(){o.loadingQueue.delete(t),console.error("aminofx: ❌ 图片 ".concat(e+1," 加载失败: ").concat(t)),r()}}));return o.loadingQueue.set(t,r),r})),t.prev=3,t.next=6,Promise.all(n);case 6:console.log("aminofx: 🎉 所有图片资源加载完成"),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(3),console.error("aminofx: ❌ 图片加载过程中出现错误:",t.t0);case 12:case"end":return t.stop()}}),t,null,[[3,9]])}))),function(t){return r.apply(this,arguments)})}]),t}();f()(y,"imageCache",new Map),f()(y,"loadingQueue",new Map);var v=function(){function t(e,r){s()(this,t),f()(this,"container",void 0),f()(this,"options",void 0),f()(this,"isReady",!1),f()(this,"readyPromise",null),f()(this,"loopTimerId",null),this.container=e,this.options=r,this.init()}var r,n,o;return u()(t,[{key:"init",value:(o=i()(e()().mark((function t(){var r,n,o,i,a;return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(Object.assign(this.container.style,{display:"none",width:"100vw",height:"100vh",overflow:"hidden",alignItems:this.options.alignItems||"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.85)",backdropFilter:"blur(10px)"}),!this.options.jsonSchema){t.next=5;break}this.container.innerHTML=this.replacePlaceholders(this.options.jsonSchema.content),t.next=17;break;case 5:if(null===(r=this.options)||void 0===r||!r.jsonUrl){t.next=16;break}return t.next=8,fetch(null===(n=this.options)||void 0===n?void 0:n.jsonUrl);case 8:return i=t.sent,t.next=11,i.json();case 11:a=t.sent,this.options.jsonSchema=a,this.container.innerHTML=this.replacePlaceholders((null===(o=this.options.jsonSchema)||void 0===o?void 0:o.content)||""),t.next=17;break;case 16:throw new Error("没有提供jsonSchema或jsonUrl");case 17:return t.next=19,this.ready();case 19:case"end":return t.stop()}}),t,this)}))),function(){return o.apply(this,arguments)})},{key:"replacePlaceholders",value:function(t){var e=this;return this.options.dynamicData&&t?t.replace(/\{\{(\w+)\}\}|\$\{(\w+)\}/g,(function(t,r,n){var o,i=r||n;return void 0!==(null===(o=e.options.dynamicData)||void 0===o?void 0:o[i])?String(e.options.dynamicData[i]):t})):t}},{key:"handleLoop",value:function(){var t,e,r,n=this;this.options.autoLoop&&null!==(t=this.options.jsonSchema)&&void 0!==t&&t.duration&&(null!==this.loopTimerId&&(clearTimeout(this.loopTimerId),this.loopTimerId=null,console.log("aminofx: 🧹 清理旧的循环定时器")),this.loopTimerId=window.setTimeout((function(){n.container.style.display="none",window.setTimeout((function(){n.loopTimerId=null,n.play()}),100)}),null===(e=this.options.jsonSchema)||void 0===e?void 0:e.duration),console.log("aminofx: 🔄 启动循环定时器,时长: ".concat(null===(r=this.options.jsonSchema)||void 0===r?void 0:r.duration,"ms")))}},{key:"ready",value:(n=i()(e()().mark((function t(){var r=this;return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.isReady){t.next=3;break}return console.log("aminofx: ✅ 动画已准备就绪,直接返回"),t.abrupt("return",Promise.resolve());case 3:if(!this.readyPromise){t.next=6;break}return console.log("aminofx: ⏳ 正在准备中,等待现有Promise..."),t.abrupt("return",this.readyPromise);case 6:return this.readyPromise=new Promise(function(){var t=i()(e()().mark((function t(n){return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,y.loadImages(r.options.preloadImgList||[]);case 3:r.isReady=!0,console.log("aminofx: 🎉 动画准备完成,可以开始播放"),t.next=10;break;case 7:t.prev=7,t.t0=t.catch(0),console.error("aminofx: ❌ 动画准备失败:",t.t0);case 10:n();case 11:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(e){return t.apply(this,arguments)}}()),t.abrupt("return",this.readyPromise);case 8:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"play",value:(r=i()(e()().mark((function t(){return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.isReady){t.next=4;break}return console.warn("aminofx: ⚠️ 动画尚未准备就绪,自动调用ready()..."),t.next=4,this.ready();case 4:this.container.style.display="flex",this.options.autoLoop&&null===this.loopTimerId&&this.handleLoop();case 6:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})},{key:"destroy",value:function(){null!==this.loopTimerId&&(clearTimeout(this.loopTimerId),this.loopTimerId=null,console.log("aminofx: 🧹 销毁时清理循环定时器")),this.container.innerHTML="",this.isReady=!1,this.readyPromise=null,console.log("aminofx: 🗑️ AnimationPlayer 已销毁")}},{key:"updateSchema",value:function(t){this.destroy(),this.options=t,this.init()}}]),t}();function m(t,e){var r=document.getElementById(t);if(!r)throw new Error('Container with id "'.concat(t,'" not found'));var n=document.createElement("div"),o=new v(n,e);return r.appendChild(n),o}n.default=m,window.createCssAnimationPlayer=m}(),n}()}));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["@yqg/aminofx-css-kit"]=e():t["@yqg/aminofx-css-kit"]=e()}(self,(function(){return function(){var t={506:function(){},365:function(t){function e(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}t.exports=function(t){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=t.apply(r,n);function c(t){e(a,o,i,c,u,"next",t)}function u(t){e(a,o,i,c,u,"throw",t)}c(void 0)}))}},t.exports.__esModule=!0,t.exports.default=t.exports},156:function(t){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.__esModule=!0,t.exports.default=t.exports},499:function(t,e,r){var n=r(714);function o(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,n(o.key),o)}}t.exports=function(t,e,r){return e&&o(t.prototype,e),r&&o(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t},t.exports.__esModule=!0,t.exports.default=t.exports},173:function(t,e,r){var n=r(714);t.exports=function(t,e,r){return(e=n(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.__esModule=!0,t.exports.default=t.exports},298:function(t,e,r){var n=r(241).default;function o(){"use strict";t.exports=o=function(){return r},t.exports.__esModule=!0,t.exports.default=t.exports;var e,r={},i=Object.prototype,a=i.hasOwnProperty,c=Object.defineProperty||function(t,e,r){t[e]=r.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",l=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function p(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{p({},"")}catch(e){p=function(t,e,r){return t[e]=r}}function h(t,e,r,n){var o=e&&e.prototype instanceof g?e:g,i=Object.create(o.prototype),a=new M(n||[]);return c(i,"_invoke",{value:S(t,r,a)}),i}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=h;var y="suspendedStart",v="executing",m="completed",x={};function g(){}function w(){}function b(){}var P={};p(P,s,(function(){return this}));var j=Object.getPrototypeOf,k=j&&j(j(N([])));k&&k!==i&&a.call(k,s)&&(P=k);var _=b.prototype=g.prototype=Object.create(P);function L(t){["next","throw","return"].forEach((function(e){p(t,e,(function(t){return this._invoke(e,t)}))}))}function E(t,e){function r(o,i,c,u){var s=d(t[o],t,i);if("throw"!==s.type){var l=s.arg,f=l.value;return f&&"object"==n(f)&&a.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,c,u)}),(function(t){r("throw",t,c,u)})):e.resolve(f).then((function(t){l.value=t,c(l)}),(function(t){return r("throw",t,c,u)}))}u(s.arg)}var o;c(this,"_invoke",{value:function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}})}function S(t,r,n){var o=y;return function(i,a){if(o===v)throw new Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=T(c,n);if(u){if(u===x)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===y)throw o=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=v;var s=d(t,r,n);if("normal"===s.type){if(o=n.done?m:"suspendedYield",s.arg===x)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=m,n.method="throw",n.arg=s.arg)}}}function T(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,T(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),x;var i=d(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,x;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,x):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,x)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function M(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function N(t){if(t||""===t){var r=t[s];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function r(){for(;++o<t.length;)if(a.call(t,o))return r.value=t[o],r.done=!1,r;return r.value=e,r.done=!0,r};return i.next=i}}throw new TypeError(n(t)+" is not iterable")}return w.prototype=b,c(_,"constructor",{value:b,configurable:!0}),c(b,"constructor",{value:w,configurable:!0}),w.displayName=p(b,f,"GeneratorFunction"),r.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===w||"GeneratorFunction"===(e.displayName||e.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,p(t,f,"GeneratorFunction")),t.prototype=Object.create(_),t},r.awrap=function(t){return{__await:t}},L(E.prototype),p(E.prototype,l,(function(){return this})),r.AsyncIterator=E,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new E(h(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},L(_),p(_,f,"Generator"),p(_,s,(function(){return this})),p(_,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=N,M.prototype={constructor:M,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var r in this)"t"===r.charAt(0)&&a.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function n(n,o){return c.type="throw",c.arg=t,r.next=n,o&&(r.method="next",r.arg=e),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=a.call(i,"catchLoc"),s=a.call(i,"finallyLoc");if(u&&s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,x):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),x},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),I(r),x}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;I(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:N(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),x}},r}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},569:function(t,e,r){var n=r(241).default;t.exports=function(t,e){if("object"!=n(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,e||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports},714:function(t,e,r){var n=r(241).default,o=r(569);t.exports=function(t){var e=o(t,"string");return"symbol"==n(e)?e:String(e)},t.exports.__esModule=!0,t.exports.default=t.exports},241:function(t){function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.exports}r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return function(){"use strict";r.r(n),r.d(n,{AnimationPlayer:function(){return v}});var t=r(298),e=r.n(t),o=r(365),i=r.n(o),a=r(156),c=r.n(a),u=r(499),s=r.n(u),l=r(173),f=r.n(l),p=r(506),h={};for(var d in p)["default","AnimationPlayer"].indexOf(d)<0&&(h[d]=function(t){return p[t]}.bind(0,d));r.d(n,h);var y=function(){function t(){c()(this,t)}var r;return s()(t,null,[{key:"loadImages",value:(r=i()(e()().mark((function t(r){var n,o=this;return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(Array.isArray(r)&&0!==r.length){t.next=2;break}return t.abrupt("return",Promise.resolve());case 2:return n=r.map((function(t,e){if(!t.startsWith("http"))return Promise.resolve();if(o.imageCache.has(t))return console.log("aminofx: ✅ 图片 ".concat(e+1," 已缓存: ").concat(t)),Promise.resolve();if(o.loadingQueue.has(t))return o.loadingQueue.get(t);var r=new Promise((function(r){var n=new Image;n.onload=function(){o.imageCache.set(t,!0),o.loadingQueue.delete(t),console.log("aminofx: ✅ 图片 ".concat(e+1," 加载成功: ").concat(t)),"function"==typeof n.decode?n.decode().then((function(){console.log("aminofx: 🎨 图片 ".concat(e+1," 解码完成: ").concat(t)),r()})).catch((function(){console.log("aminofx: ⚠️ 图片 ".concat(e+1," decode失败,使用fallback: ").concat(t)),r()})):(console.log("aminofx: 📱 图片 ".concat(e+1," 使用兼容模式: ").concat(t)),r())},n.src=t,n.onerror=function(){o.loadingQueue.delete(t),console.error("aminofx: ❌ 图片 ".concat(e+1," 加载失败: ").concat(t)),r()}}));return o.loadingQueue.set(t,r),r})),t.prev=3,t.next=6,Promise.all(n);case 6:console.log("aminofx: 🎉 所有图片资源加载完成"),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(3),console.error("aminofx: ❌ 图片加载过程中出现错误:",t.t0);case 12:case"end":return t.stop()}}),t,null,[[3,9]])}))),function(t){return r.apply(this,arguments)})}]),t}();f()(y,"imageCache",new Map),f()(y,"loadingQueue",new Map);var v=function(){function t(e,r){c()(this,t),f()(this,"container",void 0),f()(this,"options",void 0),f()(this,"isReady",!1),f()(this,"readyPromise",null),f()(this,"loopTimerId",null),this.container=e,this.options=r,this.init()}var r,n,o;return s()(t,[{key:"init",value:(o=i()(e()().mark((function t(){return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return Object.assign(this.container.style,{display:"none",width:"100vw",height:"100vh",overflow:"hidden",alignItems:this.options.alignItems||"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.85)",backdropFilter:"blur(10px)"}),t.next=3,this.ready();case 3:case"end":return t.stop()}}),t,this)}))),function(){return o.apply(this,arguments)})},{key:"replacePlaceholders",value:function(t){var e=this;return this.options.dynamicData&&t?t.replace(/\{\{(\w+)\}\}|\$\{(\w+)\}/g,(function(t,r,n){var o,i=r||n;return void 0!==(null===(o=e.options.dynamicData)||void 0===o?void 0:o[i])?String(e.options.dynamicData[i]):t})):t}},{key:"handleLoop",value:function(){var t,e,r,n=this;this.options.autoLoop&&Number(null===(t=this.options.jsonSchema)||void 0===t?void 0:t.duration)&&(null!==this.loopTimerId&&(clearTimeout(this.loopTimerId),this.loopTimerId=null,console.log("aminofx: 🧹 清理旧的循环定时器")),this.loopTimerId=window.setTimeout((function(){n.container.style.display="none",window.setTimeout((function(){n.loopTimerId=null,n.play()}),100)}),Number(null===(e=this.options.jsonSchema)||void 0===e?void 0:e.duration)),console.log("aminofx: 🔄 启动循环定时器,时长: ".concat(null===(r=this.options.jsonSchema)||void 0===r?void 0:r.duration,"ms")))}},{key:"ready",value:(n=i()(e()().mark((function t(){var r=this;return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.isReady){t.next=3;break}return console.log("aminofx: ✅ 动画已准备就绪,直接返回"),t.abrupt("return",Promise.resolve());case 3:if(!this.readyPromise){t.next=6;break}return console.log("aminofx: ⏳ 正在准备中,等待现有Promise..."),t.abrupt("return",this.readyPromise);case 6:return this.readyPromise=new Promise(function(){var t=i()(e()().mark((function t(n,o){var a,c;return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,a=new Promise(function(){var t=i()(e()().mark((function t(n,o){var i,a,c,u,s;return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!r.options.jsonSchema){t.next=5;break}r.container.innerHTML=r.replacePlaceholders(r.options.jsonSchema.content),n(),t.next=24;break;case 5:if(null===(i=r.options)||void 0===i||!i.jsonUrl){t.next=23;break}return t.prev=6,t.next=9,fetch(null===(a=r.options)||void 0===a?void 0:a.jsonUrl);case 9:return u=t.sent,t.next=12,u.json();case 12:s=t.sent,r.options.jsonSchema=s,r.container.innerHTML=r.replacePlaceholders((null===(c=r.options.jsonSchema)||void 0===c?void 0:c.content)||""),n(),t.next=21;break;case 18:t.prev=18,t.t0=t.catch(6),o(t.t0);case 21:t.next=24;break;case 23:throw new Error("没有提供jsonSchema或jsonUrl");case 24:case"end":return t.stop()}}),t,null,[[6,18]])})));return function(e,r){return t.apply(this,arguments)}}()),c=y.loadImages(r.options.preloadImgList||[]),t.next=5,Promise.all([a,c]);case 5:r.isReady=!0,n(),console.log("aminofx: 🎉 动画准备完成,可以开始播放"),t.next=14;break;case 10:t.prev=10,t.t0=t.catch(0),o(t.t0),console.error("aminofx: ❌ 动画准备失败:",t.t0);case 14:case"end":return t.stop()}}),t,null,[[0,10]])})));return function(e,r){return t.apply(this,arguments)}}()),t.abrupt("return",this.readyPromise);case 8:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"play",value:(r=i()(e()().mark((function t(){return e()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.isReady){t.next=4;break}return console.warn("aminofx: ⚠️ 动画尚未准备就绪,自动调用ready()..."),t.next=4,this.ready();case 4:this.container.style.display="flex",this.options.autoLoop&&null===this.loopTimerId&&this.handleLoop();case 6:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})},{key:"destroy",value:function(){null!==this.loopTimerId&&(clearTimeout(this.loopTimerId),this.loopTimerId=null,console.log("aminofx: 🧹 销毁时清理循环定时器")),this.container.innerHTML="",this.isReady=!1,this.readyPromise=null,console.log("aminofx: 🗑️ AnimationPlayer 已销毁")}},{key:"updateSchema",value:function(t){this.destroy(),this.options=t,this.init()}}]),t}();function m(t,e){var r=document.getElementById(t);if(!r)throw new Error('Container with id "'.concat(t,'" not found'));var n=document.createElement("div"),o=new v(n,e);return r.appendChild(n),o}n.default=m,window.createCssAnimationPlayer=m}(),n}()}));
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -110,21 +110,6 @@ class AnimationPlayer {
|
|
|
110
110
|
backdropFilter: 'blur(10px)',
|
|
111
111
|
});
|
|
112
112
|
|
|
113
|
-
if (this.options.jsonSchema) {
|
|
114
|
-
this.container.innerHTML = this.replacePlaceholders(
|
|
115
|
-
this.options.jsonSchema.content,
|
|
116
|
-
);
|
|
117
|
-
} else if (this.options?.jsonUrl) {
|
|
118
|
-
// 通过url拉取资源
|
|
119
|
-
const response = await fetch(this.options?.jsonUrl);
|
|
120
|
-
const data = await response.json();
|
|
121
|
-
this.options.jsonSchema = data;
|
|
122
|
-
this.container.innerHTML = this.replacePlaceholders(
|
|
123
|
-
this.options.jsonSchema?.content || '',
|
|
124
|
-
);
|
|
125
|
-
} else {
|
|
126
|
-
throw new Error('没有提供jsonSchema或jsonUrl');
|
|
127
|
-
}
|
|
128
113
|
await this.ready();
|
|
129
114
|
}
|
|
130
115
|
|
|
@@ -153,7 +138,7 @@ class AnimationPlayer {
|
|
|
153
138
|
}
|
|
154
139
|
|
|
155
140
|
private handleLoop() {
|
|
156
|
-
if (!this.options.autoLoop || !this.options.jsonSchema?.duration) {
|
|
141
|
+
if (!this.options.autoLoop || !Number(this.options.jsonSchema?.duration)) {
|
|
157
142
|
return;
|
|
158
143
|
}
|
|
159
144
|
|
|
@@ -171,7 +156,7 @@ class AnimationPlayer {
|
|
|
171
156
|
this.loopTimerId = null;
|
|
172
157
|
this.play();
|
|
173
158
|
}, 100);
|
|
174
|
-
}, this.options.jsonSchema?.duration);
|
|
159
|
+
}, Number(this.options.jsonSchema?.duration));
|
|
175
160
|
|
|
176
161
|
console.log(
|
|
177
162
|
`aminofx: 🔄 启动循环定时器,时长: ${this.options.jsonSchema?.duration}ms`,
|
|
@@ -189,15 +174,45 @@ class AnimationPlayer {
|
|
|
189
174
|
return this.readyPromise;
|
|
190
175
|
}
|
|
191
176
|
|
|
192
|
-
this.readyPromise = new Promise<void>(async (resolve) => {
|
|
177
|
+
this.readyPromise = new Promise<void>(async (resolve, reject) => {
|
|
193
178
|
try {
|
|
194
|
-
|
|
179
|
+
const jsonPromise = new Promise<void>(async (resolve, reject) => {
|
|
180
|
+
// 优先使用jsonSchema
|
|
181
|
+
if (this.options.jsonSchema) {
|
|
182
|
+
this.container.innerHTML = this.replacePlaceholders(
|
|
183
|
+
this.options.jsonSchema.content,
|
|
184
|
+
);
|
|
185
|
+
resolve();
|
|
186
|
+
} else if (this.options?.jsonUrl) {
|
|
187
|
+
try {
|
|
188
|
+
// 通过url拉取资源
|
|
189
|
+
const response = await fetch(this.options?.jsonUrl);
|
|
190
|
+
const data = await response.json();
|
|
191
|
+
this.options.jsonSchema = data;
|
|
192
|
+
this.container.innerHTML = this.replacePlaceholders(
|
|
193
|
+
this.options.jsonSchema?.content || '',
|
|
194
|
+
);
|
|
195
|
+
resolve();
|
|
196
|
+
} catch (error) {
|
|
197
|
+
reject(error);
|
|
198
|
+
}
|
|
199
|
+
} else {
|
|
200
|
+
throw new Error('没有提供jsonSchema或jsonUrl');
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
const imgPromise = ResourceLoader.loadImages(
|
|
205
|
+
this.options.preloadImgList || [],
|
|
206
|
+
);
|
|
207
|
+
|
|
208
|
+
await Promise.all([jsonPromise, imgPromise]);
|
|
195
209
|
this.isReady = true; // 设置准备完成状态
|
|
210
|
+
resolve();
|
|
196
211
|
console.log('aminofx: 🎉 动画准备完成,可以开始播放');
|
|
197
212
|
} catch (error) {
|
|
213
|
+
reject(error);
|
|
198
214
|
console.error('aminofx: ❌ 动画准备失败:', error);
|
|
199
215
|
}
|
|
200
|
-
resolve();
|
|
201
216
|
});
|
|
202
217
|
|
|
203
218
|
return this.readyPromise;
|