@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
|
@@ -13,10 +13,6 @@ export default {
|
|
|
13
13
|
* 属性,Boolean类型,true表示自动播放,默认false。
|
|
14
14
|
*/
|
|
15
15
|
autoplay: { type: Boolean, default: false },
|
|
16
|
-
/**
|
|
17
|
-
* 属性,String类型,播放器实例索引,同样的key使用同一个播放器实例。
|
|
18
|
-
*/
|
|
19
|
-
playerKey: { type: String, default: null },
|
|
20
16
|
/**
|
|
21
17
|
* 属性,Boolean类型,true表示静音,默认false。
|
|
22
18
|
*/
|
|
@@ -107,46 +103,7 @@ export default {
|
|
|
107
103
|
};
|
|
108
104
|
},
|
|
109
105
|
mounted() {
|
|
110
|
-
|
|
111
|
-
if (this.playerKey) {
|
|
112
|
-
key = this.playerKey;
|
|
113
|
-
}
|
|
114
|
-
console.log("player key:" + key);
|
|
115
|
-
|
|
116
|
-
this.audio = new Audio();
|
|
117
|
-
this.registerEvent();
|
|
118
|
-
if (this.src && this.src !== "") {
|
|
119
|
-
let realUrl
|
|
120
|
-
if (window.JsView) {
|
|
121
|
-
// jsview上
|
|
122
|
-
realUrl = new window.JsView.Dom.UrlRef(this.src).href;
|
|
123
|
-
} else {
|
|
124
|
-
realUrl = this.src;
|
|
125
|
-
}
|
|
126
|
-
this.audio.src = realUrl;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (this.autoplay) {
|
|
130
|
-
this.audio.autoplay = this.autoplay;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
if (this.muted) {
|
|
134
|
-
this.audio.muted = this.muted;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
if (this.loop) {
|
|
138
|
-
this.audio.loop = this.loop;
|
|
139
|
-
}
|
|
140
|
-
if (this.preDownload) {
|
|
141
|
-
this.audio.predownload = this.preDownload;
|
|
142
|
-
}
|
|
143
|
-
this.onRef?.(this.audio);
|
|
144
|
-
//初始化
|
|
145
|
-
Promise.resolve().then(() => {
|
|
146
|
-
if (this.audio) {
|
|
147
|
-
this.audio.confirmInitSetup?.();
|
|
148
|
-
}
|
|
149
|
-
});
|
|
106
|
+
this.Jsvinit()
|
|
150
107
|
},
|
|
151
108
|
|
|
152
109
|
beforeUnmount() {
|
|
@@ -155,6 +112,7 @@ export default {
|
|
|
155
112
|
this.audio.releaseResource?.();
|
|
156
113
|
this.audio.onPlatformDestroy?.();
|
|
157
114
|
this.onRef?.(null);
|
|
115
|
+
this.unregisterOnVisibilityChange()
|
|
158
116
|
}
|
|
159
117
|
},
|
|
160
118
|
|
|
@@ -170,6 +128,80 @@ export default {
|
|
|
170
128
|
this.audio.addEventListener("audiofocusgain", this.onAudioFocusGain);
|
|
171
129
|
}
|
|
172
130
|
},
|
|
131
|
+
onVisibilityChange(status) {
|
|
132
|
+
if (status.status === "show") {
|
|
133
|
+
this.onJsViewShow();
|
|
134
|
+
} else if (status.status === "hide") {
|
|
135
|
+
this.onJsViewHide();
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
registerOnVisibilityChange() {
|
|
139
|
+
if (window.JsView) {
|
|
140
|
+
window.JsView.onVisibilityChange(this.onVisibilityChange);
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
unregisterOnVisibilityChange() {
|
|
144
|
+
if (window.JsView) {
|
|
145
|
+
window.JsView.removeEventCallback(this.onVisibilityChange);
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
onJsViewHide() {
|
|
149
|
+
if (this.audio) {
|
|
150
|
+
//释放
|
|
151
|
+
if (!this.audio.paused) {
|
|
152
|
+
this.stopByOnHide = true;
|
|
153
|
+
}
|
|
154
|
+
this.audio.unload();
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
onJsViewShow() {
|
|
158
|
+
//重新加载
|
|
159
|
+
if (!this.audio) {
|
|
160
|
+
this.Jsvinit()
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (this.stopByOnHide) {
|
|
164
|
+
this.stopByOnHide = false;
|
|
165
|
+
this.Jsvinit()
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
Jsvinit() {
|
|
169
|
+
this.audio = new Audio();
|
|
170
|
+
this.registerEvent();
|
|
171
|
+
if (this.src && this.src !== "") {
|
|
172
|
+
let realUrl
|
|
173
|
+
if (window.JsView) {
|
|
174
|
+
// jsview上
|
|
175
|
+
realUrl = new window.JsView.Dom.UrlRef(this.src).href;
|
|
176
|
+
} else {
|
|
177
|
+
realUrl = this.src;
|
|
178
|
+
}
|
|
179
|
+
this.audio.src = realUrl;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (this.autoplay) {
|
|
183
|
+
this.audio.autoplay = this.autoplay;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (this.muted) {
|
|
187
|
+
this.audio.muted = this.muted;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (this.loop) {
|
|
191
|
+
this.audio.loop = this.loop;
|
|
192
|
+
}
|
|
193
|
+
if (this.preDownload) {
|
|
194
|
+
this.audio.predownload = this.preDownload;
|
|
195
|
+
}
|
|
196
|
+
this.onRef?.(this.audio);
|
|
197
|
+
//初始化
|
|
198
|
+
Promise.resolve().then(() => {
|
|
199
|
+
if (this.audio) {
|
|
200
|
+
this.audio.confirmInitSetup?.();
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
this.registerOnVisibilityChange()
|
|
204
|
+
}
|
|
173
205
|
},
|
|
174
206
|
};
|
|
175
207
|
</script>
|
|
@@ -41,3 +41,4 @@ export { default as JsvTouchContainer } from "./JsvTouchContainer.vue";
|
|
|
41
41
|
export { default as JsvTransparentDiv } from "./JsvTransparentDiv.vue";
|
|
42
42
|
export { default as JsvVideo } from "./JsvVideo.vue";
|
|
43
43
|
export { default as JsvSystemAudio } from "./JsvSystemAudio.vue";
|
|
44
|
+
export { default as JsvRadarChart} from "./JsvRadarChart.vue";
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: ChenChanghua
|
|
3
|
-
* @Date: 2022-06-10 10:17:35
|
|
4
|
-
* @LastEditors: ChenChanghua
|
|
5
|
-
* @LastEditTime: 2022-06-10 10:17:36
|
|
6
|
-
* @Description: file content
|
|
7
|
-
*/
|
|
8
|
-
class ItemRange {
|
|
9
|
-
constructor(start, end) {
|
|
10
|
-
this.start = start;
|
|
11
|
-
this.end = end;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
_merge(from, to) {
|
|
15
|
-
if (to.ifOverlap(from)) {
|
|
16
|
-
to.start = Math.min(from.start, to.start);
|
|
17
|
-
to.end = Math.max(from.end, to.end);
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
merge(from) {
|
|
24
|
-
let to = this.clone();
|
|
25
|
-
this._merge(from, to);
|
|
26
|
-
return to;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
selfMerge(from) {
|
|
30
|
-
return this._merge(from, this);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
ifOverlap(range) {
|
|
34
|
-
return this.start <= range.end && range.start <= this.end;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
clone() {
|
|
38
|
-
return new ItemRange(this.start, this.end);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function mergeRangeList(list_1, list_2) {
|
|
43
|
-
const result_list = list_1.concat();
|
|
44
|
-
for (let list_2_item of list_2) {
|
|
45
|
-
let item = list_2_item.clone();
|
|
46
|
-
for (let i = result_list.length - 1; i >= 0; i--) {
|
|
47
|
-
if (item.selfMerge(result_list[i])) {
|
|
48
|
-
result_list.splice(i, 1);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
result_list.push(item);
|
|
52
|
-
}
|
|
53
|
-
return result_list;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
class PageUpdater {
|
|
57
|
-
constructor(update_func) {
|
|
58
|
-
this.tmpRangeList = [];
|
|
59
|
-
this.rangeList = [];
|
|
60
|
-
|
|
61
|
-
this._updateFunc = update_func;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
update(
|
|
65
|
-
template,
|
|
66
|
-
visible_start,
|
|
67
|
-
visible_end,
|
|
68
|
-
anchor_id,
|
|
69
|
-
merge_tmp,
|
|
70
|
-
permanent_list,
|
|
71
|
-
extension_range = 0
|
|
72
|
-
) {
|
|
73
|
-
if (!template || template.GetLength() === 0) return;
|
|
74
|
-
let visible_range = template.GetVisibleItemList(
|
|
75
|
-
visible_start - extension_range,
|
|
76
|
-
visible_end + extension_range,
|
|
77
|
-
anchor_id
|
|
78
|
-
);
|
|
79
|
-
if (!visible_range) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
let pre_tmp = this.tmpRangeList;
|
|
83
|
-
let pre_list = this.rangeList;
|
|
84
|
-
let range = new ItemRange(
|
|
85
|
-
visible_range.visibleStart,
|
|
86
|
-
visible_range.visibleEnd
|
|
87
|
-
);
|
|
88
|
-
this.rangeList = [range];
|
|
89
|
-
if (permanent_list) {
|
|
90
|
-
let permanent_show_list = permanent_list.filter((item) => {
|
|
91
|
-
let result = false;
|
|
92
|
-
if (item.alreadyShow || item.index <= range.end) {
|
|
93
|
-
item.alreadyShow = true;
|
|
94
|
-
result = true;
|
|
95
|
-
}
|
|
96
|
-
return result;
|
|
97
|
-
});
|
|
98
|
-
let permanent_range_list = permanent_show_list.map((item) => {
|
|
99
|
-
return new ItemRange(item.index, item.index);
|
|
100
|
-
});
|
|
101
|
-
this.rangeList = mergeRangeList([range], permanent_range_list);
|
|
102
|
-
}
|
|
103
|
-
if (pre_list.length > 0) {
|
|
104
|
-
this.tmpRangeList = mergeRangeList(this.rangeList, pre_list);
|
|
105
|
-
if (merge_tmp) {
|
|
106
|
-
this.tmpRangeList = mergeRangeList(this.tmpRangeList, pre_tmp);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
debugPrint() {
|
|
112
|
-
return (
|
|
113
|
-
"list: " +
|
|
114
|
-
JSON.stringify(this.rangeList) +
|
|
115
|
-
", tmplist: " +
|
|
116
|
-
JSON.stringify(this.tmpRangeList)
|
|
117
|
-
);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
apply() {
|
|
121
|
-
this.tmpRangeList = [];
|
|
122
|
-
this._updateFunc(this.rangeList);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
applyTmp() {
|
|
126
|
-
if (this.tmpRangeList.length > 0) {
|
|
127
|
-
this._updateFunc(this.tmpRangeList);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
getRange() {
|
|
132
|
-
return this.rangeList[0];
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export { PageUpdater };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: ChenChanghua
|
|
3
|
-
* @Date: 2022-06-17 15:51:19
|
|
4
|
-
* @LastEditors: ChenChanghua
|
|
5
|
-
* @LastEditTime: 2022-06-17 16:02:28
|
|
6
|
-
* @Description: file content
|
|
7
|
-
*/
|
|
8
|
-
const bindFunctions = (obj, target) => {
|
|
9
|
-
for (let key in obj) {
|
|
10
|
-
if (typeof obj[key] === "function") {
|
|
11
|
-
obj[key] = obj[key].bind(target);
|
|
12
|
-
} else if (typeof obj[key] === "object") {
|
|
13
|
-
bindFunctions(obj[key], target);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export { bindFunctions };
|