mvframe 1.0.4 → 1.0.6
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/.cursor/skills/mvframe-app-init/SKILL.md +100 -0
- package/README.cn.md +209 -0
- package/README.md +118 -74
- package/dist/composition.js +67 -54
- package/dist/css/style.css +1 -0
- package/dist/vendor.js +1 -1
- package/package.json +23 -5
- package/scripts/install-cursor-skill.js +51 -0
- package/scripts/scaffold-app.js +467 -0
package/dist/composition.js
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
const C = (n
|
|
2
|
-
const e = (t, r) => {
|
|
3
|
-
if (t)
|
|
4
|
-
if (r && globalThis.$getType(r) === "Object") {
|
|
5
|
-
let o = n[t] || t;
|
|
6
|
-
return Object.keys(r).forEach((s) => {
|
|
7
|
-
o[`{${s}}`] = r[s];
|
|
8
|
-
}), o;
|
|
9
|
-
} else
|
|
10
|
-
return n[t] || t;
|
|
11
|
-
else
|
|
12
|
-
return t;
|
|
13
|
-
};
|
|
14
|
-
globalThis.$l = e, String.prototype.$l = e;
|
|
15
|
-
}, U = (n, e) => {
|
|
1
|
+
const C = (n, e) => {
|
|
16
2
|
if (!n || !e) return !1;
|
|
17
3
|
const t = n.getBoundingClientRect(), r = e.getBoundingClientRect(), o = r.right > t.left && r.left < t.right, s = r.bottom > t.top && r.top < t.bottom;
|
|
18
4
|
return o && s;
|
|
@@ -29,8 +15,8 @@ const C = (n = {}) => {
|
|
|
29
15
|
const O = (n, e = g) => {
|
|
30
16
|
const t = e || g, r = String(n ?? "").trim();
|
|
31
17
|
if (!r) return t;
|
|
32
|
-
const s = r.replace(/[/\\?%*:|"<>]/g, "_").replace(/\.\./g, "_").split(/[/\\]/).pop() || t,
|
|
33
|
-
return s.length >
|
|
18
|
+
const s = r.replace(/[/\\?%*:|"<>]/g, "_").replace(/\.\./g, "_").split(/[/\\]/).pop() || t, c = 200;
|
|
19
|
+
return s.length > c ? s.slice(0, c) : s;
|
|
34
20
|
}, R = (n) => {
|
|
35
21
|
const e = ((n == null ? void 0 : n.type) || "").toLowerCase();
|
|
36
22
|
return e ? e.includes("spreadsheet") || e.includes("ms-excel") || e.includes("excel") && e.includes("application") : !1;
|
|
@@ -45,7 +31,7 @@ const O = (n, e = g) => {
|
|
|
45
31
|
}, k = (n) => {
|
|
46
32
|
if (!n || n.source !== void 0 || n.type === void 0)
|
|
47
33
|
return n;
|
|
48
|
-
const { type: e, data: t, url: r, headers: o, name: s, filename:
|
|
34
|
+
const { type: e, data: t, url: r, headers: o, name: s, filename: c, init: i, ...f } = n, a = c ?? s;
|
|
49
35
|
return e === "csv" ? {
|
|
50
36
|
...f,
|
|
51
37
|
source: "inline",
|
|
@@ -56,25 +42,25 @@ const O = (n, e = g) => {
|
|
|
56
42
|
...f,
|
|
57
43
|
source: "fetch",
|
|
58
44
|
url: r,
|
|
59
|
-
init: { ...
|
|
45
|
+
init: { ...i || {}, headers: o ?? (i == null ? void 0 : i.headers) },
|
|
60
46
|
response: "blob",
|
|
61
47
|
expectExcel: !0,
|
|
62
48
|
filename: a
|
|
63
49
|
} : n;
|
|
64
|
-
},
|
|
50
|
+
}, U = async (n = {}) => {
|
|
65
51
|
const e = k(n), {
|
|
66
52
|
source: t = "inline",
|
|
67
53
|
content: r,
|
|
68
54
|
blob: o,
|
|
69
55
|
bom: s = !0,
|
|
70
|
-
mime:
|
|
71
|
-
url:
|
|
56
|
+
mime: c,
|
|
57
|
+
url: i,
|
|
72
58
|
init: f,
|
|
73
59
|
response: a = "blob",
|
|
74
60
|
openIn: b = "self",
|
|
75
61
|
expectExcel: E,
|
|
76
|
-
filename:
|
|
77
|
-
name:
|
|
62
|
+
filename: m,
|
|
63
|
+
name: x,
|
|
78
64
|
error: u = () => {
|
|
79
65
|
},
|
|
80
66
|
// 避免 legacy 字段渗入后续逻辑
|
|
@@ -82,50 +68,50 @@ const O = (n, e = g) => {
|
|
|
82
68
|
data: $,
|
|
83
69
|
headers: T,
|
|
84
70
|
...j
|
|
85
|
-
} = e,
|
|
71
|
+
} = e, p = m ?? x;
|
|
86
72
|
try {
|
|
87
73
|
if (t === "inline") {
|
|
88
74
|
if (o instanceof Blob) {
|
|
89
|
-
h(o,
|
|
75
|
+
h(o, p);
|
|
90
76
|
return;
|
|
91
77
|
}
|
|
92
78
|
if (r == null) {
|
|
93
79
|
u(new Error("content or blob is required for inline"));
|
|
94
80
|
return;
|
|
95
81
|
}
|
|
96
|
-
const l = typeof r == "string" ? r : String(r),
|
|
97
|
-
h(new Blob([
|
|
82
|
+
const l = typeof r == "string" ? r : String(r), d = s ? "\uFEFF" + l : l, y = c || (s ? "text/csv;charset=utf-8" : "text/plain;charset=utf-8");
|
|
83
|
+
h(new Blob([d], { type: y }), p);
|
|
98
84
|
return;
|
|
99
85
|
}
|
|
100
86
|
if (t === "fetch") {
|
|
101
|
-
if (!
|
|
87
|
+
if (!i) {
|
|
102
88
|
u(new Error("url is required for fetch"));
|
|
103
89
|
return;
|
|
104
90
|
}
|
|
105
|
-
const l = await fetch(
|
|
91
|
+
const l = await fetch(i, f);
|
|
106
92
|
if (!l.ok) {
|
|
107
93
|
u(new Error(`fetch failed: ${l.status}`));
|
|
108
94
|
return;
|
|
109
95
|
}
|
|
110
96
|
if (a === "text") {
|
|
111
|
-
const y = await l.text(), w = s ? "\uFEFF" + y : y, S =
|
|
112
|
-
h(new Blob([w], { type: S }),
|
|
97
|
+
const y = await l.text(), w = s ? "\uFEFF" + y : y, S = c || (s ? "text/csv;charset=utf-8" : "text/plain;charset=utf-8");
|
|
98
|
+
h(new Blob([w], { type: S }), p);
|
|
113
99
|
return;
|
|
114
100
|
}
|
|
115
|
-
const
|
|
116
|
-
if (E && !R(
|
|
101
|
+
const d = await l.blob();
|
|
102
|
+
if (E && !R(d)) {
|
|
117
103
|
u(new Error("excel does not exist"));
|
|
118
104
|
return;
|
|
119
105
|
}
|
|
120
|
-
h(
|
|
106
|
+
h(d, p);
|
|
121
107
|
return;
|
|
122
108
|
}
|
|
123
109
|
if (t === "open") {
|
|
124
|
-
if (!
|
|
110
|
+
if (!i) {
|
|
125
111
|
u(new Error("url is required for open"));
|
|
126
112
|
return;
|
|
127
113
|
}
|
|
128
|
-
b === "blank" ? window.open(
|
|
114
|
+
b === "blank" ? window.open(i, "_blank", "noopener,noreferrer") : window.location.href = i;
|
|
129
115
|
return;
|
|
130
116
|
}
|
|
131
117
|
u(new Error(`unknown source: ${t}`));
|
|
@@ -136,11 +122,11 @@ const O = (n, e = g) => {
|
|
|
136
122
|
function B(n, e, t) {
|
|
137
123
|
if (e === "" || e === void 0 || e === null)
|
|
138
124
|
return "";
|
|
139
|
-
const r = globalThis.$fa, o = globalThis.$fu, s = (t == null ? void 0 : t.precision) ?? 2,
|
|
140
|
-
if ((
|
|
141
|
-
const
|
|
125
|
+
const r = globalThis.$fa, o = globalThis.$fu, s = (t == null ? void 0 : t.precision) ?? 2, c = t == null ? void 0 : t.unit;
|
|
126
|
+
if ((c === "currency" || c === "%") && o) {
|
|
127
|
+
const i = {
|
|
142
128
|
[n]: {
|
|
143
|
-
unit:
|
|
129
|
+
unit: c === "currency" ? "currency" : "%",
|
|
144
130
|
precision: s
|
|
145
131
|
}
|
|
146
132
|
};
|
|
@@ -149,7 +135,7 @@ function B(n, e, t) {
|
|
|
149
135
|
prop: n,
|
|
150
136
|
currency: t == null ? void 0 : t.currency,
|
|
151
137
|
value: e,
|
|
152
|
-
obj:
|
|
138
|
+
obj: i
|
|
153
139
|
});
|
|
154
140
|
} catch {
|
|
155
141
|
}
|
|
@@ -162,29 +148,56 @@ function B(n, e, t) {
|
|
|
162
148
|
}
|
|
163
149
|
return String(e);
|
|
164
150
|
}
|
|
165
|
-
function
|
|
151
|
+
function N(n, e, t = {}) {
|
|
166
152
|
const { columns: r = [] } = n || {}, { resolveMetric: o } = t;
|
|
167
153
|
return !r.length || !e || typeof e != "object" ? [] : r.map((s) => {
|
|
168
|
-
const
|
|
169
|
-
if (!
|
|
154
|
+
const c = s.property ?? s.prop ?? "";
|
|
155
|
+
if (!c)
|
|
170
156
|
return "";
|
|
171
|
-
let
|
|
172
|
-
if (
|
|
157
|
+
let i = e[c];
|
|
158
|
+
if (i === void 0 && (i = ""), i === "")
|
|
173
159
|
return "";
|
|
174
|
-
const f = typeof o == "function" ? o(
|
|
160
|
+
const f = typeof o == "function" ? o(c) : void 0;
|
|
175
161
|
try {
|
|
176
|
-
return B(
|
|
162
|
+
return B(c, i, f);
|
|
177
163
|
} catch {
|
|
178
|
-
return String(
|
|
164
|
+
return String(i);
|
|
179
165
|
}
|
|
180
166
|
});
|
|
181
167
|
}
|
|
168
|
+
const M = (n = {}) => {
|
|
169
|
+
const e = (t, r) => {
|
|
170
|
+
if (t)
|
|
171
|
+
if (r && globalThis.$getType(r) === "Object") {
|
|
172
|
+
let o = n[t] || t;
|
|
173
|
+
return Object.keys(r).forEach((s) => {
|
|
174
|
+
o[`{${s}}`] = r[s];
|
|
175
|
+
}), o;
|
|
176
|
+
} else
|
|
177
|
+
return n[t] || t;
|
|
178
|
+
else
|
|
179
|
+
return t;
|
|
180
|
+
};
|
|
181
|
+
globalThis.$l = e, String.prototype.$l = e;
|
|
182
|
+
}, V = (n) => {
|
|
183
|
+
if (!n)
|
|
184
|
+
return maps;
|
|
185
|
+
const e = n.split(".");
|
|
186
|
+
if (e.length > 1) {
|
|
187
|
+
let t = maps;
|
|
188
|
+
for (let r = 0; r < e.length; r++)
|
|
189
|
+
t[e[r]] ? t = t[e[r]] : console.error(`No Map node at ${e[r]} in ${n}`);
|
|
190
|
+
return t;
|
|
191
|
+
} else
|
|
192
|
+
return maps[n];
|
|
193
|
+
};
|
|
182
194
|
export {
|
|
183
195
|
_ as deepEqual,
|
|
184
|
-
|
|
196
|
+
U as download,
|
|
185
197
|
B as formatSummaryCell,
|
|
186
|
-
|
|
198
|
+
C as isInView,
|
|
187
199
|
O as sanitizeDownloadFileName,
|
|
188
|
-
|
|
189
|
-
V as
|
|
200
|
+
M as useLang,
|
|
201
|
+
V as useMap,
|
|
202
|
+
N as useRemoteSummary
|
|
190
203
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";@import"//at.alicdn.com/t/c/font_5130162_nsjb7vj2669.css";.rotateZ90{transform:rotate(90deg)}.rotateZ180{transform:rotate(180deg)}.ani-rotate{animation:rotate 1s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.pt0{padding-block-start:0px!important}.pr0{padding-inline-end:0px!important}.pb0{padding-block-end:0px!important}.pl0{padding-inline-start:0px!important}.mt0{margin-block-start:0px!important}.mr0{margin-inline-end:0px!important}.mb0{margin-block-end:0px!important}.ml0{margin-inline-start:0px!important}.p0{padding-block:0px;padding-inline:0px}.m0{margin-block:0px;margin-inline:0px}.p0-2{padding-block:0px;padding-inline:2px}.m0-2{margin-block:0px;margin-inline:2px}.p0-4{padding-block:0px;padding-inline:4px}.m0-4{margin-block:0px;margin-inline:4px}.p0-6{padding-block:0px;padding-inline:6px}.m0-6{margin-block:0px;margin-inline:6px}.p0-8{padding-block:0px;padding-inline:8px}.m0-8{margin-block:0px;margin-inline:8px}.p0-10{padding-block:0px;padding-inline:10px}.m0-10{margin-block:0px;margin-inline:10px}.p0-12{padding-block:0px;padding-inline:12px}.m0-12{margin-block:0px;margin-inline:12px}.p0-16{padding-block:0px;padding-inline:16px}.m0-16{margin-block:0px;margin-inline:16px}.p0-20{padding-block:0px;padding-inline:20px}.m0-20{margin-block:0px;margin-inline:20px}.p0-24{padding-block:0px;padding-inline:24px}.m0-24{margin-block:0px;margin-inline:24px}.p0-30{padding-block:0px;padding-inline:30px}.m0-30{margin-block:0px;margin-inline:30px}.p0-32{padding-block:0px;padding-inline:32px}.m0-32{margin-block:0px;margin-inline:32px}.p0-36{padding-block:0px;padding-inline:36px}.m0-36{margin-block:0px;margin-inline:36px}.p0-40{padding-block:0px;padding-inline:40px}.m0-40{margin-block:0px;margin-inline:40px}.p0-48{padding-block:0px;padding-inline:48px}.m0-48{margin-block:0px;margin-inline:48px}.pt2{padding-block-start:2px!important}.pr2{padding-inline-end:2px!important}.pb2{padding-block-end:2px!important}.pl2{padding-inline-start:2px!important}.mt2{margin-block-start:2px!important}.mr2{margin-inline-end:2px!important}.mb2{margin-block-end:2px!important}.ml2{margin-inline-start:2px!important}.p2-0{padding-block:2px;padding-inline:0px}.m2-0{margin-block:2px;margin-inline:0px}.p2{padding-block:2px;padding-inline:2px}.m2{margin-block:2px;margin-inline:2px}.p2-4{padding-block:2px;padding-inline:4px}.m2-4{margin-block:2px;margin-inline:4px}.p2-6{padding-block:2px;padding-inline:6px}.m2-6{margin-block:2px;margin-inline:6px}.p2-8{padding-block:2px;padding-inline:8px}.m2-8{margin-block:2px;margin-inline:8px}.p2-10{padding-block:2px;padding-inline:10px}.m2-10{margin-block:2px;margin-inline:10px}.p2-12{padding-block:2px;padding-inline:12px}.m2-12{margin-block:2px;margin-inline:12px}.p2-16{padding-block:2px;padding-inline:16px}.m2-16{margin-block:2px;margin-inline:16px}.p2-20{padding-block:2px;padding-inline:20px}.m2-20{margin-block:2px;margin-inline:20px}.p2-24{padding-block:2px;padding-inline:24px}.m2-24{margin-block:2px;margin-inline:24px}.p2-30{padding-block:2px;padding-inline:30px}.m2-30{margin-block:2px;margin-inline:30px}.p2-32{padding-block:2px;padding-inline:32px}.m2-32{margin-block:2px;margin-inline:32px}.p2-36{padding-block:2px;padding-inline:36px}.m2-36{margin-block:2px;margin-inline:36px}.p2-40{padding-block:2px;padding-inline:40px}.m2-40{margin-block:2px;margin-inline:40px}.p2-48{padding-block:2px;padding-inline:48px}.m2-48{margin-block:2px;margin-inline:48px}.pt4{padding-block-start:4px!important}.pr4{padding-inline-end:4px!important}.pb4{padding-block-end:4px!important}.pl4{padding-inline-start:4px!important}.mt4{margin-block-start:4px!important}.mr4{margin-inline-end:4px!important}.mb4{margin-block-end:4px!important}.ml4{margin-inline-start:4px!important}.p4-0{padding-block:4px;padding-inline:0px}.m4-0{margin-block:4px;margin-inline:0px}.p4-2{padding-block:4px;padding-inline:2px}.m4-2{margin-block:4px;margin-inline:2px}.p4{padding-block:4px;padding-inline:4px}.m4{margin-block:4px;margin-inline:4px}.p4-6{padding-block:4px;padding-inline:6px}.m4-6{margin-block:4px;margin-inline:6px}.p4-8{padding-block:4px;padding-inline:8px}.m4-8{margin-block:4px;margin-inline:8px}.p4-10{padding-block:4px;padding-inline:10px}.m4-10{margin-block:4px;margin-inline:10px}.p4-12{padding-block:4px;padding-inline:12px}.m4-12{margin-block:4px;margin-inline:12px}.p4-16{padding-block:4px;padding-inline:16px}.m4-16{margin-block:4px;margin-inline:16px}.p4-20{padding-block:4px;padding-inline:20px}.m4-20{margin-block:4px;margin-inline:20px}.p4-24{padding-block:4px;padding-inline:24px}.m4-24{margin-block:4px;margin-inline:24px}.p4-30{padding-block:4px;padding-inline:30px}.m4-30{margin-block:4px;margin-inline:30px}.p4-32{padding-block:4px;padding-inline:32px}.m4-32{margin-block:4px;margin-inline:32px}.p4-36{padding-block:4px;padding-inline:36px}.m4-36{margin-block:4px;margin-inline:36px}.p4-40{padding-block:4px;padding-inline:40px}.m4-40{margin-block:4px;margin-inline:40px}.p4-48{padding-block:4px;padding-inline:48px}.m4-48{margin-block:4px;margin-inline:48px}.pt6{padding-block-start:6px!important}.pr6{padding-inline-end:6px!important}.pb6{padding-block-end:6px!important}.pl6{padding-inline-start:6px!important}.mt6{margin-block-start:6px!important}.mr6{margin-inline-end:6px!important}.mb6{margin-block-end:6px!important}.ml6{margin-inline-start:6px!important}.p6-0{padding-block:6px;padding-inline:0px}.m6-0{margin-block:6px;margin-inline:0px}.p6-2{padding-block:6px;padding-inline:2px}.m6-2{margin-block:6px;margin-inline:2px}.p6-4{padding-block:6px;padding-inline:4px}.m6-4{margin-block:6px;margin-inline:4px}.p6{padding-block:6px;padding-inline:6px}.m6{margin-block:6px;margin-inline:6px}.p6-8{padding-block:6px;padding-inline:8px}.m6-8{margin-block:6px;margin-inline:8px}.p6-10{padding-block:6px;padding-inline:10px}.m6-10{margin-block:6px;margin-inline:10px}.p6-12{padding-block:6px;padding-inline:12px}.m6-12{margin-block:6px;margin-inline:12px}.p6-16{padding-block:6px;padding-inline:16px}.m6-16{margin-block:6px;margin-inline:16px}.p6-20{padding-block:6px;padding-inline:20px}.m6-20{margin-block:6px;margin-inline:20px}.p6-24{padding-block:6px;padding-inline:24px}.m6-24{margin-block:6px;margin-inline:24px}.p6-30{padding-block:6px;padding-inline:30px}.m6-30{margin-block:6px;margin-inline:30px}.p6-32{padding-block:6px;padding-inline:32px}.m6-32{margin-block:6px;margin-inline:32px}.p6-36{padding-block:6px;padding-inline:36px}.m6-36{margin-block:6px;margin-inline:36px}.p6-40{padding-block:6px;padding-inline:40px}.m6-40{margin-block:6px;margin-inline:40px}.p6-48{padding-block:6px;padding-inline:48px}.m6-48{margin-block:6px;margin-inline:48px}.pt8{padding-block-start:8px!important}.pr8{padding-inline-end:8px!important}.pb8{padding-block-end:8px!important}.pl8{padding-inline-start:8px!important}.mt8{margin-block-start:8px!important}.mr8{margin-inline-end:8px!important}.mb8{margin-block-end:8px!important}.ml8{margin-inline-start:8px!important}.p8-0{padding-block:8px;padding-inline:0px}.m8-0{margin-block:8px;margin-inline:0px}.p8-2{padding-block:8px;padding-inline:2px}.m8-2{margin-block:8px;margin-inline:2px}.p8-4{padding-block:8px;padding-inline:4px}.m8-4{margin-block:8px;margin-inline:4px}.p8-6{padding-block:8px;padding-inline:6px}.m8-6{margin-block:8px;margin-inline:6px}.p8{padding-block:8px;padding-inline:8px}.m8{margin-block:8px;margin-inline:8px}.p8-10{padding-block:8px;padding-inline:10px}.m8-10{margin-block:8px;margin-inline:10px}.p8-12{padding-block:8px;padding-inline:12px}.m8-12{margin-block:8px;margin-inline:12px}.p8-16{padding-block:8px;padding-inline:16px}.m8-16{margin-block:8px;margin-inline:16px}.p8-20{padding-block:8px;padding-inline:20px}.m8-20{margin-block:8px;margin-inline:20px}.p8-24{padding-block:8px;padding-inline:24px}.m8-24{margin-block:8px;margin-inline:24px}.p8-30{padding-block:8px;padding-inline:30px}.m8-30{margin-block:8px;margin-inline:30px}.p8-32{padding-block:8px;padding-inline:32px}.m8-32{margin-block:8px;margin-inline:32px}.p8-36{padding-block:8px;padding-inline:36px}.m8-36{margin-block:8px;margin-inline:36px}.p8-40{padding-block:8px;padding-inline:40px}.m8-40{margin-block:8px;margin-inline:40px}.p8-48{padding-block:8px;padding-inline:48px}.m8-48{margin-block:8px;margin-inline:48px}.pt10{padding-block-start:10px!important}.pr10{padding-inline-end:10px!important}.pb10{padding-block-end:10px!important}.pl10{padding-inline-start:10px!important}.mt10{margin-block-start:10px!important}.mr10{margin-inline-end:10px!important}.mb10{margin-block-end:10px!important}.ml10{margin-inline-start:10px!important}.p10-0{padding-block:10px;padding-inline:0px}.m10-0{margin-block:10px;margin-inline:0px}.p10-2{padding-block:10px;padding-inline:2px}.m10-2{margin-block:10px;margin-inline:2px}.p10-4{padding-block:10px;padding-inline:4px}.m10-4{margin-block:10px;margin-inline:4px}.p10-6{padding-block:10px;padding-inline:6px}.m10-6{margin-block:10px;margin-inline:6px}.p10-8{padding-block:10px;padding-inline:8px}.m10-8{margin-block:10px;margin-inline:8px}.p10{padding-block:10px;padding-inline:10px}.m10{margin-block:10px;margin-inline:10px}.p10-12{padding-block:10px;padding-inline:12px}.m10-12{margin-block:10px;margin-inline:12px}.p10-16{padding-block:10px;padding-inline:16px}.m10-16{margin-block:10px;margin-inline:16px}.p10-20{padding-block:10px;padding-inline:20px}.m10-20{margin-block:10px;margin-inline:20px}.p10-24{padding-block:10px;padding-inline:24px}.m10-24{margin-block:10px;margin-inline:24px}.p10-30{padding-block:10px;padding-inline:30px}.m10-30{margin-block:10px;margin-inline:30px}.p10-32{padding-block:10px;padding-inline:32px}.m10-32{margin-block:10px;margin-inline:32px}.p10-36{padding-block:10px;padding-inline:36px}.m10-36{margin-block:10px;margin-inline:36px}.p10-40{padding-block:10px;padding-inline:40px}.m10-40{margin-block:10px;margin-inline:40px}.p10-48{padding-block:10px;padding-inline:48px}.m10-48{margin-block:10px;margin-inline:48px}.pt12{padding-block-start:12px!important}.pr12{padding-inline-end:12px!important}.pb12{padding-block-end:12px!important}.pl12{padding-inline-start:12px!important}.mt12{margin-block-start:12px!important}.mr12{margin-inline-end:12px!important}.mb12{margin-block-end:12px!important}.ml12{margin-inline-start:12px!important}.p12-0{padding-block:12px;padding-inline:0px}.m12-0{margin-block:12px;margin-inline:0px}.p12-2{padding-block:12px;padding-inline:2px}.m12-2{margin-block:12px;margin-inline:2px}.p12-4{padding-block:12px;padding-inline:4px}.m12-4{margin-block:12px;margin-inline:4px}.p12-6{padding-block:12px;padding-inline:6px}.m12-6{margin-block:12px;margin-inline:6px}.p12-8{padding-block:12px;padding-inline:8px}.m12-8{margin-block:12px;margin-inline:8px}.p12-10{padding-block:12px;padding-inline:10px}.m12-10{margin-block:12px;margin-inline:10px}.p12{padding-block:12px;padding-inline:12px}.m12{margin-block:12px;margin-inline:12px}.p12-16{padding-block:12px;padding-inline:16px}.m12-16{margin-block:12px;margin-inline:16px}.p12-20{padding-block:12px;padding-inline:20px}.m12-20{margin-block:12px;margin-inline:20px}.p12-24{padding-block:12px;padding-inline:24px}.m12-24{margin-block:12px;margin-inline:24px}.p12-30{padding-block:12px;padding-inline:30px}.m12-30{margin-block:12px;margin-inline:30px}.p12-32{padding-block:12px;padding-inline:32px}.m12-32{margin-block:12px;margin-inline:32px}.p12-36{padding-block:12px;padding-inline:36px}.m12-36{margin-block:12px;margin-inline:36px}.p12-40{padding-block:12px;padding-inline:40px}.m12-40{margin-block:12px;margin-inline:40px}.p12-48{padding-block:12px;padding-inline:48px}.m12-48{margin-block:12px;margin-inline:48px}.pt16{padding-block-start:16px!important}.pr16{padding-inline-end:16px!important}.pb16{padding-block-end:16px!important}.pl16{padding-inline-start:16px!important}.mt16{margin-block-start:16px!important}.mr16{margin-inline-end:16px!important}.mb16{margin-block-end:16px!important}.ml16{margin-inline-start:16px!important}.p16-0{padding-block:16px;padding-inline:0px}.m16-0{margin-block:16px;margin-inline:0px}.p16-2{padding-block:16px;padding-inline:2px}.m16-2{margin-block:16px;margin-inline:2px}.p16-4{padding-block:16px;padding-inline:4px}.m16-4{margin-block:16px;margin-inline:4px}.p16-6{padding-block:16px;padding-inline:6px}.m16-6{margin-block:16px;margin-inline:6px}.p16-8{padding-block:16px;padding-inline:8px}.m16-8{margin-block:16px;margin-inline:8px}.p16-10{padding-block:16px;padding-inline:10px}.m16-10{margin-block:16px;margin-inline:10px}.p16-12{padding-block:16px;padding-inline:12px}.m16-12{margin-block:16px;margin-inline:12px}.p16{padding-block:16px;padding-inline:16px}.m16{margin-block:16px;margin-inline:16px}.p16-20{padding-block:16px;padding-inline:20px}.m16-20{margin-block:16px;margin-inline:20px}.p16-24{padding-block:16px;padding-inline:24px}.m16-24{margin-block:16px;margin-inline:24px}.p16-30{padding-block:16px;padding-inline:30px}.m16-30{margin-block:16px;margin-inline:30px}.p16-32{padding-block:16px;padding-inline:32px}.m16-32{margin-block:16px;margin-inline:32px}.p16-36{padding-block:16px;padding-inline:36px}.m16-36{margin-block:16px;margin-inline:36px}.p16-40{padding-block:16px;padding-inline:40px}.m16-40{margin-block:16px;margin-inline:40px}.p16-48{padding-block:16px;padding-inline:48px}.m16-48{margin-block:16px;margin-inline:48px}.pt20{padding-block-start:20px!important}.pr20{padding-inline-end:20px!important}.pb20{padding-block-end:20px!important}.pl20{padding-inline-start:20px!important}.mt20{margin-block-start:20px!important}.mr20{margin-inline-end:20px!important}.mb20{margin-block-end:20px!important}.ml20{margin-inline-start:20px!important}.p20-0{padding-block:20px;padding-inline:0px}.m20-0{margin-block:20px;margin-inline:0px}.p20-2{padding-block:20px;padding-inline:2px}.m20-2{margin-block:20px;margin-inline:2px}.p20-4{padding-block:20px;padding-inline:4px}.m20-4{margin-block:20px;margin-inline:4px}.p20-6{padding-block:20px;padding-inline:6px}.m20-6{margin-block:20px;margin-inline:6px}.p20-8{padding-block:20px;padding-inline:8px}.m20-8{margin-block:20px;margin-inline:8px}.p20-10{padding-block:20px;padding-inline:10px}.m20-10{margin-block:20px;margin-inline:10px}.p20-12{padding-block:20px;padding-inline:12px}.m20-12{margin-block:20px;margin-inline:12px}.p20-16{padding-block:20px;padding-inline:16px}.m20-16{margin-block:20px;margin-inline:16px}.p20{padding-block:20px;padding-inline:20px}.m20{margin-block:20px;margin-inline:20px}.p20-24{padding-block:20px;padding-inline:24px}.m20-24{margin-block:20px;margin-inline:24px}.p20-30{padding-block:20px;padding-inline:30px}.m20-30{margin-block:20px;margin-inline:30px}.p20-32{padding-block:20px;padding-inline:32px}.m20-32{margin-block:20px;margin-inline:32px}.p20-36{padding-block:20px;padding-inline:36px}.m20-36{margin-block:20px;margin-inline:36px}.p20-40{padding-block:20px;padding-inline:40px}.m20-40{margin-block:20px;margin-inline:40px}.p20-48{padding-block:20px;padding-inline:48px}.m20-48{margin-block:20px;margin-inline:48px}.pt24{padding-block-start:24px!important}.pr24{padding-inline-end:24px!important}.pb24{padding-block-end:24px!important}.pl24{padding-inline-start:24px!important}.mt24{margin-block-start:24px!important}.mr24{margin-inline-end:24px!important}.mb24{margin-block-end:24px!important}.ml24{margin-inline-start:24px!important}.p24-0{padding-block:24px;padding-inline:0px}.m24-0{margin-block:24px;margin-inline:0px}.p24-2{padding-block:24px;padding-inline:2px}.m24-2{margin-block:24px;margin-inline:2px}.p24-4{padding-block:24px;padding-inline:4px}.m24-4{margin-block:24px;margin-inline:4px}.p24-6{padding-block:24px;padding-inline:6px}.m24-6{margin-block:24px;margin-inline:6px}.p24-8{padding-block:24px;padding-inline:8px}.m24-8{margin-block:24px;margin-inline:8px}.p24-10{padding-block:24px;padding-inline:10px}.m24-10{margin-block:24px;margin-inline:10px}.p24-12{padding-block:24px;padding-inline:12px}.m24-12{margin-block:24px;margin-inline:12px}.p24-16{padding-block:24px;padding-inline:16px}.m24-16{margin-block:24px;margin-inline:16px}.p24-20{padding-block:24px;padding-inline:20px}.m24-20{margin-block:24px;margin-inline:20px}.p24{padding-block:24px;padding-inline:24px}.m24{margin-block:24px;margin-inline:24px}.p24-30{padding-block:24px;padding-inline:30px}.m24-30{margin-block:24px;margin-inline:30px}.p24-32{padding-block:24px;padding-inline:32px}.m24-32{margin-block:24px;margin-inline:32px}.p24-36{padding-block:24px;padding-inline:36px}.m24-36{margin-block:24px;margin-inline:36px}.p24-40{padding-block:24px;padding-inline:40px}.m24-40{margin-block:24px;margin-inline:40px}.p24-48{padding-block:24px;padding-inline:48px}.m24-48{margin-block:24px;margin-inline:48px}.pt30{padding-block-start:30px!important}.pr30{padding-inline-end:30px!important}.pb30{padding-block-end:30px!important}.pl30{padding-inline-start:30px!important}.mt30{margin-block-start:30px!important}.mr30{margin-inline-end:30px!important}.mb30{margin-block-end:30px!important}.ml30{margin-inline-start:30px!important}.p30-0{padding-block:30px;padding-inline:0px}.m30-0{margin-block:30px;margin-inline:0px}.p30-2{padding-block:30px;padding-inline:2px}.m30-2{margin-block:30px;margin-inline:2px}.p30-4{padding-block:30px;padding-inline:4px}.m30-4{margin-block:30px;margin-inline:4px}.p30-6{padding-block:30px;padding-inline:6px}.m30-6{margin-block:30px;margin-inline:6px}.p30-8{padding-block:30px;padding-inline:8px}.m30-8{margin-block:30px;margin-inline:8px}.p30-10{padding-block:30px;padding-inline:10px}.m30-10{margin-block:30px;margin-inline:10px}.p30-12{padding-block:30px;padding-inline:12px}.m30-12{margin-block:30px;margin-inline:12px}.p30-16{padding-block:30px;padding-inline:16px}.m30-16{margin-block:30px;margin-inline:16px}.p30-20{padding-block:30px;padding-inline:20px}.m30-20{margin-block:30px;margin-inline:20px}.p30-24{padding-block:30px;padding-inline:24px}.m30-24{margin-block:30px;margin-inline:24px}.p30{padding-block:30px;padding-inline:30px}.m30{margin-block:30px;margin-inline:30px}.p30-32{padding-block:30px;padding-inline:32px}.m30-32{margin-block:30px;margin-inline:32px}.p30-36{padding-block:30px;padding-inline:36px}.m30-36{margin-block:30px;margin-inline:36px}.p30-40{padding-block:30px;padding-inline:40px}.m30-40{margin-block:30px;margin-inline:40px}.p30-48{padding-block:30px;padding-inline:48px}.m30-48{margin-block:30px;margin-inline:48px}.pt32{padding-block-start:32px!important}.pr32{padding-inline-end:32px!important}.pb32{padding-block-end:32px!important}.pl32{padding-inline-start:32px!important}.mt32{margin-block-start:32px!important}.mr32{margin-inline-end:32px!important}.mb32{margin-block-end:32px!important}.ml32{margin-inline-start:32px!important}.p32-0{padding-block:32px;padding-inline:0px}.m32-0{margin-block:32px;margin-inline:0px}.p32-2{padding-block:32px;padding-inline:2px}.m32-2{margin-block:32px;margin-inline:2px}.p32-4{padding-block:32px;padding-inline:4px}.m32-4{margin-block:32px;margin-inline:4px}.p32-6{padding-block:32px;padding-inline:6px}.m32-6{margin-block:32px;margin-inline:6px}.p32-8{padding-block:32px;padding-inline:8px}.m32-8{margin-block:32px;margin-inline:8px}.p32-10{padding-block:32px;padding-inline:10px}.m32-10{margin-block:32px;margin-inline:10px}.p32-12{padding-block:32px;padding-inline:12px}.m32-12{margin-block:32px;margin-inline:12px}.p32-16{padding-block:32px;padding-inline:16px}.m32-16{margin-block:32px;margin-inline:16px}.p32-20{padding-block:32px;padding-inline:20px}.m32-20{margin-block:32px;margin-inline:20px}.p32-24{padding-block:32px;padding-inline:24px}.m32-24{margin-block:32px;margin-inline:24px}.p32-30{padding-block:32px;padding-inline:30px}.m32-30{margin-block:32px;margin-inline:30px}.p32{padding-block:32px;padding-inline:32px}.m32{margin-block:32px;margin-inline:32px}.p32-36{padding-block:32px;padding-inline:36px}.m32-36{margin-block:32px;margin-inline:36px}.p32-40{padding-block:32px;padding-inline:40px}.m32-40{margin-block:32px;margin-inline:40px}.p32-48{padding-block:32px;padding-inline:48px}.m32-48{margin-block:32px;margin-inline:48px}.pt36{padding-block-start:36px!important}.pr36{padding-inline-end:36px!important}.pb36{padding-block-end:36px!important}.pl36{padding-inline-start:36px!important}.mt36{margin-block-start:36px!important}.mr36{margin-inline-end:36px!important}.mb36{margin-block-end:36px!important}.ml36{margin-inline-start:36px!important}.p36-0{padding-block:36px;padding-inline:0px}.m36-0{margin-block:36px;margin-inline:0px}.p36-2{padding-block:36px;padding-inline:2px}.m36-2{margin-block:36px;margin-inline:2px}.p36-4{padding-block:36px;padding-inline:4px}.m36-4{margin-block:36px;margin-inline:4px}.p36-6{padding-block:36px;padding-inline:6px}.m36-6{margin-block:36px;margin-inline:6px}.p36-8{padding-block:36px;padding-inline:8px}.m36-8{margin-block:36px;margin-inline:8px}.p36-10{padding-block:36px;padding-inline:10px}.m36-10{margin-block:36px;margin-inline:10px}.p36-12{padding-block:36px;padding-inline:12px}.m36-12{margin-block:36px;margin-inline:12px}.p36-16{padding-block:36px;padding-inline:16px}.m36-16{margin-block:36px;margin-inline:16px}.p36-20{padding-block:36px;padding-inline:20px}.m36-20{margin-block:36px;margin-inline:20px}.p36-24{padding-block:36px;padding-inline:24px}.m36-24{margin-block:36px;margin-inline:24px}.p36-30{padding-block:36px;padding-inline:30px}.m36-30{margin-block:36px;margin-inline:30px}.p36-32{padding-block:36px;padding-inline:32px}.m36-32{margin-block:36px;margin-inline:32px}.p36{padding-block:36px;padding-inline:36px}.m36{margin-block:36px;margin-inline:36px}.p36-40{padding-block:36px;padding-inline:40px}.m36-40{margin-block:36px;margin-inline:40px}.p36-48{padding-block:36px;padding-inline:48px}.m36-48{margin-block:36px;margin-inline:48px}.pt40{padding-block-start:40px!important}.pr40{padding-inline-end:40px!important}.pb40{padding-block-end:40px!important}.pl40{padding-inline-start:40px!important}.mt40{margin-block-start:40px!important}.mr40{margin-inline-end:40px!important}.mb40{margin-block-end:40px!important}.ml40{margin-inline-start:40px!important}.p40-0{padding-block:40px;padding-inline:0px}.m40-0{margin-block:40px;margin-inline:0px}.p40-2{padding-block:40px;padding-inline:2px}.m40-2{margin-block:40px;margin-inline:2px}.p40-4{padding-block:40px;padding-inline:4px}.m40-4{margin-block:40px;margin-inline:4px}.p40-6{padding-block:40px;padding-inline:6px}.m40-6{margin-block:40px;margin-inline:6px}.p40-8{padding-block:40px;padding-inline:8px}.m40-8{margin-block:40px;margin-inline:8px}.p40-10{padding-block:40px;padding-inline:10px}.m40-10{margin-block:40px;margin-inline:10px}.p40-12{padding-block:40px;padding-inline:12px}.m40-12{margin-block:40px;margin-inline:12px}.p40-16{padding-block:40px;padding-inline:16px}.m40-16{margin-block:40px;margin-inline:16px}.p40-20{padding-block:40px;padding-inline:20px}.m40-20{margin-block:40px;margin-inline:20px}.p40-24{padding-block:40px;padding-inline:24px}.m40-24{margin-block:40px;margin-inline:24px}.p40-30{padding-block:40px;padding-inline:30px}.m40-30{margin-block:40px;margin-inline:30px}.p40-32{padding-block:40px;padding-inline:32px}.m40-32{margin-block:40px;margin-inline:32px}.p40-36{padding-block:40px;padding-inline:36px}.m40-36{margin-block:40px;margin-inline:36px}.p40{padding-block:40px;padding-inline:40px}.m40{margin-block:40px;margin-inline:40px}.p40-48{padding-block:40px;padding-inline:48px}.m40-48{margin-block:40px;margin-inline:48px}.pt48{padding-block-start:48px!important}.pr48{padding-inline-end:48px!important}.pb48{padding-block-end:48px!important}.pl48{padding-inline-start:48px!important}.mt48{margin-block-start:48px!important}.mr48{margin-inline-end:48px!important}.mb48{margin-block-end:48px!important}.ml48{margin-inline-start:48px!important}.p48-0{padding-block:48px;padding-inline:0px}.m48-0{margin-block:48px;margin-inline:0px}.p48-2{padding-block:48px;padding-inline:2px}.m48-2{margin-block:48px;margin-inline:2px}.p48-4{padding-block:48px;padding-inline:4px}.m48-4{margin-block:48px;margin-inline:4px}.p48-6{padding-block:48px;padding-inline:6px}.m48-6{margin-block:48px;margin-inline:6px}.p48-8{padding-block:48px;padding-inline:8px}.m48-8{margin-block:48px;margin-inline:8px}.p48-10{padding-block:48px;padding-inline:10px}.m48-10{margin-block:48px;margin-inline:10px}.p48-12{padding-block:48px;padding-inline:12px}.m48-12{margin-block:48px;margin-inline:12px}.p48-16{padding-block:48px;padding-inline:16px}.m48-16{margin-block:48px;margin-inline:16px}.p48-20{padding-block:48px;padding-inline:20px}.m48-20{margin-block:48px;margin-inline:20px}.p48-24{padding-block:48px;padding-inline:24px}.m48-24{margin-block:48px;margin-inline:24px}.p48-30{padding-block:48px;padding-inline:30px}.m48-30{margin-block:48px;margin-inline:30px}.p48-32{padding-block:48px;padding-inline:32px}.m48-32{margin-block:48px;margin-inline:32px}.p48-36{padding-block:48px;padding-inline:36px}.m48-36{margin-block:48px;margin-inline:36px}.p48-40{padding-block:48px;padding-inline:40px}.m48-40{margin-block:48px;margin-inline:40px}.p48{padding-block:48px;padding-inline:48px}.m48{margin-block:48px;margin-inline:48px}.p0{padding-block:0!important;padding-inline:0!important}.pt0{padding-block-start:0!important}.pl0{padding-inline-start:0!important}.pr0{padding-inline-end:0!important}.pb0{padding-block-end:0!important}.w16{width:16px!important}.minw16{min-width:16px}.maxw16{max-width:16px}.h16{height:16px!important}.minh16{min-height:16px}.maxh16{max-height:16px}.w20{width:20px!important}.minw20{min-width:20px}.maxw20{max-width:20px}.h20{height:20px!important}.minh20{min-height:20px}.maxh20{max-height:20px}.w24{width:24px!important}.minw24{min-width:24px}.maxw24{max-width:24px}.h24{height:24px!important}.minh24{min-height:24px}.maxh24{max-height:24px}.w30{width:30px!important}.minw30{min-width:30px}.maxw30{max-width:30px}.h30{height:30px!important}.minh30{min-height:30px}.maxh30{max-height:30px}.w32{width:32px!important}.minw32{min-width:32px}.maxw32{max-width:32px}.h32{height:32px!important}.minh32{min-height:32px}.maxh32{max-height:32px}.w36{width:36px!important}.minw36{min-width:36px}.maxw36{max-width:36px}.h36{height:36px!important}.minh36{min-height:36px}.maxh36{max-height:36px}.w40{width:40px!important}.minw40{min-width:40px}.maxw40{max-width:40px}.h40{height:40px!important}.minh40{min-height:40px}.maxh40{max-height:40px}.w48{width:48px!important}.minw48{min-width:48px}.maxw48{max-width:48px}.h48{height:48px!important}.minh48{min-height:48px}.maxh48{max-height:48px}.w56{width:56px!important}.minw56{min-width:56px}.maxw56{max-width:56px}.h56{height:56px!important}.minh56{min-height:56px}.maxh56{max-height:56px}.w64{width:64px!important}.minw64{min-width:64px}.maxw64{max-width:64px}.h64{height:64px!important}.minh64{min-height:64px}.maxh64{max-height:64px}.w80{width:80px!important}.minw80{min-width:80px}.maxw80{max-width:80px}.h80{height:80px!important}.minh80{min-height:80px}.maxh80{max-height:80px}.w88{width:88px!important}.minw88{min-width:88px}.maxw88{max-width:88px}.h88{height:88px!important}.minh88{min-height:88px}.maxh88{max-height:88px}.w90{width:90px!important}.minw90{min-width:90px}.maxw90{max-width:90px}.h90{height:90px!important}.minh90{min-height:90px}.maxh90{max-height:90px}.w96{width:96px!important}.minw96{min-width:96px}.maxw96{max-width:96px}.h96{height:96px!important}.minh96{min-height:96px}.maxh96{max-height:96px}.w100{width:100px!important}.minw100{min-width:100px}.maxw100{max-width:100px}.h100{height:100px!important}.minh100{min-height:100px}.maxh100{max-height:100px}.w120{width:120px!important}.minw120{min-width:120px}.maxw120{max-width:120px}.h120{height:120px!important}.minh120{min-height:120px}.maxh120{max-height:120px}.w128{width:128px!important}.minw128{min-width:128px}.maxw128{max-width:128px}.h128{height:128px!important}.minh128{min-height:128px}.maxh128{max-height:128px}.w140{width:140px!important}.minw140{min-width:140px}.maxw140{max-width:140px}.h140{height:140px!important}.minh140{min-height:140px}.maxh140{max-height:140px}.w150{width:150px!important}.minw150{min-width:150px}.maxw150{max-width:150px}.h150{height:150px!important}.minh150{min-height:150px}.maxh150{max-height:150px}.w160{width:160px!important}.minw160{min-width:160px}.maxw160{max-width:160px}.h160{height:160px!important}.minh160{min-height:160px}.maxh160{max-height:160px}.w180{width:180px!important}.minw180{min-width:180px}.maxw180{max-width:180px}.h180{height:180px!important}.minh180{min-height:180px}.maxh180{max-height:180px}.w200{width:200px!important}.minw200{min-width:200px}.maxw200{max-width:200px}.h200{height:200px!important}.minh200{min-height:200px}.maxh200{max-height:200px}.w240{width:240px!important}.minw240{min-width:240px}.maxw240{max-width:240px}.h240{height:240px!important}.minh240{min-height:240px}.maxh240{max-height:240px}.w256{width:256px!important}.minw256{min-width:256px}.maxw256{max-width:256px}.h256{height:256px!important}.minh256{min-height:256px}.maxh256{max-height:256px}.w300{width:300px!important}.minw300{min-width:300px}.maxw300{max-width:300px}.h300{height:300px!important}.minh300{min-height:300px}.maxh300{max-height:300px}.w320{width:320px!important}.minw320{min-width:320px}.maxw320{max-width:320px}.h320{height:320px!important}.minh320{min-height:320px}.maxh320{max-height:320px}.w360{width:360px!important}.minw360{min-width:360px}.maxw360{max-width:360px}.h360{height:360px!important}.minh360{min-height:360px}.maxh360{max-height:360px}.w375{width:375px!important}.minw375{min-width:375px}.maxw375{max-width:375px}.h375{height:375px!important}.minh375{min-height:375px}.maxh375{max-height:375px}.w400{width:400px!important}.minw400{min-width:400px}.maxw400{max-width:400px}.h400{height:400px!important}.minh400{min-height:400px}.maxh400{max-height:400px}.w480{width:480px!important}.minw480{min-width:480px}.maxw480{max-width:480px}.h480{height:480px!important}.minh480{min-height:480px}.maxh480{max-height:480px}.w600{width:600px!important}.minw600{min-width:600px}.maxw600{max-width:600px}.h600{height:600px!important}.minh600{min-height:600px}.maxh600{max-height:600px}.w640{width:640px!important}.minw640{min-width:640px}.maxw640{max-width:640px}.h640{height:640px!important}.minh640{min-height:640px}.maxh640{max-height:640px}.w750{width:750px!important}.minw750{min-width:750px}.maxw750{max-width:750px}.h750{height:750px!important}.minh750{min-height:750px}.maxh750{max-height:750px}.w800{width:800px!important}.minw800{min-width:800px}.maxw800{max-width:800px}.h800{height:800px!important}.minh800{min-height:800px}.maxh800{max-height:800px}.w1{width:1px;height:1px;flex-shrink:0}.wp10{width:10%!important}.hp10{height:10%!important}.wp20{width:20%!important}.hp20{height:20%!important}.wp30{width:30%!important}.hp30{height:30%!important}.wp40{width:40%!important}.hp40{height:40%!important}.hp50{height:50%!important}.wp60{width:60%!important}.hp60{height:60%!important}.wp70{width:70%!important}.hp70{height:70%!important}.wp80{width:80%!important}.hp80{height:80%!important}.wp90{width:90%!important}.hp90{height:90%!important}.hp100{height:100%!important}.wp25{width:25%!important}.wp30{width:33.3333333333%!important}.wp50{width:50%!important}.wp75{width:75%!important}.wp100{width:100%!important}.vh50{height:50vh!important}.vh60{height:60vh!important}.vh70{height:70vh!important}.vh80{height:80vh!important}.vh100{height:100vh!important}.vw90{width:90vw}.hauto{height:auto!important}.fs10{font-size:10px!important}.fs11{font-size:11px!important}.fs12{font-size:12px!important}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs18{font-size:18px!important}.fs20{font-size:20px!important}.fs22{font-size:22px!important}.fs24{font-size:24px!important}.fs28{font-size:28px!important}.fs30{font-size:30px!important}.fs32{font-size:32px!important}.fs36{font-size:36px!important}.fs48{font-size:48px!important}.fs64{font-size:64px!important}.fs96{font-size:96px!important}.space1{letter-spacing:1px}.space2{letter-spacing:2px}.space3{letter-spacing:3px}.space4{letter-spacing:4px}.space5{letter-spacing:5px}.lh14{line-height:14px}.lh16{line-height:16px}.lh18{line-height:18px}.lh20{line-height:20px}.lh22{line-height:22px}.lh24{line-height:24px}.lh26{line-height:26px}.lh28{line-height:28px}.lh30{line-height:30px}.lh32{line-height:32px}.lh34{line-height:34px}.lh36{line-height:36px}.lh38{line-height:38px}.lh40{line-height:40px}.lh42{line-height:42px}.lh44{line-height:44px}.lh46{line-height:46px}.lh48{line-height:48px}.txt-nowrap1{-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;cursor:default}.txt-nowrap2{-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;cursor:default}.txt-nowrap3{-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;cursor:default}.txt-nowrap4{-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;cursor:default}.txt-nowrap5{-webkit-box-orient:vertical;-webkit-line-clamp:5;overflow:hidden;cursor:default}.txt-nowrap6{-webkit-box-orient:vertical;-webkit-line-clamp:6;overflow:hidden;cursor:default}.txt-nowrap7{-webkit-box-orient:vertical;-webkit-line-clamp:7;overflow:hidden;cursor:default}.txt-nowrap8{-webkit-box-orient:vertical;-webkit-line-clamp:8;overflow:hidden;cursor:default}.txt-nowrap9{-webkit-box-orient:vertical;-webkit-line-clamp:9;overflow:hidden;cursor:default}.txt-nowrap10{-webkit-box-orient:vertical;-webkit-line-clamp:10;overflow:hidden;cursor:default}.txt-wrap,.txt-prewrap{word-break:all;word-wrap:break-word;white-space:pre-wrap}.txt-nowrap{text-overflow:ellipsis;word-break:keep-all;white-space:nowrap;overflow:hidden;cursor:default}.fw300{font-weight:lighter}.fw500{font-weight:400}.fw700{font-weight:700}.block{display:block}.indent2{text-indent:2rem}.cursor-disabled{cursor:not-allowed}.txt-line2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-break:break-all;overflow:hidden}.opacity2{opacity:.2}.txt-line3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;word-break:break-all;overflow:hidden}.opacity3{opacity:calc(3 / 10)}.txt-line4{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;word-break:break-all;overflow:hidden}.opacity4{opacity:.4}.txt-line5{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;word-break:break-all;overflow:hidden}.opacity5{opacity:.5}.txt-line6{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6;word-break:break-all;overflow:hidden}.opacity6{opacity:calc(6 / 10)}.txt-line7{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:7;word-break:break-all;overflow:hidden}.opacity7{opacity:calc(7 / 10)}.txt-line8{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:8;word-break:break-all;overflow:hidden}.opacity8{opacity:.8}.txt-line9{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:9;word-break:break-all;overflow:hidden}.opacity9{opacity:.9}.colorfulFont{color:transparent;background-clip:text;-webkit-background-clip:text!important;-webkit-text-fill-color:transparent}.colorfulFont.primary{background:linear-gradient(180deg,var(--mg-primary7) 30%,var(--mg-primary))}.colorfulFont.orange{background:linear-gradient(180deg,var(--mg-orange7) 30%,var(--mg-orange))}.colorfulFont.blue{background:linear-gradient(180deg,#2c99ff 30%,#61b0f9)}.colorfulFont.green{background:linear-gradient(180deg,var(--mg-green7) 30%,var(--mg-green))}.colorfulFont.red{background:linear-gradient(180deg,var(--mg-red7) 30%,var(--mg-red))}.colorfulFont.purple{background:linear-gradient(100deg,var(--mg-purple7) 30%,var(--mg-purple))}.relative{position:relative!important}.fixed{position:fixed!important}.abs{position:absolute!important}.t{top:0}.l{left:0}.r{right:0}.b{bottom:0}.absCenter{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.absFull{position:absolute;top:0;left:0;right:0;bottom:0}.z0{z-index:0}.z1{z-index:1}.z2{z-index:2}.z9{z-index:9}.flexMode{display:flex;justify-content:flex-start;align-items:flex-start}.flexMode.inline{display:inline-flex}.flex1{flex:1}.flex-1{flex-direction:row-reverse}.flexV{flex-direction:column}.flexV-1{flex-direction:column-reverse}.flexWrap{flex-wrap:wrap}.flexWrap-1{flex-wrap:wrap-reverse}.flexGrow{flex-grow:1}.noShrink{flex-shrink:0}.hl{justify-content:flex-start!important}.hb{justify-content:space-between!important}.ha{justify-content:space-around!important}.hc{justify-content:center!important}.hr{justify-content:flex-end!important}.vl{align-items:flex-start!important}.vr{align-items:flex-end!important}.vc{align-items:center!important}.vs{align-items:stretch!important}.acl{align-content:flex-start!important}.acc{align-content:center!important}.acr{align-content:flex-end!important}.acb{align-content:space-between!important}.aca{align-content:space-around!important}.acs{align-content:stretch!important}.sticky{position:sticky;top:0}.clear{clear:both}.txt-c{text-align:center}.txt-r{text-align:right}.fadeout{mask:linear-gradient(to right,transparent,rgb(0,0,0) 16px,rgb(0,0,0) calc(100% - 16px),transparent)}.fadeout.v{mask:linear-gradient(to bottom,transparent,rgb(0,0,0) 16px,rgb(0,0,0) calc(100% - 16px),transparent)}.fadeout-h16{margin-inline:-16px;padding-inline:16px}.g2{gap:2px}.g4{gap:4px}.g6{gap:6px}.g8{gap:8px}.g10{gap:10px}.g12{gap:12px}.g14{gap:14px}.g16{gap:16px}.g18{gap:18px}.g20{gap:20px}.g22{gap:22px}.g24{gap:24px}.g26{gap:26px}.g28{gap:28px}.g30{gap:30px}.g32{gap:32px}.g34{gap:34px}.g36{gap:36px}.g38{gap:38px}.g40{gap:40px}.mauto{margin-inline:auto}*{box-sizing:border-box}body{margin:0;background-color:var(--color-bg-body)}button{outline:none}::selection{background-color:var(--color-primary);color:var(--color-white)}.imicon{font-family:mvframe!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}.point{cursor:pointer}.opacity0{opacity:0}.yscroll{height:100%;overflow-y:auto!important;overflow-x:hidden}.xscroll{overflow-x:auto!important;overflow-y:hidden}.noscroll{overflow-anchor:none}.nobar::-webkit-scrollbar{display:none}.noselect{-webkit-user-select:none;user-select:none}.noevent{pointer-events:none}.notrans{transition:none!important}.bg-none{background-color:transparent!important}.hide{display:none!important}.radius0{border-radius:0}.radius1{border-radius:1px}.radius2{border-radius:2px}.radius3{border-radius:3px}.radius4{border-radius:4px}.radius5{border-radius:5px}.radius6{border-radius:6px}.radius7{border-radius:7px}.radius8{border-radius:8px}.radius9{border-radius:9px}.radius10{border-radius:10px}.radius11{border-radius:11px}.radius12{border-radius:12px}.radius13{border-radius:13px}.radius14{border-radius:14px}.radius15{border-radius:15px}.radius16{border-radius:16px}.radius{overflow:hidden}.radiusP50{border-radius:50%}.hover:hover{opacity:.6;transition:opacity var(--trans)}.tag{padding:.25rem .5rem;border-radius:.875rem;background-color:var(--color-border);color:var(--color-txt-tip);line-height:.875rem}.el-button--primary{position:relative}.el-button--primary:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}.el-select-dropdown__item.is-selected{font-weight:400;position:relative}.el-select-dropdown__item.is-selected:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;width:4px;background-color:var(--color-primary)}.el-select-dropdown__item.is-selected:after{width:16px!important;height:16px!important;mask-size:100% 100%!important;-webkit-mask-size:100% 100%!important}:root{--color-txt-h1: #111111;--color-txt-h2: #333333;--color-txt-p: #555555;--color-txt-tip: #999999;--color-txt-gray: #ccc;--color-primary: #007bff;--color-green: #28a745;--color-orange: #ffc107;--color-red: #dc3545;--color-red3: rgba(220, 53, 69, .3);--color-purple: #6f42c1;--color-pink: #e83e8c;--color-yellow: #ffd700;--color-border: #e5e5e5;--color-white: #ffffff;--color-white3: rgba(255, 255, 255, .3);--color-primary-bg-txt: #d1e7ff;--color-bg-body: #fafafa;--color-bg-menu: #ffffff;--color-bg-menu-item-active: var(--color-primary);--color-bg-menu-item-hover: #fafafa;--color-bg-menu-children: #f9f9f9;--color-bg-menu-children-item-hover: #ffffff;--color-bg-page-header: #ffffff;--color-bg-page-body: transparent;--border-d: 1px solid var(--color-border);--border-red: 1px solid var(--color-red);--border-red3: 1px solid var(--color-red3);--trans: .1s ease-in;--trans-all: all var(--trans)}.border{border:var(--border-d)}.txt-h1{color:var(--color-txt-h1)}.txt-h2{color:var(--color-txt-h2)}.txt-p{color:var(--color-txt-p)}.txt-tip{color:var(--color-txt-tip)}.txt-gray{color:var(--color-txt-gray)}.txt-primary{color:var(--color-primary)}.bg-primary{background-color:var(--color-primary);position:relative}.bg-primary:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}.txt-green{color:var(--color-green)}.bg-green{background-color:var(--color-green);position:relative}.bg-green:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-green);transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}.txt-orange{color:var(--color-orange)}.bg-orange{background-color:var(--color-orange);position:relative}.bg-orange:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-orange);transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}.txt-red{color:var(--color-red)}.bg-red{background-color:var(--color-red);position:relative}.bg-red:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-red);transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}.txt-purple{color:var(--color-purple)}.bg-purple{background-color:var(--color-purple);position:relative}.bg-purple:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-purple);transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}.txt-pink{color:var(--color-pink)}.bg-pink{background-color:var(--color-pink);position:relative}.bg-pink:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-pink);transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}.txt-yellow{color:var(--color-yellow)}.bg-yellow{background-color:var(--color-yellow);position:relative}.bg-yellow:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-yellow);transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}.txt-white{color:var(--color-white)}.bg-white{background-color:var(--color-white);position:relative}.bg-white:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-white);transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}.trans-all{transition:var(--trans-all)}.glow-shadow{position:relative}.glow-shadow:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:inherit;transform:translateY(25%);pointer-events:none;filter:blur(10px);z-index:0}
|
package/dist/vendor.js
CHANGED
|
@@ -63,7 +63,7 @@ const _ = /* @__PURE__ */ Object.assign({ "../component/BtnGroup/index.vue": v,
|
|
|
63
63
|
}, w = {
|
|
64
64
|
name: "Matt Avias Frame",
|
|
65
65
|
copyright: "©2026",
|
|
66
|
-
version: "1.0.
|
|
66
|
+
version: "1.0.6",
|
|
67
67
|
author: "Matt Avias",
|
|
68
68
|
date: "2026-02-26",
|
|
69
69
|
/** Table 等表格默认;业务在 app.use(mvframe, { config }) 里覆盖 */
|
package/package.json
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mvframe",
|
|
3
3
|
"packageManager": "yarn@4.4.1",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.6",
|
|
5
5
|
"author": "matt avis",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
8
8
|
"exports": {
|
|
9
|
-
"./*": "./*",
|
|
10
9
|
".": {
|
|
11
10
|
"import": "./dist/index.js",
|
|
12
11
|
"require": "./dist/index.js"
|
|
13
12
|
},
|
|
13
|
+
"./composition": {
|
|
14
|
+
"import": "./dist/composition.js",
|
|
15
|
+
"require": "./dist/composition.js"
|
|
16
|
+
},
|
|
14
17
|
"./store": {
|
|
15
18
|
"import": "./dist/store.js",
|
|
16
19
|
"require": "./dist/store.js"
|
|
@@ -19,14 +22,29 @@
|
|
|
19
22
|
"import": "./dist/directive.js",
|
|
20
23
|
"require": "./dist/directive.js"
|
|
21
24
|
},
|
|
22
|
-
"./
|
|
25
|
+
"./util": {
|
|
26
|
+
"import": "./dist/util.js",
|
|
27
|
+
"require": "./dist/util.js"
|
|
28
|
+
},
|
|
29
|
+
"./style": "./dist/css/style.css",
|
|
30
|
+
"./style/cpt": "./dist/css/cpt.css",
|
|
31
|
+
"./package.json": "./package.json"
|
|
23
32
|
},
|
|
24
33
|
"scripts": {
|
|
25
34
|
"dev": "vite",
|
|
26
|
-
"build": "node scripts/prebuild.js"
|
|
35
|
+
"build": "node scripts/prebuild.js",
|
|
36
|
+
"install-cursor-skill": "node scripts/install-cursor-skill.js",
|
|
37
|
+
"scaffold-app": "node scripts/scaffold-app.js"
|
|
38
|
+
},
|
|
39
|
+
"bin": {
|
|
40
|
+
"mvframe-install-cursor-skill": "scripts/install-cursor-skill.js",
|
|
41
|
+
"mvframe-init-app": "scripts/scaffold-app.js"
|
|
27
42
|
},
|
|
28
43
|
"files": [
|
|
29
|
-
"dist/*"
|
|
44
|
+
"dist/*",
|
|
45
|
+
"scripts/install-cursor-skill.js",
|
|
46
|
+
"scripts/scaffold-app.js",
|
|
47
|
+
".cursor/skills/mvframe-app-init"
|
|
30
48
|
],
|
|
31
49
|
"dependencies": {
|
|
32
50
|
"pinia": "^3.0.0",
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* 将 MVFrame 自带的 Cursor Skill 拷贝到目标工程的 `.cursor/skills/mvframe-app-init`,
|
|
4
|
+
* 便于消费方项目在 Cursor 中自动匹配「初始化 / 接入 mvframe」等场景。
|
|
5
|
+
*
|
|
6
|
+
* 用法:
|
|
7
|
+
* # 在项目根(要装 .cursor 的目录)执行
|
|
8
|
+
* node path/to/mvframe/scripts/install-cursor-skill.js
|
|
9
|
+
* node path/to/mvframe/scripts/install-cursor-skill.js /abs/path/to/your-project
|
|
10
|
+
*
|
|
11
|
+
* # 安装本包后(需 package 含 .cursor/skills 与本脚本)
|
|
12
|
+
* yarn exec mvframe-install-cursor-skill
|
|
13
|
+
* npx --no-install mvframe-install-cursor-skill
|
|
14
|
+
*
|
|
15
|
+
* 环境变量(可选):
|
|
16
|
+
* MVFRAME_CURSOR_SKILL_OUT=/path/to/project 等价于第一个参数
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const fs = require("fs");
|
|
20
|
+
const path = require("path");
|
|
21
|
+
|
|
22
|
+
const pkgRoot = path.resolve(__dirname, "..");
|
|
23
|
+
const src = path.join(pkgRoot, ".cursor", "skills", "mvframe-app-init");
|
|
24
|
+
|
|
25
|
+
const projectRoot = path.resolve(
|
|
26
|
+
process.env.MVFRAME_CURSOR_SKILL_OUT ||
|
|
27
|
+
process.argv[2] ||
|
|
28
|
+
process.cwd(),
|
|
29
|
+
);
|
|
30
|
+
const dest = path.join(projectRoot, ".cursor", "skills", "mvframe-app-init");
|
|
31
|
+
|
|
32
|
+
if (!fs.existsSync(path.join(src, "SKILL.md"))) {
|
|
33
|
+
console.error(
|
|
34
|
+
"[mvframe] 未找到 skill 源码目录:\n ",
|
|
35
|
+
src,
|
|
36
|
+
"\n请使用完整 mvframe 仓库或已包含 .cursor/skills 的安装包。",
|
|
37
|
+
);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
42
|
+
|
|
43
|
+
if (fs.existsSync(dest)) {
|
|
44
|
+
fs.rmSync(dest, { recursive: true });
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
fs.cpSync(src, dest, { recursive: true });
|
|
48
|
+
|
|
49
|
+
console.log("[mvframe] 已安装 Cursor Skill:");
|
|
50
|
+
console.log(" ", dest);
|
|
51
|
+
console.log("[mvframe] 在 Cursor 中打开该项目后即可使用 mvframe-app-init 技能说明。");
|