@shijiu/jsview-vue 2.1.340-test.0 → 2.1.362-test.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/bin/browser/BrowserApic.vue.mjs +2 -2
- package/bin/browser/BrowserApic2.vue.mjs +2 -2
- package/bin/browser/BrowserApicLib.mjs +2 -2
- package/bin/browser/BrowserAudio.vue.mjs +1 -1
- package/bin/browser/BrowserJsvLatex.vue.mjs +1 -1
- package/bin/browser/BrowserJsvPlayer.vue.mjs +1 -1
- package/bin/browser/BrowserPreload.vue.mjs +1 -12
- package/bin/browser/BrowserQrcode.vue.mjs +1 -1
- package/bin/browser/BrowserSpray.vue.mjs +1 -1
- package/bin/browser/BrowserTextureAnim.vue.mjs +2 -2
- package/bin/jsview-vue.mjs +283 -180
- package/package.json +1 -1
- package/tools/config/rollup.config.mjs +3 -3
- package/tools/jsview-vue-build.mjs +22 -68
- package/utils/JsViewPlugin/JsvAudio/JsvAudio.vue +4 -2
- package/utils/JsViewPlugin/JsvAudio/version.js +3 -3
- package/utils/JsViewPlugin/JsvAudio/version.mjs +3 -3
- package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CanvasTexture.ts +1 -1
- package/utils/JsViewVueWidget/JsvApic/JsvBrowserApicLib/PartLoopTool.js +1 -1
- package/utils/JsViewVueWidget/JsvPreload/BrowserPreload.vue +18 -26
- package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +43 -45
- package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +1 -1
- package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +39 -14
- /package/bin/{jsview-common.mjs → jsview-vue-common.mjs} +0 -0
package/package.json
CHANGED
|
@@ -30,13 +30,13 @@ function getManualChunks(id) {
|
|
|
30
30
|
if(path.relative(projectDir, id) == 'node_modules/.cache/_virtual/_plugin-vue_export-helper.mjs') { // 解决非显示字符问题
|
|
31
31
|
return 'export-sfc';
|
|
32
32
|
} else if(path.basename(id).startsWith('JsvCommon')) { // 解决Browser和Native同时引用问题。
|
|
33
|
-
return 'jsview-common';
|
|
33
|
+
return 'jsview-vue-common';
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
function getChunkFileName(chunkInfo) {
|
|
38
|
-
if (chunkInfo.name == 'jsview-common') {
|
|
39
|
-
return 'jsview-common.mjs'
|
|
38
|
+
if (chunkInfo.name == 'jsview-vue-common') {
|
|
39
|
+
return 'jsview-vue-common.mjs'
|
|
40
40
|
} else if (chunkInfo.name.startsWith('Browser')) {
|
|
41
41
|
return 'browser/[name].mjs'
|
|
42
42
|
} else if (chunkInfo.name == 'export-sfc') {
|
|
@@ -1,73 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
import childProcess from 'node:child_process';
|
|
5
4
|
import fs from 'node:fs';
|
|
6
5
|
import path from 'path';
|
|
7
6
|
import url from 'url';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
console.error('Error: Node version is too low! Please upgrade your Node.js first.');
|
|
17
|
-
process.exit(1)
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function execCommand(cmdline)
|
|
22
|
-
{
|
|
23
|
-
console.info('Run [' + cmdline + ']... ');
|
|
24
|
-
try {
|
|
25
|
-
const ret = childProcess.execSync(cmdline, { stdio: 'inherit' });
|
|
26
|
-
if (ret) {
|
|
27
|
-
return ret.toString();
|
|
28
|
-
}
|
|
29
|
-
return null;
|
|
30
|
-
} catch (err) {
|
|
31
|
-
console.error('Error: ', err);
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function parseArguments()
|
|
37
|
-
{
|
|
38
|
-
const options = {
|
|
39
|
-
withoutNpmInstall: false,
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
// arg0: node
|
|
43
|
-
// arg1: script.js
|
|
44
|
-
const arguList = process.argv.slice(2);
|
|
45
|
-
for (const argu of arguList) {
|
|
46
|
-
if (argu == '--without-npm-install' || argu == '-n') {
|
|
47
|
-
options.withoutNpmInstall = true;
|
|
48
|
-
} else if (argu == '--help' || argu == '-h') {
|
|
49
|
-
console.log('Usages:')
|
|
50
|
-
console.log('')
|
|
51
|
-
console.log(' -n | --without-npm-install: Ignore to run npm install.')
|
|
52
|
-
console.log('')
|
|
53
|
-
console.log(' -h | --help: Print help usages.')
|
|
54
|
-
console.log('')
|
|
55
|
-
process.exit(0)
|
|
56
|
-
} else {
|
|
57
|
-
console.error('Failed to parse argument: ' + argu)
|
|
58
|
-
process.exit(1)
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return options
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
async function main()
|
|
7
|
+
import {
|
|
8
|
+
checkNodeVersion,
|
|
9
|
+
execCommand,
|
|
10
|
+
getNpmRegistry,
|
|
11
|
+
parseArguments,
|
|
12
|
+
} from '../../../@shijiu/jsview/tools/jsview-common.mjs';
|
|
13
|
+
|
|
14
|
+
async function main(argv)
|
|
66
15
|
{
|
|
67
16
|
checkNodeVersion();
|
|
68
17
|
|
|
69
|
-
const options = parseArguments();
|
|
70
|
-
|
|
71
18
|
const currJsFilePath = url.fileURLToPath(import.meta.url)
|
|
72
19
|
const jsviewVueDir = path.resolve(currJsFilePath, '../../') // jsview-framework/@shijiu/jsview-vue
|
|
73
20
|
|
|
@@ -80,9 +27,9 @@ async function main()
|
|
|
80
27
|
// vue + vite
|
|
81
28
|
'vue@3.2.45',
|
|
82
29
|
'vue-router@4.1.6',
|
|
83
|
-
'@vitejs/plugin-vue@
|
|
30
|
+
'@vitejs/plugin-vue@4.0.0',
|
|
84
31
|
'typescript@4.9.3',
|
|
85
|
-
'vite@
|
|
32
|
+
'vite@4.0.0',
|
|
86
33
|
'vue-tsc@1.0.11',
|
|
87
34
|
|
|
88
35
|
// jsview-vue dep
|
|
@@ -95,12 +42,13 @@ async function main()
|
|
|
95
42
|
let batchCommand = []
|
|
96
43
|
|
|
97
44
|
fs.rmSync(`${jsviewVueDir}/bin`, { recursive: true, force: true });
|
|
98
|
-
if(
|
|
45
|
+
if(!argv.withoutNpmInstall
|
|
99
46
|
|| fs.existsSync(`${jsviewVueDir}/node_modules`) == false) {
|
|
47
|
+
const registry = getNpmRegistry();
|
|
100
48
|
fs.rmSync(`${jsviewVueDir}/node_modules`, { recursive: true, force: true });
|
|
101
49
|
batchCommand = [
|
|
102
|
-
|
|
103
|
-
`npm install --no-save ${noSavePackages}`,
|
|
50
|
+
`npm install --registry=${registry}`,
|
|
51
|
+
`npm install --registry=${registry} --force --no-save ${noSavePackages}`,
|
|
104
52
|
`node ${jsviewVueDir}/node_modules/@shijiu/jsview/tools/jsview-post-install.mjs --framework=vue`,
|
|
105
53
|
];
|
|
106
54
|
}
|
|
@@ -114,7 +62,7 @@ async function main()
|
|
|
114
62
|
execCommand(`cd ${jsviewVueDir} && ${command}`);
|
|
115
63
|
}
|
|
116
64
|
|
|
117
|
-
if(
|
|
65
|
+
if(!argv.withoutNpmInstall) {
|
|
118
66
|
fs.rmSync(`${jsviewVueDir}/node_modules`, { recursive: true, force: true });
|
|
119
67
|
fs.rmSync(`${jsviewVueDir}/package-lock.json`, { recursive: true, force: true });
|
|
120
68
|
}
|
|
@@ -122,4 +70,10 @@ async function main()
|
|
|
122
70
|
console.info('Done...');
|
|
123
71
|
}
|
|
124
72
|
|
|
125
|
-
|
|
73
|
+
const requiredUsages = {
|
|
74
|
+
};
|
|
75
|
+
const optionalUsages = {
|
|
76
|
+
'-n | --without-npm-install': 'Ignore to run npm install.',
|
|
77
|
+
};
|
|
78
|
+
const argv = parseArguments(requiredUsages, optionalUsages, false);
|
|
79
|
+
main(argv);
|
|
@@ -94,9 +94,11 @@ const props = defineProps({
|
|
|
94
94
|
},
|
|
95
95
|
});
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
//同进程起不同版本的core时, pluginMananger是一个对象, 因此java端的JsvAudio是同一个map, 所以要加jsviewCoreInfo避免id重复导致bug
|
|
98
|
+
const jsviewCoreInfo = window.JsView?.getJsContextId?.() + "_" + window.JsView.CodeRevision
|
|
99
|
+
let key = "JsvAudio_" + jsviewCoreInfo + "_" + getKeyToken();
|
|
98
100
|
if (props.playerKey) {
|
|
99
|
-
key = props.playerKey + "_" +
|
|
101
|
+
key = props.playerKey + "_" + jsviewCoreInfo;
|
|
100
102
|
}
|
|
101
103
|
console.log("player key:" + key);
|
|
102
104
|
const audio = sAudioManager.createAudio(key);
|
|
@@ -7,9 +7,9 @@ let PluginInfo = {
|
|
|
7
7
|
// downloadUrl:"http://192.168.0.63:8080/plugin/JsvAudio-164.zip", //插件下载地址
|
|
8
8
|
packageName: "com.qcode.jsvaudio",
|
|
9
9
|
name: "音频插件",
|
|
10
|
-
version: "1.0.
|
|
11
|
-
versionCodeMin:
|
|
12
|
-
versionCodeMax:
|
|
10
|
+
version: "1.0.27", //插件需要的版本号
|
|
11
|
+
versionCodeMin: 27,
|
|
12
|
+
versionCodeMax: 27,
|
|
13
13
|
bridgeName: "jsvAudioBridge", //插件bridge注册到jsview的名称
|
|
14
14
|
className: "com.qcode.jsvaudio.JsvAudio", //插件初始化类名称
|
|
15
15
|
initMethod: "createInstance", //插件初始化方法
|
|
@@ -7,9 +7,9 @@ let PluginInfo = {
|
|
|
7
7
|
// downloadUrl:"http://192.168.0.63:8080/plugin/JsvAudio-164.zip", //插件下载地址
|
|
8
8
|
packageName: "com.qcode.jsvaudio",
|
|
9
9
|
name: "音频插件",
|
|
10
|
-
version: "1.0.
|
|
11
|
-
versionCodeMin:
|
|
12
|
-
versionCodeMax:
|
|
10
|
+
version: "1.0.27", //插件需要的版本号
|
|
11
|
+
versionCodeMin: 27,
|
|
12
|
+
versionCodeMax: 27,
|
|
13
13
|
bridgeName: "jsvAudioBridge", //插件bridge注册到jsview的名称
|
|
14
14
|
className: "com.qcode.jsvaudio.JsvAudio", //插件初始化类名称
|
|
15
15
|
initMethod: "createInstance", //插件初始化方法
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ForgeHandles from "../../../JsViewVueTools/ForgeHandles";
|
|
1
|
+
import ForgeHandles from "../../../JsViewVueTools/ForgeHandles.js";
|
|
2
2
|
import { TextureBase } from "../Texture"
|
|
3
3
|
import * as Constants from "./CommandList"
|
|
4
4
|
import { RectPath, CirclePath, CustomPath } from "./Path"
|
|
@@ -82,7 +82,7 @@ export class PartLoopTool extends LoopToolBase {
|
|
|
82
82
|
this.mTotalFrameNum = frameNum;
|
|
83
83
|
this.mValid = this.updateLoop();
|
|
84
84
|
if (!this.mValid) {
|
|
85
|
-
|
|
85
|
+
console.log("PartLoopTool init loop info error." + this.mLoopInfo.toString());
|
|
86
86
|
} else {
|
|
87
87
|
this.mNextFrameIndex = this.mCurLoopStartFrame;
|
|
88
88
|
}
|
|
@@ -7,20 +7,20 @@ const props = defineProps({
|
|
|
7
7
|
onPreloadDone: Function, // 预加载完成回调
|
|
8
8
|
onDownloadDone: Function, // 预下载完成回调
|
|
9
9
|
onPreloading: Function,
|
|
10
|
-
})
|
|
10
|
+
});
|
|
11
11
|
|
|
12
12
|
const loadViewList = reactive({
|
|
13
13
|
preloadViewList: [],
|
|
14
|
-
downloadViewList: []
|
|
15
|
-
})
|
|
14
|
+
downloadViewList: [],
|
|
15
|
+
});
|
|
16
16
|
// 记录传入的preload为null的数量,由于vue不支持在子组件修改props值,所有在删除值为null时,需要++,这样才能保证与传入数据的length相等从而触发回调
|
|
17
17
|
let preloadIsNullNum = 0;
|
|
18
18
|
let downloadIsNullNum = 0;
|
|
19
19
|
|
|
20
|
-
let preloadResultMap = {}
|
|
21
|
-
let downloadResultMap = {}
|
|
22
|
-
let downloadUrlList = []
|
|
23
|
-
let unmountStatus = { unmount: false }
|
|
20
|
+
let preloadResultMap = {};
|
|
21
|
+
let downloadResultMap = {};
|
|
22
|
+
let downloadUrlList = [];
|
|
23
|
+
let unmountStatus = { unmount: false };
|
|
24
24
|
let preloadStateList = null;
|
|
25
25
|
let downloadStateList = null;
|
|
26
26
|
|
|
@@ -57,13 +57,16 @@ const getPreloadList = () => {
|
|
|
57
57
|
loadedNum += item ? 1 : 0;
|
|
58
58
|
});
|
|
59
59
|
props.onPreloading?.(loadedNum / preloadStateList.length);
|
|
60
|
-
if (
|
|
60
|
+
if (
|
|
61
|
+
props.onPreloadDone &&
|
|
62
|
+
loadedNum + preloadIsNullNum == preloadStateList.length
|
|
63
|
+
) {
|
|
61
64
|
props.onPreloadDone?.(preloadResultMap);
|
|
62
65
|
}
|
|
63
66
|
};
|
|
64
67
|
image.src = item.url;
|
|
65
68
|
});
|
|
66
|
-
}
|
|
69
|
+
};
|
|
67
70
|
|
|
68
71
|
const getDownloadList = () => {
|
|
69
72
|
downloadStateList = new Array(props.downloadList.length).fill(false);
|
|
@@ -104,31 +107,22 @@ const getDownloadList = () => {
|
|
|
104
107
|
downloadNum += item ? 1 : 0;
|
|
105
108
|
});
|
|
106
109
|
if (downloadNum + downloadIsNullNum == downloadStateList.length) {
|
|
107
|
-
props.onDownloadDone?.(
|
|
108
|
-
downloadUrlList,
|
|
109
|
-
downloadResultMap
|
|
110
|
-
);
|
|
110
|
+
props.onDownloadDone?.(downloadUrlList, downloadResultMap);
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
};
|
|
114
114
|
image.src = item.url;
|
|
115
115
|
});
|
|
116
|
-
}
|
|
116
|
+
};
|
|
117
117
|
|
|
118
|
-
if (props.preloadList) {
|
|
119
|
-
getPreloadList();
|
|
120
|
-
}
|
|
121
|
-
if (props.downloadList) {
|
|
122
|
-
getDownloadList();
|
|
123
|
-
}
|
|
124
118
|
watchEffect(() => {
|
|
125
119
|
if (props.preloadList) {
|
|
126
120
|
console.log("JsvPreload: update preloadList");
|
|
127
|
-
preloadIsNullNum = 0
|
|
121
|
+
preloadIsNullNum = 0;
|
|
128
122
|
preloadResultMap = {};
|
|
129
123
|
getPreloadList();
|
|
130
124
|
}
|
|
131
|
-
})
|
|
125
|
+
});
|
|
132
126
|
watchEffect(() => {
|
|
133
127
|
if (props.downloadList) {
|
|
134
128
|
console.log("JsvPreload: update downloadList");
|
|
@@ -137,16 +131,14 @@ watchEffect(() => {
|
|
|
137
131
|
downloadUrlList = [];
|
|
138
132
|
getDownloadList();
|
|
139
133
|
}
|
|
140
|
-
})
|
|
134
|
+
});
|
|
141
135
|
|
|
142
136
|
onBeforeUnmount(() => {
|
|
143
137
|
unmountStatus.unmount = true;
|
|
144
|
-
})
|
|
138
|
+
});
|
|
145
139
|
</script>
|
|
146
140
|
|
|
147
141
|
<template>
|
|
148
142
|
<!-- 保证该组件不描画任何东西,只是为了触发onload,让网页自行下载图片 -->
|
|
149
143
|
<div v-if="!preloadList"></div>
|
|
150
144
|
</template>
|
|
151
|
-
|
|
152
|
-
|
|
@@ -78,11 +78,11 @@ const props = defineProps({
|
|
|
78
78
|
onPreloading: Function,
|
|
79
79
|
onPreloadDone: Function,
|
|
80
80
|
onDownloadDone: Function,
|
|
81
|
-
})
|
|
81
|
+
});
|
|
82
82
|
const loadViewList = reactive({
|
|
83
83
|
preloadViewList: [],
|
|
84
|
-
downloadViewList: []
|
|
85
|
-
})
|
|
84
|
+
downloadViewList: [],
|
|
85
|
+
});
|
|
86
86
|
let preloadStateList = [];
|
|
87
87
|
let downloadStateList = [];
|
|
88
88
|
let downloadResultMap = {};
|
|
@@ -113,7 +113,7 @@ const _releasePreloadView = () => {
|
|
|
113
113
|
loadViewList.preloadViewList = [];
|
|
114
114
|
preloadStateList = [];
|
|
115
115
|
}
|
|
116
|
-
}
|
|
116
|
+
};
|
|
117
117
|
const _releaseDownloadView = () => {
|
|
118
118
|
if (window.JsView) {
|
|
119
119
|
if (loadViewList.downloadViewList.length > 0) {
|
|
@@ -132,11 +132,11 @@ const _releaseDownloadView = () => {
|
|
|
132
132
|
}
|
|
133
133
|
loadViewList.downloadViewList = [];
|
|
134
134
|
downloadStateList = [];
|
|
135
|
-
}
|
|
135
|
+
};
|
|
136
136
|
const _releaseForgeView = () => {
|
|
137
137
|
_releasePreloadView();
|
|
138
138
|
_releaseDownloadView();
|
|
139
|
-
}
|
|
139
|
+
};
|
|
140
140
|
|
|
141
141
|
const _checkPreload = () => {
|
|
142
142
|
let loadedNum = 0;
|
|
@@ -152,7 +152,7 @@ const _checkPreload = () => {
|
|
|
152
152
|
) {
|
|
153
153
|
props.onPreloadDone(preloadResultMap);
|
|
154
154
|
}
|
|
155
|
-
}
|
|
155
|
+
};
|
|
156
156
|
|
|
157
157
|
const _getPreloadViewIdList = () => {
|
|
158
158
|
if (!props.preloadList) {
|
|
@@ -210,19 +210,16 @@ const _getPreloadViewIdList = () => {
|
|
|
210
210
|
preloadStateList[index] = true; // 无法创建texture的图片先认为加载完成
|
|
211
211
|
return;
|
|
212
212
|
}
|
|
213
|
-
const callback_token = texture.RegisterLoadImageCallback(
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
_checkPreload();
|
|
224
|
-
}
|
|
225
|
-
);
|
|
213
|
+
const callback_token = texture.RegisterLoadImageCallback(null, (params) => {
|
|
214
|
+
console.log(`preload succeed ${image_url}`, params);
|
|
215
|
+
preloadStateList[index] = true;
|
|
216
|
+
preloadResultMap[item.url] = {
|
|
217
|
+
width: params.width,
|
|
218
|
+
height: params.height,
|
|
219
|
+
};
|
|
220
|
+
console.log(`preload succeed ${item.url}, params:${params}`);
|
|
221
|
+
_checkPreload();
|
|
222
|
+
});
|
|
226
223
|
texture.EnableBackgroundLoad();
|
|
227
224
|
const texture_setting = new Forge.ExternalTextureSetting(texture);
|
|
228
225
|
const preload_view = new Forge.PreloadView(texture_setting);
|
|
@@ -232,20 +229,20 @@ const _getPreloadViewIdList = () => {
|
|
|
232
229
|
callToken: callback_token,
|
|
233
230
|
};
|
|
234
231
|
});
|
|
235
|
-
}
|
|
232
|
+
};
|
|
236
233
|
|
|
237
234
|
const _checkDownload = () => {
|
|
238
|
-
let loadedNum = 0
|
|
235
|
+
let loadedNum = 0;
|
|
239
236
|
downloadStateList.forEach((state) => {
|
|
240
237
|
loadedNum = state ? ++loadedNum : loadedNum;
|
|
241
238
|
});
|
|
242
|
-
if (
|
|
243
|
-
props.onDownloadDone
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
);
|
|
239
|
+
if (
|
|
240
|
+
props.onDownloadDone &&
|
|
241
|
+
loadedNum === downloadStateList.length - downloadIsNullNum
|
|
242
|
+
) {
|
|
243
|
+
props.onDownloadDone(downloadStateList, downloadResultMap);
|
|
247
244
|
}
|
|
248
|
-
}
|
|
245
|
+
};
|
|
249
246
|
|
|
250
247
|
const _getDownloadViewIdList = () => {
|
|
251
248
|
if (!props.downloadList) {
|
|
@@ -282,9 +279,7 @@ const _getDownloadViewIdList = () => {
|
|
|
282
279
|
item.getImageSize
|
|
283
280
|
);
|
|
284
281
|
if (!texture) {
|
|
285
|
-
console.error(
|
|
286
|
-
"Error: Down view build texture failed for " + image_url
|
|
287
|
-
);
|
|
282
|
+
console.error("Error: Down view build texture failed for " + image_url);
|
|
288
283
|
// 无法创建texture的图片先认为加载完成
|
|
289
284
|
downloadStateList[index] = "invalid";
|
|
290
285
|
return;
|
|
@@ -317,12 +312,9 @@ const _getDownloadViewIdList = () => {
|
|
|
317
312
|
callToken: callback_token,
|
|
318
313
|
};
|
|
319
314
|
});
|
|
320
|
-
}
|
|
321
|
-
|
|
315
|
+
};
|
|
322
316
|
|
|
323
317
|
_releaseForgeView();
|
|
324
|
-
_getPreloadViewIdList();
|
|
325
|
-
_getDownloadViewIdList();
|
|
326
318
|
|
|
327
319
|
watchEffect(() => {
|
|
328
320
|
if (props.preloadList) {
|
|
@@ -332,36 +324,42 @@ watchEffect(() => {
|
|
|
332
324
|
_getPreloadViewIdList();
|
|
333
325
|
preloadToken++;
|
|
334
326
|
}
|
|
335
|
-
})
|
|
327
|
+
});
|
|
336
328
|
watchEffect(() => {
|
|
337
329
|
if (props.downloadList) {
|
|
338
330
|
console.log("JsvPreload: update downloadList");
|
|
339
|
-
downloadIsNullNum = 0
|
|
331
|
+
downloadIsNullNum = 0;
|
|
340
332
|
_releaseDownloadView();
|
|
341
333
|
_getDownloadViewIdList();
|
|
342
334
|
downloadToken++;
|
|
343
335
|
}
|
|
344
|
-
})
|
|
336
|
+
});
|
|
345
337
|
|
|
346
338
|
onBeforeUnmount(() => {
|
|
347
339
|
_releaseForgeView();
|
|
348
|
-
})
|
|
349
|
-
|
|
350
|
-
|
|
340
|
+
});
|
|
351
341
|
</script>
|
|
352
|
-
|
|
342
|
+
|
|
353
343
|
<template>
|
|
354
344
|
<div>
|
|
355
345
|
<div :key="'preload_' + preloadToken">
|
|
356
|
-
<div
|
|
346
|
+
<div
|
|
347
|
+
v-for="item in loadViewList.preloadViewList"
|
|
348
|
+
:key="item.viewId"
|
|
349
|
+
:id="item.viewId"
|
|
350
|
+
>
|
|
357
351
|
<div v-if="item.viewId" :data-jsv-vw-innerview="item.viewId"></div>
|
|
358
352
|
</div>
|
|
359
353
|
</div>
|
|
360
354
|
|
|
361
355
|
<div :key="'download_' + downloadToken">
|
|
362
|
-
<div
|
|
356
|
+
<div
|
|
357
|
+
v-for="item in loadViewList.downloadViewList"
|
|
358
|
+
:key="item.viewId"
|
|
359
|
+
:id="item.viewId"
|
|
360
|
+
>
|
|
363
361
|
<div v-if="item.viewId" :data-jsv-vw-innerview="item.viewId"></div>
|
|
364
362
|
</div>
|
|
365
363
|
</div>
|
|
366
364
|
</div>
|
|
367
|
-
</template>
|
|
365
|
+
</template>
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
</template>
|
|
57
57
|
|
|
58
58
|
<script setup>
|
|
59
|
-
import { reactive, shallowRef } from "vue";
|
|
60
|
-
import { getKeyFramesGroup } from
|
|
59
|
+
import { reactive, shallowRef,onBeforeUnmount } from "vue";
|
|
60
|
+
import { getKeyFramesGroup } from "../../JsViewVueTools/JsvDynamicKeyFrames.js";
|
|
61
61
|
|
|
62
62
|
const props = defineProps({
|
|
63
63
|
dispNumber: { type: Number, require: true },
|
|
@@ -159,6 +159,9 @@ for (let i = midIndex - 1; i >= 0; i--) {
|
|
|
159
159
|
let startPosX = leftArray[i + 1].left + leftArray[i + 1].width / 2;
|
|
160
160
|
leftArray[i].left = startPosX - space.value - leftArray[i].width / 2;
|
|
161
161
|
}
|
|
162
|
+
//确定动画距离
|
|
163
|
+
let aniDistance = leftArray[midIndex].left - leftArray[midIndex - 1].left;
|
|
164
|
+
|
|
162
165
|
//右边 left
|
|
163
166
|
for (let i = midIndex + 1; i < items.length; i++) {
|
|
164
167
|
let startPosX = leftArray[i - 1].left + leftArray[i - 1].width / 2;
|
|
@@ -293,7 +296,7 @@ const onKeyDown = (ev) => {
|
|
|
293
296
|
let styleShell = getKeyFramesGroup();
|
|
294
297
|
let slideToLeftA = `@keyframes slideToLeftA {
|
|
295
298
|
from {
|
|
296
|
-
transform: translate3d(${-
|
|
299
|
+
transform: translate3d(${-aniDistance}, 0, 0);
|
|
297
300
|
}
|
|
298
301
|
to {
|
|
299
302
|
transform: translate3d(0, 0, 0);
|
|
@@ -304,7 +307,7 @@ styleShell.insertRule(slideToLeftA);
|
|
|
304
307
|
//左边动画B
|
|
305
308
|
let slideToLeftB = `@keyframes slideToLeftB {
|
|
306
309
|
from {
|
|
307
|
-
transform: translate3d(${-
|
|
310
|
+
transform: translate3d(${-aniDistance}, 0, 0);
|
|
308
311
|
}
|
|
309
312
|
to {
|
|
310
313
|
transform: translate3d(0, 0, 0);
|
|
@@ -316,7 +319,7 @@ styleShell.insertRule(slideToLeftB);
|
|
|
316
319
|
//右边动画A
|
|
317
320
|
let slideToRightA = `@keyframes slideToRightA {
|
|
318
321
|
from {
|
|
319
|
-
transform: translate3d(${
|
|
322
|
+
transform: translate3d(${aniDistance}, 0, 0);
|
|
320
323
|
}
|
|
321
324
|
to {
|
|
322
325
|
transform: translate3d(0, 0, 0);
|
|
@@ -327,7 +330,7 @@ styleShell.insertRule(slideToRightA);
|
|
|
327
330
|
//右边动画B
|
|
328
331
|
let slideToRightB = `@keyframes slideToRightB {
|
|
329
332
|
from {
|
|
330
|
-
transform: translate3d(${
|
|
333
|
+
transform: translate3d(${aniDistance}, 0, 0);
|
|
331
334
|
}
|
|
332
335
|
to {
|
|
333
336
|
transform: translate3d(0, 0, 0);
|
|
@@ -338,7 +341,9 @@ styleShell.insertRule(slideToRightB);
|
|
|
338
341
|
//缩小动画A
|
|
339
342
|
let lowerA = `@keyframes lowerA {
|
|
340
343
|
from {
|
|
341
|
-
transform: scale3d(1
|
|
344
|
+
transform: scale3d(${1 + props.sideScale},${
|
|
345
|
+
1 + props.sideScale
|
|
346
|
+
}, 1);
|
|
342
347
|
}
|
|
343
348
|
to {
|
|
344
349
|
transform: scale3d(1, 1, 1);
|
|
@@ -348,7 +353,9 @@ styleShell.insertRule(lowerA);
|
|
|
348
353
|
//缩小动画B
|
|
349
354
|
let lowerB = `@keyframes lowerB {
|
|
350
355
|
from {
|
|
351
|
-
transform: scale3d(1
|
|
356
|
+
transform: scale3d(${1 + props.sideScale},${
|
|
357
|
+
1 + props.sideScale
|
|
358
|
+
}, 1);
|
|
352
359
|
}
|
|
353
360
|
to {
|
|
354
361
|
transform: scale3d(1, 1, 1);
|
|
@@ -358,7 +365,9 @@ styleShell.insertRule(lowerB);
|
|
|
358
365
|
//放大动画A
|
|
359
366
|
let biggerA = `@keyframes biggerA {
|
|
360
367
|
from {
|
|
361
|
-
transform: scale3d(${1 / 1.
|
|
368
|
+
transform: scale3d(${1 / (1 + props.sideScale)},${
|
|
369
|
+
1 / (1 + props.sideScale)
|
|
370
|
+
} , 1);
|
|
362
371
|
}
|
|
363
372
|
to {
|
|
364
373
|
transform: scale3d(1, 1, 1);
|
|
@@ -368,7 +377,9 @@ styleShell.insertRule(biggerA);
|
|
|
368
377
|
//放大动画B
|
|
369
378
|
let biggerB = `@keyframes biggerB {
|
|
370
379
|
from {
|
|
371
|
-
transform: scale3d(${1 / 1.
|
|
380
|
+
transform: scale3d(${1 / (1 + props.sideScale)},${
|
|
381
|
+
1 / (1 + props.sideScale)
|
|
382
|
+
} , 1);
|
|
372
383
|
}
|
|
373
384
|
to {
|
|
374
385
|
transform: scale3d(1, 1, 1);
|
|
@@ -379,7 +390,7 @@ styleShell.insertRule(biggerB);
|
|
|
379
390
|
//第0项左移动画A
|
|
380
391
|
let slideToLeft0A = `@keyframes slideToLeft0A {
|
|
381
392
|
from {
|
|
382
|
-
transform: translate3d(${
|
|
393
|
+
transform: translate3d(${aniDistance}, 0, 0);
|
|
383
394
|
}
|
|
384
395
|
to {
|
|
385
396
|
transform: translate3d(0, 0, 0);
|
|
@@ -389,7 +400,7 @@ styleShell.insertRule(slideToLeft0A);
|
|
|
389
400
|
//第0项左移动画B
|
|
390
401
|
let slideToLeft0B = `@keyframes slideToLeft0B {
|
|
391
402
|
from {
|
|
392
|
-
transform: translate3d(${
|
|
403
|
+
transform: translate3d(${aniDistance}, 0, 0);
|
|
393
404
|
}
|
|
394
405
|
to {
|
|
395
406
|
transform: translate3d(0, 0, 0);
|
|
@@ -400,7 +411,7 @@ styleShell.insertRule(slideToLeft0B);
|
|
|
400
411
|
//页面最后一项右移动画A
|
|
401
412
|
let slideToRight0A = `@keyframes slideToRight0A {
|
|
402
413
|
from {
|
|
403
|
-
transform: translate3d(${-
|
|
414
|
+
transform: translate3d(${-aniDistance}, 0, 0);
|
|
404
415
|
}
|
|
405
416
|
to {
|
|
406
417
|
transform: translate3d(0, 0, 0);
|
|
@@ -411,7 +422,7 @@ styleShell.insertRule(slideToRight0A);
|
|
|
411
422
|
//页面最后一项右移动画B
|
|
412
423
|
let slideToRight0B = `@keyframes slideToRight0B {
|
|
413
424
|
from {
|
|
414
|
-
transform: translate3d(${-
|
|
425
|
+
transform: translate3d(${-aniDistance}, 0, 0);
|
|
415
426
|
}
|
|
416
427
|
to {
|
|
417
428
|
transform: translate3d(0, 0, 0);
|
|
@@ -447,6 +458,20 @@ const onActionObj = {
|
|
|
447
458
|
onFocus: props.onFocus,
|
|
448
459
|
onBlur: props.onBlur,
|
|
449
460
|
};
|
|
461
|
+
onBeforeUnmount(()=>{
|
|
462
|
+
styleShell.removeRule('slideToLeftA');
|
|
463
|
+
styleShell.removeRule('slideToLeftB');
|
|
464
|
+
styleShell.removeRule('slideToRightA')
|
|
465
|
+
styleShell.removeRule('slideToRightB')
|
|
466
|
+
styleShell.removeRule('slideToLeft0A')
|
|
467
|
+
styleShell.removeRule('slideToLeft0B')
|
|
468
|
+
styleShell.removeRule('slideToRight0A')
|
|
469
|
+
styleShell.removeRule('slideToRight0B')
|
|
470
|
+
styleShell.removeRule('lowerA')
|
|
471
|
+
styleShell.removeRule('lowerB')
|
|
472
|
+
styleShell.removeRule('biggerA')
|
|
473
|
+
styleShell.removeRule('biggerB')
|
|
474
|
+
})
|
|
450
475
|
</script>
|
|
451
476
|
|
|
452
477
|
<style scoped></style>
|
|
File without changes
|