mix-public 1.1.0 → 1.1.2
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/README.md +33 -5
- package/customMethod/cachPictureForWeb.js +60 -0
- package/customMethod/formatColor.js +14 -0
- package/customMethod/imageFormat.js +3 -1
- package/customMethod/pageParams.js +12 -0
- package/customMethod/publicLogic.js +110 -17
- package/main/mixappfunc.js +680 -770
- package/mixRender.css +4 -0
- package/mixRender.js +21 -5
- package/package.json +1 -1
- package/pageRender/getInfo.js +1 -1
- package/pageRender/navigation.js +4 -2
- package/pageRender/tabbar.js +6 -5
package/README.md
CHANGED
|
@@ -15,10 +15,8 @@
|
|
|
15
15
|
// pnpm
|
|
16
16
|
pnpm i mix-public
|
|
17
17
|
```
|
|
18
|
-
###
|
|
19
|
-
|
|
18
|
+
### 初始化方式
|
|
20
19
|
```javascript
|
|
21
|
-
|
|
22
20
|
// 布局使用(入口文件)
|
|
23
21
|
import mixRender from "mix-public"
|
|
24
22
|
|
|
@@ -32,7 +30,7 @@
|
|
|
32
30
|
import 'mix-public/mixRender.css'; // 引入web端app基础样式
|
|
33
31
|
mixPublicLib // 为原生基础调用方法,可在页面使用
|
|
34
32
|
|
|
35
|
-
//
|
|
33
|
+
// 单独方法使用
|
|
36
34
|
import mixRender from "mix-public"
|
|
37
35
|
const PublicLib = mixRender({
|
|
38
36
|
mixJustMethod: true,
|
|
@@ -40,6 +38,34 @@
|
|
|
40
38
|
});
|
|
41
39
|
```
|
|
42
40
|
|
|
41
|
+
### 生命周期
|
|
42
|
+
```javascript
|
|
43
|
+
// 页面加载时
|
|
44
|
+
OnloadPage((op)=>{
|
|
45
|
+
// op为页面参数,包含上一个页面参数
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
//页面退回
|
|
49
|
+
//immediate:是否立即执行
|
|
50
|
+
OnStartLoad(()=>{
|
|
51
|
+
// 添加当前方法,在页面退回时执行
|
|
52
|
+
},{immediate:false})
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 方法使用方式
|
|
56
|
+
```javascript
|
|
57
|
+
|
|
58
|
+
// 调用类型
|
|
59
|
+
//1.直接调用类
|
|
60
|
+
mixPublicLib.putCookieInfo('key','value')
|
|
61
|
+
//2.同步返回类
|
|
62
|
+
const result = mixPublicLib. getCookieInfo('key')
|
|
63
|
+
//1.异步返回类
|
|
64
|
+
mixPublicLib.UploadPhoto({PhotoCount:1, isCut:true, Quality:1}).then(file=>{
|
|
65
|
+
console.log(file)
|
|
66
|
+
})
|
|
67
|
+
```
|
|
68
|
+
|
|
43
69
|
|
|
44
70
|
### 更新记录
|
|
45
71
|
- v1.0.0 项目初始化
|
|
@@ -52,4 +78,6 @@
|
|
|
52
78
|
- v1.0.7 整体依赖调用方式调整/优化目录结构
|
|
53
79
|
- v1.0.8 依赖引用调整
|
|
54
80
|
- v1.0.9 依赖引用调整
|
|
55
|
-
- v1.1.0
|
|
81
|
+
- v1.1.0 方法包调用方式整体调整
|
|
82
|
+
- v1.1.1 添加OnloadPage生命周期/调整 goto 方法参数
|
|
83
|
+
- v1.1.2 修复方法环境变量/添加 a 标签捕获自定义站内跳转
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export default (op) => {
|
|
2
|
+
var indexedDB =
|
|
3
|
+
window.indexedDB ||
|
|
4
|
+
window.mozIndexedDB ||
|
|
5
|
+
window.webkitIndexedDB ||
|
|
6
|
+
window.msIndexedDB
|
|
7
|
+
var dataBase = null
|
|
8
|
+
dataBase = indexedDB.open("MIXAPPCachePicture", 1)
|
|
9
|
+
dataBase.onupgradeneeded = function (e) {
|
|
10
|
+
var active = dataBase.result
|
|
11
|
+
var objectDb = active.createObjectStore("seasidecity", {
|
|
12
|
+
keyPath: "id",
|
|
13
|
+
})
|
|
14
|
+
objectDb.createIndex("index_base64", "base64", {
|
|
15
|
+
unique: false,
|
|
16
|
+
})
|
|
17
|
+
}
|
|
18
|
+
dataBase.onsuccess = function (e) {
|
|
19
|
+
var transaction = dataBase.result.transaction(["seasidecity"])
|
|
20
|
+
var objectStore = transaction.objectStore("seasidecity")
|
|
21
|
+
var request = objectStore.get(md5(op.Picurl))
|
|
22
|
+
request.onerror = function (event) {}
|
|
23
|
+
request.onsuccess = function (event) {
|
|
24
|
+
if (request.result) {
|
|
25
|
+
setTimeout(function () {
|
|
26
|
+
if (document.getElementById(op.Domid))
|
|
27
|
+
document.getElementById(op.Domid).src = request.result.base64
|
|
28
|
+
}, 300)
|
|
29
|
+
} else {
|
|
30
|
+
setTimeout(function () {
|
|
31
|
+
if (document.getElementById(op.Domid))
|
|
32
|
+
document.getElementById(op.Domid).src = op.Picurl
|
|
33
|
+
}, 300)
|
|
34
|
+
var img = document.createElement("img")
|
|
35
|
+
img.setAttribute("crossOrigin", "anonymous")
|
|
36
|
+
img.src = op.Picurl
|
|
37
|
+
img.onload = function () {
|
|
38
|
+
var canvas = document.createElement("canvas")
|
|
39
|
+
canvas.width = img.width
|
|
40
|
+
canvas.height = img.height
|
|
41
|
+
var ctx = canvas.getContext("2d")
|
|
42
|
+
ctx.drawImage(img, 0, 0, img.width, img.height)
|
|
43
|
+
var dataURL = canvas.toDataURL("image/png")
|
|
44
|
+
|
|
45
|
+
var active = dataBase.result
|
|
46
|
+
var data = active.transaction(["seasidecity"], "readwrite")
|
|
47
|
+
var objectDb = data.objectStore("seasidecity")
|
|
48
|
+
var request = objectDb.put({
|
|
49
|
+
id: md5(op.Picurl),
|
|
50
|
+
base64: dataURL,
|
|
51
|
+
})
|
|
52
|
+
request.onerror = function (e) {}
|
|
53
|
+
|
|
54
|
+
data.oncomplete = function (e) {}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
dataBase.onerror = function (e) {}
|
|
60
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default (str)=>{
|
|
2
|
+
return str ? str.startsWith("#") ? str : "#" + str : ""
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export const togglePageGrayscale = (enable = false) => {
|
|
6
|
+
const body = document.querySelector('body');
|
|
7
|
+
if (body) {
|
|
8
|
+
if (enable) {
|
|
9
|
+
body.classList.add('grayscale-mode');
|
|
10
|
+
} else {
|
|
11
|
+
body.classList.remove('grayscale-mode');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
@@ -164,7 +164,9 @@ export async function formatImage(imgPath, formatConfig){
|
|
|
164
164
|
})
|
|
165
165
|
}else{
|
|
166
166
|
compressImage(imgPath, formatConfig.Quality).then(blob=>{
|
|
167
|
-
|
|
167
|
+
resolve(new File([blob], "mix_app_image.png", { type: blob.type }))
|
|
168
|
+
}).catch(err=>{
|
|
169
|
+
reject(err)
|
|
168
170
|
})
|
|
169
171
|
}
|
|
170
172
|
})
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* 获取url上的query参数以对象的方式返回 */
|
|
2
|
+
function getUrlQuery(url) {
|
|
3
|
+
const urlSearch = url.replace(/^[^?=]*\?/g, "")
|
|
4
|
+
const obj = {}
|
|
5
|
+
const searchURL = new URLSearchParams(urlSearch)
|
|
6
|
+
searchURL.forEach((value, key) => {
|
|
7
|
+
obj[key] = value
|
|
8
|
+
})
|
|
9
|
+
return obj
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { getUrlQuery }
|
|
@@ -1,32 +1,57 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export function mixJsonParse(str) {
|
|
2
|
+
try {
|
|
3
|
+
return JSON.parse(str)
|
|
4
|
+
} catch (e) {
|
|
5
|
+
return str
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export function mixJsonStringify(val) {
|
|
9
|
+
try {
|
|
10
|
+
return JSON.stringify(val)
|
|
11
|
+
} catch (e) {
|
|
12
|
+
return str
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function isPromise(obj) {
|
|
16
|
+
return obj && Object.prototype.toString.call(obj) === '[object Promise]';
|
|
17
|
+
}
|
|
18
|
+
export const asyncReturnMethod = (op) => {
|
|
19
|
+
var environment = {
|
|
20
|
+
isWeb: op?.environment?.isWeb || false,
|
|
21
|
+
isHarmony: op?.environment?.isHarmony || false,
|
|
22
|
+
isAndroid: op?.environment?.isAndroid || false,
|
|
23
|
+
isIOS: op?.environment?.isIOS || false
|
|
24
|
+
}
|
|
5
25
|
var webMethod = op.webMethod || false;
|
|
26
|
+
var androidMethod = op.androidMethod || false;
|
|
27
|
+
var iosMethod = op.iosMethod || false;
|
|
6
28
|
var callBackMethod = op.callBackMethod || false;
|
|
7
29
|
var params = op.params || {};
|
|
8
30
|
var methodName = op.methodName || "";
|
|
9
31
|
var callBackMethodName = "MIX_APP_" + methodName
|
|
10
32
|
params.MethodName = callBackMethodName
|
|
11
33
|
callMethod({
|
|
12
|
-
|
|
13
|
-
isAndroid,
|
|
14
|
-
isIOS,
|
|
34
|
+
environment,
|
|
15
35
|
methodName,
|
|
16
|
-
|
|
36
|
+
androidMethod: ()=>{androidMethod().then(data=>{window[callBackMethodName](data)}).catch(err=>{window[callBackMethodName](err)})},
|
|
37
|
+
iosMethod: ()=>{iosMethod().then(data=>{window[callBackMethodName](data)}).catch(err=>{window[callBackMethodName](err)})},
|
|
38
|
+
webMethod: ()=>{webMethod().then(data=>{window[callBackMethodName](data)}).catch(err=>{window[callBackMethodName](err)})},
|
|
17
39
|
params
|
|
18
40
|
})
|
|
19
41
|
return new Promise((resolve, reject) => {
|
|
20
42
|
window[callBackMethodName] = (data)=>{
|
|
21
|
-
callBackMethod && data ? callBackMethod(data
|
|
43
|
+
callBackMethod && data ? callBackMethod(data).then(formatData=>{resolve(formatData)}).catch(err=>{reject(err)}) : resolve(data)
|
|
22
44
|
}
|
|
23
45
|
});
|
|
24
46
|
};
|
|
25
47
|
export const callMethod = (op) => {
|
|
26
|
-
var isWeb = op
|
|
27
|
-
var
|
|
28
|
-
var
|
|
29
|
-
var
|
|
48
|
+
var isWeb = op?.environment?.isWeb || false;
|
|
49
|
+
var isHarmony = op?.environment?.isHarmony || false;
|
|
50
|
+
var isAndroid = op?.environment?.isAndroid || false;
|
|
51
|
+
var isIOS = op?.environment?.isIOS || false;
|
|
52
|
+
var webMethod = op.webMethod || false;
|
|
53
|
+
var androidMethod = op.androidMethod || false;
|
|
54
|
+
var iosMethod = op.iosMethod || false;
|
|
30
55
|
var params = op.params || {};
|
|
31
56
|
var methodName = op.methodName;
|
|
32
57
|
for (var key in params) {
|
|
@@ -36,12 +61,80 @@ export const callMethod = (op) => {
|
|
|
36
61
|
if (isWeb) {
|
|
37
62
|
webMethod && webMethod();
|
|
38
63
|
} else {
|
|
39
|
-
if (isAndroid) {
|
|
40
|
-
Func[methodName](
|
|
64
|
+
if (isAndroid || isHarmony) {
|
|
65
|
+
androidMethod ? androidMethod() : Func[methodName](mixJsonStringify(params));
|
|
41
66
|
} else if (isIOS) {
|
|
42
|
-
window.webkit.messageHandlers[methodName].postMessage(
|
|
43
|
-
|
|
67
|
+
iosMethod ? iosMethod() : window.webkit.messageHandlers[methodName].postMessage(
|
|
68
|
+
mixJsonStringify(params)
|
|
44
69
|
);
|
|
45
70
|
}
|
|
46
71
|
}
|
|
47
72
|
};
|
|
73
|
+
export const syncReturnMethod = (op) => {
|
|
74
|
+
var isWeb = op?.environment?.isWeb || false;
|
|
75
|
+
var isHarmony = op?.environment?.isHarmony || false;
|
|
76
|
+
var isAndroid = op?.environment?.isAndroid || false;
|
|
77
|
+
var isIOS = op?.environment?.isIOS || false;
|
|
78
|
+
var webMethod = op.webMethod || false;
|
|
79
|
+
var asyncReturn = op.asyncReturn || false;
|
|
80
|
+
var androidMethod = op.androidMethod || false;
|
|
81
|
+
var iosMethod = op.iosMethod || false;
|
|
82
|
+
var params = op.params || {};
|
|
83
|
+
var methodName = op.methodName;
|
|
84
|
+
var singleField = op.singleField || false;
|
|
85
|
+
var singleParam = ""
|
|
86
|
+
for (var key in params) {
|
|
87
|
+
if (!Object.hasOwn(params, key)) continue;
|
|
88
|
+
params[key] = params[key].toString();
|
|
89
|
+
if(singleField){
|
|
90
|
+
singleParam = params[key];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
var result = "";
|
|
94
|
+
if (isWeb) {
|
|
95
|
+
webMethod && (result = webMethod());
|
|
96
|
+
} else {
|
|
97
|
+
if (isAndroid || isHarmony) {
|
|
98
|
+
if(asyncReturn){
|
|
99
|
+
result = new Promise((resolve, reject) => {
|
|
100
|
+
try {
|
|
101
|
+
params.MethodName = "MIX_APP_" + methodName
|
|
102
|
+
window["MIX_APP_" + methodName] = (data)=>{
|
|
103
|
+
resolve(data)
|
|
104
|
+
}
|
|
105
|
+
androidMethod ? resolve(androidMethod()) : Func[methodName](mixJsonStringify(params))
|
|
106
|
+
} catch (error) {
|
|
107
|
+
reject(error)
|
|
108
|
+
}
|
|
109
|
+
})
|
|
110
|
+
}else{
|
|
111
|
+
result = androidMethod ? androidMethod() : Func[methodName](mixJsonStringify(params));
|
|
112
|
+
}
|
|
113
|
+
} else if (isIOS) {
|
|
114
|
+
if(asyncReturn){
|
|
115
|
+
result = new Promise((resolve, reject) => {
|
|
116
|
+
try {
|
|
117
|
+
params.MethodName = "MIX_APP_" + methodName
|
|
118
|
+
window["MIX_APP_" + methodName] = (data)=>{
|
|
119
|
+
resolve(data)
|
|
120
|
+
}
|
|
121
|
+
if(singleField){
|
|
122
|
+
result = iosMethod ? resolve(iosMethod()) : decodeURIComponent(window.prompt(methodName, singleParam))
|
|
123
|
+
}else{
|
|
124
|
+
result = iosMethod ? resolve(iosMethod()) : decodeURIComponent(window.prompt(methodName, mixJsonStringify(params)))
|
|
125
|
+
}
|
|
126
|
+
} catch (error) {
|
|
127
|
+
reject(error)
|
|
128
|
+
}
|
|
129
|
+
})
|
|
130
|
+
}else{
|
|
131
|
+
if(singleField){
|
|
132
|
+
result = iosMethod ? iosMethod() : decodeURIComponent(window.prompt(methodName, singleParam))
|
|
133
|
+
}else{
|
|
134
|
+
result = iosMethod ? iosMethod() : decodeURIComponent(window.prompt(methodName, mixJsonStringify(params)))
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return mixJsonParse(result);
|
|
140
|
+
};
|