mvframe 1.0.4 → 1.0.5

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.
@@ -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, i = 200;
33
- return s.length > i ? s.slice(0, i) : s;
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: i, init: c, ...f } = n, a = i ?? s;
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: { ...c || {}, headers: o ?? (c == null ? void 0 : c.headers) },
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
- }, N = async (n = {}) => {
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: i,
71
- url: c,
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: x,
77
- name: m,
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, d = x ?? m;
71
+ } = e, p = m ?? x;
86
72
  try {
87
73
  if (t === "inline") {
88
74
  if (o instanceof Blob) {
89
- h(o, d);
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), p = s ? "\uFEFF" + l : l, y = i || (s ? "text/csv;charset=utf-8" : "text/plain;charset=utf-8");
97
- h(new Blob([p], { type: y }), d);
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 (!c) {
87
+ if (!i) {
102
88
  u(new Error("url is required for fetch"));
103
89
  return;
104
90
  }
105
- const l = await fetch(c, f);
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 = i || (s ? "text/csv;charset=utf-8" : "text/plain;charset=utf-8");
112
- h(new Blob([w], { type: S }), d);
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 p = await l.blob();
116
- if (E && !R(p)) {
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(p, d);
106
+ h(d, p);
121
107
  return;
122
108
  }
123
109
  if (t === "open") {
124
- if (!c) {
110
+ if (!i) {
125
111
  u(new Error("url is required for open"));
126
112
  return;
127
113
  }
128
- b === "blank" ? window.open(c, "_blank", "noopener,noreferrer") : window.location.href = c;
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, i = t == null ? void 0 : t.unit;
140
- if ((i === "currency" || i === "%") && o) {
141
- const c = {
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: i === "currency" ? "currency" : "%",
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: c
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 V(n, e, t = {}) {
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 i = s.property ?? s.prop ?? "";
169
- if (!i)
154
+ const c = s.property ?? s.prop ?? "";
155
+ if (!c)
170
156
  return "";
171
- let c = e[i];
172
- if (c === void 0 && (c = ""), c === "")
157
+ let i = e[c];
158
+ if (i === void 0 && (i = ""), i === "")
173
159
  return "";
174
- const f = typeof o == "function" ? o(i) : void 0;
160
+ const f = typeof o == "function" ? o(c) : void 0;
175
161
  try {
176
- return B(i, c, f);
162
+ return B(c, i, f);
177
163
  } catch {
178
- return String(c);
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
- N as download,
196
+ U as download,
185
197
  B as formatSummaryCell,
186
- U as isInView,
198
+ C as isInView,
187
199
  O as sanitizeDownloadFileName,
188
- C as useLang,
189
- V as useRemoteSummary
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.4",
66
+ version: "1.0.5",
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",
4
+ "version": "1.0.5",
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
- "./style": "./dist/style.css"
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 技能说明。");