hexo-theme-shokax 0.2.9 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_config.yml +4 -4
- package/layout/_mixin/comment.pug +2 -1
- package/layout/_partials/layout.pug +8 -8
- package/layout/post.pug +2 -1
- package/package.json +1 -1
- package/source/js/_app/components.js +26 -27
- package/source/js/_app/fireworks.js +28 -42
- package/source/js/_app/global.js +23 -23
- package/source/js/_app/library.js +37 -37
- package/source/js/_app/page.js +76 -77
- package/source/js/_app/player.js +87 -91
- package/source/js/_app/vue.js +6 -6
package/source/js/_app/player.js
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
let NOWPLAYING = null;
|
2
2
|
const isMobile = /mobile/i.test(window.navigator.userAgent);
|
3
|
-
const mediaPlayer =
|
3
|
+
const mediaPlayer = (t, config) => {
|
4
4
|
const buttons = {
|
5
5
|
el: {},
|
6
|
-
create
|
6
|
+
create() {
|
7
7
|
if (!t.player.options.btns) {
|
8
8
|
return;
|
9
9
|
}
|
10
|
-
t.player.options.btns.forEach(
|
10
|
+
t.player.options.btns.forEach((item) => {
|
11
11
|
if (buttons.el[item]) {
|
12
12
|
return;
|
13
13
|
}
|
14
14
|
buttons.el[item] = t.createChild('div', {
|
15
15
|
className: item + ' btn',
|
16
|
-
onclick
|
17
|
-
t.player.fetch().then(
|
16
|
+
onclick(event) {
|
17
|
+
t.player.fetch().then(() => {
|
18
18
|
t.player.options.events[item](event);
|
19
19
|
});
|
20
20
|
}
|
@@ -34,12 +34,12 @@ const mediaPlayer = function (t, config) {
|
|
34
34
|
return;
|
35
35
|
}
|
36
36
|
const that = controller;
|
37
|
-
t.player.options.controls.forEach(
|
37
|
+
t.player.options.controls.forEach((item) => {
|
38
38
|
if (that.btns[item]) {
|
39
39
|
return;
|
40
40
|
}
|
41
41
|
const opt = {
|
42
|
-
onclick
|
42
|
+
onclick(event) {
|
43
43
|
that.events[item] ? that.events[item](event) : t.player.options.events[item](event);
|
44
44
|
}
|
45
45
|
};
|
@@ -63,7 +63,7 @@ const mediaPlayer = function (t, config) {
|
|
63
63
|
that.btns.volume.bar = that.btns.volume.child('.bar');
|
64
64
|
},
|
65
65
|
events: {
|
66
|
-
mode
|
66
|
+
mode(e) {
|
67
67
|
switch (t.player.options.mode) {
|
68
68
|
case 'loop':
|
69
69
|
t.player.options.mode = 'random';
|
@@ -77,16 +77,16 @@ const mediaPlayer = function (t, config) {
|
|
77
77
|
controller.btns.mode.className = 'mode ' + t.player.options.mode + ' btn';
|
78
78
|
$storage.set('_PlayerMode', t.player.options.mode);
|
79
79
|
},
|
80
|
-
volume
|
80
|
+
volume(e) {
|
81
81
|
e.preventDefault();
|
82
82
|
const current = e.currentTarget;
|
83
83
|
let drag = false;
|
84
|
-
const thumbMove =
|
84
|
+
const thumbMove = (e) => {
|
85
85
|
e.preventDefault();
|
86
86
|
t.player.volume(controller.percent(e, current));
|
87
87
|
drag = true;
|
88
88
|
};
|
89
|
-
const thumbUp =
|
89
|
+
const thumbUp = (e) => {
|
90
90
|
e.preventDefault();
|
91
91
|
current.removeEventListener(utils.nameMap.dragEnd, thumbUp);
|
92
92
|
current.removeEventListener(utils.nameMap.dragMove, thumbMove);
|
@@ -108,20 +108,20 @@ const mediaPlayer = function (t, config) {
|
|
108
108
|
current.addEventListener(utils.nameMap.dragMove, thumbMove);
|
109
109
|
current.addEventListener(utils.nameMap.dragEnd, thumbUp);
|
110
110
|
},
|
111
|
-
backward
|
111
|
+
backward(e) {
|
112
112
|
controller.step = 'prev';
|
113
113
|
t.player.mode();
|
114
114
|
},
|
115
|
-
forward
|
115
|
+
forward(e) {
|
116
116
|
controller.step = 'next';
|
117
117
|
t.player.mode();
|
118
118
|
}
|
119
119
|
},
|
120
|
-
update
|
120
|
+
update(percent) {
|
121
121
|
controller.btns.volume.className = 'volume ' + (!source.muted && percent > 0 ? 'on' : 'off') + ' btn';
|
122
122
|
controller.btns.volume.bar.changeOrGetWidth(Math.floor(percent * 100) + '%');
|
123
123
|
},
|
124
|
-
percent
|
124
|
+
percent(e, el) {
|
125
125
|
let percentage = ((e.clientX || e.changedTouches[0].clientX) - el.left()) / el.changeOrGetWidth();
|
126
126
|
percentage = Math.max(percentage, 0);
|
127
127
|
return Math.min(percentage, 1);
|
@@ -130,7 +130,7 @@ const mediaPlayer = function (t, config) {
|
|
130
130
|
const progress = {
|
131
131
|
el: null,
|
132
132
|
bar: null,
|
133
|
-
create
|
133
|
+
create() {
|
134
134
|
const current = playlist.current().el;
|
135
135
|
if (current) {
|
136
136
|
if (progress.el) {
|
@@ -150,11 +150,11 @@ const mediaPlayer = function (t, config) {
|
|
150
150
|
playlist.scroll();
|
151
151
|
}
|
152
152
|
},
|
153
|
-
update
|
153
|
+
update(percent) {
|
154
154
|
progress.bar.changeOrGetWidth(Math.floor(percent * 100) + '%');
|
155
155
|
progress.el.attr('data-ptime', utils.secondToTime(percent * source.duration));
|
156
156
|
},
|
157
|
-
seeking
|
157
|
+
seeking(type) {
|
158
158
|
if (type) {
|
159
159
|
progress.el.addClass('seeking');
|
160
160
|
}
|
@@ -162,21 +162,21 @@ const mediaPlayer = function (t, config) {
|
|
162
162
|
progress.el.removeClass('seeking');
|
163
163
|
}
|
164
164
|
},
|
165
|
-
percent
|
165
|
+
percent(e, el) {
|
166
166
|
let percentage = ((e.clientX || e.changedTouches[0].clientX) - el.left()) / el.changeOrGetWidth();
|
167
167
|
percentage = Math.max(percentage, 0);
|
168
168
|
return Math.min(percentage, 1);
|
169
169
|
},
|
170
|
-
drag
|
170
|
+
drag(e) {
|
171
171
|
e.preventDefault();
|
172
172
|
const current = playlist.current().el;
|
173
|
-
const thumbMove =
|
173
|
+
const thumbMove = (e) => {
|
174
174
|
e.preventDefault();
|
175
175
|
const percentage = progress.percent(e, current);
|
176
176
|
progress.update(percentage);
|
177
177
|
lyrics.update(percentage * source.duration);
|
178
178
|
};
|
179
|
-
const thumbUp =
|
179
|
+
const thumbUp = (e) => {
|
180
180
|
e.preventDefault();
|
181
181
|
current.removeEventListener(utils.nameMap.dragEnd, thumbUp);
|
182
182
|
current.removeEventListener(utils.nameMap.dragMove, thumbMove);
|
@@ -194,7 +194,7 @@ const mediaPlayer = function (t, config) {
|
|
194
194
|
};
|
195
195
|
const preview = {
|
196
196
|
el: null,
|
197
|
-
create
|
197
|
+
create() {
|
198
198
|
const current = playlist.current();
|
199
199
|
preview.el.innerHTML = '<div class="cover"><div class="disc"><img src="' + (current.cover) + '" class="blur" alt="music cover"/></div></div>' +
|
200
200
|
'<div class="info"><h4 class="title">' + current.name + '</h4><span>' + current.artist + '</span>' +
|
@@ -210,7 +210,7 @@ const mediaPlayer = function (t, config) {
|
|
210
210
|
index: -1,
|
211
211
|
errnum: 0,
|
212
212
|
add: (group, list) => {
|
213
|
-
list.forEach(
|
213
|
+
list.forEach((item) => {
|
214
214
|
item.group = group;
|
215
215
|
item.name = item.name || item.title || 'Meida name';
|
216
216
|
item.artist = item.artist || item.author || 'Anonymous';
|
@@ -219,7 +219,7 @@ const mediaPlayer = function (t, config) {
|
|
219
219
|
playlist.data.push(item);
|
220
220
|
});
|
221
221
|
},
|
222
|
-
clear
|
222
|
+
clear() {
|
223
223
|
playlist.data = [];
|
224
224
|
playlist.el.innerHTML = '';
|
225
225
|
if (playlist.index !== -1) {
|
@@ -227,9 +227,9 @@ const mediaPlayer = function (t, config) {
|
|
227
227
|
t.player.fetch();
|
228
228
|
}
|
229
229
|
},
|
230
|
-
create
|
230
|
+
create() {
|
231
231
|
const el = playlist.el;
|
232
|
-
playlist.data.map(
|
232
|
+
playlist.data.map((item, index) => {
|
233
233
|
if (item.el) {
|
234
234
|
return null;
|
235
235
|
}
|
@@ -249,7 +249,7 @@ const mediaPlayer = function (t, config) {
|
|
249
249
|
item.el = tab.child('ol').createChild('li', {
|
250
250
|
title: item.name + ' - ' + item.artist,
|
251
251
|
innerHTML: '<span class="info"><span>' + item.name + '</span><span>' + item.artist + '</span></span>',
|
252
|
-
onclick
|
252
|
+
onclick(event) {
|
253
253
|
const current = event.currentTarget;
|
254
254
|
if (playlist.index === index && progress.el) {
|
255
255
|
if (source.paused) {
|
@@ -268,10 +268,10 @@ const mediaPlayer = function (t, config) {
|
|
268
268
|
});
|
269
269
|
tabFormat();
|
270
270
|
},
|
271
|
-
current
|
271
|
+
current() {
|
272
272
|
return this.data[this.index];
|
273
273
|
},
|
274
|
-
scroll
|
274
|
+
scroll() {
|
275
275
|
const item = this.current();
|
276
276
|
let li = this.el.child('li.active');
|
277
277
|
li && li.removeClass('active');
|
@@ -284,14 +284,14 @@ const mediaPlayer = function (t, config) {
|
|
284
284
|
pageScroll(item.el, item.el.offsetTop);
|
285
285
|
return this;
|
286
286
|
},
|
287
|
-
title
|
287
|
+
title() {
|
288
288
|
if (source.paused) {
|
289
289
|
return;
|
290
290
|
}
|
291
291
|
const current = this.current();
|
292
292
|
document.title = 'Now Playing...' + current.name + ' - ' + current.artist + ' | ' + originTitle;
|
293
293
|
},
|
294
|
-
error
|
294
|
+
error() {
|
295
295
|
const current = this.current();
|
296
296
|
current.el.removeClass('current').addClass('error');
|
297
297
|
current.error = true;
|
@@ -300,7 +300,7 @@ const mediaPlayer = function (t, config) {
|
|
300
300
|
};
|
301
301
|
const info = {
|
302
302
|
el: null,
|
303
|
-
create
|
303
|
+
create() {
|
304
304
|
if (this.el) {
|
305
305
|
return;
|
306
306
|
}
|
@@ -312,10 +312,10 @@ const mediaPlayer = function (t, config) {
|
|
312
312
|
playlist.el = this.el.child('.playlist');
|
313
313
|
controller.el = this.el.child('.controller');
|
314
314
|
},
|
315
|
-
hide
|
315
|
+
hide() {
|
316
316
|
const el = this.el;
|
317
317
|
el.addClass('hide');
|
318
|
-
window.setTimeout(
|
318
|
+
window.setTimeout(() => {
|
319
319
|
el.removeClass('show hide');
|
320
320
|
}, 300);
|
321
321
|
}
|
@@ -326,7 +326,7 @@ const mediaPlayer = function (t, config) {
|
|
326
326
|
btns: ['play-pause', 'music'],
|
327
327
|
controls: ['mode', 'backward', 'play-pause', 'forward', 'volume'],
|
328
328
|
events: {
|
329
|
-
'play-pause'
|
329
|
+
'play-pause'(event) {
|
330
330
|
if (source.paused) {
|
331
331
|
t.player.play();
|
332
332
|
}
|
@@ -334,7 +334,7 @@ const mediaPlayer = function (t, config) {
|
|
334
334
|
t.player.pause();
|
335
335
|
}
|
336
336
|
},
|
337
|
-
music
|
337
|
+
music(event) {
|
338
338
|
if (info.el.hasClass('show')) {
|
339
339
|
info.hide();
|
340
340
|
}
|
@@ -346,10 +346,10 @@ const mediaPlayer = function (t, config) {
|
|
346
346
|
}
|
347
347
|
};
|
348
348
|
const utils = {
|
349
|
-
random
|
349
|
+
random(len) {
|
350
350
|
return Math.floor((Math.random() * len));
|
351
351
|
},
|
352
|
-
parse
|
352
|
+
parse(link) {
|
353
353
|
let result = [];
|
354
354
|
[
|
355
355
|
['music.163.com.*song.*id=(\\d+)', 'netease', 'song'],
|
@@ -366,7 +366,7 @@ const mediaPlayer = function (t, config) {
|
|
366
366
|
['xiami.com.*album/(\\w+)', 'xiami', 'album'],
|
367
367
|
['xiami.com.*artist/(\\w+)', 'xiami', 'artist'],
|
368
368
|
['xiami.com.*collect/(\\w+)', 'xiami', 'playlist']
|
369
|
-
].forEach(
|
369
|
+
].forEach((rule) => {
|
370
370
|
const patt = new RegExp(rule[0]);
|
371
371
|
const res = patt.exec(link);
|
372
372
|
if (res !== null) {
|
@@ -375,10 +375,10 @@ const mediaPlayer = function (t, config) {
|
|
375
375
|
});
|
376
376
|
return result;
|
377
377
|
},
|
378
|
-
fetch
|
378
|
+
fetch(source) {
|
379
379
|
const list = [];
|
380
|
-
return new Promise(
|
381
|
-
source.forEach(
|
380
|
+
return new Promise((resolve, reject) => {
|
381
|
+
source.forEach((raw) => {
|
382
382
|
const meta = utils.parse(raw);
|
383
383
|
if (meta[0]) {
|
384
384
|
const skey = JSON.stringify(meta);
|
@@ -389,9 +389,9 @@ const mediaPlayer = function (t, config) {
|
|
389
389
|
}
|
390
390
|
else {
|
391
391
|
fetch(`${CONFIG.playerAPI}/meting/?server=` + meta[0] + '&type=' + meta[1] + '&id=' + meta[2] + '&r=' + Math.random())
|
392
|
-
.then(
|
392
|
+
.then((response) => {
|
393
393
|
return response.json();
|
394
|
-
}).then(
|
394
|
+
}).then((json) => {
|
395
395
|
$storage.set(skey, JSON.stringify(json));
|
396
396
|
list.push(...json);
|
397
397
|
resolve(list);
|
@@ -406,8 +406,8 @@ const mediaPlayer = function (t, config) {
|
|
406
406
|
});
|
407
407
|
});
|
408
408
|
},
|
409
|
-
secondToTime
|
410
|
-
const add0 =
|
409
|
+
secondToTime(second) {
|
410
|
+
const add0 = (num) => {
|
411
411
|
return isNaN(num) ? '00' : (num < 10 ? '0' + num : '' + num);
|
412
412
|
};
|
413
413
|
const hour = Math.floor(second / 3600);
|
@@ -425,7 +425,7 @@ const mediaPlayer = function (t, config) {
|
|
425
425
|
t.player = {
|
426
426
|
_id: utils.random(999999),
|
427
427
|
group: true,
|
428
|
-
load
|
428
|
+
load(newList) {
|
429
429
|
let d = '';
|
430
430
|
if (newList && newList.length > 0) {
|
431
431
|
if (this.options.rawList !== newList) {
|
@@ -443,7 +443,7 @@ const mediaPlayer = function (t, config) {
|
|
443
443
|
}
|
444
444
|
return this;
|
445
445
|
},
|
446
|
-
fetch
|
446
|
+
fetch() {
|
447
447
|
return new Promise((resolve, reject) => {
|
448
448
|
if (playlist.data.length > 0) {
|
449
449
|
resolve(true);
|
@@ -451,8 +451,8 @@ const mediaPlayer = function (t, config) {
|
|
451
451
|
else {
|
452
452
|
if (this.options.rawList) {
|
453
453
|
const promises = [];
|
454
|
-
this.options.rawList.forEach(
|
455
|
-
promises.push(new Promise(
|
454
|
+
this.options.rawList.forEach((raw, index) => {
|
455
|
+
promises.push(new Promise((resolve, reject) => {
|
456
456
|
let group = index;
|
457
457
|
let source;
|
458
458
|
if (!raw.list) {
|
@@ -464,13 +464,13 @@ const mediaPlayer = function (t, config) {
|
|
464
464
|
this.group = true;
|
465
465
|
source = raw.list;
|
466
466
|
}
|
467
|
-
utils.fetch(source).then(
|
467
|
+
utils.fetch(source).then((list) => {
|
468
468
|
playlist.add(group, list);
|
469
469
|
resolve(0);
|
470
470
|
});
|
471
471
|
}));
|
472
472
|
});
|
473
|
-
Promise.all(promises).then(
|
473
|
+
Promise.all(promises).then(() => {
|
474
474
|
resolve(true);
|
475
475
|
});
|
476
476
|
}
|
@@ -483,13 +483,13 @@ const mediaPlayer = function (t, config) {
|
|
483
483
|
}
|
484
484
|
});
|
485
485
|
},
|
486
|
-
mode
|
486
|
+
mode() {
|
487
487
|
const total = playlist.data.length;
|
488
488
|
if (!total || playlist.errnum === total) {
|
489
489
|
return;
|
490
490
|
}
|
491
491
|
const step = controller.step === 'next' ? 1 : -1;
|
492
|
-
const next =
|
492
|
+
const next = () => {
|
493
493
|
let index = playlist.index + step;
|
494
494
|
if (index > total || index < 0) {
|
495
495
|
index = controller.step === 'next' ? 0 : total - 1;
|
@@ -523,7 +523,7 @@ const mediaPlayer = function (t, config) {
|
|
523
523
|
}
|
524
524
|
this.init();
|
525
525
|
},
|
526
|
-
switch
|
526
|
+
switch(index) {
|
527
527
|
if (typeof index === 'number' &&
|
528
528
|
index !== playlist.index &&
|
529
529
|
playlist.current() &&
|
@@ -532,7 +532,7 @@ const mediaPlayer = function (t, config) {
|
|
532
532
|
this.init();
|
533
533
|
}
|
534
534
|
},
|
535
|
-
init
|
535
|
+
init() {
|
536
536
|
const item = playlist.current();
|
537
537
|
if (!item || item.error) {
|
538
538
|
this.mode();
|
@@ -555,33 +555,33 @@ const mediaPlayer = function (t, config) {
|
|
555
555
|
this.play();
|
556
556
|
}
|
557
557
|
},
|
558
|
-
play
|
558
|
+
play() {
|
559
559
|
NOWPLAYING && NOWPLAYING.player.pause();
|
560
560
|
if (playlist.current().error) {
|
561
561
|
this.mode();
|
562
562
|
return;
|
563
563
|
}
|
564
|
-
source.play().then(
|
564
|
+
source.play().then(() => {
|
565
565
|
playlist.scroll();
|
566
|
-
}).catch(
|
566
|
+
}).catch((e) => {
|
567
567
|
});
|
568
568
|
},
|
569
|
-
pause
|
569
|
+
pause() {
|
570
570
|
source.pause();
|
571
571
|
document.title = originTitle;
|
572
572
|
},
|
573
|
-
stop
|
573
|
+
stop() {
|
574
574
|
source.pause();
|
575
575
|
source.currentTime = 0;
|
576
576
|
document.title = originTitle;
|
577
577
|
},
|
578
|
-
seek
|
578
|
+
seek(time) {
|
579
579
|
time = Math.max(time, 0);
|
580
580
|
time = Math.min(time, source.duration);
|
581
581
|
source.currentTime = time;
|
582
582
|
progress.update(time / source.duration);
|
583
583
|
},
|
584
|
-
muted
|
584
|
+
muted(status) {
|
585
585
|
if (status === 'muted') {
|
586
586
|
source.muted = status;
|
587
587
|
$storage.set('_PlayerMuted', status);
|
@@ -593,14 +593,14 @@ const mediaPlayer = function (t, config) {
|
|
593
593
|
controller.update(source.volume);
|
594
594
|
}
|
595
595
|
},
|
596
|
-
volume
|
596
|
+
volume(percentage) {
|
597
597
|
if (!isNaN(percentage)) {
|
598
598
|
controller.update(percentage);
|
599
599
|
$storage.set('_PlayerVolume', percentage);
|
600
600
|
source.volume = percentage;
|
601
601
|
}
|
602
602
|
},
|
603
|
-
mini
|
603
|
+
mini() {
|
604
604
|
info.hide();
|
605
605
|
}
|
606
606
|
};
|
@@ -608,16 +608,16 @@ const mediaPlayer = function (t, config) {
|
|
608
608
|
el: null,
|
609
609
|
data: null,
|
610
610
|
index: 0,
|
611
|
-
create
|
611
|
+
create(box) {
|
612
612
|
const current = playlist.index;
|
613
613
|
const raw = playlist.current().lrc;
|
614
|
-
const callback =
|
614
|
+
const callback = (body) => {
|
615
615
|
if (current !== playlist.index) {
|
616
616
|
return;
|
617
617
|
}
|
618
618
|
this.data = this.parse(body);
|
619
619
|
let lrc = '';
|
620
|
-
this.data.forEach(
|
620
|
+
this.data.forEach((line, index) => {
|
621
621
|
lrc += '<p' + (index === 0 ? ' class="current"' : '') + '>' + line[1] + '</p>';
|
622
622
|
});
|
623
623
|
this.el = box.createChild('div', {
|
@@ -633,7 +633,7 @@ const mediaPlayer = function (t, config) {
|
|
633
633
|
callback(raw);
|
634
634
|
}
|
635
635
|
},
|
636
|
-
update
|
636
|
+
update(currentTime) {
|
637
637
|
if (!this.data) {
|
638
638
|
return;
|
639
639
|
}
|
@@ -649,9 +649,9 @@ const mediaPlayer = function (t, config) {
|
|
649
649
|
}
|
650
650
|
}
|
651
651
|
},
|
652
|
-
parse
|
652
|
+
parse(lrc_s) {
|
653
653
|
if (lrc_s) {
|
654
|
-
lrc_s = lrc_s.replace(/([^\]^\n])\[/g,
|
654
|
+
lrc_s = lrc_s.replace(/([^\]^\n])\[/g, (match, p1) => {
|
655
655
|
return p1 + '\n[';
|
656
656
|
});
|
657
657
|
const lyric = lrc_s.split('\n');
|
@@ -662,7 +662,7 @@ const mediaPlayer = function (t, config) {
|
|
662
662
|
const lrcText = lyric[i]
|
663
663
|
.replace(/.*\[(\d{2}):(\d{2})(\.(\d{2,3}))?]/g, '')
|
664
664
|
.replace(/<(\d{2}):(\d{2})(\.(\d{2,3}))?>/g, '')
|
665
|
-
.
|
665
|
+
.trim;
|
666
666
|
if (lrcTimes) {
|
667
667
|
const timeLen = lrcTimes.length;
|
668
668
|
for (let j = 0; j < timeLen; j++) {
|
@@ -675,63 +675,59 @@ const mediaPlayer = function (t, config) {
|
|
675
675
|
}
|
676
676
|
}
|
677
677
|
}
|
678
|
-
lrc = lrc.filter(
|
679
|
-
|
680
|
-
});
|
681
|
-
lrc.sort(function (a, b) {
|
682
|
-
return a[0] - b[0];
|
683
|
-
});
|
678
|
+
lrc = lrc.filter((item) => item[1]);
|
679
|
+
lrc.sort((a, b) => a[0] - b[0]);
|
684
680
|
return lrc;
|
685
681
|
}
|
686
682
|
else {
|
687
683
|
return [];
|
688
684
|
}
|
689
685
|
},
|
690
|
-
fetch
|
686
|
+
fetch(url, callback) {
|
691
687
|
fetch(url)
|
692
|
-
.then(
|
688
|
+
.then((response) => {
|
693
689
|
return response.text();
|
694
|
-
}).then(
|
690
|
+
}).then((body) => {
|
695
691
|
callback(body);
|
696
|
-
}).catch(
|
692
|
+
}).catch((ex) => {
|
697
693
|
});
|
698
694
|
}
|
699
695
|
};
|
700
696
|
const events = {
|
701
|
-
onerror
|
697
|
+
onerror() {
|
702
698
|
playlist.error();
|
703
699
|
t.player.mode();
|
704
700
|
},
|
705
|
-
ondurationchange
|
701
|
+
ondurationchange() {
|
706
702
|
if (source.duration !== 1) {
|
707
703
|
progress.el.attr('data-dtime', utils.secondToTime(source.duration));
|
708
704
|
}
|
709
705
|
},
|
710
|
-
onloadedmetadata
|
706
|
+
onloadedmetadata() {
|
711
707
|
t.player.seek(0);
|
712
708
|
progress.el.attr('data-dtime', utils.secondToTime(source.duration));
|
713
709
|
},
|
714
|
-
onplay
|
710
|
+
onplay() {
|
715
711
|
t.parentNode.addClass('playing');
|
716
712
|
showtip(this.attr('title'));
|
717
713
|
NOWPLAYING = t;
|
718
714
|
},
|
719
|
-
onpause
|
715
|
+
onpause() {
|
720
716
|
t.parentNode.removeClass('playing');
|
721
717
|
NOWPLAYING = null;
|
722
718
|
},
|
723
|
-
ontimeupdate
|
719
|
+
ontimeupdate() {
|
724
720
|
if (!this.disableTimeupdate) {
|
725
721
|
progress.update(this.currentTime / this.duration);
|
726
722
|
lyrics.update(this.currentTime);
|
727
723
|
}
|
728
724
|
},
|
729
|
-
onended
|
725
|
+
onended(argument) {
|
730
726
|
t.player.mode();
|
731
727
|
t.player.play();
|
732
728
|
}
|
733
729
|
};
|
734
|
-
const init =
|
730
|
+
const init = (config) => {
|
735
731
|
if (t.player.created) {
|
736
732
|
return;
|
737
733
|
}
|
package/source/js/_app/vue.js
CHANGED
@@ -10,16 +10,16 @@ Vue.createApp({
|
|
10
10
|
id: 'neko',
|
11
11
|
innerHTML: '<div class="planet"><div class="sun"></div><div class="moon"></div></div><div class="body"><div class="face"><section class="eyes left"><span class="pupil"></span></section><section class="eyes right"><span class="pupil"></span></section><span class="nose"></span></div></div>'
|
12
12
|
});
|
13
|
-
const hideNeko =
|
13
|
+
const hideNeko = () => {
|
14
14
|
transition(neko, {
|
15
15
|
delay: 2500,
|
16
16
|
opacity: 0
|
17
|
-
},
|
17
|
+
}, () => {
|
18
18
|
BODY.removeChild(neko);
|
19
19
|
});
|
20
20
|
};
|
21
21
|
if (btn.hasClass('i-sun')) {
|
22
|
-
c =
|
22
|
+
c = () => {
|
23
23
|
neko.addClass('dark');
|
24
24
|
changeTheme('dark');
|
25
25
|
$storage.set('theme', 'dark');
|
@@ -28,16 +28,16 @@ Vue.createApp({
|
|
28
28
|
}
|
29
29
|
else {
|
30
30
|
neko.addClass('dark');
|
31
|
-
c =
|
31
|
+
c = () => {
|
32
32
|
neko.removeClass('dark');
|
33
33
|
changeTheme();
|
34
34
|
$storage.set('theme', 'light');
|
35
35
|
hideNeko();
|
36
36
|
};
|
37
37
|
}
|
38
|
-
transition(neko, 1,
|
38
|
+
transition(neko, 1, () => {
|
39
39
|
setTimeout(c, 210);
|
40
|
-
},
|
40
|
+
}, () => {
|
41
41
|
neko.display('block');
|
42
42
|
});
|
43
43
|
}
|