@shijiu/jsview-vue 2.2.35 → 2.2.128
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/bin/browser/BrowserApic.vue.mjs +2 -1
- package/bin/browser/BrowserApic2.vue.mjs +2 -1
- package/bin/browser/BrowserApicLib.mjs +2 -1
- package/bin/browser/BrowserQrcode.vue.mjs +3 -1
- package/bin/browser/BrowserTextureAnim.vue.mjs +7 -6
- package/bin/jsview-vue.mjs +1557 -894
- package/bin/types/JsViewEngineWidget/MetroWidget/Slide.d.ts +21 -0
- package/bin/types/JsViewEngineWidget/TemplateParser/MetroTemplate.d.ts +2 -8
- package/bin/types/JsViewEngineWidget/WidgetCommon.d.ts +9 -3
- package/bin/types/JsViewVueTools/ConstSymbol.d.ts +2 -0
- package/bin/types/JsViewVueTools/ForgeConstDefine.d.ts +11 -0
- package/bin/types/JsViewVueTools/JsvRuntimeBridge.d.ts +113 -57
- package/bin/types/JsViewVueTools/JsvTextureStore/CapturedTexture/CapturedTexture.d.ts +11 -0
- package/bin/types/JsViewVueTools/JsvTextureStore/Texture.d.ts +8 -0
- package/bin/types/JsViewVueWidget/JsvConnectLine/JsvConnectLine.vue.d.ts +1 -1
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/ActionRefObject.d.ts +4 -0
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/ActorControl.d.ts +65 -0
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/ActorState.d.ts +6 -0
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/CallbackManager.d.ts +11 -0
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/ForgeTypeDefine.d.ts +15 -0
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/FreeMoveActor.vue.d.ts +6 -0
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/SetAction.d.ts +71 -0
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/SetCondition.d.ts +95 -0
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/SetState.d.ts +62 -0
- package/bin/types/JsViewVueWidget/JsvFreeMoveActor/index.d.ts +2 -1
- package/bin/types/JsViewVueWidget/JsvLine/JsvLine.vue.d.ts +1 -1
- package/bin/types/JsViewVueWidget/JsvNativeSharedDiv.vue.d.ts +66 -28
- package/bin/types/JsViewVueWidget/JsvNinePatch.vue.d.ts +1 -0
- package/bin/types/JsViewVueWidget/JsvScrollBox/JsvScrollBox.vue.d.ts +176 -0
- package/bin/types/JsViewVueWidget/JsvScrollBox/ScrollSymbol.d.ts +7 -0
- package/bin/types/JsViewVueWidget/JsvScrollBox/index.d.ts +1 -0
- package/bin/types/JsViewVueWidget/JsvTextBox.vue.d.ts +3 -3
- package/bin/types/JsViewVueWidget/index.d.ts +1 -0
- package/package.json +1 -1
- package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +10 -1
- package/utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js +398 -309
- package/utils/JsViewEngineWidget/MetroWidget/RenderItem.ts +2 -1
- package/utils/JsViewEngineWidget/MetroWidget/Slide.ts +56 -0
- package/utils/JsViewEngineWidget/MetroWidget/TaskManager.ts +51 -10
- package/utils/JsViewEngineWidget/MetroWidget/TokenGenerator.ts +10 -0
- package/utils/JsViewEngineWidget/TemplateParser/ListMetroTemplate.ts +9 -3
- package/utils/JsViewEngineWidget/TemplateParser/MetroTemplate.ts +25 -35
- package/utils/JsViewEngineWidget/WidgetCommon.ts +20 -7
- package/utils/JsViewPlugin/JsvPlayer/BrowserJsvPlayer.vue +13 -1
- package/utils/JsViewPlugin/JsvPlayer/JsvPlayer.vue +470 -338
- package/utils/JsViewVueTools/ConstSymbol.ts +3 -0
- package/utils/JsViewVueTools/ForgeConstDefine.ts +11 -0
- package/utils/JsViewVueTools/JsvRuntimeBridge.js +172 -50
- package/utils/JsViewVueTools/JsvTextureStore/CapturedTexture/CapturedTexture.ts +62 -0
- package/utils/JsViewVueTools/JsvTextureStore/JsvTextureStore.ts +41 -7
- package/utils/JsViewVueTools/JsvTextureStore/Texture.ts +15 -1
- package/utils/JsViewVueTools/index.js +2 -0
- package/utils/JsViewVueWidget/JsvApic/JsvApic/BrowserApic.vue +6 -6
- package/utils/JsViewVueWidget/JsvApic/JsvApic2/BrowserApic2.vue +5 -6
- package/utils/JsViewVueWidget/JsvApic/JsvBrowserApicLib/ApicDataBase.js +5 -1
- package/utils/JsViewVueWidget/JsvFreeMoveActor/ActionRefObject.ts +1 -1
- package/utils/JsViewVueWidget/JsvFreeMoveActor/ActorControl.ts +23 -1
- package/utils/JsViewVueWidget/JsvFreeMoveActor/ActorState.ts +4 -4
- package/utils/JsViewVueWidget/JsvFreeMoveActor/CallbackManager.ts +6 -6
- package/utils/JsViewVueWidget/JsvFreeMoveActor/ForgeTypeDefine.ts +1 -1
- package/utils/JsViewVueWidget/JsvFreeMoveActor/FreeMoveActor.vue +43 -9
- package/utils/JsViewVueWidget/JsvFreeMoveActor/SetAction.ts +24 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/SetCondition.ts +50 -1
- package/utils/JsViewVueWidget/JsvFreeMoveActor/SetState.ts +56 -0
- package/utils/JsViewVueWidget/JsvFreeMoveActor/index.js +3 -0
- package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +6 -1
- package/utils/JsViewVueWidget/JsvNativeSharedDiv.vue +121 -68
- package/utils/JsViewVueWidget/JsvNinePatch.vue +4 -1
- package/utils/JsViewVueWidget/JsvPosterImage.vue +22 -9
- package/utils/JsViewVueWidget/JsvQrcode/BrowserQrcode.vue +6 -2
- package/utils/JsViewVueWidget/JsvScrollBox/JsvScrollBox.vue +309 -0
- package/utils/JsViewVueWidget/JsvScrollBox/ScrollSymbol.ts +15 -0
- package/utils/JsViewVueWidget/JsvScrollBox/index.js +2 -0
- package/utils/JsViewVueWidget/JsvTextBox.vue +12 -4
- package/utils/JsViewVueWidget/JsvTextureAnim/BrowserTextureAnim.vue +9 -6
- package/utils/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue +2 -0
- package/utils/JsViewVueWidget/index.js +1 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ref, computed } from "vue";
|
|
2
2
|
import type { Ref } from "vue";
|
|
3
3
|
import { TemplateItem } from "../TemplateParser/MetroTemplate"
|
|
4
|
+
import { ForgeConst } from "../../JsViewVueTools/ForgeConstDefine";
|
|
4
5
|
|
|
5
6
|
interface RenderItemStyle {
|
|
6
7
|
zIndex: number,
|
|
@@ -154,7 +155,7 @@ export class RenderItem {
|
|
|
154
155
|
this.divMountedCallback.clear();
|
|
155
156
|
if (this.enableTap && this.rootDiv) {
|
|
156
157
|
const divView = (this.rootDiv as any).jsvGetProxyView();
|
|
157
|
-
divView.DragEnables?.(
|
|
158
|
+
divView.DragEnables?.(ForgeConst.DragFlags.TOUCH_RECV_CLICK_BIT); // 只激活tap
|
|
158
159
|
}
|
|
159
160
|
}
|
|
160
161
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { getCurFrameCount } from "../WidgetCommon";
|
|
2
|
+
|
|
3
|
+
export interface TargetRectInfo {
|
|
4
|
+
left: number,
|
|
5
|
+
top: number,
|
|
6
|
+
width: number,
|
|
7
|
+
height: number,
|
|
8
|
+
frameCount: number,
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class RectCache {
|
|
12
|
+
private preRect: TargetRectInfo | null = null;
|
|
13
|
+
private curRect: TargetRectInfo | null = null;
|
|
14
|
+
|
|
15
|
+
public cache(rect: TargetRectInfo) {
|
|
16
|
+
if (this.curRect && this.curRect.frameCount < rect?.frameCount) {
|
|
17
|
+
this.preRect = this.curRect;
|
|
18
|
+
}
|
|
19
|
+
this.curRect = rect;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public cacheManually() {
|
|
23
|
+
if (this.curRect && this.curRect.frameCount < getCurFrameCount()) {
|
|
24
|
+
this.preRect = this.curRect;
|
|
25
|
+
this.curRect = null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public getCurRect(): TargetRectInfo | null {
|
|
30
|
+
return this.curRect ? { ...this.curRect } : null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public getPreRect(): TargetRectInfo | null {
|
|
34
|
+
return this.preRect ? { ...this.preRect } : null;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public updatePre(key: "left" | "top" | "width" | "height", value: number) {
|
|
38
|
+
if (this.preRect) {
|
|
39
|
+
let p = this.preRect[key];
|
|
40
|
+
this.preRect[key] = value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public clean() {
|
|
45
|
+
this.preRect = null;
|
|
46
|
+
this.curRect = null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const getDirectionByRect = (curRect: TargetRectInfo, preRect: TargetRectInfo) => {
|
|
51
|
+
if (!preRect || !curRect) return { horizontal: 0, vertical: 0 };
|
|
52
|
+
return {
|
|
53
|
+
horizontal: curRect.left < preRect.left ? -1 : (curRect.left > preRect.left ? 1 : 0),
|
|
54
|
+
vertical: curRect.top < preRect.top ? -1 : (curRect.top > preRect.top ? 1 : 0),
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -107,7 +107,7 @@ export type TaskRunner = () => CancelFunc;
|
|
|
107
107
|
class CancellableRunner {
|
|
108
108
|
private cancelHandler: CancelFunc | null = null;
|
|
109
109
|
private runner: TaskRunner | null = null;
|
|
110
|
-
constructor(r: TaskRunner) {
|
|
110
|
+
constructor(r: TaskRunner) {
|
|
111
111
|
this.runner = r;
|
|
112
112
|
}
|
|
113
113
|
|
|
@@ -126,29 +126,55 @@ class CancellableRunner {
|
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
export enum TaskType {
|
|
129
|
-
RESIZE_ITEM,
|
|
129
|
+
RESIZE_ITEM = 1,
|
|
130
130
|
SLIDE,
|
|
131
131
|
ON_FOCUS_CHANGE,
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
+
export enum SlideTaskType {
|
|
135
|
+
SLIDE_BY_POS = 1,
|
|
136
|
+
SLIDE_BY_ITEM,
|
|
137
|
+
SLIDE_BY_DIV,
|
|
138
|
+
SLIDE_BY_RECT,
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
type SubType = SlideTaskType | null;
|
|
142
|
+
|
|
134
143
|
interface Task {
|
|
135
144
|
frameCount: number,
|
|
136
145
|
type: TaskType,
|
|
146
|
+
subType: SubType,
|
|
137
147
|
params: any,
|
|
138
148
|
}
|
|
139
149
|
|
|
140
|
-
export
|
|
141
|
-
|
|
150
|
+
export interface AllTaskList {
|
|
151
|
+
slide: Array<Task>,
|
|
152
|
+
focus: Array<Task>,
|
|
153
|
+
resize: Array<Task>,
|
|
154
|
+
}
|
|
155
|
+
export type AddTaskCallback = (taskList: AllTaskList) => void;
|
|
142
156
|
export class TaskManager {
|
|
143
157
|
private frameCount: number = -1;
|
|
144
|
-
private widgetTaskCacheList: Array<Task> = [];
|
|
145
158
|
private cancellableRunnerList: Array<CancellableRunner> = [];
|
|
146
159
|
|
|
160
|
+
//三类task: 1.slide, 2.resize, 3.focus
|
|
161
|
+
private allTaskList: AllTaskList = {
|
|
162
|
+
slide: [],
|
|
163
|
+
focus: [],
|
|
164
|
+
resize: [],
|
|
165
|
+
}
|
|
166
|
+
|
|
147
167
|
constructor(private onAddTask: AddTaskCallback) { }
|
|
148
168
|
|
|
149
|
-
|
|
169
|
+
private cleanTaskCache(): void {
|
|
170
|
+
this.allTaskList.slide = [];
|
|
171
|
+
this.allTaskList.focus = [];
|
|
172
|
+
this.allTaskList.resize = [];
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
public addTask(type: TaskType, params: any, subtype: SubType = null) {
|
|
150
176
|
if (this.frameCount != Forge.sFrameCount.count) {
|
|
151
|
-
this.
|
|
177
|
+
this.cleanTaskCache();
|
|
152
178
|
this.cancellableRunnerList = [];
|
|
153
179
|
this.frameCount = Forge.sFrameCount.count;
|
|
154
180
|
}
|
|
@@ -157,12 +183,27 @@ export class TaskManager {
|
|
|
157
183
|
t.cancel();
|
|
158
184
|
});
|
|
159
185
|
|
|
160
|
-
|
|
186
|
+
const tObj = {
|
|
161
187
|
type,
|
|
188
|
+
subType: subtype,
|
|
162
189
|
params,
|
|
163
190
|
frameCount: Forge.sFrameCount.count,
|
|
164
|
-
}
|
|
165
|
-
|
|
191
|
+
}
|
|
192
|
+
switch (type) {
|
|
193
|
+
case TaskType.SLIDE:
|
|
194
|
+
this.allTaskList.slide.push(tObj)
|
|
195
|
+
break;
|
|
196
|
+
case TaskType.ON_FOCUS_CHANGE:
|
|
197
|
+
this.allTaskList.focus.push(tObj)
|
|
198
|
+
break;
|
|
199
|
+
case TaskType.RESIZE_ITEM:
|
|
200
|
+
this.allTaskList.resize.push(tObj)
|
|
201
|
+
break;
|
|
202
|
+
default:
|
|
203
|
+
console.error("undefined type")
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
this.onAddTask(this.allTaskList);
|
|
166
207
|
}
|
|
167
208
|
|
|
168
209
|
public run(func: TaskRunner) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MetroTemplate, TemplateItem, MeasureInfo } from "./MetroTemplate"
|
|
2
|
-
import { VERTICAL, HORIZONTAL, FocusMoveType } from "../WidgetCommon";
|
|
2
|
+
import { VERTICAL, HORIZONTAL, FocusMoveType, getCurFrameCount } from "../WidgetCommon";
|
|
3
3
|
|
|
4
4
|
const TAG = "ListMetroTemplate";
|
|
5
5
|
|
|
@@ -123,8 +123,6 @@ class ListMetroTemplate extends MetroTemplate {
|
|
|
123
123
|
return [-1, -1]
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
|
|
128
126
|
let item = this.getItemById(baseId);
|
|
129
127
|
const startIndex = item ? item.index : Math.round(this.size / 2);
|
|
130
128
|
let start = -1, end = -1;
|
|
@@ -173,8 +171,16 @@ class ListMetroTemplate extends MetroTemplate {
|
|
|
173
171
|
break;
|
|
174
172
|
}
|
|
175
173
|
}
|
|
174
|
+
//TODO 不是一次性加载全部, 可视区域外的懒惰加载
|
|
176
175
|
for (let i of needChangeList) {
|
|
177
176
|
this._addTemplateItem(i);
|
|
177
|
+
i.layoutCache.cache({
|
|
178
|
+
left: i.left,
|
|
179
|
+
top: i.top,
|
|
180
|
+
width: i.width,
|
|
181
|
+
height: i.height,
|
|
182
|
+
frameCount: getCurFrameCount(),
|
|
183
|
+
})
|
|
178
184
|
}
|
|
179
185
|
}
|
|
180
186
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { checkType, toRawType, getTypeName } from "../CheckType.js";
|
|
2
2
|
import { METRO_WIDGET } from "../MetroWidget/Const";
|
|
3
|
-
import { VERTICAL } from "../WidgetCommon";
|
|
3
|
+
import { VERTICAL, getCurFrameCount } from "../WidgetCommon";
|
|
4
|
+
import { RectCache } from "../MetroWidget/Slide";
|
|
4
5
|
|
|
5
6
|
const TAG = "MetroTemplate";
|
|
6
7
|
|
|
@@ -160,7 +161,7 @@ interface TemplateItem {
|
|
|
160
161
|
bottom: number,
|
|
161
162
|
}
|
|
162
163
|
findNextAnchor: FindNextAnchor | null,
|
|
163
|
-
layoutCache:
|
|
164
|
+
layoutCache: RectCache,
|
|
164
165
|
uid?: string,
|
|
165
166
|
}
|
|
166
167
|
|
|
@@ -266,6 +267,14 @@ abstract class MetroTemplate {
|
|
|
266
267
|
if (itemObj.uid) {
|
|
267
268
|
(this.uidMap as any)[itemObj.uid] = item;
|
|
268
269
|
}
|
|
270
|
+
//初次缓存rect, 为resize准备
|
|
271
|
+
item.layoutCache.cache({
|
|
272
|
+
left: item.left,
|
|
273
|
+
top: item.top,
|
|
274
|
+
width: item.width,
|
|
275
|
+
height: item.height,
|
|
276
|
+
frameCount: getCurFrameCount(),
|
|
277
|
+
})
|
|
269
278
|
return item;
|
|
270
279
|
}
|
|
271
280
|
|
|
@@ -278,15 +287,22 @@ abstract class MetroTemplate {
|
|
|
278
287
|
|
|
279
288
|
public getBoundingBoxSize() {
|
|
280
289
|
const lastItem = this.templateList[this.templateList.length - 1];
|
|
281
|
-
if (
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
290
|
+
if (lastItem) {
|
|
291
|
+
if (this.direction == VERTICAL) {
|
|
292
|
+
return {
|
|
293
|
+
width: this.lineMax,
|
|
294
|
+
height: lastItem.height + lastItem.top - 1,
|
|
295
|
+
}
|
|
296
|
+
} else {
|
|
297
|
+
return {
|
|
298
|
+
height: this.lineMax,
|
|
299
|
+
width: lastItem.width + lastItem.left - 1,
|
|
300
|
+
}
|
|
285
301
|
}
|
|
286
302
|
} else {
|
|
287
303
|
return {
|
|
288
|
-
|
|
289
|
-
|
|
304
|
+
width: 0,
|
|
305
|
+
height: 0,
|
|
290
306
|
}
|
|
291
307
|
}
|
|
292
308
|
}
|
|
@@ -295,32 +311,6 @@ abstract class MetroTemplate {
|
|
|
295
311
|
return this.tailItemIndex;
|
|
296
312
|
}
|
|
297
313
|
|
|
298
|
-
public cacheLayout(start: number, end: number) {
|
|
299
|
-
if (typeof end == "undefined") {
|
|
300
|
-
end = this.templateList.length;
|
|
301
|
-
}
|
|
302
|
-
end = Math.min(end, this.templateList.length);
|
|
303
|
-
for (let i = start; i < end; ++i) {
|
|
304
|
-
let item = this.templateList[i];
|
|
305
|
-
item.layoutCache = {
|
|
306
|
-
left: item.left,
|
|
307
|
-
top: item.top,
|
|
308
|
-
width: item.width,
|
|
309
|
-
height: item.height,
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
this.cachedLayoutRange.push([start, end]);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
public cleanLayoutCache() {
|
|
316
|
-
for (let r of this.cachedLayoutRange) {
|
|
317
|
-
for (let i = r[0]; i < r[1]; ++i) {
|
|
318
|
-
this.templateList[i].layoutCache = null;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
this.cachedLayoutRange = [];
|
|
322
|
-
}
|
|
323
|
-
|
|
324
314
|
protected static getTemplateItem(itemObj: MeasureInfo): TemplateItem {
|
|
325
315
|
const valid = this.checkMeasureObject(itemObj);
|
|
326
316
|
if (!valid) {
|
|
@@ -362,7 +352,7 @@ abstract class MetroTemplate {
|
|
|
362
352
|
top: -1,
|
|
363
353
|
bottom: -1,
|
|
364
354
|
},
|
|
365
|
-
layoutCache:
|
|
355
|
+
layoutCache: new RectCache(),
|
|
366
356
|
}
|
|
367
357
|
}
|
|
368
358
|
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
* @LastEditTime: 2022-12-01 16:49:21
|
|
6
6
|
* @Description: file content
|
|
7
7
|
*/
|
|
8
|
+
import { Forge } from "@shijiu/jsview/dom/jsv-forge-define.mjs";
|
|
9
|
+
|
|
10
|
+
export const getCurFrameCount = () => {
|
|
11
|
+
return Forge.sFrameCount.count;
|
|
12
|
+
}
|
|
13
|
+
|
|
8
14
|
export class BaseDispatcher {
|
|
9
15
|
private _Component: any;
|
|
10
16
|
|
|
@@ -92,8 +98,7 @@ export const SlideStyle = {
|
|
|
92
98
|
endBoundaryProtect: 2,
|
|
93
99
|
};
|
|
94
100
|
|
|
95
|
-
export
|
|
96
|
-
export const HORIZONTAL = Symbol("horizontal");
|
|
101
|
+
export { VERTICAL, HORIZONTAL } from "../JsViewVueTools/ConstSymbol";
|
|
97
102
|
|
|
98
103
|
const defaultSpeed = 1.5;
|
|
99
104
|
const defaultEasing = "";
|
|
@@ -159,6 +164,8 @@ export class WholePageSlide extends SlideSetting {
|
|
|
159
164
|
* endPercennt: 右/下侧触发滚动的比例 0-1
|
|
160
165
|
* headRange: 左/上按键触发滚动的区域比例 0-1
|
|
161
166
|
* tailRange: 右/下按键触发滚动的区域比例 0-1
|
|
167
|
+
* headSafeArea: 保证头部item完整显示的安全区域大小
|
|
168
|
+
* tailSafeArea: 保证尾部item完整显示的安全区域大小
|
|
162
169
|
* speed: 滚动速度, 像素/毫秒
|
|
163
170
|
* easing: 滚动动画的easing
|
|
164
171
|
* boundaryProtect: 确定滚动位置能否小于0或者大于最大长度
|
|
@@ -169,12 +176,16 @@ export class SeamlessSlide extends SlideSetting {
|
|
|
169
176
|
public readonly StartPercent: number;
|
|
170
177
|
public readonly EndPercent: number;
|
|
171
178
|
public readonly FixFirstPage: boolean;
|
|
179
|
+
public readonly HeadSafeArea: number;
|
|
180
|
+
public readonly TailSafeArea: number;
|
|
172
181
|
|
|
173
182
|
constructor({
|
|
174
183
|
startPercent = 0.2,
|
|
175
184
|
endPercent = 0.8,
|
|
176
185
|
headRange = undefined,
|
|
177
186
|
tailRange = undefined,
|
|
187
|
+
headSafeArea = 0.1,
|
|
188
|
+
tailSafeArea = 0.1,
|
|
178
189
|
speed = defaultSpeed,
|
|
179
190
|
duration = null,
|
|
180
191
|
easing = defaultEasing,
|
|
@@ -188,14 +199,16 @@ export class SeamlessSlide extends SlideSetting {
|
|
|
188
199
|
this.StartPercent = headRange;
|
|
189
200
|
}
|
|
190
201
|
if (typeof tailRange !== "undefined") {
|
|
191
|
-
this.EndPercent = tailRange;
|
|
202
|
+
this.EndPercent = 1 - tailRange;
|
|
192
203
|
}
|
|
193
|
-
|
|
204
|
+
|
|
194
205
|
if (this.StartPercent < 0 || this.StartPercent > 1 || this.EndPercent < 0 || this.EndPercent > 1) {
|
|
195
206
|
console.error(`SeamlessSlideSetting error: invalide value, startPercent(${this.StartPercent}) and endPercent(${this.EndPercent}) must between 0 and 1.`);
|
|
196
|
-
this.StartPercent = 0.
|
|
197
|
-
this.EndPercent = 0.
|
|
207
|
+
this.StartPercent = 0.3;
|
|
208
|
+
this.EndPercent = 0.7;
|
|
198
209
|
}
|
|
210
|
+
this.HeadSafeArea = headSafeArea;
|
|
211
|
+
this.TailSafeArea = tailSafeArea;
|
|
199
212
|
this.FixFirstPage = fixFirstPage;
|
|
200
213
|
}
|
|
201
214
|
}
|
|
@@ -240,4 +253,4 @@ export const FocusMoveType = {
|
|
|
240
253
|
ROW_FIND_NEAR: 0x00000001 << 3,
|
|
241
254
|
};
|
|
242
255
|
|
|
243
|
-
export const RENDER_ITEM_BREAK_KEY = "__QcodeJsviewMetroWidgetSlot";
|
|
256
|
+
export const RENDER_ITEM_BREAK_KEY = "__QcodeJsviewMetroWidgetSlot";
|
|
@@ -270,6 +270,11 @@ export default {
|
|
|
270
270
|
* 视频显示在活跃JsvPlayer设置的显示区域内,事件通知也只会送给活跃的JsvPlayer组件注册的回调函数。
|
|
271
271
|
*/
|
|
272
272
|
active: { type: Boolean, default: true },
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* 属性,Number,视频播放窗的圆角设置
|
|
276
|
+
*/
|
|
277
|
+
corner: { type: Number, default: 0 },
|
|
273
278
|
},
|
|
274
279
|
components: {},
|
|
275
280
|
watch: {
|
|
@@ -366,6 +371,7 @@ export default {
|
|
|
366
371
|
// 创建PC版本的video标签
|
|
367
372
|
this.video = window.originDocument.createElement("video");
|
|
368
373
|
this._extendsApi(this.video);
|
|
374
|
+
this.video.style.borderRadius = this.corner + "px";
|
|
369
375
|
} else {
|
|
370
376
|
this.video.setRef();
|
|
371
377
|
first_create = false;
|
|
@@ -489,7 +495,13 @@ export default {
|
|
|
489
495
|
</script>
|
|
490
496
|
|
|
491
497
|
<template>
|
|
492
|
-
<div
|
|
498
|
+
<div
|
|
499
|
+
:style="{
|
|
500
|
+
...holeStyle,
|
|
501
|
+
backgroundColor: 'rgba(0,0,0,1)',
|
|
502
|
+
borderRadius: corner,
|
|
503
|
+
}"
|
|
504
|
+
>
|
|
493
505
|
<div
|
|
494
506
|
:style="{
|
|
495
507
|
left: holeStyle.left,
|