@shjjs/visual-ui 1.0.24 → 1.0.25
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/es/commons/plugins/datasource/utils/utils.d.ts +13 -0
- package/es/commons/plugins/datasource/utils/utils.mjs +65 -34
- package/es/components/interaction/tabs/index.vue.mjs +17 -17
- package/lib/commons/plugins/datasource/utils/utils.js +1 -1
- package/lib/components/interaction/tabs/index.vue.js +1 -1
- package/package.json +74 -70
|
@@ -81,4 +81,17 @@ export declare class DataSourceUtils {
|
|
|
81
81
|
* @param tId WebSocket 实例的 ID
|
|
82
82
|
*/
|
|
83
83
|
static cleanupPreviousWebSockets(wsInstances: any, sourceIds: string[], tId: string): void;
|
|
84
|
+
/**
|
|
85
|
+
* 使用 Function 构造函数获取对象中的嵌套值(更简洁但安全性较低)
|
|
86
|
+
* @param obj 源对象
|
|
87
|
+
* @param path 路径字符串,例如 ".a[0].value"
|
|
88
|
+
* @returns 获取到的值,如果路径不存在则返回 undefined
|
|
89
|
+
*/
|
|
90
|
+
static getNestedValue(obj: any, path: string): any;
|
|
91
|
+
/**
|
|
92
|
+
* 从路径字符串中提取变量名
|
|
93
|
+
* @param path 路径字符串,例如 "test[0].aa" 或 "test.aa[1]"
|
|
94
|
+
* @returns 提取出的变量名
|
|
95
|
+
*/
|
|
96
|
+
static extractVariableName(path: string): string;
|
|
84
97
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { isArray as
|
|
2
|
-
class
|
|
1
|
+
import { isArray as g } from "lodash";
|
|
2
|
+
class o {
|
|
3
3
|
/**
|
|
4
4
|
* 解析URL中是否包含全局变量
|
|
5
5
|
* @param url URL
|
|
@@ -8,11 +8,14 @@ class g {
|
|
|
8
8
|
*/
|
|
9
9
|
static replaceURLVariables(e, n) {
|
|
10
10
|
try {
|
|
11
|
-
const
|
|
12
|
-
if (
|
|
13
|
-
for (let
|
|
14
|
-
const
|
|
15
|
-
|
|
11
|
+
const t = e.match(/\${(.*?)}/g);
|
|
12
|
+
if (t)
|
|
13
|
+
for (let a = 0; a < t.length; a++) {
|
|
14
|
+
const r = t[a].substring(2, t[a].length - 1), i = o.extractVariableName(r), c = n.find((l) => l.name === i);
|
|
15
|
+
if (!c)
|
|
16
|
+
continue;
|
|
17
|
+
const s = o.getNestedValue(c._value, r.substring(i.length));
|
|
18
|
+
e = e.replaceAll(t[a], s);
|
|
16
19
|
}
|
|
17
20
|
return e;
|
|
18
21
|
} catch {
|
|
@@ -27,14 +30,17 @@ class g {
|
|
|
27
30
|
*/
|
|
28
31
|
static replaceObjectVariables(e, n) {
|
|
29
32
|
try {
|
|
30
|
-
let
|
|
31
|
-
const
|
|
32
|
-
if (
|
|
33
|
-
for (let
|
|
34
|
-
const i =
|
|
35
|
-
|
|
33
|
+
let t = JSON.stringify(e);
|
|
34
|
+
const a = t.match(/\$g{(.*?)}/g);
|
|
35
|
+
if (a) {
|
|
36
|
+
for (let r = 0; r < a.length; r++) {
|
|
37
|
+
const i = a[r].substring(3, a[r].length - 1), c = this.extractVariableName(i), s = n.find((u) => u.name === c);
|
|
38
|
+
if (!s)
|
|
39
|
+
continue;
|
|
40
|
+
const l = this.getNestedValue(s._value, i.substring(c.length));
|
|
41
|
+
t = t.replaceAll(a[r], l);
|
|
36
42
|
}
|
|
37
|
-
return JSON.parse(
|
|
43
|
+
return JSON.parse(t);
|
|
38
44
|
}
|
|
39
45
|
return e;
|
|
40
46
|
} catch {
|
|
@@ -49,11 +55,14 @@ class g {
|
|
|
49
55
|
*/
|
|
50
56
|
static replaceStringVariables(e, n) {
|
|
51
57
|
try {
|
|
52
|
-
const
|
|
53
|
-
if (
|
|
54
|
-
for (let
|
|
55
|
-
const
|
|
56
|
-
|
|
58
|
+
const t = e.match(/\$g{(.*?)}/g);
|
|
59
|
+
if (t)
|
|
60
|
+
for (let a = 0; a < t.length; a++) {
|
|
61
|
+
const r = t[a].substring(3, t[a].length - 1), i = this.extractVariableName(r), c = n.find((l) => l.name === i);
|
|
62
|
+
if (!c)
|
|
63
|
+
continue;
|
|
64
|
+
const s = this.getNestedValue(c._value, r.substring(i.length));
|
|
65
|
+
e = e.replaceAll(t[a], s);
|
|
57
66
|
}
|
|
58
67
|
return e;
|
|
59
68
|
} catch {
|
|
@@ -68,12 +77,12 @@ class g {
|
|
|
68
77
|
*/
|
|
69
78
|
static replaceEnvVariables(e, n) {
|
|
70
79
|
try {
|
|
71
|
-
let
|
|
80
|
+
let t = "";
|
|
72
81
|
if (!e.includes("http") && n) {
|
|
73
|
-
const
|
|
74
|
-
|
|
82
|
+
const a = n.filter((r) => r.selected);
|
|
83
|
+
a && g(a) && a.length > 0 && (t = a[0].envBaseUrl || "");
|
|
75
84
|
}
|
|
76
|
-
return
|
|
85
|
+
return t;
|
|
77
86
|
} catch {
|
|
78
87
|
return "";
|
|
79
88
|
}
|
|
@@ -130,11 +139,11 @@ class g {
|
|
|
130
139
|
* @param sourceId WebSocket 实例的源 ID
|
|
131
140
|
* @returns 是否有效
|
|
132
141
|
*/
|
|
133
|
-
static hasValidWebSocket(e, n,
|
|
134
|
-
const
|
|
135
|
-
if (!
|
|
136
|
-
for (const
|
|
137
|
-
if (
|
|
142
|
+
static hasValidWebSocket(e, n, t) {
|
|
143
|
+
const a = e.get(n);
|
|
144
|
+
if (!a) return !1;
|
|
145
|
+
for (const r of a)
|
|
146
|
+
if (r.getId() === t && r.isConnected())
|
|
138
147
|
return !0;
|
|
139
148
|
return !1;
|
|
140
149
|
}
|
|
@@ -144,13 +153,35 @@ class g {
|
|
|
144
153
|
* @param sourceIds 源 ID
|
|
145
154
|
* @param tId WebSocket 实例的 ID
|
|
146
155
|
*/
|
|
147
|
-
static cleanupPreviousWebSockets(e, n,
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
n.includes(
|
|
151
|
-
}),
|
|
156
|
+
static cleanupPreviousWebSockets(e, n, t) {
|
|
157
|
+
const a = e.get(t);
|
|
158
|
+
a && (a.forEach((r) => {
|
|
159
|
+
n.includes(r.getId()) || (r.disconnect(), a.delete(r));
|
|
160
|
+
}), a.size === 0 && e.delete(t));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 使用 Function 构造函数获取对象中的嵌套值(更简洁但安全性较低)
|
|
164
|
+
* @param obj 源对象
|
|
165
|
+
* @param path 路径字符串,例如 ".a[0].value"
|
|
166
|
+
* @returns 获取到的值,如果路径不存在则返回 undefined
|
|
167
|
+
*/
|
|
168
|
+
static getNestedValue(e, n) {
|
|
169
|
+
try {
|
|
170
|
+
return new Function("obj", `return obj${n}`)(e);
|
|
171
|
+
} catch {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 从路径字符串中提取变量名
|
|
177
|
+
* @param path 路径字符串,例如 "test[0].aa" 或 "test.aa[1]"
|
|
178
|
+
* @returns 提取出的变量名
|
|
179
|
+
*/
|
|
180
|
+
static extractVariableName(e) {
|
|
181
|
+
const n = e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)/);
|
|
182
|
+
return n ? n[1] : "";
|
|
152
183
|
}
|
|
153
184
|
}
|
|
154
185
|
export {
|
|
155
|
-
|
|
186
|
+
o as DataSourceUtils
|
|
156
187
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as k, ref as i, onMounted as E, createElementBlock as
|
|
1
|
+
import { defineComponent as k, ref as i, onMounted as E, createElementBlock as c, openBlock as r, normalizeStyle as u, unref as v, createCommentVNode as b, Fragment as O, renderList as w, withModifiers as L, normalizeClass as V, createVNode as B, nextTick as D } from "vue";
|
|
2
2
|
import { useResizeObserver as N } from "@vueuse/core";
|
|
3
3
|
import { useTabsWatch as T } from "./hooks/useTabsWatch.mjs";
|
|
4
4
|
import { SHJDatasourceV2 as W } from "../../../commons/plugins/datasource/index.mjs";
|
|
@@ -15,7 +15,7 @@ const J = ["onClick"], M = k({ name: "shj-tabs" }), K = /* @__PURE__ */ k({
|
|
|
15
15
|
},
|
|
16
16
|
emits: ["on-change"],
|
|
17
17
|
setup(x, { expose: g, emit: y }) {
|
|
18
|
-
const e = x, _ = y, l = i([]), o = i(e.option.value),
|
|
18
|
+
const e = x, _ = y, l = i([]), o = i(e.option.value), a = () => {
|
|
19
19
|
W.parse({
|
|
20
20
|
tId: e.uuid,
|
|
21
21
|
sources: e.sources,
|
|
@@ -24,26 +24,26 @@ const J = ["onClick"], M = k({ name: "shj-tabs" }), K = /* @__PURE__ */ k({
|
|
|
24
24
|
l.value = [];
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
|
-
l.value = t[0].data, !o.value && l.value.length > 0 && (o.value = l.value[0].value),
|
|
27
|
+
l.value = t[0].data, !o.value && l.value.length > 0 && (o.value = l.value[0].value), m();
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
30
|
};
|
|
31
|
-
E(() =>
|
|
31
|
+
E(() => a());
|
|
32
32
|
const C = (t) => {
|
|
33
|
-
t.value !== o.value && (_("on-change",
|
|
33
|
+
t.value !== o.value && (_("on-change", t), H.parseEvents(e.useEvents, "on-change", t)), o.value = t.value;
|
|
34
34
|
};
|
|
35
|
-
T(e,
|
|
36
|
-
refresh: () =>
|
|
35
|
+
T(e, a, o, l), g({
|
|
36
|
+
refresh: () => a(),
|
|
37
37
|
refreshView: () => {
|
|
38
38
|
},
|
|
39
39
|
// 刷新视图 无需刷新
|
|
40
|
-
refreshData: () =>
|
|
40
|
+
refreshData: () => a()
|
|
41
41
|
});
|
|
42
|
-
const s = i(null), d = 150, p = i(!1),
|
|
42
|
+
const s = i(null), d = 150, p = i(!1), m = () => {
|
|
43
43
|
D(() => {
|
|
44
44
|
if (s.value) {
|
|
45
|
-
const { scrollWidth: t, clientWidth:
|
|
46
|
-
p.value = t >
|
|
45
|
+
const { scrollWidth: t, clientWidth: h } = s.value;
|
|
46
|
+
p.value = t > h;
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
49
|
}, j = () => {
|
|
@@ -51,19 +51,19 @@ const J = ["onClick"], M = k({ name: "shj-tabs" }), K = /* @__PURE__ */ k({
|
|
|
51
51
|
}, S = () => {
|
|
52
52
|
s.value && (s.value.scrollLeft += d);
|
|
53
53
|
};
|
|
54
|
-
return N(s, (t) =>
|
|
54
|
+
return N(s, (t) => m()), (t, h) => (r(), c("div", {
|
|
55
55
|
ref_key: "tabsContainer",
|
|
56
56
|
ref: s,
|
|
57
57
|
class: "height-100 flex overflow-hidden scroll-behavior-smooth",
|
|
58
58
|
style: u(v(f).json2cssObject(e.option.css.tab))
|
|
59
59
|
}, [
|
|
60
|
-
p.value ? (
|
|
60
|
+
p.value ? (r(), c("button", {
|
|
61
61
|
key: 0,
|
|
62
62
|
class: "flex-none cursor-pointer position-absolute translate-center-left-active-scale-095 top-50 background-size-cover",
|
|
63
63
|
style: u(v(f).json2cssObject(e.option.css.nav.left)),
|
|
64
64
|
onClick: j
|
|
65
|
-
}, null, 4)) :
|
|
66
|
-
(
|
|
65
|
+
}, null, 4)) : b("", !0),
|
|
66
|
+
(r(!0), c(O, null, w(l.value, (n, z) => (r(), c("div", {
|
|
67
67
|
key: z,
|
|
68
68
|
class: V(["flex flex-none cursor-pointer transition-color-background-color background-size-cover", { selected: n.value === o.value }]),
|
|
69
69
|
style: u(v(f).json2cssObject(n.value === o.value ? e.option.css.item.selected : e.option.css.item)),
|
|
@@ -74,12 +74,12 @@ const J = ["onClick"], M = k({ name: "shj-tabs" }), K = /* @__PURE__ */ k({
|
|
|
74
74
|
text: n.label
|
|
75
75
|
}, null, 8, ["text-style", "text"])
|
|
76
76
|
], 14, J))), 128)),
|
|
77
|
-
p.value ? (
|
|
77
|
+
p.value ? (r(), c("button", {
|
|
78
78
|
key: 1,
|
|
79
79
|
class: "flex-none cursor-pointer position-absolute translate-center-right-active-scale-095 top-50 background-size-cover",
|
|
80
80
|
style: u(v(f).json2cssObject(e.option.css.nav.right)),
|
|
81
81
|
onClick: S
|
|
82
|
-
}, null, 4)) :
|
|
82
|
+
}, null, 4)) : b("", !0)
|
|
83
83
|
], 4));
|
|
84
84
|
}
|
|
85
85
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("lodash");class o{static replaceURLVariables(e,n){try{const t=e.match(/\${(.*?)}/g);if(t)for(let a=0;a<t.length;a++){const r=t[a].substring(2,t[a].length-1),i=o.extractVariableName(r),c=n.find(l=>l.name===i);if(!c)continue;const s=o.getNestedValue(c._value,r.substring(i.length));e=e.replaceAll(t[a],s)}return e}catch{return e}}static replaceObjectVariables(e,n){try{let t=JSON.stringify(e);const a=t.match(/\$g{(.*?)}/g);if(a){for(let r=0;r<a.length;r++){const i=a[r].substring(3,a[r].length-1),c=this.extractVariableName(i),s=n.find(u=>u.name===c);if(!s)continue;const l=this.getNestedValue(s._value,i.substring(c.length));t=t.replaceAll(a[r],l)}return JSON.parse(t)}return e}catch{return e}}static replaceStringVariables(e,n){try{const t=e.match(/\$g{(.*?)}/g);if(t)for(let a=0;a<t.length;a++){const r=t[a].substring(3,t[a].length-1),i=this.extractVariableName(r),c=n.find(l=>l.name===i);if(!c)continue;const s=this.getNestedValue(c._value,r.substring(i.length));e=e.replaceAll(t[a],s)}return e}catch{return e}}static replaceEnvVariables(e,n){try{let t="";if(!e.includes("http")&&n){const a=n.filter(r=>r.selected);a&&g.isArray(a)&&a.length>0&&(t=a[0].envBaseUrl||"")}return t}catch{return""}}static noneData(e){return{id:e,finalKeyData:[],finalUserData:{id:e,data:[]},filteredData:[],rawData:[],noMappingData:[]}}static getEnvironments(){let e=localStorage.getItem("currentApiEnvironments");return e&&(e=JSON.parse(e)),e}static setEnvironments(e){localStorage.setItem("currentApiEnvironments",JSON.stringify(e))}static getVariableData(){let e=localStorage.getItem("currentVariableData");return e&&(e=JSON.parse(e)),e}static setVariableData(e){localStorage.setItem("currentVariableData",JSON.stringify(e))}static hasValidWebSocket(e,n,t){const a=e.get(n);if(!a)return!1;for(const r of a)if(r.getId()===t&&r.isConnected())return!0;return!1}static cleanupPreviousWebSockets(e,n,t){const a=e.get(t);a&&(a.forEach(r=>{n.includes(r.getId())||(r.disconnect(),a.delete(r))}),a.size===0&&e.delete(t))}static getNestedValue(e,n){try{return new Function("obj",`return obj${n}`)(e)}catch{return}}static extractVariableName(e){const n=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)/);return n?n[1]:""}}exports.DataSourceUtils=o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),x=require("@vueuse/core"),g=require("./hooks/useTabsWatch.js"),S=require("../../../commons/plugins/datasource/index.js"),C=require("../../../commons/plugins/event/index.js"),a=require("../../../commons/utils/utils.js"),B=require("../../../commons/components/text.vue.js"),j=["onClick"],z=e.defineComponent({name:"shj-tabs"}),E=e.defineComponent({...z,props:{option:{},sources:{},useEvents:{},uuid:{}},emits:["on-change"],setup(p,{expose:d,emit:b}){const t=p,h=b,n=e.ref([]),s=e.ref(t.option.value),r=()=>{S.SHJDatasourceV2.parse({tId:t.uuid,sources:t.sources,callback:({data:o})=>{if(!o){n.value=[];return}n.value=o[0].data,!s.value&&n.value.length>0&&(s.value=n.value[0].value),v()}})};e.onMounted(()=>r());const k=o=>{o.value!==s.value&&(h("on-change",
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),x=require("@vueuse/core"),g=require("./hooks/useTabsWatch.js"),S=require("../../../commons/plugins/datasource/index.js"),C=require("../../../commons/plugins/event/index.js"),a=require("../../../commons/utils/utils.js"),B=require("../../../commons/components/text.vue.js"),j=["onClick"],z=e.defineComponent({name:"shj-tabs"}),E=e.defineComponent({...z,props:{option:{},sources:{},useEvents:{},uuid:{}},emits:["on-change"],setup(p,{expose:d,emit:b}){const t=p,h=b,n=e.ref([]),s=e.ref(t.option.value),r=()=>{S.SHJDatasourceV2.parse({tId:t.uuid,sources:t.sources,callback:({data:o})=>{if(!o){n.value=[];return}n.value=o[0].data,!s.value&&n.value.length>0&&(s.value=n.value[0].value),v()}})};e.onMounted(()=>r());const k=o=>{o.value!==s.value&&(h("on-change",o),C.SHJParseEvent.parseEvents(t.useEvents,"on-change",o)),s.value=o.value};g.useTabsWatch(t,r,s,n),d({refresh:()=>r(),refreshView:()=>{},refreshData:()=>r()});const l=e.ref(null),i=150,u=e.ref(!1),v=()=>{e.nextTick(()=>{if(l.value){const{scrollWidth:o,clientWidth:f}=l.value;u.value=o>f}})},m=()=>{l.value&&(l.value.scrollLeft-=i)},_=()=>{l.value&&(l.value.scrollLeft+=i)};return x.useResizeObserver(l,o=>v()),(o,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"tabsContainer",ref:l,class:"height-100 flex overflow-hidden scroll-behavior-smooth",style:e.normalizeStyle(e.unref(a.Utils).json2cssObject(t.option.css.tab))},[u.value?(e.openBlock(),e.createElementBlock("button",{key:0,class:"flex-none cursor-pointer position-absolute translate-center-left-active-scale-095 top-50 background-size-cover",style:e.normalizeStyle(e.unref(a.Utils).json2cssObject(t.option.css.nav.left)),onClick:m},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,(c,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:e.normalizeClass(["flex flex-none cursor-pointer transition-color-background-color background-size-cover",{selected:c.value===s.value}]),style:e.normalizeStyle(e.unref(a.Utils).json2cssObject(c.value===s.value?t.option.css.item.selected:t.option.css.item)),onClick:e.withModifiers(q=>k(c),["stop"])},[e.createVNode(B.default,{"text-style":c.value===s.value?t.option.css.item.selected.textStyle:t.option.css.item.textStyle,text:c.label},null,8,["text-style","text"])],14,j))),128)),u.value?(e.openBlock(),e.createElementBlock("button",{key:1,class:"flex-none cursor-pointer position-absolute translate-center-right-active-scale-095 top-50 background-size-cover",style:e.normalizeStyle(e.unref(a.Utils).json2cssObject(t.option.css.nav.right)),onClick:_},null,4)):e.createCommentVNode("",!0)],4))}});exports.default=E;
|
package/package.json
CHANGED
|
@@ -1,71 +1,75 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
2
|
+
"name": "@shjjs/visual-ui",
|
|
3
|
+
"version": "1.0.25",
|
|
4
|
+
"description": "国产自研零代码可视化源码工具",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"three",
|
|
7
|
+
"babylon",
|
|
8
|
+
"echarts",
|
|
9
|
+
"ui",
|
|
10
|
+
"vue"
|
|
11
|
+
],
|
|
12
|
+
"author": "huangbaolin",
|
|
13
|
+
"main": "lib/index.js",
|
|
14
|
+
"module": "es/index.mjs",
|
|
15
|
+
"types": "es/index.d.ts",
|
|
16
|
+
"style": "es/index.css",
|
|
17
|
+
"homepage": "https://shj.studio/website",
|
|
18
|
+
"files": [
|
|
19
|
+
"es",
|
|
20
|
+
"lib"
|
|
21
|
+
],
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@vuepic/vue-datepicker": "11.0.2",
|
|
27
|
+
"@amap/amap-jsapi-loader": "^1.0.1",
|
|
28
|
+
"@babylonjs/core": "8.1.1",
|
|
29
|
+
"@babylonjs/gui": "8.1.1",
|
|
30
|
+
"@babylonjs/inspector": "8.1.1",
|
|
31
|
+
"@babylonjs/loaders": "8.1.1",
|
|
32
|
+
"@babylonjs/materials": "8.1.1",
|
|
33
|
+
"@babylonjs/serializers": "8.1.1",
|
|
34
|
+
"babylon-htmlmesh": "2.0.1",
|
|
35
|
+
"@swiftcarrot/color-fns": "^3.2.0",
|
|
36
|
+
"@vueform/slider": "^2.1.10",
|
|
37
|
+
"axios": "^0.27.2",
|
|
38
|
+
"color-js": "^1.0.5",
|
|
39
|
+
"d3-geo": "^3.1.0",
|
|
40
|
+
"dayjs": "^1.11.1",
|
|
41
|
+
"echarts": "^5.4.3",
|
|
42
|
+
"echarts-extension-amap": "^1.11.0",
|
|
43
|
+
"echarts-gl": "2.0.8",
|
|
44
|
+
"echarts-liquidfill": "^3.1.0",
|
|
45
|
+
"echarts-wordcloud": "^2.1.0",
|
|
46
|
+
"flv.js": "^1.6.2",
|
|
47
|
+
"gsap": "^3.7.1",
|
|
48
|
+
"hls.js": "^1.4.13",
|
|
49
|
+
"is-electron": "^2.2.2",
|
|
50
|
+
"lodash": "^4.17.21",
|
|
51
|
+
"nanoid": "^4.0.2",
|
|
52
|
+
"odometer_countup": "^1.0.4",
|
|
53
|
+
"pinyin-pro": "^3.22.2",
|
|
54
|
+
"qrcode.vue": "^3.4.1",
|
|
55
|
+
"stats.js": "^0.17.0",
|
|
56
|
+
"swiper": "^11.0.5",
|
|
57
|
+
"three": "0.155.0",
|
|
58
|
+
"three-mesh-bvh": "^0.7.4",
|
|
59
|
+
"three-orbit-controls": "^82.1.0",
|
|
60
|
+
"vue-countup-v3": "^1.4.0",
|
|
61
|
+
"vue-virtual-scroller": "2.0.0-beta.8",
|
|
62
|
+
"vue3-seamless-scroll": "^2.0.1",
|
|
63
|
+
"wavesurfer.js": "^7.8.2",
|
|
64
|
+
"xss": "^1.0.15"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@types/three": "^0.141.0",
|
|
68
|
+
"unplugin-vue-define-options": "^1.3.18"
|
|
69
|
+
},
|
|
70
|
+
"browserslist": [
|
|
71
|
+
"> 1%",
|
|
72
|
+
"not ie 11",
|
|
73
|
+
"not op_mini all"
|
|
74
|
+
]
|
|
75
|
+
}
|