@shijiu/jsview-vue 2.1.367-test.0 → 2.1.428

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.
Files changed (27) hide show
  1. package/bin/jsview-vue.mjs +843 -508
  2. package/package.json +1 -1
  3. package/tools/config/vite.config.ts +1 -0
  4. package/utils/JsViewEngineWidget/MetroWidget/ListWidget.vue +4 -8
  5. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +8 -10
  6. package/utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js +194 -167
  7. package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.ts +7 -3
  8. package/utils/JsViewEngineWidget/MetroWidget/RenderItem.ts +8 -5
  9. package/utils/JsViewEngineWidget/MetroWidget/TaskManager.ts +173 -0
  10. package/utils/JsViewEngineWidget/TemplateParser/ListMetroTemplate.ts +4 -0
  11. package/utils/JsViewVueTools/JsvTextureDefines.ts +11 -0
  12. package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CanvasTexture.ts +27 -3
  13. package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CommandList.ts +1 -1
  14. package/utils/JsViewVueTools/JsvTextureStore/JsvTextureStore.ts +0 -28
  15. package/utils/JsViewVueTools/index.js +1 -0
  16. package/utils/JsViewVueWidget/JsvFlexCell/JsvFlexDiv.vue +118 -0
  17. package/utils/JsViewVueWidget/JsvFlexCell/index.js +6 -0
  18. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetCondition.ts +29 -0
  19. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetState.ts +4 -0
  20. package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +26 -25
  21. package/utils/JsViewVueWidget/JsvPieChart.vue +37 -37
  22. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +29 -9
  23. package/utils/JsViewVueWidget/JsvSceneTransition.vue +174 -0
  24. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +41 -30
  25. package/utils/JsViewVueWidget/JsvTextBox.vue +20 -34
  26. package/utils/JsViewVueWidget/index.js +2 -0
  27. package/utils/JsViewEngineWidget/MetroWidget/AnimationManager.ts +0 -189
