@shijiu/jsview-vue 2.0.1021 → 2.0.1073
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/package.json +4 -3
- package/utils/JsViewEngineWidget/CheckType.js +82 -0
- package/utils/JsViewEngineWidget/MetroWidget/AnimationManager.ts +72 -0
- package/utils/JsViewEngineWidget/MetroWidget/Const.ts +24 -0
- package/utils/JsViewEngineWidget/MetroWidget/ListWidget.vue +295 -0
- package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +110 -1651
- package/utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js +1867 -0
- package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.ts +111 -0
- package/utils/JsViewEngineWidget/MetroWidget/RenderItem.ts +153 -0
- package/utils/JsViewEngineWidget/MetroWidget/VisibleInfo.ts +43 -0
- package/utils/JsViewEngineWidget/MetroWidget/WidgetRectInfo.ts +49 -0
- package/utils/JsViewEngineWidget/TemplateParser/CommonMetroTemplate.ts +1424 -0
- package/utils/JsViewEngineWidget/TemplateParser/Fence.ts +135 -0
- package/utils/JsViewEngineWidget/TemplateParser/ListMetroTemplate.ts +177 -0
- package/utils/JsViewEngineWidget/TemplateParser/MetroTemplate.ts +334 -0
- package/utils/JsViewEngineWidget/TemplateParser/TemplateItemAdder.ts +147 -0
- package/utils/JsViewEngineWidget/TemplateParser/index.ts +4 -0
- package/utils/JsViewEngineWidget/{WidgetCommon.js → WidgetCommon.ts} +64 -71
- package/utils/JsViewEngineWidget/index.js +2 -1
- package/utils/JsViewPlugin/JsvAudio/AudioProxy.js +26 -1
- package/utils/JsViewPlugin/JsvAudio/JsvAudio.vue +120 -133
- package/utils/JsViewPlugin/JsvAudio/JsvAudioBrowser.vue +11 -7
- package/utils/JsViewPlugin/JsvPlayer/GetVersion.js +1 -1
- package/utils/JsViewPlugin/JsvPlayer/JsvPlayerBrowser.vue +379 -41
- package/utils/JsViewPlugin/JsvPlayer/version.mjs +5 -5
- package/utils/JsViewVueTools/JsvHashHistory.js +2 -1
- package/utils/JsViewVueWidget/JsvRadarChart.vue +220 -0
- package/utils/JsViewVueWidget/JsvSystemAudio.vue +76 -44
- package/utils/JsViewVueWidget/index.js +1 -0
- package/utils/JsViewEngineWidget/MetroWidget/Const.js +0 -11
- package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.js +0 -136
- package/utils/JsViewEngineWidget/MetroWidget/ToolFunctions.js +0 -18
- package/utils/JsViewEngineWidget/TemplateParser.js +0 -2004
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
|
|
2
|
+
import { MetroTemplate, TemplateItem } from "./MetroTemplate";
|
|
3
|
+
import { HORIZONTAL } from "../WidgetCommon";
|
|
4
|
+
class TemplateItemAdder {
|
|
5
|
+
private _MetroTemplate: MetroTemplate;
|
|
6
|
+
private _Data: Array<object>;
|
|
7
|
+
private _PageRange: number;
|
|
8
|
+
private _MeasureFunc: Function;
|
|
9
|
+
private _CurIndex: number;
|
|
10
|
+
private _CurPage: number;
|
|
11
|
+
private _SideEffect: Function;
|
|
12
|
+
private _Key: string;
|
|
13
|
+
private _ID: number;
|
|
14
|
+
|
|
15
|
+
constructor(
|
|
16
|
+
template_parser: MetroTemplate,
|
|
17
|
+
data: Array<object>,
|
|
18
|
+
measure_func: Function,
|
|
19
|
+
page_range: number,
|
|
20
|
+
side_effect: Function,
|
|
21
|
+
id: number
|
|
22
|
+
) {
|
|
23
|
+
this._MetroTemplate = template_parser;
|
|
24
|
+
this._Data = data;
|
|
25
|
+
this._PageRange = page_range;
|
|
26
|
+
this._MeasureFunc = measure_func;
|
|
27
|
+
this._CurIndex = 0;
|
|
28
|
+
this._CurPage = 0;
|
|
29
|
+
this._SideEffect = side_effect;
|
|
30
|
+
this._Key =
|
|
31
|
+
this._MetroTemplate.direction === HORIZONTAL
|
|
32
|
+
? "left"
|
|
33
|
+
: "top";
|
|
34
|
+
this._ID = id;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
private addDataToTemplate(data: Array<object>, index: number) {
|
|
38
|
+
const itemData = data[index];
|
|
39
|
+
const measureObj = this._MeasureFunc(itemData);
|
|
40
|
+
|
|
41
|
+
let templateItem = this._MetroTemplate.addItem(measureObj);
|
|
42
|
+
this._SideEffect?.(itemData, templateItem, measureObj);
|
|
43
|
+
return templateItem;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public tryAddItem(cur_item: TemplateItem | null = null, page_num: number = 1) {
|
|
47
|
+
let added = false;
|
|
48
|
+
if (
|
|
49
|
+
this._CurIndex < this._Data.length &&
|
|
50
|
+
(!cur_item ||
|
|
51
|
+
cur_item[this._Key] >= (this._CurPage - 1) * this._PageRange)
|
|
52
|
+
) {
|
|
53
|
+
while (this._CurIndex < this._Data.length) {
|
|
54
|
+
try {
|
|
55
|
+
let item = this.addDataToTemplate(this._Data, this._CurIndex);
|
|
56
|
+
this._CurIndex++;
|
|
57
|
+
if (item[this._Key] >= (this._CurPage + page_num) * this._PageRange) {
|
|
58
|
+
this._CurPage += page_num;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
} catch (e) {
|
|
62
|
+
console.error(
|
|
63
|
+
`MetroWidget: ${this._ID} parse template item ${this._CurIndex} failed. data: `,
|
|
64
|
+
this._Data
|
|
65
|
+
);
|
|
66
|
+
throw e;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
this._MetroTemplate.calculateNeighborWhenAddStop();
|
|
70
|
+
added = true;
|
|
71
|
+
}
|
|
72
|
+
// 添加完成需要计算neighbor
|
|
73
|
+
return added;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
tryAddItemByPosition(position: number) {
|
|
77
|
+
const page_num = Math.ceil(position / this._PageRange + 1);
|
|
78
|
+
if (page_num > this._CurPage) {
|
|
79
|
+
this.tryAddItem(null, page_num - this._CurPage);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
tryAddItemByIndex(index: number) {
|
|
84
|
+
let _index = Math.min(index, this._Data.length - 1);
|
|
85
|
+
let added = false;
|
|
86
|
+
while (this._CurIndex <= _index) {
|
|
87
|
+
added = true;
|
|
88
|
+
try {
|
|
89
|
+
let item = this.addDataToTemplate(this._Data, this._CurIndex);
|
|
90
|
+
this._CurIndex++;
|
|
91
|
+
if (item[this._Key] >= (this._CurPage + 1) * this._PageRange) {
|
|
92
|
+
this._CurPage++;
|
|
93
|
+
}
|
|
94
|
+
} catch (e) {
|
|
95
|
+
console.error(
|
|
96
|
+
`MetroWidget: ${this._ID} parse template item ${this._CurIndex} failed. data:`,
|
|
97
|
+
this._Data
|
|
98
|
+
);
|
|
99
|
+
throw e;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (added) {
|
|
103
|
+
this._MetroTemplate.calculateNeighborWhenAddStop();
|
|
104
|
+
}
|
|
105
|
+
//再添加一屏
|
|
106
|
+
this.tryAddItem(this._MetroTemplate.getItemByIndex(index), 2);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
tryAddItemById(id: number) {
|
|
110
|
+
let _id = Math.min(id, this._Data.length - 1); // id小于等于index, 因此为了避免过界取小值
|
|
111
|
+
const last_id = this._MetroTemplate.focusableSize - 1;
|
|
112
|
+
if (last_id < _id) {
|
|
113
|
+
let added = false;
|
|
114
|
+
let cur_id = last_id;
|
|
115
|
+
while (cur_id < _id && this._CurIndex < this._Data.length) {
|
|
116
|
+
added = true;
|
|
117
|
+
try {
|
|
118
|
+
let item = this.addDataToTemplate(this._Data, this._CurIndex);
|
|
119
|
+
cur_id = item.id;
|
|
120
|
+
if (item[this._Key] >= (this._CurPage + 1) * this._PageRange) {
|
|
121
|
+
this._CurPage++;
|
|
122
|
+
}
|
|
123
|
+
this._CurIndex++;
|
|
124
|
+
} catch (e) {
|
|
125
|
+
console.error(
|
|
126
|
+
`MetroWidget: ${this._ID} parse template item ${this._CurIndex} failed. data:`,
|
|
127
|
+
this._Data
|
|
128
|
+
);
|
|
129
|
+
throw e;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (added) {
|
|
133
|
+
this._MetroTemplate.calculateNeighborWhenAddStop();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//再添加一屏
|
|
137
|
+
this.tryAddItem(this._MetroTemplate.getItemById(id), 2);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
updateData(data: Array<object>) {
|
|
141
|
+
this._Data = data;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export {
|
|
146
|
+
TemplateItemAdder,
|
|
147
|
+
}
|
|
@@ -5,61 +5,37 @@
|
|
|
5
5
|
* @LastEditTime: 2022-12-01 16:49:21
|
|
6
6
|
* @Description: file content
|
|
7
7
|
*/
|
|
8
|
-
class BaseDispatcher {
|
|
8
|
+
export class BaseDispatcher {
|
|
9
|
+
private _Component: any;
|
|
10
|
+
|
|
9
11
|
constructor() {
|
|
12
|
+
console.error("BaseDispatcher is deprecated and will be removed soon. Use MetroWidget exposed methods instead.");
|
|
10
13
|
this._Component = null;
|
|
11
14
|
this.registerComponent = this.registerComponent.bind(this);
|
|
12
15
|
this.unregisterComponent = this.unregisterComponent.bind(this);
|
|
13
16
|
this.dispatch = this.dispatch.bind(this);
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
registerComponent(component) {
|
|
19
|
+
registerComponent(component: any) {
|
|
20
|
+
console.error("BaseDispatcher is deprecated and will be removed soon. Use MetroWidget exposed methods instead.");
|
|
17
21
|
this._Component = component;
|
|
18
22
|
}
|
|
19
23
|
|
|
20
24
|
unregisterComponent() {
|
|
25
|
+
console.error("BaseDispatcher is deprecated and will be removed soon. Use MetroWidget exposed methods instead.");
|
|
21
26
|
this._Component = null;
|
|
22
27
|
}
|
|
23
28
|
|
|
24
|
-
dispatch(event) {
|
|
29
|
+
dispatch(event: any) {
|
|
25
30
|
if (event && this._Component) {
|
|
31
|
+
console.error("BaseDispatcher is deprecated and will be removed soon. Use MetroWidget exposed methods instead.");
|
|
26
32
|
this._Component._dispatchEvent(event);
|
|
27
33
|
}
|
|
28
34
|
}
|
|
29
35
|
}
|
|
30
36
|
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
right: Symbol("right"),
|
|
34
|
-
top: Symbol("top"),
|
|
35
|
-
bottom: Symbol("bottom"),
|
|
36
|
-
|
|
37
|
-
opposite: (dir) => {
|
|
38
|
-
switch (dir) {
|
|
39
|
-
case EdgeDirection.left:
|
|
40
|
-
return EdgeDirection.right;
|
|
41
|
-
case EdgeDirection.right:
|
|
42
|
-
return EdgeDirection.left;
|
|
43
|
-
case EdgeDirection.top:
|
|
44
|
-
return EdgeDirection.bottom;
|
|
45
|
-
case EdgeDirection.bottom:
|
|
46
|
-
return EdgeDirection.top;
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
const SlideStyle = {
|
|
52
|
-
seamLess: Symbol("seamless"),
|
|
53
|
-
wholePage: Symbol("wholePage"),
|
|
54
|
-
seamlessFixedId: Symbol("seamlessFixedId"),
|
|
55
|
-
startBoundaryProtect: 1,
|
|
56
|
-
endBoundaryProtect: 2,
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
const VERTICAL = Symbol("vertical");
|
|
60
|
-
const HORIZONTAL = Symbol("horizontal");
|
|
61
|
-
|
|
62
|
-
const getMeasureObj = (width, height, focusable, hasSub) => {
|
|
37
|
+
export const getMeasureObj = (width: number, height: number, focusable: number, hasSub: number) => {
|
|
38
|
+
console.error("getMeasureObj is deprecated and will be removed soon.");
|
|
63
39
|
return {
|
|
64
40
|
width: width,
|
|
65
41
|
height: height,
|
|
@@ -68,9 +44,8 @@ const getMeasureObj = (width, height, focusable, hasSub) => {
|
|
|
68
44
|
};
|
|
69
45
|
};
|
|
70
46
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
function getPositionRelativeToView(divElement, targetElement) {
|
|
47
|
+
export function getPositionRelativeToView(divElement: any, targetElement: any) {
|
|
48
|
+
console.error("getPositionRelativeToView is deprecated and will be removed soon.");
|
|
74
49
|
if (!divElement) {
|
|
75
50
|
return null;
|
|
76
51
|
}
|
|
@@ -89,19 +64,54 @@ function getPositionRelativeToView(divElement, targetElement) {
|
|
|
89
64
|
return position;
|
|
90
65
|
}
|
|
91
66
|
|
|
67
|
+
export const EdgeDirection = {
|
|
68
|
+
left: Symbol("left"),
|
|
69
|
+
right: Symbol("right"),
|
|
70
|
+
top: Symbol("top"),
|
|
71
|
+
bottom: Symbol("bottom"),
|
|
72
|
+
|
|
73
|
+
opposite: (dir: Symbol) => {
|
|
74
|
+
switch (dir) {
|
|
75
|
+
case EdgeDirection.left:
|
|
76
|
+
return EdgeDirection.right;
|
|
77
|
+
case EdgeDirection.right:
|
|
78
|
+
return EdgeDirection.left;
|
|
79
|
+
case EdgeDirection.top:
|
|
80
|
+
return EdgeDirection.bottom;
|
|
81
|
+
case EdgeDirection.bottom:
|
|
82
|
+
return EdgeDirection.top;
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const SlideStyle = {
|
|
88
|
+
seamLess: Symbol("seamless"),
|
|
89
|
+
wholePage: Symbol("wholePage"),
|
|
90
|
+
seamlessFixedId: Symbol("seamlessFixedId"),
|
|
91
|
+
startBoundaryProtect: 1,
|
|
92
|
+
endBoundaryProtect: 2,
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export const VERTICAL = Symbol("vertical");
|
|
96
|
+
export const HORIZONTAL = Symbol("horizontal");
|
|
97
|
+
|
|
92
98
|
const defaultSpeed = 1.5;
|
|
93
99
|
const defaultEasing = "";
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
static Type = {
|
|
100
|
+
export class SlideSetting {
|
|
101
|
+
public static Type = {
|
|
97
102
|
WHOLE_PAGE: 0,
|
|
98
103
|
SEAMLESS: 1,
|
|
99
104
|
FIX_POSITION: 2,
|
|
100
105
|
};
|
|
101
|
-
static START_PROTECT = 1;
|
|
102
|
-
static END_PROTECT = 2;
|
|
106
|
+
public static START_PROTECT = 1;
|
|
107
|
+
public static END_PROTECT = 2;
|
|
108
|
+
|
|
109
|
+
public readonly Type: number;
|
|
110
|
+
public readonly Speed: number;
|
|
111
|
+
public readonly Easing: string;
|
|
112
|
+
public readonly BoundaryProtect: number;
|
|
103
113
|
|
|
104
|
-
constructor(type, speed, easing, boundaryProtect) {
|
|
114
|
+
protected constructor(type: number, speed: number, easing: string, boundaryProtect: number) {
|
|
105
115
|
this.Type = type;
|
|
106
116
|
this.Speed = speed;
|
|
107
117
|
this.Easing = easing;
|
|
@@ -121,7 +131,7 @@ class SlideSetting {
|
|
|
121
131
|
* boundaryProtect: 确定滚动位置能否小于0或者大于最大长度
|
|
122
132
|
* }
|
|
123
133
|
**/
|
|
124
|
-
class WholePageSlide extends SlideSetting {
|
|
134
|
+
export class WholePageSlide extends SlideSetting {
|
|
125
135
|
constructor({
|
|
126
136
|
speed = defaultSpeed,
|
|
127
137
|
easing = defaultEasing,
|
|
@@ -145,7 +155,10 @@ class WholePageSlide extends SlideSetting {
|
|
|
145
155
|
* boundaryProtect: 确定滚动位置能否小于0或者大于最大长度
|
|
146
156
|
* }
|
|
147
157
|
**/
|
|
148
|
-
class SeamlessSlide extends SlideSetting {
|
|
158
|
+
export class SeamlessSlide extends SlideSetting {
|
|
159
|
+
public readonly StartPercent: number;
|
|
160
|
+
public readonly EndPercent: number;
|
|
161
|
+
|
|
149
162
|
constructor({
|
|
150
163
|
startPercent = 0.2,
|
|
151
164
|
endPercent = 0.8,
|
|
@@ -172,7 +185,9 @@ class SeamlessSlide extends SlideSetting {
|
|
|
172
185
|
* boundaryProtect: 确定滚动位置能否小于0或者大于最大长度
|
|
173
186
|
* }
|
|
174
187
|
**/
|
|
175
|
-
class FixPositionSlide extends SlideSetting {
|
|
188
|
+
export class FixPositionSlide extends SlideSetting {
|
|
189
|
+
public readonly FixPercent: number;
|
|
190
|
+
|
|
176
191
|
constructor({
|
|
177
192
|
fixPercent = .5,
|
|
178
193
|
speed = defaultSpeed,
|
|
@@ -184,32 +199,10 @@ class FixPositionSlide extends SlideSetting {
|
|
|
184
199
|
}
|
|
185
200
|
}
|
|
186
201
|
|
|
187
|
-
const FocusMoveType = {
|
|
202
|
+
export const FocusMoveType = {
|
|
188
203
|
NO_ADJUST: 0x00000000,
|
|
189
204
|
COLUMN_LOOP: 0x00000001,
|
|
190
205
|
ROW_LOOP: 0x00000001 << 1,
|
|
191
206
|
COLUMN_FIND_NEAR: 0x00000001 << 2,
|
|
192
207
|
ROW_FIND_NEAR: 0x00000001 << 3,
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
// randomColor() {
|
|
196
|
-
// let randomColor = Math.round(Math.random() * 2 ** 24).toString(16);
|
|
197
|
-
// return (
|
|
198
|
-
// "#" + new Array(6 - randomColor.length).fill("0").join("") + randomColor
|
|
199
|
-
// );
|
|
200
|
-
// },
|
|
201
|
-
export {
|
|
202
|
-
BaseDispatcher,
|
|
203
|
-
EdgeDirection,
|
|
204
|
-
SlideStyle,
|
|
205
|
-
VERTICAL,
|
|
206
|
-
HORIZONTAL,
|
|
207
|
-
getMeasureObj,
|
|
208
|
-
FDIV_ROUTER_NAME,
|
|
209
|
-
getPositionRelativeToView,
|
|
210
|
-
SlideSetting,
|
|
211
|
-
WholePageSlide,
|
|
212
|
-
SeamlessSlide,
|
|
213
|
-
FixPositionSlide,
|
|
214
|
-
FocusMoveType,
|
|
215
|
-
};
|
|
208
|
+
};
|
|
@@ -10,7 +10,8 @@ export * from "./MetroWidget/Dispatcher";
|
|
|
10
10
|
|
|
11
11
|
export { default as SimpleWidget } from "./MetroWidget/MetroWidget.vue";
|
|
12
12
|
export { default as MetroWidget } from "./MetroWidget/MetroWidget.vue";
|
|
13
|
-
export {
|
|
13
|
+
export { default as ListWidget } from "./MetroWidget/ListWidget.vue";
|
|
14
|
+
export { METRO_WIDGET, METRO_WIDGET_CONST } from "./MetroWidget/Const.ts";
|
|
14
15
|
|
|
15
16
|
export { default as JsvFocusBlock } from "./JsvFocusBlock.vue";
|
|
16
17
|
export { jsvCreateFocusManager, useFocusHub } from "./JsvFocusManager";
|
|
@@ -10,6 +10,11 @@ import Events from "./Events.js"
|
|
|
10
10
|
|
|
11
11
|
const TAG = "JsvAudio";
|
|
12
12
|
|
|
13
|
+
let keyToken = 0;
|
|
14
|
+
const getKeyToken = () => {
|
|
15
|
+
return ++keyToken;
|
|
16
|
+
}
|
|
17
|
+
|
|
13
18
|
class AudioManager {
|
|
14
19
|
constructor() {
|
|
15
20
|
this.audioMap = {};
|
|
@@ -63,6 +68,8 @@ class AudioProxy {
|
|
|
63
68
|
this._created = false;
|
|
64
69
|
this._eventListener = {};
|
|
65
70
|
this._propCache = {};
|
|
71
|
+
this._onVisibilityChange = this.onVisibilityChange.bind(this);
|
|
72
|
+
window.JsView?.onVisibilityChange(this._onVisibilityChange);
|
|
66
73
|
}
|
|
67
74
|
|
|
68
75
|
/** 初始化函数, 外部不应该调用 */
|
|
@@ -298,8 +305,26 @@ class AudioProxy {
|
|
|
298
305
|
window.JMD.unsubscribe(this._playerId, this._onEvent);
|
|
299
306
|
JsvAudioBridgeProxy.ReleasePlayer(this._playerId);
|
|
300
307
|
this._audioManager.releaseAudio(this._playerId);
|
|
308
|
+
window.JsView?.removeEventCallback(this._onVisibilityChange);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
onVisibilityChange(state) {
|
|
313
|
+
console.log(TAG, "audio visibility change", JSON.stringify(state));
|
|
314
|
+
if (state.status == "show") {
|
|
315
|
+
if (typeof this._propCache["customerPause"] != "undefined") {
|
|
316
|
+
const customerPause = this._propCache["customerPause"];
|
|
317
|
+
delete this._propCache["customerPause"];
|
|
318
|
+
if (!customerPause) {
|
|
319
|
+
this.play();
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
} else {
|
|
323
|
+
// pause when invisible
|
|
324
|
+
this._propCache["customerPause"] = this._propCache["paused"];
|
|
325
|
+
this.pause();
|
|
301
326
|
}
|
|
302
327
|
}
|
|
303
328
|
}
|
|
304
329
|
|
|
305
|
-
export { sAudioManager };
|
|
330
|
+
export { sAudioManager, getKeyToken };
|