@applemusic-like-lyrics/core 0.2.0-alpha.6 → 0.3.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/README.md +35 -0
- package/dist/amll-core.css +2 -1
- package/dist/amll-core.js +10626 -7358
- package/dist/amll-core.js.map +1 -1
- package/dist/bg-render/base.d.ts +2 -3
- package/dist/bg-render/img.d.ts +0 -1
- package/dist/bg-render/index.d.ts +0 -1
- package/dist/bg-render/mesh-renderer/cp-generate.d.ts +0 -1
- package/dist/bg-render/mesh-renderer/cp-presets.d.ts +1 -2
- package/dist/bg-render/mesh-renderer/index.d.ts +5 -3
- package/dist/bg-render/pixi-renderer.d.ts +0 -1
- package/dist/canvas-test.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/interfaces.d.ts +52 -4
- package/dist/lyric-player/base.d.ts +52 -8
- package/dist/lyric-player/bottom-line.d.ts +4 -2
- package/dist/lyric-player/canvas/index.d.ts +0 -1
- package/dist/lyric-player/canvas/lyric-line.d.ts +0 -2
- package/dist/lyric-player/canvas/text-layout.d.ts +0 -1
- package/dist/lyric-player/dom/index.d.ts +0 -1
- package/dist/lyric-player/dom/interlude-dots.d.ts +0 -1
- package/dist/lyric-player/dom/lyric-line.d.ts +15 -8
- package/dist/lyric-player/dom-slim/index.d.ts +0 -1
- package/dist/lyric-player/dom-slim/interlude-dots.d.ts +0 -1
- package/dist/lyric-player/dom-slim/lyric-line.d.ts +2 -4
- package/dist/lyric-player/index.d.ts +21 -3
- package/dist/mg-test.d.ts +0 -1
- package/dist/utils/debounce.d.ts +0 -1
- package/dist/utils/derivative.d.ts +0 -1
- package/dist/utils/eq-set.d.ts +0 -1
- package/dist/utils/flagsets.d.ts +0 -1
- package/dist/utils/is-cjk.d.ts +0 -1
- package/dist/utils/linear.d.ts +0 -1
- package/dist/utils/lyric-split-words.d.ts +0 -1
- package/dist/utils/matrix.d.ts +0 -1
- package/dist/utils/mutex.d.ts +0 -1
- package/dist/utils/optimize-lyric.d.ts +9 -0
- package/dist/utils/resource.d.ts +0 -1
- package/dist/utils/schedule.d.ts +0 -1
- package/dist/utils/spring.d.ts +0 -1
- package/dist/utils/wa-spring.d.ts +0 -7
- package/package.json +12 -12
- package/dist/bg-render/base.d.ts.map +0 -1
- package/dist/bg-render/img.d.ts.map +0 -1
- package/dist/bg-render/index.d.ts.map +0 -1
- package/dist/bg-render/mesh-renderer/cp-generate.d.ts.map +0 -1
- package/dist/bg-render/mesh-renderer/cp-presets.d.ts.map +0 -1
- package/dist/bg-render/mesh-renderer/index.d.ts.map +0 -1
- package/dist/bg-render/pixi-renderer.d.ts.map +0 -1
- package/dist/canvas-test.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/interfaces.d.ts.map +0 -1
- package/dist/lyric-player/base.d.ts.map +0 -1
- package/dist/lyric-player/bottom-line.d.ts.map +0 -1
- package/dist/lyric-player/canvas/index.d.ts.map +0 -1
- package/dist/lyric-player/canvas/lyric-line.d.ts.map +0 -1
- package/dist/lyric-player/canvas/text-layout.d.ts.map +0 -1
- package/dist/lyric-player/dom/index.d.ts.map +0 -1
- package/dist/lyric-player/dom/interlude-dots.d.ts.map +0 -1
- package/dist/lyric-player/dom/lyric-line.d.ts.map +0 -1
- package/dist/lyric-player/dom-slim/index.d.ts.map +0 -1
- package/dist/lyric-player/dom-slim/interlude-dots.d.ts.map +0 -1
- package/dist/lyric-player/dom-slim/lyric-line.d.ts.map +0 -1
- package/dist/lyric-player/index.d.ts.map +0 -1
- package/dist/mg-test.d.ts.map +0 -1
- package/dist/utils/debounce.d.ts.map +0 -1
- package/dist/utils/derivative.d.ts.map +0 -1
- package/dist/utils/eq-set.d.ts.map +0 -1
- package/dist/utils/flagsets.d.ts.map +0 -1
- package/dist/utils/is-cjk.d.ts.map +0 -1
- package/dist/utils/linear.d.ts.map +0 -1
- package/dist/utils/lyric-split-words.d.ts.map +0 -1
- package/dist/utils/matrix.d.ts.map +0 -1
- package/dist/utils/mutex.d.ts.map +0 -1
- package/dist/utils/resource.d.ts.map +0 -1
- package/dist/utils/schedule.d.ts.map +0 -1
- package/dist/utils/spring.d.ts.map +0 -1
- package/dist/utils/wa-spring.d.ts.map +0 -1
package/dist/bg-render/base.d.ts
CHANGED
|
@@ -75,8 +75,8 @@ export declare abstract class BaseRenderer extends AbstractBaseRenderer {
|
|
|
75
75
|
*/
|
|
76
76
|
protected onResize(width: number, height: number): void;
|
|
77
77
|
/**
|
|
78
|
-
* 修改背景的流动速度,数字越大越快,默认为
|
|
79
|
-
* @param speed 背景的流动速度,默认为
|
|
78
|
+
* 修改背景的流动速度,数字越大越快,默认为 1
|
|
79
|
+
* @param speed 背景的流动速度,默认为 1
|
|
80
80
|
*/
|
|
81
81
|
setFlowSpeed(speed: number): void;
|
|
82
82
|
/**
|
|
@@ -107,4 +107,3 @@ export declare abstract class BaseRenderer extends AbstractBaseRenderer {
|
|
|
107
107
|
dispose(): void;
|
|
108
108
|
getElement(): HTMLElement;
|
|
109
109
|
}
|
|
110
|
-
//# sourceMappingURL=base.d.ts.map
|
package/dist/bg-render/img.d.ts
CHANGED
|
@@ -2,4 +2,3 @@ export declare function blurImage(imageData: ImageData, radius: number, quality:
|
|
|
2
2
|
export declare function saturateImage(imageData: ImageData, saturation: number): void;
|
|
3
3
|
export declare function brightnessImage(imageData: ImageData, brightness: number): void;
|
|
4
4
|
export declare function contrastImage(imageData: ImageData, contrast: number): void;
|
|
5
|
-
//# sourceMappingURL=img.d.ts.map
|
|
@@ -19,5 +19,4 @@ export interface ControlPointPreset {
|
|
|
19
19
|
export declare const p: (cx: number, cy: number, x: number, y: number, ur?: number, vr?: number, up?: number, vp?: number) => ControlPointConf;
|
|
20
20
|
/** @internal */
|
|
21
21
|
export declare const preset: (width: number, height: number, conf: ControlPointConf[]) => ControlPointPreset;
|
|
22
|
-
export declare const CONTROL_POINT_PRESETS: readonly [ControlPointPreset, ControlPointPreset, ControlPointPreset, ControlPointPreset];
|
|
23
|
-
//# sourceMappingURL=cp-presets.d.ts.map
|
|
22
|
+
export declare const CONTROL_POINT_PRESETS: readonly [ControlPointPreset, ControlPointPreset, ControlPointPreset, ControlPointPreset, ControlPointPreset, ControlPointPreset];
|
|
@@ -25,7 +25,6 @@ export declare class MeshGradientRenderer extends BaseRenderer {
|
|
|
25
25
|
private gl;
|
|
26
26
|
private lastFrameTime;
|
|
27
27
|
private frameTime;
|
|
28
|
-
private currentImageData?;
|
|
29
28
|
private lastTickTime;
|
|
30
29
|
private smoothedVolume;
|
|
31
30
|
private volume;
|
|
@@ -34,6 +33,10 @@ export declare class MeshGradientRenderer extends BaseRenderer {
|
|
|
34
33
|
private paused;
|
|
35
34
|
private staticMode;
|
|
36
35
|
private mainProgram;
|
|
36
|
+
private quadProgram;
|
|
37
|
+
private quadBuffer;
|
|
38
|
+
private fbo;
|
|
39
|
+
private fboTexture;
|
|
37
40
|
private manualControl;
|
|
38
41
|
private reduceImageSizeCanvas;
|
|
39
42
|
private targetSize;
|
|
@@ -52,10 +55,10 @@ export declare class MeshGradientRenderer extends BaseRenderer {
|
|
|
52
55
|
resetSubdivition(subDivisions: number): void;
|
|
53
56
|
private onTick;
|
|
54
57
|
private checkIfResize;
|
|
58
|
+
private updateFBO;
|
|
55
59
|
private onRedraw;
|
|
56
60
|
private onTickBinded;
|
|
57
61
|
private requestTick;
|
|
58
|
-
private supportTextureFloat;
|
|
59
62
|
constructor(canvas: HTMLCanvasElement);
|
|
60
63
|
protected onResize(width: number, height: number): void;
|
|
61
64
|
setStaticMode(enable: boolean): void;
|
|
@@ -71,4 +74,3 @@ export declare class MeshGradientRenderer extends BaseRenderer {
|
|
|
71
74
|
private updatePerformanceStats;
|
|
72
75
|
}
|
|
73
76
|
export {};
|
|
74
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/canvas-test.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/interfaces.d.ts
CHANGED
|
@@ -23,17 +23,21 @@ export interface Disposable {
|
|
|
23
23
|
dispose(): void;
|
|
24
24
|
}
|
|
25
25
|
/** 一个歌词单词 */
|
|
26
|
-
export interface
|
|
26
|
+
export interface LyricWordBase {
|
|
27
27
|
/** 单词的起始时间,单位为毫秒 */
|
|
28
28
|
startTime: number;
|
|
29
29
|
/** 单词的结束时间,单位为毫秒 */
|
|
30
30
|
endTime: number;
|
|
31
31
|
/** 单词内容 */
|
|
32
32
|
word: string;
|
|
33
|
+
}
|
|
34
|
+
export interface LyricWord extends LyricWordBase {
|
|
33
35
|
/** 单词的音译内容 */
|
|
34
|
-
romanWord
|
|
36
|
+
romanWord?: string;
|
|
35
37
|
/** 单词内容是否包含冒犯性的不雅用语 */
|
|
36
|
-
obscene
|
|
38
|
+
obscene?: boolean;
|
|
39
|
+
/** 单词的注音内容 */
|
|
40
|
+
ruby?: LyricWordBase[];
|
|
37
41
|
}
|
|
38
42
|
/** 一行歌词,存储多个单词 */
|
|
39
43
|
export interface LyricLine {
|
|
@@ -55,4 +59,48 @@ export interface LyricLine {
|
|
|
55
59
|
/** 该行是否为对唱歌词行(即歌词行靠右对齐) */
|
|
56
60
|
isDuet: boolean;
|
|
57
61
|
}
|
|
58
|
-
|
|
62
|
+
/**
|
|
63
|
+
* 优化歌词行的配置选项
|
|
64
|
+
*/
|
|
65
|
+
export interface OptimizeLyricOptions {
|
|
66
|
+
/**
|
|
67
|
+
* 规范化歌词中的空格
|
|
68
|
+
*
|
|
69
|
+
* 将多个连续空格替换为一个空格
|
|
70
|
+
* @default true
|
|
71
|
+
*/
|
|
72
|
+
normalizeSpaces?: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* 是否将行级时间戳强行设为字级时间戳
|
|
75
|
+
* @default true
|
|
76
|
+
*/
|
|
77
|
+
resetLineTimestamps?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* 把多行背景人声转换为单行背景人声 + 主歌词行的形式
|
|
80
|
+
* @default true
|
|
81
|
+
*/
|
|
82
|
+
convertExcessiveBackgroundLines?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* 是否同步主歌词与背景人声的时间
|
|
85
|
+
* @default true
|
|
86
|
+
*/
|
|
87
|
+
syncMainAndBackgroundLines?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* 清洗非刻意的重叠,以免不必要的多行高亮效果
|
|
90
|
+
*
|
|
91
|
+
* 如果两行时间轴有重叠的歌词同时满足下列条件:
|
|
92
|
+
* * 重叠小于 100ms
|
|
93
|
+
* * 重叠时长不足下一行时长的 10%
|
|
94
|
+
*
|
|
95
|
+
* 则截断上一行歌词的结束时间为下一行歌词的开始时间
|
|
96
|
+
* @default true
|
|
97
|
+
*/
|
|
98
|
+
cleanUnintentionalOverlaps?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* 尝试让歌词提前最多 1 秒开始
|
|
101
|
+
*
|
|
102
|
+
* 有重叠则尝试最多提前 400ms 或上一行时长的 30%
|
|
103
|
+
* @default true
|
|
104
|
+
*/
|
|
105
|
+
tryAdvanceStartTime?: boolean;
|
|
106
|
+
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { Disposable, HasElement, LyricLine, LyricWord } from '../interfaces.ts';
|
|
1
|
+
import { Disposable, HasElement, LyricLine, LyricWord, OptimizeLyricOptions } from '../interfaces.ts';
|
|
2
2
|
import { Spring, SpringParams } from '../utils/spring.ts';
|
|
3
3
|
import { BottomLineEl } from './bottom-line.ts';
|
|
4
4
|
import { InterludeDots } from './dom/interlude-dots.ts';
|
|
5
|
+
import { LyricLineRenderMode, MaskObsceneWordsMode } from './index.ts';
|
|
5
6
|
/**
|
|
6
7
|
* 歌词播放器的基类,已经包含了有关歌词操作和排版的功能,子类需要为其实现对应的显示展示操作
|
|
7
8
|
*/
|
|
8
9
|
export declare abstract class LyricPlayerBase extends EventTarget implements HasElement, Disposable {
|
|
9
10
|
protected element: HTMLElement;
|
|
11
|
+
abstract get baseFontSize(): number;
|
|
10
12
|
protected currentTime: number;
|
|
11
13
|
/** @internal */
|
|
12
14
|
lyricLinesSize: WeakMap<LyricLineBase, [number, number]>;
|
|
@@ -26,6 +28,8 @@ export declare abstract class LyricPlayerBase extends EventTarget implements Has
|
|
|
26
28
|
protected bottomLine: BottomLineEl;
|
|
27
29
|
protected enableBlur: boolean;
|
|
28
30
|
protected enableScale: boolean;
|
|
31
|
+
protected maskObsceneWords: MaskObsceneWordsMode;
|
|
32
|
+
protected maskObsceneWordChar: string;
|
|
29
33
|
protected hidePassedLines: boolean;
|
|
30
34
|
protected scrollBoundary: number[];
|
|
31
35
|
protected currentLyricLineObjects: LyricLineBase[];
|
|
@@ -37,7 +41,13 @@ export declare abstract class LyricPlayerBase extends EventTarget implements Has
|
|
|
37
41
|
readonly size: [number, number];
|
|
38
42
|
protected allowScroll: boolean;
|
|
39
43
|
protected isPageVisible: boolean;
|
|
44
|
+
protected optimizeOptions: OptimizeLyricOptions;
|
|
40
45
|
protected initialLayoutFinished: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* 标记用户是否正在进行滚动交互
|
|
48
|
+
*/
|
|
49
|
+
protected isUserScrolling: boolean;
|
|
50
|
+
protected wheelTimeout: ReturnType<typeof setTimeout> | undefined;
|
|
41
51
|
/**
|
|
42
52
|
* 视图额外预渲染(overscan)距离,单位:像素。
|
|
43
53
|
* 用于决定在视口之外多少距离内也认为是“可见”,以便提前创建/保留行元素。
|
|
@@ -55,7 +65,8 @@ export declare abstract class LyricPlayerBase extends EventTarget implements Has
|
|
|
55
65
|
resizeObserver: ResizeObserver;
|
|
56
66
|
protected wordFadeWidth: number;
|
|
57
67
|
protected targetAlignIndex: number;
|
|
58
|
-
|
|
68
|
+
protected lastInterludeState: boolean;
|
|
69
|
+
constructor(element?: HTMLElement);
|
|
59
70
|
private beginScrollHandler;
|
|
60
71
|
private endScrollHandler;
|
|
61
72
|
private limitScrollOffset;
|
|
@@ -101,6 +112,24 @@ export declare abstract class LyricPlayerBase extends EventTarget implements Has
|
|
|
101
112
|
* @param enable 是否启用
|
|
102
113
|
*/
|
|
103
114
|
setEnableBlur(enable: boolean): void;
|
|
115
|
+
/**
|
|
116
|
+
* 设置歌词中不雅用语的掩码模式
|
|
117
|
+
* @param mode 掩码模式
|
|
118
|
+
* @see {@link MaskObsceneWordsMode}
|
|
119
|
+
*/
|
|
120
|
+
setMaskObsceneWords(mode: MaskObsceneWordsMode): void;
|
|
121
|
+
/**
|
|
122
|
+
* 设置不雅用语掩码使用的字符,默认为 `*`
|
|
123
|
+
* @param char 单个字符,用于替换不雅用语中的字符
|
|
124
|
+
*/
|
|
125
|
+
setMaskObsceneWordChar(char: string): void;
|
|
126
|
+
rebuildLyricLines(): void;
|
|
127
|
+
/**
|
|
128
|
+
* 根据当前配置处理不雅用语单词
|
|
129
|
+
* @param word 单词对象
|
|
130
|
+
* @internal
|
|
131
|
+
*/
|
|
132
|
+
processObsceneWord(word: LyricWord): string;
|
|
104
133
|
/**
|
|
105
134
|
* 设置目标歌词行的对齐方式,默认为 `center`
|
|
106
135
|
*
|
|
@@ -144,12 +173,25 @@ export declare abstract class LyricPlayerBase extends EventTarget implements Has
|
|
|
144
173
|
* @returns [开始时间,结束时间,大概处于的歌词行ID,下一句是否为对唱歌词] 或 undefined 如果不处于间奏区间
|
|
145
174
|
*/
|
|
146
175
|
protected getCurrentInterlude(): [number, number, number, boolean] | undefined;
|
|
176
|
+
/**
|
|
177
|
+
* 设置歌词的优化配置项,这些配置项默认全部开启
|
|
178
|
+
*
|
|
179
|
+
* 注意,如果在 `setLyricLines` 之后修改此配置,需要重新调用 `setLyricLines()` 才能对当前歌词生效
|
|
180
|
+
* @param options 优化配置选项
|
|
181
|
+
* @see {@link OptimizeLyricOptions}
|
|
182
|
+
*/
|
|
183
|
+
setOptimizeOptions(options: OptimizeLyricOptions): void;
|
|
147
184
|
/**
|
|
148
185
|
* 设置当前播放歌词,要注意传入后这个数组内的信息不得修改,否则会发生错误
|
|
149
186
|
* @param lines 歌词数组
|
|
150
187
|
* @param initialTime 初始时间,默认为 0
|
|
151
188
|
*/
|
|
152
189
|
setLyricLines(lines: LyricLine[], initialTime?: number): void;
|
|
190
|
+
/**
|
|
191
|
+
* 获取当前是否在播放
|
|
192
|
+
* @returns 当前是否在播放
|
|
193
|
+
*/
|
|
194
|
+
getIsPlaying(): boolean;
|
|
153
195
|
/**
|
|
154
196
|
* 设置当前播放进度,单位为毫秒且**必须是整数**,此时将会更新内部的歌词进度信息
|
|
155
197
|
* 内部会根据调用间隔和播放进度自动决定如何滚动和显示歌词,所以这个的调用频率越快越准确越好
|
|
@@ -158,6 +200,7 @@ export declare abstract class LyricPlayerBase extends EventTarget implements Has
|
|
|
158
200
|
* @param time 当前播放进度,单位为毫秒
|
|
159
201
|
*/
|
|
160
202
|
setCurrentTime(time: number, isSeek?: boolean): void;
|
|
203
|
+
protected updateDynamicSpringParams(): void;
|
|
161
204
|
/**
|
|
162
205
|
* 重新布局定位歌词行的位置,调用完成后再逐帧调用 `update`
|
|
163
206
|
* 函数即可让歌词通过动画移动到目标位置。
|
|
@@ -172,10 +215,11 @@ export declare abstract class LyricPlayerBase extends EventTarget implements Has
|
|
|
172
215
|
* 2. 加载了新的歌词时(不论前后歌词是否完全一样)
|
|
173
216
|
* 3. 用户自行跳转了歌曲播放位置(不论距离远近)
|
|
174
217
|
*
|
|
175
|
-
* @param
|
|
176
|
-
* @param
|
|
218
|
+
* @param sync 是否同步执行,通常用于初始化或 Resize 时立即布局
|
|
219
|
+
* @param force 是否绕过弹簧效果强制更新位置
|
|
177
220
|
*/
|
|
178
|
-
calcLayout(sync?: boolean): Promise<void>;
|
|
221
|
+
calcLayout(sync?: boolean, force?: boolean): Promise<void>;
|
|
222
|
+
protected calculateBlur(itemIndex: number, isActive: boolean, latestIndex: number): number;
|
|
179
223
|
/**
|
|
180
224
|
* 设置所有歌词行在横坐标上的弹簧属性,包括重量、弹力和阻力。
|
|
181
225
|
*
|
|
@@ -260,12 +304,13 @@ export declare abstract class LyricLineBase extends EventTarget implements Dispo
|
|
|
260
304
|
scale: Spring;
|
|
261
305
|
};
|
|
262
306
|
abstract getLine(): LyricLine;
|
|
263
|
-
abstract enable(): void;
|
|
307
|
+
abstract enable(time?: number, shouldPlay?: boolean): void;
|
|
264
308
|
abstract disable(): void;
|
|
265
309
|
abstract resume(): void;
|
|
266
310
|
abstract pause(): void;
|
|
267
311
|
onLineSizeChange(_size: [number, number]): void;
|
|
268
|
-
setTransform(top?: number, scale?: number, opacity?: number, blur?: number, _force?: boolean, delay?: number): void;
|
|
312
|
+
setTransform(top?: number, scale?: number, opacity?: number, blur?: number, _force?: boolean, delay?: number, _mode?: LyricLineRenderMode): void;
|
|
313
|
+
rebuildElement(): void;
|
|
269
314
|
/**
|
|
270
315
|
* 判定歌词是否可以应用强调辉光效果
|
|
271
316
|
*
|
|
@@ -280,4 +325,3 @@ export declare abstract class LyricLineBase extends EventTarget implements Dispo
|
|
|
280
325
|
abstract update(delta?: number): void;
|
|
281
326
|
dispose(): void;
|
|
282
327
|
}
|
|
283
|
-
//# sourceMappingURL=base.d.ts.map
|
|
@@ -12,16 +12,18 @@ export declare class BottomLineEl implements HasElement, Disposable {
|
|
|
12
12
|
posX: Spring;
|
|
13
13
|
posY: Spring;
|
|
14
14
|
};
|
|
15
|
+
private isFocused;
|
|
16
|
+
private blur;
|
|
15
17
|
constructor(lyricPlayer: LyricPlayerBase);
|
|
16
18
|
measureSize(): Promise<[number, number]>;
|
|
17
19
|
private lastStyle;
|
|
18
20
|
show(): void;
|
|
19
21
|
hide(): void;
|
|
22
|
+
setFocused(focused: boolean): void;
|
|
20
23
|
private rebuildStyle;
|
|
21
24
|
getElement(): HTMLElement;
|
|
22
|
-
setTransform(left?: number, top?: number, force?: boolean, delay?: number): void;
|
|
25
|
+
setTransform(left?: number, top?: number, blur?: number, force?: boolean, delay?: number): void;
|
|
23
26
|
update(delta?: number): void;
|
|
24
27
|
get isInSight(): boolean;
|
|
25
28
|
dispose(): void;
|
|
26
29
|
}
|
|
27
|
-
//# sourceMappingURL=bottom-line.d.ts.map
|
|
@@ -14,7 +14,6 @@ export declare class CanvasLyricLine extends LyricLineBase {
|
|
|
14
14
|
private lineCanvas;
|
|
15
15
|
/** @internal */
|
|
16
16
|
relayout(): void;
|
|
17
|
-
private enabled;
|
|
18
17
|
enable(): void;
|
|
19
18
|
disable(): void;
|
|
20
19
|
resume(): void;
|
|
@@ -23,4 +22,3 @@ export declare class CanvasLyricLine extends LyricLineBase {
|
|
|
23
22
|
get isInSight(): boolean;
|
|
24
23
|
update(delta?: number): void;
|
|
25
24
|
}
|
|
26
|
-
//# sourceMappingURL=lyric-line.d.ts.map
|
|
@@ -37,4 +37,3 @@ export declare function layoutWord(ctx: CanvasRenderingContext2D, text: string,
|
|
|
37
37
|
* @param initialX 初始 X 坐标,对于需要布局多段文本的情况下有所帮助
|
|
38
38
|
*/
|
|
39
39
|
export declare function layoutLine(ctx: CanvasRenderingContext2D, text: string, config: TextLayoutConfig, initialX?: number): Generator<TextLayoutResult, void, void>;
|
|
40
|
-
//# sourceMappingURL=text-layout.d.ts.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LyricLine, LyricWord } from '../../interfaces.ts';
|
|
2
2
|
import { LyricLineBase } from '../base.ts';
|
|
3
|
+
import { LyricLineRenderMode } from '../index.ts';
|
|
3
4
|
import { DomLyricPlayer } from '.';
|
|
4
5
|
interface RealWord extends LyricWord {
|
|
5
6
|
mainElement: HTMLSpanElement;
|
|
@@ -27,6 +28,12 @@ export declare class LyricLineEl extends LyricLineBase {
|
|
|
27
28
|
private splittedWords;
|
|
28
29
|
private built;
|
|
29
30
|
lineSize: number[];
|
|
31
|
+
private renderMode;
|
|
32
|
+
private currentBrightAlpha;
|
|
33
|
+
private currentDarkAlpha;
|
|
34
|
+
private targetBrightAlpha;
|
|
35
|
+
private targetDarkAlpha;
|
|
36
|
+
private segmenter;
|
|
30
37
|
constructor(lyricPlayer: DomLyricPlayer, lyricLine?: LyricLine);
|
|
31
38
|
private listenersMap;
|
|
32
39
|
private readonly onMouseEvent;
|
|
@@ -34,14 +41,13 @@ export declare class LyricLineEl extends LyricLineBase {
|
|
|
34
41
|
removeMouseEventListener(type: MouseEventTypes, callback: MouseEventListener | null, options?: boolean | EventListenerOptions | undefined): void;
|
|
35
42
|
areWordsOnSameLine(word1: RealWord, word2: RealWord): boolean;
|
|
36
43
|
private isEnabled;
|
|
37
|
-
enable(maskAnimationTime?: number): Promise<void>;
|
|
44
|
+
enable(maskAnimationTime?: number, shouldPlay?: boolean): Promise<void>;
|
|
38
45
|
disable(): void;
|
|
39
46
|
private lastWord?;
|
|
40
47
|
resume(): Promise<void>;
|
|
41
48
|
pause(): Promise<void>;
|
|
42
49
|
setMaskAnimationState(maskAnimationTime?: number): void;
|
|
43
50
|
getLine(): LyricLine;
|
|
44
|
-
private _hide;
|
|
45
51
|
private _prevParentEl;
|
|
46
52
|
private lastStyle;
|
|
47
53
|
show(): void;
|
|
@@ -50,10 +56,10 @@ export declare class LyricLineEl extends LyricLineBase {
|
|
|
50
56
|
rebuildElement(): void;
|
|
51
57
|
/** 设置翻译与音译行文本 */
|
|
52
58
|
private setSubLinesText;
|
|
53
|
-
|
|
54
|
-
private
|
|
55
|
-
|
|
56
|
-
private
|
|
59
|
+
private getRubyCharCount;
|
|
60
|
+
private getRubySegments;
|
|
61
|
+
private createWord;
|
|
62
|
+
private buildWord;
|
|
57
63
|
private initFloatAnimation;
|
|
58
64
|
private initEmphasizeAnimation;
|
|
59
65
|
private get totalDuration();
|
|
@@ -62,7 +68,9 @@ export declare class LyricLineEl extends LyricLineBase {
|
|
|
62
68
|
private generateCalcBasedMaskImage;
|
|
63
69
|
private generateWebAnimationBasedMaskImage;
|
|
64
70
|
getElement(): HTMLElement;
|
|
65
|
-
|
|
71
|
+
private updateMaskAlphaTargets;
|
|
72
|
+
private applyAlphaToDom;
|
|
73
|
+
setTransform(top?: number, scale?: number, opacity?: number, blur?: number, force?: boolean, delay?: number, mode?: LyricLineRenderMode): void;
|
|
66
74
|
update(delta?: number): void;
|
|
67
75
|
_getDebugTargetPos(): string;
|
|
68
76
|
get isInSight(): boolean;
|
|
@@ -70,4 +78,3 @@ export declare class LyricLineEl extends LyricLineBase {
|
|
|
70
78
|
dispose(): void;
|
|
71
79
|
}
|
|
72
80
|
export {};
|
|
73
|
-
//# sourceMappingURL=lyric-line.d.ts.map
|
|
@@ -42,13 +42,12 @@ export declare class LyricLineEl extends LyricLineBase {
|
|
|
42
42
|
private measureLockMark;
|
|
43
43
|
private measureLock;
|
|
44
44
|
getLine(): LyricLine;
|
|
45
|
-
private _prevParentEl;
|
|
46
|
-
private lastStyle;
|
|
47
45
|
show(): void;
|
|
48
46
|
hide(): void;
|
|
49
47
|
private rebuildStyle;
|
|
48
|
+
private getRubySegments;
|
|
49
|
+
private buildWordElement;
|
|
50
50
|
rebuildElement(): void;
|
|
51
|
-
private initFloatAnimation;
|
|
52
51
|
private initEmphasizeAnimation;
|
|
53
52
|
private get totalDuration();
|
|
54
53
|
private maskImageDirty;
|
|
@@ -68,4 +67,3 @@ export declare class LyricLineEl extends LyricLineBase {
|
|
|
68
67
|
dispose(): void;
|
|
69
68
|
}
|
|
70
69
|
export {};
|
|
71
|
-
//# sourceMappingURL=lyric-line.d.ts.map
|
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
import { DomLyricPlayer } from './dom/index.ts';
|
|
2
2
|
export { LyricPlayerBase } from './base.ts';
|
|
3
3
|
export * from './canvas/index.ts';
|
|
4
|
-
export * from './dom-slim/index.ts';
|
|
5
4
|
export * from './dom/index.ts';
|
|
5
|
+
export * from './dom-slim/index.ts';
|
|
6
|
+
/**
|
|
7
|
+
* 歌词中不雅用语的掩码模式
|
|
8
|
+
*/
|
|
9
|
+
declare enum MaskObsceneWordsMode {
|
|
10
|
+
/** 禁用任何不雅用语掩码 */
|
|
11
|
+
Disabled = "",
|
|
12
|
+
/** 完全掩码所有不雅用语 */
|
|
13
|
+
FullMask = "full-mask",
|
|
14
|
+
/** 保留首尾字符,屏蔽中间字符 */
|
|
15
|
+
PartialMask = "partial-mask"
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 歌词行的渲染模式
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
declare enum LyricLineRenderMode {
|
|
22
|
+
SOLID = 0,
|
|
23
|
+
GRADIENT = 1
|
|
24
|
+
}
|
|
6
25
|
export {
|
|
7
26
|
/**
|
|
8
27
|
* 默认导出的歌词播放组件
|
|
9
28
|
*/
|
|
10
|
-
DomLyricPlayer as LyricPlayer, };
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
|
29
|
+
DomLyricPlayer as LyricPlayer, LyricLineRenderMode, MaskObsceneWordsMode, };
|
package/dist/mg-test.d.ts
CHANGED
package/dist/utils/debounce.d.ts
CHANGED
package/dist/utils/eq-set.d.ts
CHANGED
package/dist/utils/flagsets.d.ts
CHANGED
package/dist/utils/is-cjk.d.ts
CHANGED
package/dist/utils/linear.d.ts
CHANGED
package/dist/utils/matrix.d.ts
CHANGED
|
@@ -23,4 +23,3 @@ export declare function scaleMatrix4(m: Matrix4, scale?: number, origin?: {
|
|
|
23
23
|
}): Matrix4;
|
|
24
24
|
export declare function translateMatrix4(m: Matrix4, x?: number, y?: number, z?: number): Matrix4;
|
|
25
25
|
export declare function matrix4ToCSS(m: Matrix4, fractionDigits?: number): string;
|
|
26
|
-
//# sourceMappingURL=matrix.d.ts.map
|
package/dist/utils/mutex.d.ts
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LyricLine, OptimizeLyricOptions } from '../interfaces.ts';
|
|
2
|
+
/**
|
|
3
|
+
* 优化歌词行的展示效果
|
|
4
|
+
*
|
|
5
|
+
* 注意会直接原地修改入参,确保你已经提前深克隆了歌词行数组
|
|
6
|
+
* @param lines 歌词行数组
|
|
7
|
+
* @param options 优化的可选配置,默认全部开启
|
|
8
|
+
*/
|
|
9
|
+
export declare function optimizeLyricLines(lines: LyricLine[], options?: OptimizeLyricOptions): void;
|
package/dist/utils/resource.d.ts
CHANGED
|
@@ -2,4 +2,3 @@ export declare function loadImage(imageUrl: string): Promise<HTMLImageElement>;
|
|
|
2
2
|
export declare function loadVideo(videoUrl: string): Promise<HTMLVideoElement>;
|
|
3
3
|
export declare function loadResourceFromUrl(url: string, isVideo?: boolean): Promise<HTMLImageElement | HTMLVideoElement>;
|
|
4
4
|
export declare function loadResourceFromElement(element: HTMLImageElement | HTMLVideoElement): Promise<HTMLImageElement | HTMLVideoElement>;
|
|
5
|
-
//# sourceMappingURL=resource.d.ts.map
|
package/dist/utils/schedule.d.ts
CHANGED
package/dist/utils/spring.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import { Disposable } from '../interfaces.ts';
|
|
2
|
-
export interface SpringParams {
|
|
3
|
-
mass: number;
|
|
4
|
-
damping: number;
|
|
5
|
-
stiffness: number;
|
|
6
|
-
}
|
|
7
2
|
type CSSStyleKeys = {
|
|
8
3
|
[Style in keyof CSSStyleDeclaration]: Style extends string ? CSSStyleDeclaration[Style] extends string ? Style : never : never;
|
|
9
4
|
}[keyof CSSStyleDeclaration];
|
|
@@ -18,7 +13,6 @@ export declare class WebAnimationSpring extends EventTarget implements Disposabl
|
|
|
18
13
|
private currentAnimation;
|
|
19
14
|
private targetPosition;
|
|
20
15
|
private isStatic;
|
|
21
|
-
private params;
|
|
22
16
|
private currentSolver;
|
|
23
17
|
private getV;
|
|
24
18
|
constructor(element: HTMLElement, styleName: CSSStyleKeys, valueGenerator: (value: number) => string, currentPosition?: number);
|
|
@@ -31,4 +25,3 @@ export declare class WebAnimationSpring extends EventTarget implements Disposabl
|
|
|
31
25
|
dispose(): void;
|
|
32
26
|
}
|
|
33
27
|
export {};
|
|
34
|
-
//# sourceMappingURL=wa-spring.d.ts.map
|