@@ -1,189 +0,0 @@
1
- import { Forge } from "@shijiu/jsview/dom/jsv-forge-define";
2
- import { ShallowRef, watch, ref, Ref } from "vue";
3
-
4
- export enum TaskType {
5
- RESIZE_ITEM,
6
- SLIDE,
7
- ON_FOCUS_CHANGE,
8
- }
9
-
10
- interface Task {
11
- frameCount: number,
12
- type: TaskType,
13
- params: any,
14
- }
15
-
16
- type TaskCallback = (tasks: Array<Task>) => void;
17
-
18
- export class MacroEndTaskManager {
19
- private taskList: Array<Task> = [];
20
- private frameCount: number;
21
- private customerOnFlushTakEnd: TaskCallback;
22
- private customerOnBreak: TaskCallback;
23
- private mTaskToken: Ref<number> = ref(0);
24
- private mToken: number = 0;
25
- private mFlushedFrameCount = -1;
26
-
27
- constructor(onFlushTask: TaskCallback, onBreak: TaskCallback) {
28
- this.customerOnBreak = onBreak;
29
- this.customerOnFlushTakEnd = onFlushTask;
30
- // watch(
31
- // () => this.mTaskToken.value,
32
- // () => {
33
- // this.onFlushTask();
34
- // this.mFlushedFrameCount = this.frameCount;
35
- // },
36
- // {
37
- // flush: 'post'
38
- // })
39
- }
40
-
41
- private getToken(): number {
42
- if (this.mToken < Number.MAX_SAFE_INTEGER) {
43
- ++this.mToken;
44
- } else {
45
- this.mToken = 1;
46
- }
47
- return this.mToken;
48
- }
49
-
50
- public addTask(type: TaskType, params: any) {
51
- if (this.mFlushedFrameCount == Forge.sFrameCount.count) {
52
- console.log("MetroWidget: tasks in currnet frame flushed. ignore task", type, params);
53
- return;
54
- }
55
-
56
- this.taskList.push({
57
- type,
58
- params,
59
- frameCount: Forge.sFrameCount.count,
60
- });
61
- if (this.frameCount !== Forge.sFrameCount.count) {
62
- this.frameCount = Forge.sFrameCount.count;
63
- const breakList: Array<Task> = [];
64
- for (let i = this.taskList.length - 1; i >= 0; --i) {
65
- if (this.taskList[i].frameCount != this.frameCount) {
66
- let t = this.taskList.splice(i, 1);
67
- breakList.push(t[0]);
68
- }
69
- }
70
- this.onBreak(breakList);
71
- // this.mTaskToken.value = this.getToken();
72
- }
73
-
74
- //每次添加task时推迟处理
75
- this.mTaskToken.value = this.getToken();
76
- let selfToken = this.mTaskToken.value;
77
- Promise.resolve().then(() => {
78
- // console.log("flushtask", selfToken, this.mTaskToken.value)
79
- if (selfToken == this.mTaskToken.value) {
80
- this.onFlushTask();
81
- this.mFlushedFrameCount = this.frameCount;
82
- //task flush 完成后有按键过来时, 按键触发的task会被丢掉, 因此任务完成后RequestSwap
83
- Forge.sRenderBridge.RequestSwap();
84
- } else {
85
- // console.log("drop promise");
86
- }
87
- })
88
- }
89
-
90
- private onFlushTask() {
91
- if (this.taskList.length > 0) {
92
- this.customerOnFlushTakEnd(this.taskList);
93
- this.taskList = [];
94
- }
95
- }
96
-
97
- private onBreak(taskList: Array<Task>) {
98
- this.customerOnBreak(taskList);
99
- }
100
- }
101
-
102
- interface AnimSetting {
103
- easing?: string | null;
104
- onStart?: () => void;
105
- onEnd?: (done: boolean) => void;
106
- duration?: number,
107
- speed?: number,
108
- }
109
-
110
- class AnimObject {
111
- private frameCount: number;
112
- private forgeAnim: any;
113
- private element: any;
114
- private animSetting: AnimSetting;
115
-
116
- constructor(frameCount: number,
117
- element: any,
118
- from: [number, number],
119
- to: [number, number],
120
- setting: AnimSetting) {
121
- this.frameCount = frameCount;
122
- this.animSetting = setting;
123
- this.element = element;
124
-
125
- let duration = 0;
126
- if (typeof setting.duration == "number") {
127
- duration = setting.duration;
128
- } else if (typeof setting.speed == "number") {
129
- duration = Math.round(Math.max(Math.abs(to[0] - from[0]), Math.abs(to[1] - from[1])) / setting.speed);
130
- }
131
- this.forgeAnim = new Forge.TranslateAnimation(
132
- from[0],
133
- to[0],
134
- from[1],
135
- to[1],
136
- duration,
137
- setting.easing
138
- );
139
- this.forgeAnim.SetAnimationListener(
140
- new Forge.AnimationListener(this.onStart.bind(this), this.onEnd.bind(this), null)
141
- );
142
- }
143
-
144
- public start() {
145
- this.element?.jsvGetProxyView(true).StartAnimation(this.forgeAnim);
146
- }
147
-
148
- public stop() {
149
- this.element?.jsvGetProxyView(true).StopAnimation();
150
- }
151
-
152
- public getFrameCount() {
153
- return this.frameCount;
154
- }
155
-
156
- private onStart() {
157
- this.animSetting?.onStart?.();
158
- }
159
-
160
- private onEnd(done: boolean) {
161
- this.animSetting?.onEnd?.(done);
162
- }
163
- }
164
-
165
- export class AnimationManager {
166
- private animList: Array<AnimObject> = [];
167
- private frameCount: number = 0;
168
-
169
- public startSlideAnim(element: any, from: [number, number], to: [number, number], setting: AnimSetting) {
170
- let curFrameCount = Forge.sFrameCount.count;
171
- if (curFrameCount != this.frameCount) {
172
- this.tryCleanOldAnim();
173
- this.frameCount = curFrameCount;
174
- }
175
- const obj = new AnimObject(curFrameCount, element, from, to, setting);
176
- this.animList.push(obj);
177
- obj.start();
178
- }
179
-
180
- private tryCleanOldAnim() {
181
- for (let i = this.animList.length - 1; i >= 0; --i) {
182
- const anim = this.animList[i];
183
- if (anim.getFrameCount() != this.frameCount) {
184
- this.animList.splice(i, 1);
185
- anim.stop();
186
- }
187
- }
188
- }
189
- }