jcjy-components 0.1.4 → 0.1.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/dist/index.es.js CHANGED
@@ -1,1868 +1,1623 @@
1
- import { defineComponent as H, ref as b, createElementBlock as F, openBlock as U, mergeProps as FA, inject as P, withKeys as nA, withModifiers as X, createCommentVNode as w, createElementVNode as C, unref as k, toDisplayString as D, createVNode as Z, createTextVNode as O, Fragment as fA, createBlock as q, Transition as _, withCtx as $, watch as IA, onUnmounted as KA, computed as N, onMounted as LA, provide as tA, normalizeStyle as yA, normalizeClass as CA, nextTick as wA } from "vue";
2
- class SA {
3
- constructor(s, t) {
4
- this.pixels = s, this.opts = t;
5
- const { sigBits: A } = t, e = (L, W, m) => (L << 2 * A) + (W << A) + m;
6
- this.getColorIndex = e;
7
- const o = 8 - A, i = 1 << 3 * A, a = new Uint32Array(i);
8
- let l, r, c, g, u, B, Q, E, d, v;
9
- l = c = u = 0, r = g = B = Number.MAX_VALUE;
10
- const f = s.length / 4;
11
- let J = 0;
12
- for (; J < f; ) {
13
- const L = J * 4;
14
- if (J++, Q = s[L + 0], E = s[L + 1], d = s[L + 2], v = s[L + 3], v === 0) continue;
15
- Q = Q >> o, E = E >> o, d = d >> o;
16
- const W = e(Q, E, d);
17
- a[W] === void 0 && (a[W] = 0), a[W] += 1, Q > l && (l = Q), Q < r && (r = Q), E > c && (c = E), E < g && (g = E), d > u && (u = d), d < B && (B = d);
18
- }
19
- this._colorCount = a.reduce(
20
- (L, W) => W > 0 ? L + 1 : L,
21
- 0
22
- ), this.hist = a, this.rmax = l, this.rmin = r, this.gmax = c, this.gmin = g, this.bmax = u, this.bmin = B;
23
- }
24
- get colorCount() {
25
- return this._colorCount;
26
- }
27
- }
28
- class pA {
29
- scaleDown(s) {
30
- const t = this.getWidth(), A = this.getHeight();
31
- let e = 1;
32
- if (s.maxDimension > 0) {
33
- const o = Math.max(t, A);
34
- o > s.maxDimension && (e = s.maxDimension / o);
35
- } else
36
- e = 1 / s.quality;
37
- e < 1 && this.resize(t * e, A * e, e);
38
- }
39
- }
40
- function bA(n, s) {
41
- if (s.length > 0) {
42
- const t = n.data, A = t.length / 4;
43
- let e, o, i, a, l;
44
- for (let r = 0; r < A; r++) {
45
- e = r * 4, o = t[e + 0], i = t[e + 1], a = t[e + 2], l = t[e + 3];
46
- for (let c = 0; c < s.length; c++)
47
- if (!s[c]?.(o, i, a, l)) {
48
- t[e + 3] = 0;
49
- break;
50
- }
51
- }
52
- }
53
- return n;
54
- }
55
- function kA(n) {
56
- const s = new URL(n, location.href);
57
- return s.protocol === location.protocol && s.host === location.host && s.port === location.port;
58
- }
59
- function WA(n, s) {
60
- const t = new URL(n), A = new URL(s);
61
- return t.protocol === A.protocol && t.hostname === A.hostname && t.port === A.port;
62
- }
63
- class RA extends pA {
64
- _getCanvas() {
65
- if (!this._canvas)
66
- throw new Error("Canvas is not initialized");
67
- return this._canvas;
68
- }
69
- _getContext() {
70
- if (!this._context)
71
- throw new Error("Context is not initialized");
72
- return this._context;
73
- }
74
- _getWidth() {
75
- if (!this._width)
76
- throw new Error("Width is not initialized");
77
- return this._width;
78
- }
79
- _getHeight() {
80
- if (!this._height)
81
- throw new Error("Height is not initialized");
82
- return this._height;
83
- }
84
- _initCanvas() {
85
- const s = this.image;
86
- if (!s)
87
- throw new Error("Image is not initialized");
88
- const t = this._canvas = document.createElement("canvas"), A = t.getContext("2d");
89
- if (!A) throw new ReferenceError("Failed to create canvas context");
90
- this._context = A, t.className = "@vibrant/canvas", t.style.display = "none", this._width = t.width = s.width, this._height = t.height = s.height, A.drawImage(s, 0, 0), document.body.appendChild(t);
91
- }
92
- load(s) {
93
- let t, A;
94
- if (typeof s == "string")
95
- t = document.createElement("img"), A = s, !kA(A) && !WA(window.location.href, A) && (t.crossOrigin = "anonymous"), t.src = A;
96
- else if (s instanceof HTMLImageElement)
97
- t = s, A = s.src;
98
- else
99
- return Promise.reject(
100
- new Error("Cannot load buffer as an image in browser")
101
- );
102
- return this.image = t, new Promise((e, o) => {
103
- const i = () => {
104
- this._initCanvas(), e(this);
105
- };
106
- t.complete ? i() : (t.onload = i, t.onerror = (a) => o(new Error(`Fail to load image: ${A}`)));
107
- });
108
- }
109
- clear() {
110
- this._getContext().clearRect(0, 0, this._getWidth(), this._getHeight());
111
- }
112
- update(s) {
113
- this._getContext().putImageData(s, 0, 0);
114
- }
115
- getWidth() {
116
- return this._getWidth();
117
- }
118
- getHeight() {
119
- return this._getHeight();
120
- }
121
- resize(s, t, A) {
122
- if (!this.image)
123
- throw new Error("Image is not initialized");
124
- this._width = this._getCanvas().width = s, this._height = this._getCanvas().height = t, this._getContext().scale(A, A), this._getContext().drawImage(this.image, 0, 0);
125
- }
126
- getPixelCount() {
127
- return this._getWidth() * this._getHeight();
128
- }
129
- getImageData() {
130
- return this._getContext().getImageData(
131
- 0,
132
- 0,
133
- this._getWidth(),
134
- this._getHeight()
135
- );
136
- }
137
- remove() {
138
- this._canvas && this._canvas.parentNode && this._canvas.parentNode.removeChild(this._canvas);
139
- }
140
- }
141
- function T(n, ...s) {
142
- return s.forEach((t) => {
143
- if (t) {
144
- for (const A in t)
145
- if (t.hasOwnProperty(A)) {
146
- const e = t[A];
147
- Array.isArray(e) ? n[A] = e.slice(0) : typeof e == "object" ? (n[A] || (n[A] = {}), T(n[A], e)) : n[A] = e;
148
- }
149
- }
150
- }), n;
151
- }
152
- function ZA(n, s) {
153
- const { colorCount: t, quantizer: A, generators: e, filters: o } = n, i = { colorCount: t }, a = typeof A == "string" ? { name: A, options: {} } : A;
154
- return a.options = T({}, i, a.options), T(
155
- {},
156
- {
157
- quantizer: a,
158
- generators: e,
159
- filters: o
160
- },
161
- s
162
- );
1
+ import { Fragment as e, Transition as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createStaticVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, inject as d, mergeProps as f, nextTick as p, normalizeClass as m, normalizeStyle as h, onMounted as g, onUnmounted as _, openBlock as v, provide as y, ref as b, renderList as ee, renderSlot as x, toDisplayString as S, unref as C, vModelCheckbox as w, watch as T, withCtx as E, withDirectives as te, withKeys as D, withModifiers as O } from "vue";
2
+ //#region node_modules/.pnpm/@vibrant+image@4.0.4/node_modules/@vibrant/image/dist/esm/histogram.js
3
+ var ne = class {
4
+ constructor(e, t) {
5
+ this.pixels = e, this.opts = t;
6
+ let { sigBits: n } = t, r = (e, t, r) => (e << 2 * n) + (t << n) + r;
7
+ this.getColorIndex = r;
8
+ let i = 8 - n, a = 1 << 3 * n, o = new Uint32Array(a), s, c, l, u, d, f, p, m, h, g;
9
+ s = l = d = 0, c = u = f = Number.MAX_VALUE;
10
+ let _ = e.length / 4, v = 0;
11
+ for (; v < _;) {
12
+ let t = v * 4;
13
+ if (v++, p = e[t + 0], m = e[t + 1], h = e[t + 2], g = e[t + 3], g === 0) continue;
14
+ p >>= i, m >>= i, h >>= i;
15
+ let n = r(p, m, h);
16
+ o[n] === void 0 && (o[n] = 0), o[n] += 1, p > s && (s = p), p < c && (c = p), m > l && (l = m), m < u && (u = m), h > d && (d = h), h < f && (f = h);
17
+ }
18
+ this._colorCount = o.reduce((e, t) => t > 0 ? e + 1 : e, 0), this.hist = o, this.rmax = s, this.rmin = c, this.gmax = l, this.gmin = u, this.bmax = d, this.bmin = f;
19
+ }
20
+ get colorCount() {
21
+ return this._colorCount;
22
+ }
23
+ }, k = class {
24
+ scaleDown(e) {
25
+ let t = this.getWidth(), n = this.getHeight(), r = 1;
26
+ if (e.maxDimension > 0) {
27
+ let i = Math.max(t, n);
28
+ i > e.maxDimension && (r = e.maxDimension / i);
29
+ } else r = 1 / e.quality;
30
+ r < 1 && this.resize(t * r, n * r, r);
31
+ }
32
+ };
33
+ function re(e, t) {
34
+ if (t.length > 0) {
35
+ let n = e.data, r = n.length / 4, i, a, o, s, c;
36
+ for (let e = 0; e < r; e++) {
37
+ i = e * 4, a = n[i + 0], o = n[i + 1], s = n[i + 2], c = n[i + 3];
38
+ for (let e = 0; e < t.length; e++) if (!t[e]?.(a, o, s, c)) {
39
+ n[i + 3] = 0;
40
+ break;
41
+ }
42
+ }
43
+ }
44
+ return e;
163
45
  }
164
- class vA {
165
- /**
166
- * Arguments are the same as `Vibrant.constructor`.
167
- */
168
- constructor(s, t = {}) {
169
- this._src = s, this._opts = T({}, V.DefaultOpts, t);
170
- }
171
- /**
172
- * Sets `opts.colorCount` to `n`.
173
- * @returns this `Builder` instance.
174
- */
175
- maxColorCount(s) {
176
- return this._opts.colorCount = s, this;
177
- }
178
- /**
179
- * Sets `opts.maxDimension` to `d`.
180
- * @returns this `Builder` instance.
181
- */
182
- maxDimension(s) {
183
- return this._opts.maxDimension = s, this;
184
- }
185
- /**
186
- * Adds a filter function
187
- * @returns this `Builder` instance.
188
- */
189
- addFilter(s) {
190
- return this._opts.filters ? this._opts.filters.push(s) : this._opts.filters = [s], this;
191
- }
192
- /**
193
- * Removes a filter function.
194
- * @returns this `Builder` instance.
195
- */
196
- removeFilter(s) {
197
- if (this._opts.filters) {
198
- const t = this._opts.filters.indexOf(s);
199
- t > 0 && this._opts.filters.splice(t);
200
- }
201
- return this;
202
- }
203
- /**
204
- * Clear all filters.
205
- * @returns this `Builder` instance.
206
- */
207
- clearFilters() {
208
- return this._opts.filters = [], this;
209
- }
210
- /**
211
- * Sets `opts.quality` to `q`.
212
- * @returns this `Builder` instance.
213
- */
214
- quality(s) {
215
- return this._opts.quality = s, this;
216
- }
217
- /**
218
- * Specifies which `Image` implementation class to use.
219
- * @returns this `Builder` instance.
220
- */
221
- useImageClass(s) {
222
- return this._opts.ImageClass = s, this;
223
- }
224
- /**
225
- * Sets `opts.generator` to `generator`
226
- * @returns this `Builder` instance.
227
- */
228
- useGenerator(s, t) {
229
- return this._opts.generators || (this._opts.generators = []), this._opts.generators.push(
230
- t ? { name: s, options: t } : s
231
- ), this;
232
- }
233
- /**
234
- * Specifies which `Quantizer` implementation class to use
235
- * @returns this `Builder` instance.
236
- */
237
- useQuantizer(s, t) {
238
- return this._opts.quantizer = t ? { name: s, options: t } : s, this;
239
- }
240
- /**
241
- * Builds and returns a `Vibrant` instance as configured.
242
- */
243
- build() {
244
- return new V(this._src, this._opts);
245
- }
246
- /**
247
- * Builds a `Vibrant` instance as configured and calls its `getPalette` method.
248
- */
249
- getPalette() {
250
- return this.build().getPalette();
251
- }
46
+ //#endregion
47
+ //#region node_modules/.pnpm/@vibrant+image-browser@4.0.4/node_modules/@vibrant/image-browser/dist/esm/index.js
48
+ function A(e) {
49
+ let t = new URL(e, location.href);
50
+ return t.protocol === location.protocol && t.host === location.host && t.port === location.port;
252
51
  }
253
- class eA {
254
- constructor(s) {
255
- this.pipeline = s, this._map = {};
256
- }
257
- names() {
258
- return Object.keys(this._map);
259
- }
260
- has(s) {
261
- return !!this._map[s];
262
- }
263
- get(s) {
264
- return this._map[s];
265
- }
266
- register(s, t) {
267
- return this._map[s] = t, this.pipeline;
268
- }
52
+ function j(e, t) {
53
+ let n = new URL(e), r = new URL(t);
54
+ return n.protocol === r.protocol && n.hostname === r.hostname && n.port === r.port;
269
55
  }
270
- class JA {
271
- constructor() {
272
- this.filter = new eA(this), this.quantizer = new eA(this), this.generator = new eA(this);
273
- }
274
- _buildProcessTasks({
275
- filters: s,
276
- quantizer: t,
277
- generators: A
278
- }) {
279
- return A.length === 1 && A[0] === "*" && (A = this.generator.names()), {
280
- filters: s.map((o) => e(this.filter, o)),
281
- quantizer: e(this.quantizer, t),
282
- generators: A.map((o) => e(this.generator, o))
283
- };
284
- function e(o, i) {
285
- let a, l;
286
- return typeof i == "string" ? a = i : (a = i.name, l = i.options), {
287
- name: a,
288
- fn: o.get(a),
289
- options: l
290
- };
291
- }
292
- }
293
- async process(s, t) {
294
- const { filters: A, quantizer: e, generators: o } = this._buildProcessTasks(t), i = await this._filterColors(A, s), a = await this._generateColors(e, i), l = await this._generatePalettes(o, a);
295
- return {
296
- colors: a,
297
- palettes: l
298
- };
299
- }
300
- _filterColors(s, t) {
301
- return Promise.resolve(
302
- bA(
303
- t,
304
- s.map(({ fn: A }) => A)
305
- )
306
- );
307
- }
308
- _generateColors(s, t) {
309
- return Promise.resolve(s.fn(t.data, s.options));
310
- }
311
- async _generatePalettes(s, t) {
312
- const A = await Promise.all(
313
- s.map(({ fn: e, options: o }) => Promise.resolve(e(t, o)))
314
- );
315
- return Promise.resolve(
316
- A.reduce(
317
- (e, o, i) => (e[s[i].name] = o, e),
318
- {}
319
- )
320
- );
321
- }
56
+ var M = class extends k {
57
+ _getCanvas() {
58
+ if (!this._canvas) throw Error("Canvas is not initialized");
59
+ return this._canvas;
60
+ }
61
+ _getContext() {
62
+ if (!this._context) throw Error("Context is not initialized");
63
+ return this._context;
64
+ }
65
+ _getWidth() {
66
+ if (!this._width) throw Error("Width is not initialized");
67
+ return this._width;
68
+ }
69
+ _getHeight() {
70
+ if (!this._height) throw Error("Height is not initialized");
71
+ return this._height;
72
+ }
73
+ _initCanvas() {
74
+ let e = this.image;
75
+ if (!e) throw Error("Image is not initialized");
76
+ let t = this._canvas = document.createElement("canvas"), n = t.getContext("2d");
77
+ if (!n) throw ReferenceError("Failed to create canvas context");
78
+ this._context = n, t.className = "@vibrant/canvas", t.style.display = "none", this._width = t.width = e.width, this._height = t.height = e.height, n.drawImage(e, 0, 0), document.body.appendChild(t);
79
+ }
80
+ load(e) {
81
+ let t, n;
82
+ if (typeof e == "string") t = document.createElement("img"), n = e, !A(n) && !j(window.location.href, n) && (t.crossOrigin = "anonymous"), t.src = n;
83
+ else if (e instanceof HTMLImageElement) t = e, n = e.src;
84
+ else return Promise.reject(/* @__PURE__ */ Error("Cannot load buffer as an image in browser"));
85
+ return this.image = t, new Promise((e, r) => {
86
+ let i = () => {
87
+ this._initCanvas(), e(this);
88
+ };
89
+ t.complete ? i() : (t.onload = i, t.onerror = (e) => r(/* @__PURE__ */ Error(`Fail to load image: ${n}`)));
90
+ });
91
+ }
92
+ clear() {
93
+ this._getContext().clearRect(0, 0, this._getWidth(), this._getHeight());
94
+ }
95
+ update(e) {
96
+ this._getContext().putImageData(e, 0, 0);
97
+ }
98
+ getWidth() {
99
+ return this._getWidth();
100
+ }
101
+ getHeight() {
102
+ return this._getHeight();
103
+ }
104
+ resize(e, t, n) {
105
+ if (!this.image) throw Error("Image is not initialized");
106
+ this._width = this._getCanvas().width = e, this._height = this._getCanvas().height = t, this._getContext().scale(n, n), this._getContext().drawImage(this.image, 0, 0);
107
+ }
108
+ getPixelCount() {
109
+ return this._getWidth() * this._getHeight();
110
+ }
111
+ getImageData() {
112
+ return this._getContext().getImageData(0, 0, this._getWidth(), this._getHeight());
113
+ }
114
+ remove() {
115
+ this._canvas && this._canvas.parentNode && this._canvas.parentNode.removeChild(this._canvas);
116
+ }
117
+ };
118
+ //#endregion
119
+ //#region node_modules/.pnpm/@vibrant+core@4.0.4/node_modules/@vibrant/core/dist/esm/utils.js
120
+ function N(e, ...t) {
121
+ return t.forEach((t) => {
122
+ if (t) {
123
+ for (let n in t) if (t.hasOwnProperty(n)) {
124
+ let r = t[n];
125
+ Array.isArray(r) ? e[n] = r.slice(0) : typeof r == "object" ? (e[n] || (e[n] = {}), N(e[n], r)) : e[n] = r;
126
+ }
127
+ }
128
+ }), e;
322
129
  }
323
- function xA(n, s, t) {
324
- return "#" + ((1 << 24) + (n << 16) + (s << 8) + t).toString(16).slice(1, 7);
130
+ //#endregion
131
+ //#region node_modules/.pnpm/@vibrant+core@4.0.4/node_modules/@vibrant/core/dist/esm/options.js
132
+ function P(e, t) {
133
+ let { colorCount: n, quantizer: r, generators: i, filters: a } = e, o = { colorCount: n }, s = typeof r == "string" ? {
134
+ name: r,
135
+ options: {}
136
+ } : r;
137
+ return s.options = N({}, o, s.options), N({}, {
138
+ quantizer: s,
139
+ generators: i,
140
+ filters: a
141
+ }, t);
325
142
  }
326
- function DA(n, s, t) {
327
- n /= 255, s /= 255, t /= 255;
328
- const A = Math.max(n, s, t), e = Math.min(n, s, t);
329
- let o = 0, i = 0;
330
- const a = (A + e) / 2;
331
- if (A !== e) {
332
- const l = A - e;
333
- switch (i = a > 0.5 ? l / (2 - A - e) : l / (A + e), A) {
334
- case n:
335
- o = (s - t) / l + (s < t ? 6 : 0);
336
- break;
337
- case s:
338
- o = (t - n) / l + 2;
339
- break;
340
- case t:
341
- o = (n - s) / l + 4;
342
- break;
343
- }
344
- o /= 6;
345
- }
346
- return [o, i, a];
143
+ //#endregion
144
+ //#region node_modules/.pnpm/@vibrant+core@4.0.4/node_modules/@vibrant/core/dist/esm/builder.js
145
+ var F = class {
146
+ constructor(e, t = {}) {
147
+ this._src = e, this._opts = N({}, V.DefaultOpts, t);
148
+ }
149
+ maxColorCount(e) {
150
+ return this._opts.colorCount = e, this;
151
+ }
152
+ maxDimension(e) {
153
+ return this._opts.maxDimension = e, this;
154
+ }
155
+ addFilter(e) {
156
+ return this._opts.filters ? this._opts.filters.push(e) : this._opts.filters = [e], this;
157
+ }
158
+ removeFilter(e) {
159
+ if (this._opts.filters) {
160
+ let t = this._opts.filters.indexOf(e);
161
+ t > 0 && this._opts.filters.splice(t);
162
+ }
163
+ return this;
164
+ }
165
+ clearFilters() {
166
+ return this._opts.filters = [], this;
167
+ }
168
+ quality(e) {
169
+ return this._opts.quality = e, this;
170
+ }
171
+ useImageClass(e) {
172
+ return this._opts.ImageClass = e, this;
173
+ }
174
+ useGenerator(e, t) {
175
+ return this._opts.generators || (this._opts.generators = []), this._opts.generators.push(t ? {
176
+ name: e,
177
+ options: t
178
+ } : e), this;
179
+ }
180
+ useQuantizer(e, t) {
181
+ return this._opts.quantizer = t ? {
182
+ name: e,
183
+ options: t
184
+ } : e, this;
185
+ }
186
+ build() {
187
+ return new V(this._src, this._opts);
188
+ }
189
+ getPalette() {
190
+ return this.build().getPalette();
191
+ }
192
+ }, I = class {
193
+ constructor(e) {
194
+ this.pipeline = e, this._map = {};
195
+ }
196
+ names() {
197
+ return Object.keys(this._map);
198
+ }
199
+ has(e) {
200
+ return !!this._map[e];
201
+ }
202
+ get(e) {
203
+ return this._map[e];
204
+ }
205
+ register(e, t) {
206
+ return this._map[e] = t, this.pipeline;
207
+ }
208
+ }, ie = class {
209
+ constructor() {
210
+ this.filter = new I(this), this.quantizer = new I(this), this.generator = new I(this);
211
+ }
212
+ _buildProcessTasks({ filters: e, quantizer: t, generators: n }) {
213
+ return n.length === 1 && n[0] === "*" && (n = this.generator.names()), {
214
+ filters: e.map((e) => r(this.filter, e)),
215
+ quantizer: r(this.quantizer, t),
216
+ generators: n.map((e) => r(this.generator, e))
217
+ };
218
+ function r(e, t) {
219
+ let n, r;
220
+ return typeof t == "string" ? n = t : (n = t.name, r = t.options), {
221
+ name: n,
222
+ fn: e.get(n),
223
+ options: r
224
+ };
225
+ }
226
+ }
227
+ async process(e, t) {
228
+ let { filters: n, quantizer: r, generators: i } = this._buildProcessTasks(t), a = await this._filterColors(n, e), o = await this._generateColors(r, a);
229
+ return {
230
+ colors: o,
231
+ palettes: await this._generatePalettes(i, o)
232
+ };
233
+ }
234
+ _filterColors(e, t) {
235
+ return Promise.resolve(re(t, e.map(({ fn: e }) => e)));
236
+ }
237
+ _generateColors(e, t) {
238
+ return Promise.resolve(e.fn(t.data, e.options));
239
+ }
240
+ async _generatePalettes(e, t) {
241
+ let n = await Promise.all(e.map(({ fn: e, options: n }) => Promise.resolve(e(t, n))));
242
+ return Promise.resolve(n.reduce((t, n, r) => (t[e[r].name] = n, t), {}));
243
+ }
244
+ };
245
+ //#endregion
246
+ //#region node_modules/.pnpm/@vibrant+color@4.0.4/node_modules/@vibrant/color/dist/esm/converter.js
247
+ function L(e, t, n) {
248
+ return "#" + ((1 << 24) + (e << 16) + (t << 8) + n).toString(16).slice(1, 7);
347
249
  }
348
- function M(n, s, t) {
349
- let A, e, o;
350
- function i(a, l, r) {
351
- return r < 0 && (r += 1), r > 1 && (r -= 1), r < 1 / 6 ? a + (l - a) * 6 * r : r < 1 / 2 ? l : r < 2 / 3 ? a + (l - a) * (2 / 3 - r) * 6 : a;
352
- }
353
- if (s === 0)
354
- A = e = o = t;
355
- else {
356
- const a = t < 0.5 ? t * (1 + s) : t + s - t * s, l = 2 * t - a;
357
- A = i(l, a, n + 1 / 3), e = i(l, a, n), o = i(l, a, n - 1 / 3);
358
- }
359
- return [A * 255, e * 255, o * 255];
250
+ function R(e, t, n) {
251
+ e /= 255, t /= 255, n /= 255;
252
+ let r = Math.max(e, t, n), i = Math.min(e, t, n), a = 0, o = 0, s = (r + i) / 2;
253
+ if (r !== i) {
254
+ let c = r - i;
255
+ switch (o = s > .5 ? c / (2 - r - i) : c / (r + i), r) {
256
+ case e:
257
+ a = (t - n) / c + (t < n ? 6 : 0);
258
+ break;
259
+ case t:
260
+ a = (n - e) / c + 2;
261
+ break;
262
+ case n:
263
+ a = (e - t) / c + 4;
264
+ break;
265
+ }
266
+ a /= 6;
267
+ }
268
+ return [
269
+ a,
270
+ o,
271
+ s
272
+ ];
360
273
  }
361
- class j {
362
- static applyFilters(s, t) {
363
- return t.length > 0 ? s.filter(({ r: A, g: e, b: o }) => {
364
- for (let i = 0; i < t.length; i++)
365
- if (!t[i]?.(A, e, o, 255)) return !1;
366
- return !0;
367
- }) : s;
368
- }
369
- /**
370
- * Make a value copy of a swatch based on a previous one. Returns a new Swatch instance
371
- * @param {Swatch} swatch
372
- */
373
- static clone(s) {
374
- return new j(s._rgb, s._population);
375
- }
376
- /**
377
- * The red value in the RGB value
378
- */
379
- get r() {
380
- return this._rgb[0];
381
- }
382
- /**
383
- * The green value in the RGB value
384
- */
385
- get g() {
386
- return this._rgb[1];
387
- }
388
- /**
389
- * The blue value in the RGB value
390
- */
391
- get b() {
392
- return this._rgb[2];
393
- }
394
- /**
395
- * The color value as a rgb value
396
- */
397
- get rgb() {
398
- return this._rgb;
399
- }
400
- /**
401
- * The color value as a hsl value
402
- */
403
- get hsl() {
404
- if (!this._hsl) {
405
- const [s, t, A] = this._rgb;
406
- this._hsl = DA(s, t, A);
407
- }
408
- return this._hsl;
409
- }
410
- /**
411
- * The color value as a hex string
412
- */
413
- get hex() {
414
- if (!this._hex) {
415
- const [s, t, A] = this._rgb;
416
- this._hex = xA(s, t, A);
417
- }
418
- return this._hex;
419
- }
420
- get population() {
421
- return this._population;
422
- }
423
- /**
424
- * Get the JSON object for the swatch
425
- */
426
- toJSON() {
427
- return {
428
- rgb: this.rgb,
429
- population: this.population
430
- };
431
- }
432
- getYiq() {
433
- if (!this._yiq) {
434
- const s = this._rgb;
435
- this._yiq = (s[0] * 299 + s[1] * 587 + s[2] * 114) / 1e3;
436
- }
437
- return this._yiq;
438
- }
439
- /**
440
- * Returns an appropriate color to use for any 'title' text which is displayed over this Swatch's color.
441
- */
442
- get titleTextColor() {
443
- return this._titleTextColor || (this._titleTextColor = this.getYiq() < 200 ? "#fff" : "#000"), this._titleTextColor;
444
- }
445
- /**
446
- * Returns an appropriate color to use for any 'body' text which is displayed over this Swatch's color.
447
- */
448
- get bodyTextColor() {
449
- return this._bodyTextColor || (this._bodyTextColor = this.getYiq() < 150 ? "#fff" : "#000"), this._bodyTextColor;
450
- }
451
- /**
452
- * Internal use.
453
- * @param rgb `[r, g, b]`
454
- * @param population Population of the color in an image
455
- */
456
- constructor(s, t) {
457
- this._rgb = s, this._population = t;
458
- }
274
+ function z(e, t, n) {
275
+ let r, i, a;
276
+ function o(e, t, n) {
277
+ return n < 0 && (n += 1), n > 1 && --n, n < 1 / 6 ? e + (t - e) * 6 * n : n < 1 / 2 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e;
278
+ }
279
+ if (t === 0) r = i = a = n;
280
+ else {
281
+ let s = n < .5 ? n * (1 + t) : n + t - n * t, c = 2 * n - s;
282
+ r = o(c, s, e + 1 / 3), i = o(c, s, e), a = o(c, s, e - 1 / 3);
283
+ }
284
+ return [
285
+ r * 255,
286
+ i * 255,
287
+ a * 255
288
+ ];
459
289
  }
460
- const hA = class sA {
461
- /**
462
- *
463
- * @param _src Path to image file (supports HTTP/HTTPs)
464
- * @param opts Options (optional)
465
- */
466
- constructor(s, t) {
467
- this._src = s, this.opts = T({}, sA.DefaultOpts, t);
468
- }
469
- static use(s) {
470
- this._pipeline = s;
471
- }
472
- static from(s) {
473
- return new vA(s);
474
- }
475
- get result() {
476
- return this._result;
477
- }
478
- _process(s, t) {
479
- s.scaleDown(this.opts);
480
- const A = ZA(this.opts, t);
481
- return sA._pipeline.process(s.getImageData(), A);
482
- }
483
- async getPalette() {
484
- const s = new this.opts.ImageClass();
485
- try {
486
- const t = await s.load(this._src), A = await this._process(t, {
487
- generators: ["default"]
488
- });
489
- this._result = A;
490
- const e = A.palettes.default;
491
- if (!e)
492
- throw new Error(
493
- "Something went wrong and a palette was not found, please file a bug against our GitHub repo: https://github.com/vibrant-Colors/node-vibrant/"
494
- );
495
- return s.remove(), e;
496
- } catch (t) {
497
- return s.remove(), Promise.reject(t);
498
- }
499
- }
500
- async getPalettes() {
501
- const s = new this.opts.ImageClass();
502
- try {
503
- const t = await s.load(this._src), A = await this._process(t, {
504
- generators: ["*"]
505
- });
506
- this._result = A;
507
- const e = A.palettes;
508
- return s.remove(), e;
509
- } catch (t) {
510
- return s.remove(), Promise.reject(t);
511
- }
512
- }
290
+ //#endregion
291
+ //#region node_modules/.pnpm/@vibrant+color@4.0.4/node_modules/@vibrant/color/dist/esm/index.js
292
+ var B = class e {
293
+ static applyFilters(e, t) {
294
+ return t.length > 0 ? e.filter(({ r: e, g: n, b: r }) => {
295
+ for (let i = 0; i < t.length; i++) if (!t[i]?.(e, n, r, 255)) return !1;
296
+ return !0;
297
+ }) : e;
298
+ }
299
+ static clone(t) {
300
+ return new e(t._rgb, t._population);
301
+ }
302
+ get r() {
303
+ return this._rgb[0];
304
+ }
305
+ get g() {
306
+ return this._rgb[1];
307
+ }
308
+ get b() {
309
+ return this._rgb[2];
310
+ }
311
+ get rgb() {
312
+ return this._rgb;
313
+ }
314
+ get hsl() {
315
+ if (!this._hsl) {
316
+ let [e, t, n] = this._rgb;
317
+ this._hsl = R(e, t, n);
318
+ }
319
+ return this._hsl;
320
+ }
321
+ get hex() {
322
+ if (!this._hex) {
323
+ let [e, t, n] = this._rgb;
324
+ this._hex = L(e, t, n);
325
+ }
326
+ return this._hex;
327
+ }
328
+ get population() {
329
+ return this._population;
330
+ }
331
+ toJSON() {
332
+ return {
333
+ rgb: this.rgb,
334
+ population: this.population
335
+ };
336
+ }
337
+ getYiq() {
338
+ if (!this._yiq) {
339
+ let e = this._rgb;
340
+ this._yiq = (e[0] * 299 + e[1] * 587 + e[2] * 114) / 1e3;
341
+ }
342
+ return this._yiq;
343
+ }
344
+ get titleTextColor() {
345
+ return this._titleTextColor ||= this.getYiq() < 200 ? "#fff" : "#000", this._titleTextColor;
346
+ }
347
+ get bodyTextColor() {
348
+ return this._bodyTextColor ||= this.getYiq() < 150 ? "#fff" : "#000", this._bodyTextColor;
349
+ }
350
+ constructor(e, t) {
351
+ this._rgb = e, this._population = t;
352
+ }
353
+ }, ae = class e {
354
+ constructor(t, n) {
355
+ this._src = t, this.opts = N({}, e.DefaultOpts, n);
356
+ }
357
+ static use(e) {
358
+ this._pipeline = e;
359
+ }
360
+ static from(e) {
361
+ return new F(e);
362
+ }
363
+ get result() {
364
+ return this._result;
365
+ }
366
+ _process(t, n) {
367
+ t.scaleDown(this.opts);
368
+ let r = P(this.opts, n);
369
+ return e._pipeline.process(t.getImageData(), r);
370
+ }
371
+ async getPalette() {
372
+ let e = new this.opts.ImageClass();
373
+ try {
374
+ let t = await e.load(this._src), n = await this._process(t, { generators: ["default"] });
375
+ this._result = n;
376
+ let r = n.palettes.default;
377
+ if (!r) throw Error("Something went wrong and a palette was not found, please file a bug against our GitHub repo: https://github.com/vibrant-Colors/node-vibrant/");
378
+ return e.remove(), r;
379
+ } catch (t) {
380
+ return e.remove(), Promise.reject(t);
381
+ }
382
+ }
383
+ async getPalettes() {
384
+ let e = new this.opts.ImageClass();
385
+ try {
386
+ let t = await e.load(this._src), n = await this._process(t, { generators: ["*"] });
387
+ this._result = n;
388
+ let r = n.palettes;
389
+ return e.remove(), r;
390
+ } catch (t) {
391
+ return e.remove(), Promise.reject(t);
392
+ }
393
+ }
513
394
  };
514
- hA.DefaultOpts = {
515
- colorCount: 64,
516
- quality: 5,
517
- filters: []
395
+ ae.DefaultOpts = {
396
+ colorCount: 64,
397
+ quality: 5,
398
+ filters: []
518
399
  };
519
- let V = hA;
520
- V.DefaultOpts.quantizer = "mmcq";
521
- V.DefaultOpts.generators = ["default"];
522
- V.DefaultOpts.filters = ["default"];
523
- V.DefaultOpts.ImageClass = RA;
524
- const iA = 5, oA = 8 - iA;
525
- class AA {
526
- constructor(s, t, A, e, o, i, a) {
527
- this.histogram = a, this._volume = -1, this._avg = null, this._count = -1, this.dimension = { r1: s, r2: t, g1: A, g2: e, b1: o, b2: i };
528
- }
529
- static build(s) {
530
- const t = new SA(s, { sigBits: iA }), { rmin: A, rmax: e, gmin: o, gmax: i, bmin: a, bmax: l } = t;
531
- return new AA(A, e, o, i, a, l, t);
532
- }
533
- invalidate() {
534
- this._volume = this._count = -1, this._avg = null;
535
- }
536
- volume() {
537
- if (this._volume < 0) {
538
- const { r1: s, r2: t, g1: A, g2: e, b1: o, b2: i } = this.dimension;
539
- this._volume = (t - s + 1) * (e - A + 1) * (i - o + 1);
540
- }
541
- return this._volume;
542
- }
543
- count() {
544
- if (this._count < 0) {
545
- const { hist: s, getColorIndex: t } = this.histogram, { r1: A, r2: e, g1: o, g2: i, b1: a, b2: l } = this.dimension;
546
- let r = 0;
547
- for (let c = A; c <= e; c++)
548
- for (let g = o; g <= i; g++)
549
- for (let u = a; u <= l; u++) {
550
- const B = t(c, g, u);
551
- s[B] && (r += s[B]);
552
- }
553
- this._count = r;
554
- }
555
- return this._count;
556
- }
557
- clone() {
558
- const { histogram: s } = this, { r1: t, r2: A, g1: e, g2: o, b1: i, b2: a } = this.dimension;
559
- return new AA(t, A, e, o, i, a, s);
560
- }
561
- avg() {
562
- if (!this._avg) {
563
- const { hist: s, getColorIndex: t } = this.histogram, { r1: A, r2: e, g1: o, g2: i, b1: a, b2: l } = this.dimension;
564
- let r = 0;
565
- const c = 1 << 8 - iA;
566
- let g, u, B;
567
- g = u = B = 0;
568
- for (let Q = A; Q <= e; Q++)
569
- for (let E = o; E <= i; E++)
570
- for (let d = a; d <= l; d++) {
571
- const v = t(Q, E, d), f = s[v];
572
- f && (r += f, g += f * (Q + 0.5) * c, u += f * (E + 0.5) * c, B += f * (d + 0.5) * c);
573
- }
574
- r ? this._avg = [~~(g / r), ~~(u / r), ~~(B / r)] : this._avg = [
575
- ~~(c * (A + e + 1) / 2),
576
- ~~(c * (o + i + 1) / 2),
577
- ~~(c * (a + l + 1) / 2)
578
- ];
579
- }
580
- return this._avg;
581
- }
582
- contains(s) {
583
- let [t, A, e] = s;
584
- const { r1: o, r2: i, g1: a, g2: l, b1: r, b2: c } = this.dimension;
585
- return t >>= oA, A >>= oA, e >>= oA, t >= o && t <= i && A >= a && A <= l && e >= r && e <= c;
586
- }
587
- split() {
588
- const { hist: s, getColorIndex: t } = this.histogram, { r1: A, r2: e, g1: o, g2: i, b1: a, b2: l } = this.dimension, r = this.count();
589
- if (!r) return [];
590
- if (r === 1) return [this.clone()];
591
- const c = e - A + 1, g = i - o + 1, u = l - a + 1, B = Math.max(c, g, u);
592
- let Q = null, E, d;
593
- E = d = 0;
594
- let v = null;
595
- if (B === c) {
596
- v = "r", Q = new Uint32Array(e + 1);
597
- for (let m = A; m <= e; m++) {
598
- E = 0;
599
- for (let I = o; I <= i; I++)
600
- for (let y = a; y <= l; y++) {
601
- const x = t(m, I, y);
602
- s[x] && (E += s[x]);
603
- }
604
- d += E, Q[m] = d;
605
- }
606
- } else if (B === g) {
607
- v = "g", Q = new Uint32Array(i + 1);
608
- for (let m = o; m <= i; m++) {
609
- E = 0;
610
- for (let I = A; I <= e; I++)
611
- for (let y = a; y <= l; y++) {
612
- const x = t(I, m, y);
613
- s[x] && (E += s[x]);
614
- }
615
- d += E, Q[m] = d;
616
- }
617
- } else {
618
- v = "b", Q = new Uint32Array(l + 1);
619
- for (let m = a; m <= l; m++) {
620
- E = 0;
621
- for (let I = A; I <= e; I++)
622
- for (let y = o; y <= i; y++) {
623
- const x = t(I, y, m);
624
- s[x] && (E += s[x]);
625
- }
626
- d += E, Q[m] = d;
627
- }
628
- }
629
- let f = -1;
630
- const J = new Uint32Array(Q.length);
631
- for (let m = 0; m < Q.length; m++) {
632
- const I = Q[m];
633
- I && (f < 0 && I > d / 2 && (f = m), J[m] = d - I);
634
- }
635
- const L = this;
636
- function W(m) {
637
- const I = m + "1", y = m + "2", x = L.dimension[I];
638
- let h = L.dimension[y];
639
- const K = L.clone(), S = L.clone(), lA = f - x, gA = h - f;
640
- for (lA <= gA ? (h = Math.min(h - 1, ~~(f + gA / 2)), h = Math.max(0, h)) : (h = Math.max(x, ~~(f - 1 - lA / 2)), h = Math.min(L.dimension[y], h)); !Q[h]; ) h++;
641
- let rA = J[h];
642
- for (; !rA && Q[h - 1]; ) rA = J[--h];
643
- return K.dimension[y] = h, S.dimension[I] = h + 1, [K, S];
644
- }
645
- return W(v);
646
- }
647
- }
648
- class cA {
649
- _sort() {
650
- this._sorted || (this.contents.sort(this._comparator), this._sorted = !0);
651
- }
652
- constructor(s) {
653
- this._comparator = s, this.contents = [], this._sorted = !1;
654
- }
655
- push(s) {
656
- this.contents.push(s), this._sorted = !1;
657
- }
658
- peek(s) {
659
- return this._sort(), s = typeof s == "number" ? s : this.contents.length - 1, this.contents[s];
660
- }
661
- pop() {
662
- return this._sort(), this.contents.pop();
663
- }
664
- size() {
665
- return this.contents.length;
666
- }
667
- map(s) {
668
- return this._sort(), this.contents.map(s);
669
- }
670
- }
671
- const jA = 0.75;
672
- function uA(n, s) {
673
- let t = n.size();
674
- for (; n.size() < s; ) {
675
- const A = n.pop();
676
- if (A && A.count() > 0) {
677
- const [e, o] = A.split();
678
- if (!e || (n.push(e), o && o.count() > 0 && n.push(o), n.size() === t))
679
- break;
680
- t = n.size();
681
- } else
682
- break;
683
- }
400
+ var V = ae;
401
+ //#endregion
402
+ //#region node_modules/.pnpm/node-vibrant@4.0.4/node_modules/node-vibrant/dist/esm/configs/browser.js
403
+ V.DefaultOpts.quantizer = "mmcq", V.DefaultOpts.generators = ["default"], V.DefaultOpts.filters = ["default"], V.DefaultOpts.ImageClass = M;
404
+ //#endregion
405
+ //#region node_modules/.pnpm/@vibrant+quantizer-mmcq@4.0.4/node_modules/@vibrant/quantizer-mmcq/dist/esm/vbox.js
406
+ var H = 5, U = 8 - H, oe = class e {
407
+ constructor(e, t, n, r, i, a, o) {
408
+ this.histogram = o, this._volume = -1, this._avg = null, this._count = -1, this.dimension = {
409
+ r1: e,
410
+ r2: t,
411
+ g1: n,
412
+ g2: r,
413
+ b1: i,
414
+ b2: a
415
+ };
416
+ }
417
+ static build(t) {
418
+ let n = new ne(t, { sigBits: H }), { rmin: r, rmax: i, gmin: a, gmax: o, bmin: s, bmax: c } = n;
419
+ return new e(r, i, a, o, s, c, n);
420
+ }
421
+ invalidate() {
422
+ this._volume = this._count = -1, this._avg = null;
423
+ }
424
+ volume() {
425
+ if (this._volume < 0) {
426
+ let { r1: e, r2: t, g1: n, g2: r, b1: i, b2: a } = this.dimension;
427
+ this._volume = (t - e + 1) * (r - n + 1) * (a - i + 1);
428
+ }
429
+ return this._volume;
430
+ }
431
+ count() {
432
+ if (this._count < 0) {
433
+ let { hist: e, getColorIndex: t } = this.histogram, { r1: n, r2: r, g1: i, g2: a, b1: o, b2: s } = this.dimension, c = 0;
434
+ for (let l = n; l <= r; l++) for (let n = i; n <= a; n++) for (let r = o; r <= s; r++) {
435
+ let i = t(l, n, r);
436
+ e[i] && (c += e[i]);
437
+ }
438
+ this._count = c;
439
+ }
440
+ return this._count;
441
+ }
442
+ clone() {
443
+ let { histogram: t } = this, { r1: n, r2: r, g1: i, g2: a, b1: o, b2: s } = this.dimension;
444
+ return new e(n, r, i, a, o, s, t);
445
+ }
446
+ avg() {
447
+ if (!this._avg) {
448
+ let { hist: e, getColorIndex: t } = this.histogram, { r1: n, r2: r, g1: i, g2: a, b1: o, b2: s } = this.dimension, c = 0, l = 1 << 8 - H, u, d, f;
449
+ u = d = f = 0;
450
+ for (let p = n; p <= r; p++) for (let n = i; n <= a; n++) for (let r = o; r <= s; r++) {
451
+ let i = e[t(p, n, r)];
452
+ i && (c += i, u += i * (p + .5) * l, d += i * (n + .5) * l, f += i * (r + .5) * l);
453
+ }
454
+ c ? this._avg = [
455
+ ~~(u / c),
456
+ ~~(d / c),
457
+ ~~(f / c)
458
+ ] : this._avg = [
459
+ ~~(l * (n + r + 1) / 2),
460
+ ~~(l * (i + a + 1) / 2),
461
+ ~~(l * (o + s + 1) / 2)
462
+ ];
463
+ }
464
+ return this._avg;
465
+ }
466
+ contains(e) {
467
+ let [t, n, r] = e, { r1: i, r2: a, g1: o, g2: s, b1: c, b2: l } = this.dimension;
468
+ return t >>= U, n >>= U, r >>= U, t >= i && t <= a && n >= o && n <= s && r >= c && r <= l;
469
+ }
470
+ split() {
471
+ let { hist: e, getColorIndex: t } = this.histogram, { r1: n, r2: r, g1: i, g2: a, b1: o, b2: s } = this.dimension, c = this.count();
472
+ if (!c) return [];
473
+ if (c === 1) return [this.clone()];
474
+ let l = r - n + 1, u = a - i + 1, d = s - o + 1, f = Math.max(l, u, d), p = null, m, h;
475
+ m = h = 0;
476
+ let g = null;
477
+ if (f === l) {
478
+ g = "r", p = new Uint32Array(r + 1);
479
+ for (let c = n; c <= r; c++) {
480
+ m = 0;
481
+ for (let n = i; n <= a; n++) for (let r = o; r <= s; r++) {
482
+ let i = t(c, n, r);
483
+ e[i] && (m += e[i]);
484
+ }
485
+ h += m, p[c] = h;
486
+ }
487
+ } else if (f === u) {
488
+ g = "g", p = new Uint32Array(a + 1);
489
+ for (let c = i; c <= a; c++) {
490
+ m = 0;
491
+ for (let i = n; i <= r; i++) for (let n = o; n <= s; n++) {
492
+ let r = t(i, c, n);
493
+ e[r] && (m += e[r]);
494
+ }
495
+ h += m, p[c] = h;
496
+ }
497
+ } else {
498
+ g = "b", p = new Uint32Array(s + 1);
499
+ for (let c = o; c <= s; c++) {
500
+ m = 0;
501
+ for (let o = n; o <= r; o++) for (let n = i; n <= a; n++) {
502
+ let r = t(o, n, c);
503
+ e[r] && (m += e[r]);
504
+ }
505
+ h += m, p[c] = h;
506
+ }
507
+ }
508
+ let _ = -1, v = new Uint32Array(p.length);
509
+ for (let e = 0; e < p.length; e++) {
510
+ let t = p[e];
511
+ t && (_ < 0 && t > h / 2 && (_ = e), v[e] = h - t);
512
+ }
513
+ let y = this;
514
+ function b(e) {
515
+ let t = e + "1", n = e + "2", r = y.dimension[t], i = y.dimension[n], a = y.clone(), o = y.clone(), s = _ - r, c = i - _;
516
+ for (s <= c ? (i = Math.min(i - 1, ~~(_ + c / 2)), i = Math.max(0, i)) : (i = Math.max(r, ~~(_ - 1 - s / 2)), i = Math.min(y.dimension[n], i)); !p[i];) i++;
517
+ let l = v[i];
518
+ for (; !l && p[i - 1];) l = v[--i];
519
+ return a.dimension[n] = i, o.dimension[t] = i + 1, [a, o];
520
+ }
521
+ return b(g);
522
+ }
523
+ }, W = class {
524
+ _sort() {
525
+ this._sorted ||= (this.contents.sort(this._comparator), !0);
526
+ }
527
+ constructor(e) {
528
+ this._comparator = e, this.contents = [], this._sorted = !1;
529
+ }
530
+ push(e) {
531
+ this.contents.push(e), this._sorted = !1;
532
+ }
533
+ peek(e) {
534
+ return this._sort(), e = typeof e == "number" ? e : this.contents.length - 1, this.contents[e];
535
+ }
536
+ pop() {
537
+ return this._sort(), this.contents.pop();
538
+ }
539
+ size() {
540
+ return this.contents.length;
541
+ }
542
+ map(e) {
543
+ return this._sort(), this.contents.map(e);
544
+ }
545
+ }, se = .75;
546
+ function G(e, t) {
547
+ let n = e.size();
548
+ for (; e.size() < t;) {
549
+ let t = e.pop();
550
+ if (t && t.count() > 0) {
551
+ let [r, i] = t.split();
552
+ if (!r || (e.push(r), i && i.count() > 0 && e.push(i), e.size() === n)) break;
553
+ n = e.size();
554
+ } else break;
555
+ }
684
556
  }
685
- const MA = (n, s) => {
686
- if (n.length === 0 || s.colorCount < 2 || s.colorCount > 256)
687
- throw new Error("Wrong MMCQ parameters");
688
- const t = AA.build(n);
689
- t.histogram.colorCount;
690
- const A = new cA((o, i) => o.count() - i.count());
691
- A.push(t), uA(A, jA * s.colorCount);
692
- const e = new cA(
693
- (o, i) => o.count() * o.volume() - i.count() * i.volume()
694
- );
695
- return e.contents = A.contents, uA(e, s.colorCount - e.size()), OA(e);
557
+ var ce = (e, t) => {
558
+ if (e.length === 0 || t.colorCount < 2 || t.colorCount > 256) throw Error("Wrong MMCQ parameters");
559
+ let n = oe.build(e);
560
+ n.histogram.colorCount;
561
+ let r = new W((e, t) => e.count() - t.count());
562
+ r.push(n), G(r, se * t.colorCount);
563
+ let i = new W((e, t) => e.count() * e.volume() - t.count() * t.volume());
564
+ return i.contents = r.contents, G(i, t.colorCount - i.size()), le(i);
696
565
  };
697
- function OA(n) {
698
- const s = [];
699
- for (; n.size(); ) {
700
- const t = n.pop(), A = t.avg(), [e, o, i] = A;
701
- s.push(new j(A, t.count()));
702
- }
703
- return s;
566
+ function le(e) {
567
+ let t = [];
568
+ for (; e.size();) {
569
+ let n = e.pop(), r = n.avg(), [i, a, o] = r;
570
+ t.push(new B(r, n.count()));
571
+ }
572
+ return t;
704
573
  }
705
- const zA = {
706
- targetDarkLuma: 0.26,
707
- maxDarkLuma: 0.45,
708
- minLightLuma: 0.55,
709
- targetLightLuma: 0.74,
710
- minNormalLuma: 0.3,
711
- targetNormalLuma: 0.5,
712
- maxNormalLuma: 0.7,
713
- targetMutesSaturation: 0.3,
714
- maxMutesSaturation: 0.4,
715
- targetVibrantSaturation: 1,
716
- minVibrantSaturation: 0.35,
717
- weightSaturation: 3,
718
- weightLuma: 6.5,
719
- weightPopulation: 0.5
574
+ //#endregion
575
+ //#region node_modules/.pnpm/@vibrant+generator-default@4.0.4/node_modules/@vibrant/generator-default/dist/esm/index.js
576
+ var ue = {
577
+ targetDarkLuma: .26,
578
+ maxDarkLuma: .45,
579
+ minLightLuma: .55,
580
+ targetLightLuma: .74,
581
+ minNormalLuma: .3,
582
+ targetNormalLuma: .5,
583
+ maxNormalLuma: .7,
584
+ targetMutesSaturation: .3,
585
+ maxMutesSaturation: .4,
586
+ targetVibrantSaturation: 1,
587
+ minVibrantSaturation: .35,
588
+ weightSaturation: 3,
589
+ weightLuma: 6.5,
590
+ weightPopulation: .5
720
591
  };
721
- function VA(n) {
722
- let s = 0;
723
- return n.forEach((t) => {
724
- s = Math.max(s, t.population);
725
- }), s;
592
+ function de(e) {
593
+ let t = 0;
594
+ return e.forEach((e) => {
595
+ t = Math.max(t, e.population);
596
+ }), t;
726
597
  }
727
- function NA(n, s) {
728
- return n.Vibrant === s || n.DarkVibrant === s || n.LightVibrant === s || n.Muted === s || n.DarkMuted === s || n.LightMuted === s;
598
+ function fe(e, t) {
599
+ return e.Vibrant === t || e.DarkVibrant === t || e.LightVibrant === t || e.Muted === t || e.DarkMuted === t || e.LightMuted === t;
729
600
  }
730
- function HA(n, s, t, A, e, o, i) {
731
- function a(...r) {
732
- let c = 0, g = 0;
733
- for (let u = 0; u < r.length; u += 2) {
734
- const B = r[u], Q = r[u + 1];
735
- !B || !Q || (c += B * Q, g += Q);
736
- }
737
- return c / g;
738
- }
739
- function l(r, c) {
740
- return 1 - Math.abs(r - c);
741
- }
742
- return a(
743
- l(n, s),
744
- i.weightSaturation,
745
- l(t, A),
746
- i.weightLuma,
747
- e / o,
748
- i.weightPopulation
749
- );
601
+ function pe(e, t, n, r, i, a, o) {
602
+ function s(...e) {
603
+ let t = 0, n = 0;
604
+ for (let r = 0; r < e.length; r += 2) {
605
+ let i = e[r], a = e[r + 1];
606
+ !i || !a || (t += i * a, n += a);
607
+ }
608
+ return t / n;
609
+ }
610
+ function c(e, t) {
611
+ return 1 - Math.abs(e - t);
612
+ }
613
+ return s(c(e, t), o.weightSaturation, c(n, r), o.weightLuma, i / a, o.weightPopulation);
750
614
  }
751
- function Y(n, s, t, A, e, o, i, a, l, r) {
752
- let c = null, g = 0;
753
- return s.forEach((u) => {
754
- const [, B, Q] = u.hsl;
755
- if (B >= a && B <= l && Q >= e && Q <= o && !NA(n, u)) {
756
- const E = HA(
757
- B,
758
- i,
759
- Q,
760
- A,
761
- u.population,
762
- t,
763
- r
764
- );
765
- (c === null || E > g) && (c = u, g = E);
766
- }
767
- }), c;
615
+ function K(e, t, n, r, i, a, o, s, c, l) {
616
+ let u = null, d = 0;
617
+ return t.forEach((t) => {
618
+ let [, f, p] = t.hsl;
619
+ if (f >= s && f <= c && p >= i && p <= a && !fe(e, t)) {
620
+ let e = pe(f, o, p, r, t.population, n, l);
621
+ (u === null || e > d) && (u = t, d = e);
622
+ }
623
+ }), u;
768
624
  }
769
- function YA(n, s, t) {
770
- const A = {
771
- Vibrant: null,
772
- DarkVibrant: null,
773
- LightVibrant: null,
774
- Muted: null,
775
- DarkMuted: null,
776
- LightMuted: null
777
- };
778
- return A.Vibrant = Y(
779
- A,
780
- n,
781
- s,
782
- t.targetNormalLuma,
783
- t.minNormalLuma,
784
- t.maxNormalLuma,
785
- t.targetVibrantSaturation,
786
- t.minVibrantSaturation,
787
- 1,
788
- t
789
- ), A.LightVibrant = Y(
790
- A,
791
- n,
792
- s,
793
- t.targetLightLuma,
794
- t.minLightLuma,
795
- 1,
796
- t.targetVibrantSaturation,
797
- t.minVibrantSaturation,
798
- 1,
799
- t
800
- ), A.DarkVibrant = Y(
801
- A,
802
- n,
803
- s,
804
- t.targetDarkLuma,
805
- 0,
806
- t.maxDarkLuma,
807
- t.targetVibrantSaturation,
808
- t.minVibrantSaturation,
809
- 1,
810
- t
811
- ), A.Muted = Y(
812
- A,
813
- n,
814
- s,
815
- t.targetNormalLuma,
816
- t.minNormalLuma,
817
- t.maxNormalLuma,
818
- t.targetMutesSaturation,
819
- 0,
820
- t.maxMutesSaturation,
821
- t
822
- ), A.LightMuted = Y(
823
- A,
824
- n,
825
- s,
826
- t.targetLightLuma,
827
- t.minLightLuma,
828
- 1,
829
- t.targetMutesSaturation,
830
- 0,
831
- t.maxMutesSaturation,
832
- t
833
- ), A.DarkMuted = Y(
834
- A,
835
- n,
836
- s,
837
- t.targetDarkLuma,
838
- 0,
839
- t.maxDarkLuma,
840
- t.targetMutesSaturation,
841
- 0,
842
- t.maxMutesSaturation,
843
- t
844
- ), A;
625
+ function me(e, t, n) {
626
+ let r = {
627
+ Vibrant: null,
628
+ DarkVibrant: null,
629
+ LightVibrant: null,
630
+ Muted: null,
631
+ DarkMuted: null,
632
+ LightMuted: null
633
+ };
634
+ return r.Vibrant = K(r, e, t, n.targetNormalLuma, n.minNormalLuma, n.maxNormalLuma, n.targetVibrantSaturation, n.minVibrantSaturation, 1, n), r.LightVibrant = K(r, e, t, n.targetLightLuma, n.minLightLuma, 1, n.targetVibrantSaturation, n.minVibrantSaturation, 1, n), r.DarkVibrant = K(r, e, t, n.targetDarkLuma, 0, n.maxDarkLuma, n.targetVibrantSaturation, n.minVibrantSaturation, 1, n), r.Muted = K(r, e, t, n.targetNormalLuma, n.minNormalLuma, n.maxNormalLuma, n.targetMutesSaturation, 0, n.maxMutesSaturation, n), r.LightMuted = K(r, e, t, n.targetLightLuma, n.minLightLuma, 1, n.targetMutesSaturation, 0, n.maxMutesSaturation, n), r.DarkMuted = K(r, e, t, n.targetDarkLuma, 0, n.maxDarkLuma, n.targetMutesSaturation, 0, n.maxMutesSaturation, n), r;
845
635
  }
846
- function PA(n, s, t) {
847
- if (!n.Vibrant && !n.DarkVibrant && !n.LightVibrant) {
848
- if (!n.DarkVibrant && n.DarkMuted) {
849
- let [A, e, o] = n.DarkMuted.hsl;
850
- o = t.targetDarkLuma, n.DarkVibrant = new j(M(A, e, o), 0);
851
- }
852
- if (!n.LightVibrant && n.LightMuted) {
853
- let [A, e, o] = n.LightMuted.hsl;
854
- o = t.targetDarkLuma, n.DarkVibrant = new j(M(A, e, o), 0);
855
- }
856
- }
857
- if (!n.Vibrant && n.DarkVibrant) {
858
- let [A, e, o] = n.DarkVibrant.hsl;
859
- o = t.targetNormalLuma, n.Vibrant = new j(M(A, e, o), 0);
860
- } else if (!n.Vibrant && n.LightVibrant) {
861
- let [A, e, o] = n.LightVibrant.hsl;
862
- o = t.targetNormalLuma, n.Vibrant = new j(M(A, e, o), 0);
863
- }
864
- if (!n.DarkVibrant && n.Vibrant) {
865
- let [A, e, o] = n.Vibrant.hsl;
866
- o = t.targetDarkLuma, n.DarkVibrant = new j(M(A, e, o), 0);
867
- }
868
- if (!n.LightVibrant && n.Vibrant) {
869
- let [A, e, o] = n.Vibrant.hsl;
870
- o = t.targetLightLuma, n.LightVibrant = new j(M(A, e, o), 0);
871
- }
872
- if (!n.Muted && n.Vibrant) {
873
- let [A, e, o] = n.Vibrant.hsl;
874
- o = t.targetMutesSaturation, n.Muted = new j(M(A, e, o), 0);
875
- }
876
- if (!n.DarkMuted && n.DarkVibrant) {
877
- let [A, e, o] = n.DarkVibrant.hsl;
878
- o = t.targetMutesSaturation, n.DarkMuted = new j(M(A, e, o), 0);
879
- }
880
- if (!n.LightMuted && n.LightVibrant) {
881
- let [A, e, o] = n.LightVibrant.hsl;
882
- o = t.targetMutesSaturation, n.LightMuted = new j(M(A, e, o), 0);
883
- }
636
+ function he(e, t, n) {
637
+ if (!e.Vibrant && !e.DarkVibrant && !e.LightVibrant) {
638
+ if (!e.DarkVibrant && e.DarkMuted) {
639
+ let [t, r, i] = e.DarkMuted.hsl;
640
+ i = n.targetDarkLuma, e.DarkVibrant = new B(z(t, r, i), 0);
641
+ }
642
+ if (!e.LightVibrant && e.LightMuted) {
643
+ let [t, r, i] = e.LightMuted.hsl;
644
+ i = n.targetDarkLuma, e.DarkVibrant = new B(z(t, r, i), 0);
645
+ }
646
+ }
647
+ if (!e.Vibrant && e.DarkVibrant) {
648
+ let [t, r, i] = e.DarkVibrant.hsl;
649
+ i = n.targetNormalLuma, e.Vibrant = new B(z(t, r, i), 0);
650
+ } else if (!e.Vibrant && e.LightVibrant) {
651
+ let [t, r, i] = e.LightVibrant.hsl;
652
+ i = n.targetNormalLuma, e.Vibrant = new B(z(t, r, i), 0);
653
+ }
654
+ if (!e.DarkVibrant && e.Vibrant) {
655
+ let [t, r, i] = e.Vibrant.hsl;
656
+ i = n.targetDarkLuma, e.DarkVibrant = new B(z(t, r, i), 0);
657
+ }
658
+ if (!e.LightVibrant && e.Vibrant) {
659
+ let [t, r, i] = e.Vibrant.hsl;
660
+ i = n.targetLightLuma, e.LightVibrant = new B(z(t, r, i), 0);
661
+ }
662
+ if (!e.Muted && e.Vibrant) {
663
+ let [t, r, i] = e.Vibrant.hsl;
664
+ i = n.targetMutesSaturation, e.Muted = new B(z(t, r, i), 0);
665
+ }
666
+ if (!e.DarkMuted && e.DarkVibrant) {
667
+ let [t, r, i] = e.DarkVibrant.hsl;
668
+ i = n.targetMutesSaturation, e.DarkMuted = new B(z(t, r, i), 0);
669
+ }
670
+ if (!e.LightMuted && e.LightVibrant) {
671
+ let [t, r, i] = e.LightVibrant.hsl;
672
+ i = n.targetMutesSaturation, e.LightMuted = new B(z(t, r, i), 0);
673
+ }
884
674
  }
885
- const qA = ((n, s) => {
886
- s = Object.assign({}, zA, s);
887
- const t = VA(n), A = YA(n, t, s);
888
- return PA(A, t, s), A;
889
- }), TA = new JA().filter.register(
890
- "default",
891
- (n, s, t, A) => A >= 125 && !(n > 250 && s > 250 && t > 250)
892
- ).quantizer.register("mmcq", MA).generator.register("default", qA);
893
- V.use(TA);
894
- const GA = new Int32Array(4);
895
- class R {
896
- static hashStr(s, t = !1) {
897
- return this.onePassHasher.start().appendStr(s).end(t);
898
- }
899
- static hashAsciiStr(s, t = !1) {
900
- return this.onePassHasher.start().appendAsciiStr(s).end(t);
901
- }
902
- // Private Static Variables
903
- static stateIdentity = new Int32Array([
904
- 1732584193,
905
- -271733879,
906
- -1732584194,
907
- 271733878
908
- ]);
909
- static buffer32Identity = new Int32Array([
910
- 0,
911
- 0,
912
- 0,
913
- 0,
914
- 0,
915
- 0,
916
- 0,
917
- 0,
918
- 0,
919
- 0,
920
- 0,
921
- 0,
922
- 0,
923
- 0,
924
- 0,
925
- 0
926
- ]);
927
- static hexChars = "0123456789abcdef";
928
- static hexOut = [];
929
- // Permanent instance is to use for one-call hashing
930
- static onePassHasher = new R();
931
- static _hex(s) {
932
- const t = R.hexChars, A = R.hexOut;
933
- let e, o, i, a;
934
- for (a = 0; a < 4; a += 1)
935
- for (o = a * 8, e = s[a], i = 0; i < 8; i += 2)
936
- A[o + 1 + i] = t.charAt(e & 15), e >>>= 4, A[o + 0 + i] = t.charAt(e & 15), e >>>= 4;
937
- return A.join("");
938
- }
939
- static _md5cycle(s, t) {
940
- let A = s[0], e = s[1], o = s[2], i = s[3];
941
- A += (e & o | ~e & i) + t[0] - 680876936 | 0, A = (A << 7 | A >>> 25) + e | 0, i += (A & e | ~A & o) + t[1] - 389564586 | 0, i = (i << 12 | i >>> 20) + A | 0, o += (i & A | ~i & e) + t[2] + 606105819 | 0, o = (o << 17 | o >>> 15) + i | 0, e += (o & i | ~o & A) + t[3] - 1044525330 | 0, e = (e << 22 | e >>> 10) + o | 0, A += (e & o | ~e & i) + t[4] - 176418897 | 0, A = (A << 7 | A >>> 25) + e | 0, i += (A & e | ~A & o) + t[5] + 1200080426 | 0, i = (i << 12 | i >>> 20) + A | 0, o += (i & A | ~i & e) + t[6] - 1473231341 | 0, o = (o << 17 | o >>> 15) + i | 0, e += (o & i | ~o & A) + t[7] - 45705983 | 0, e = (e << 22 | e >>> 10) + o | 0, A += (e & o | ~e & i) + t[8] + 1770035416 | 0, A = (A << 7 | A >>> 25) + e | 0, i += (A & e | ~A & o) + t[9] - 1958414417 | 0, i = (i << 12 | i >>> 20) + A | 0, o += (i & A | ~i & e) + t[10] - 42063 | 0, o = (o << 17 | o >>> 15) + i | 0, e += (o & i | ~o & A) + t[11] - 1990404162 | 0, e = (e << 22 | e >>> 10) + o | 0, A += (e & o | ~e & i) + t[12] + 1804603682 | 0, A = (A << 7 | A >>> 25) + e | 0, i += (A & e | ~A & o) + t[13] - 40341101 | 0, i = (i << 12 | i >>> 20) + A | 0, o += (i & A | ~i & e) + t[14] - 1502002290 | 0, o = (o << 17 | o >>> 15) + i | 0, e += (o & i | ~o & A) + t[15] + 1236535329 | 0, e = (e << 22 | e >>> 10) + o | 0, A += (e & i | o & ~i) + t[1] - 165796510 | 0, A = (A << 5 | A >>> 27) + e | 0, i += (A & o | e & ~o) + t[6] - 1069501632 | 0, i = (i << 9 | i >>> 23) + A | 0, o += (i & e | A & ~e) + t[11] + 643717713 | 0, o = (o << 14 | o >>> 18) + i | 0, e += (o & A | i & ~A) + t[0] - 373897302 | 0, e = (e << 20 | e >>> 12) + o | 0, A += (e & i | o & ~i) + t[5] - 701558691 | 0, A = (A << 5 | A >>> 27) + e | 0, i += (A & o | e & ~o) + t[10] + 38016083 | 0, i = (i << 9 | i >>> 23) + A | 0, o += (i & e | A & ~e) + t[15] - 660478335 | 0, o = (o << 14 | o >>> 18) + i | 0, e += (o & A | i & ~A) + t[4] - 405537848 | 0, e = (e << 20 | e >>> 12) + o | 0, A += (e & i | o & ~i) + t[9] + 568446438 | 0, A = (A << 5 | A >>> 27) + e | 0, i += (A & o | e & ~o) + t[14] - 1019803690 | 0, i = (i << 9 | i >>> 23) + A | 0, o += (i & e | A & ~e) + t[3] - 187363961 | 0, o = (o << 14 | o >>> 18) + i | 0, e += (o & A | i & ~A) + t[8] + 1163531501 | 0, e = (e << 20 | e >>> 12) + o | 0, A += (e & i | o & ~i) + t[13] - 1444681467 | 0, A = (A << 5 | A >>> 27) + e | 0, i += (A & o | e & ~o) + t[2] - 51403784 | 0, i = (i << 9 | i >>> 23) + A | 0, o += (i & e | A & ~e) + t[7] + 1735328473 | 0, o = (o << 14 | o >>> 18) + i | 0, e += (o & A | i & ~A) + t[12] - 1926607734 | 0, e = (e << 20 | e >>> 12) + o | 0, A += (e ^ o ^ i) + t[5] - 378558 | 0, A = (A << 4 | A >>> 28) + e | 0, i += (A ^ e ^ o) + t[8] - 2022574463 | 0, i = (i << 11 | i >>> 21) + A | 0, o += (i ^ A ^ e) + t[11] + 1839030562 | 0, o = (o << 16 | o >>> 16) + i | 0, e += (o ^ i ^ A) + t[14] - 35309556 | 0, e = (e << 23 | e >>> 9) + o | 0, A += (e ^ o ^ i) + t[1] - 1530992060 | 0, A = (A << 4 | A >>> 28) + e | 0, i += (A ^ e ^ o) + t[4] + 1272893353 | 0, i = (i << 11 | i >>> 21) + A | 0, o += (i ^ A ^ e) + t[7] - 155497632 | 0, o = (o << 16 | o >>> 16) + i | 0, e += (o ^ i ^ A) + t[10] - 1094730640 | 0, e = (e << 23 | e >>> 9) + o | 0, A += (e ^ o ^ i) + t[13] + 681279174 | 0, A = (A << 4 | A >>> 28) + e | 0, i += (A ^ e ^ o) + t[0] - 358537222 | 0, i = (i << 11 | i >>> 21) + A | 0, o += (i ^ A ^ e) + t[3] - 722521979 | 0, o = (o << 16 | o >>> 16) + i | 0, e += (o ^ i ^ A) + t[6] + 76029189 | 0, e = (e << 23 | e >>> 9) + o | 0, A += (e ^ o ^ i) + t[9] - 640364487 | 0, A = (A << 4 | A >>> 28) + e | 0, i += (A ^ e ^ o) + t[12] - 421815835 | 0, i = (i << 11 | i >>> 21) + A | 0, o += (i ^ A ^ e) + t[15] + 530742520 | 0, o = (o << 16 | o >>> 16) + i | 0, e += (o ^ i ^ A) + t[2] - 995338651 | 0, e = (e << 23 | e >>> 9) + o | 0, A += (o ^ (e | ~i)) + t[0] - 198630844 | 0, A = (A << 6 | A >>> 26) + e | 0, i += (e ^ (A | ~o)) + t[7] + 1126891415 | 0, i = (i << 10 | i >>> 22) + A | 0, o += (A ^ (i | ~e)) + t[14] - 1416354905 | 0, o = (o << 15 | o >>> 17) + i | 0, e += (i ^ (o | ~A)) + t[5] - 57434055 | 0, e = (e << 21 | e >>> 11) + o | 0, A += (o ^ (e | ~i)) + t[12] + 1700485571 | 0, A = (A << 6 | A >>> 26) + e | 0, i += (e ^ (A | ~o)) + t[3] - 1894986606 | 0, i = (i << 10 | i >>> 22) + A | 0, o += (A ^ (i | ~e)) + t[10] - 1051523 | 0, o = (o << 15 | o >>> 17) + i | 0, e += (i ^ (o | ~A)) + t[1] - 2054922799 | 0, e = (e << 21 | e >>> 11) + o | 0, A += (o ^ (e | ~i)) + t[8] + 1873313359 | 0, A = (A << 6 | A >>> 26) + e | 0, i += (e ^ (A | ~o)) + t[15] - 30611744 | 0, i = (i << 10 | i >>> 22) + A | 0, o += (A ^ (i | ~e)) + t[6] - 1560198380 | 0, o = (o << 15 | o >>> 17) + i | 0, e += (i ^ (o | ~A)) + t[13] + 1309151649 | 0, e = (e << 21 | e >>> 11) + o | 0, A += (o ^ (e | ~i)) + t[4] - 145523070 | 0, A = (A << 6 | A >>> 26) + e | 0, i += (e ^ (A | ~o)) + t[11] - 1120210379 | 0, i = (i << 10 | i >>> 22) + A | 0, o += (A ^ (i | ~e)) + t[2] + 718787259 | 0, o = (o << 15 | o >>> 17) + i | 0, e += (i ^ (o | ~A)) + t[9] - 343485551 | 0, e = (e << 21 | e >>> 11) + o | 0, s[0] = A + s[0] | 0, s[1] = e + s[1] | 0, s[2] = o + s[2] | 0, s[3] = i + s[3] | 0;
942
- }
943
- _dataLength = 0;
944
- _bufferLength = 0;
945
- _state = new Int32Array(4);
946
- _buffer = new ArrayBuffer(68);
947
- _buffer8;
948
- _buffer32;
949
- constructor() {
950
- this._buffer8 = new Uint8Array(this._buffer, 0, 68), this._buffer32 = new Uint32Array(this._buffer, 0, 17), this.start();
951
- }
952
- /**
953
- * Initialise buffer to be hashed
954
- */
955
- start() {
956
- return this._dataLength = 0, this._bufferLength = 0, this._state.set(R.stateIdentity), this;
957
- }
958
- // Char to code point to to array conversion:
959
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt
960
- // #Example.3A_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown
961
- /**
962
- * Append a UTF-8 string to the hash buffer
963
- * @param str String to append
964
- */
965
- appendStr(s) {
966
- const t = this._buffer8, A = this._buffer32;
967
- let e = this._bufferLength, o, i;
968
- for (i = 0; i < s.length; i += 1) {
969
- if (o = s.charCodeAt(i), o < 128)
970
- t[e++] = o;
971
- else if (o < 2048)
972
- t[e++] = (o >>> 6) + 192, t[e++] = o & 63 | 128;
973
- else if (o < 55296 || o > 56319)
974
- t[e++] = (o >>> 12) + 224, t[e++] = o >>> 6 & 63 | 128, t[e++] = o & 63 | 128;
975
- else {
976
- if (o = (o - 55296) * 1024 + (s.charCodeAt(++i) - 56320) + 65536, o > 1114111)
977
- throw new Error(
978
- "Unicode standard supports code points up to U+10FFFF"
979
- );
980
- t[e++] = (o >>> 18) + 240, t[e++] = o >>> 12 & 63 | 128, t[e++] = o >>> 6 & 63 | 128, t[e++] = o & 63 | 128;
981
- }
982
- e >= 64 && (this._dataLength += 64, R._md5cycle(this._state, A), e -= 64, A[0] = A[16]);
983
- }
984
- return this._bufferLength = e, this;
985
- }
986
- /**
987
- * Append an ASCII string to the hash buffer
988
- * @param str String to append
989
- */
990
- appendAsciiStr(s) {
991
- const t = this._buffer8, A = this._buffer32;
992
- let e = this._bufferLength, o, i = 0;
993
- for (; ; ) {
994
- for (o = Math.min(s.length - i, 64 - e); o--; )
995
- t[e++] = s.charCodeAt(i++);
996
- if (e < 64)
997
- break;
998
- this._dataLength += 64, R._md5cycle(this._state, A), e = 0;
999
- }
1000
- return this._bufferLength = e, this;
1001
- }
1002
- /**
1003
- * Append a byte array to the hash buffer
1004
- * @param input array to append
1005
- */
1006
- appendByteArray(s) {
1007
- const t = this._buffer8, A = this._buffer32;
1008
- let e = this._bufferLength, o, i = 0;
1009
- for (; ; ) {
1010
- for (o = Math.min(s.length - i, 64 - e); o--; )
1011
- t[e++] = s[i++];
1012
- if (e < 64)
1013
- break;
1014
- this._dataLength += 64, R._md5cycle(this._state, A), e = 0;
1015
- }
1016
- return this._bufferLength = e, this;
1017
- }
1018
- /**
1019
- * Get the state of the hash buffer
1020
- */
1021
- getState() {
1022
- const s = this._state;
1023
- return {
1024
- buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),
1025
- buflen: this._bufferLength,
1026
- length: this._dataLength,
1027
- state: [s[0], s[1], s[2], s[3]]
1028
- };
1029
- }
1030
- /**
1031
- * Override the current state of the hash buffer
1032
- * @param state New hash buffer state
1033
- */
1034
- setState(s) {
1035
- const t = s.buffer, A = s.state, e = this._state;
1036
- let o;
1037
- for (this._dataLength = s.length, this._bufferLength = s.buflen, e[0] = A[0], e[1] = A[1], e[2] = A[2], e[3] = A[3], o = 0; o < t.length; o += 1)
1038
- this._buffer8[o] = t.charCodeAt(o);
1039
- }
1040
- /**
1041
- * Hash the current state of the hash buffer and return the result
1042
- * @param raw Whether to return the value as an `Int32Array`
1043
- */
1044
- end(s = !1) {
1045
- const t = this._bufferLength, A = this._buffer8, e = this._buffer32, o = (t >> 2) + 1;
1046
- this._dataLength += t;
1047
- const i = this._dataLength * 8;
1048
- if (A[t] = 128, A[t + 1] = A[t + 2] = A[t + 3] = 0, e.set(R.buffer32Identity.subarray(o), o), t > 55 && (R._md5cycle(this._state, e), e.set(R.buffer32Identity)), i <= 4294967295)
1049
- e[14] = i;
1050
- else {
1051
- const a = i.toString(16).match(/(.*?)(.{0,8})$/);
1052
- if (a === null) return s ? GA : "";
1053
- const l = parseInt(a[2], 16), r = parseInt(a[1], 16) || 0;
1054
- e[14] = l, e[15] = r;
1055
- }
1056
- return R._md5cycle(this._state, e), s ? this._state : R._hex(this._state);
1057
- }
1058
- }
1059
- if (R.hashStr("hello") !== "5d41402abc4b2a76b9719d911017c592")
1060
- throw new Error("Md5 self test failed.");
1061
- function EA(n) {
1062
- const { email: s, password: t } = n, A = new R();
1063
- return {
1064
- userName: s,
1065
- passwd: A.appendAsciiStr(t).end()
1066
- };
675
+ //#endregion
676
+ //#region node_modules/.pnpm/node-vibrant@4.0.4/node_modules/node-vibrant/dist/esm/pipeline/index.js
677
+ var ge = new ie().filter.register("default", (e, t, n, r) => r >= 125 && !(e > 250 && t > 250 && n > 250)).quantizer.register("mmcq", ce).generator.register("default", ((e, t) => {
678
+ t = Object.assign({}, ue, t);
679
+ let n = de(e), r = me(e, n, t);
680
+ return he(r, n, t), r;
681
+ }));
682
+ //#endregion
683
+ //#region node_modules/.pnpm/node-vibrant@4.0.4/node_modules/node-vibrant/dist/esm/browser.js
684
+ V.use(ge);
685
+ //#endregion
686
+ //#region node_modules/.pnpm/ts-md5@2.0.1/node_modules/ts-md5/dist/index.es.js
687
+ var _e = new Int32Array(4), q = class e {
688
+ static hashStr(e, t = !1) {
689
+ return this.onePassHasher.start().appendStr(e).end(t);
690
+ }
691
+ static hashAsciiStr(e, t = !1) {
692
+ return this.onePassHasher.start().appendAsciiStr(e).end(t);
693
+ }
694
+ static stateIdentity = new Int32Array([
695
+ 1732584193,
696
+ -271733879,
697
+ -1732584194,
698
+ 271733878
699
+ ]);
700
+ static buffer32Identity = new Int32Array([
701
+ 0,
702
+ 0,
703
+ 0,
704
+ 0,
705
+ 0,
706
+ 0,
707
+ 0,
708
+ 0,
709
+ 0,
710
+ 0,
711
+ 0,
712
+ 0,
713
+ 0,
714
+ 0,
715
+ 0,
716
+ 0
717
+ ]);
718
+ static hexChars = "0123456789abcdef";
719
+ static hexOut = [];
720
+ static onePassHasher = new e();
721
+ static _hex(t) {
722
+ let n = e.hexChars, r = e.hexOut, i, a, o, s;
723
+ for (s = 0; s < 4; s += 1) for (a = s * 8, i = t[s], o = 0; o < 8; o += 2) r[a + 1 + o] = n.charAt(i & 15), i >>>= 4, r[a + 0 + o] = n.charAt(i & 15), i >>>= 4;
724
+ return r.join("");
725
+ }
726
+ static _md5cycle(e, t) {
727
+ let n = e[0], r = e[1], i = e[2], a = e[3];
728
+ n += (r & i | ~r & a) + t[0] - 680876936 | 0, n = (n << 7 | n >>> 25) + r | 0, a += (n & r | ~n & i) + t[1] - 389564586 | 0, a = (a << 12 | a >>> 20) + n | 0, i += (a & n | ~a & r) + t[2] + 606105819 | 0, i = (i << 17 | i >>> 15) + a | 0, r += (i & a | ~i & n) + t[3] - 1044525330 | 0, r = (r << 22 | r >>> 10) + i | 0, n += (r & i | ~r & a) + t[4] - 176418897 | 0, n = (n << 7 | n >>> 25) + r | 0, a += (n & r | ~n & i) + t[5] + 1200080426 | 0, a = (a << 12 | a >>> 20) + n | 0, i += (a & n | ~a & r) + t[6] - 1473231341 | 0, i = (i << 17 | i >>> 15) + a | 0, r += (i & a | ~i & n) + t[7] - 45705983 | 0, r = (r << 22 | r >>> 10) + i | 0, n += (r & i | ~r & a) + t[8] + 1770035416 | 0, n = (n << 7 | n >>> 25) + r | 0, a += (n & r | ~n & i) + t[9] - 1958414417 | 0, a = (a << 12 | a >>> 20) + n | 0, i += (a & n | ~a & r) + t[10] - 42063 | 0, i = (i << 17 | i >>> 15) + a | 0, r += (i & a | ~i & n) + t[11] - 1990404162 | 0, r = (r << 22 | r >>> 10) + i | 0, n += (r & i | ~r & a) + t[12] + 1804603682 | 0, n = (n << 7 | n >>> 25) + r | 0, a += (n & r | ~n & i) + t[13] - 40341101 | 0, a = (a << 12 | a >>> 20) + n | 0, i += (a & n | ~a & r) + t[14] - 1502002290 | 0, i = (i << 17 | i >>> 15) + a | 0, r += (i & a | ~i & n) + t[15] + 1236535329 | 0, r = (r << 22 | r >>> 10) + i | 0, n += (r & a | i & ~a) + t[1] - 165796510 | 0, n = (n << 5 | n >>> 27) + r | 0, a += (n & i | r & ~i) + t[6] - 1069501632 | 0, a = (a << 9 | a >>> 23) + n | 0, i += (a & r | n & ~r) + t[11] + 643717713 | 0, i = (i << 14 | i >>> 18) + a | 0, r += (i & n | a & ~n) + t[0] - 373897302 | 0, r = (r << 20 | r >>> 12) + i | 0, n += (r & a | i & ~a) + t[5] - 701558691 | 0, n = (n << 5 | n >>> 27) + r | 0, a += (n & i | r & ~i) + t[10] + 38016083 | 0, a = (a << 9 | a >>> 23) + n | 0, i += (a & r | n & ~r) + t[15] - 660478335 | 0, i = (i << 14 | i >>> 18) + a | 0, r += (i & n | a & ~n) + t[4] - 405537848 | 0, r = (r << 20 | r >>> 12) + i | 0, n += (r & a | i & ~a) + t[9] + 568446438 | 0, n = (n << 5 | n >>> 27) + r | 0, a += (n & i | r & ~i) + t[14] - 1019803690 | 0, a = (a << 9 | a >>> 23) + n | 0, i += (a & r | n & ~r) + t[3] - 187363961 | 0, i = (i << 14 | i >>> 18) + a | 0, r += (i & n | a & ~n) + t[8] + 1163531501 | 0, r = (r << 20 | r >>> 12) + i | 0, n += (r & a | i & ~a) + t[13] - 1444681467 | 0, n = (n << 5 | n >>> 27) + r | 0, a += (n & i | r & ~i) + t[2] - 51403784 | 0, a = (a << 9 | a >>> 23) + n | 0, i += (a & r | n & ~r) + t[7] + 1735328473 | 0, i = (i << 14 | i >>> 18) + a | 0, r += (i & n | a & ~n) + t[12] - 1926607734 | 0, r = (r << 20 | r >>> 12) + i | 0, n += (r ^ i ^ a) + t[5] - 378558 | 0, n = (n << 4 | n >>> 28) + r | 0, a += (n ^ r ^ i) + t[8] - 2022574463 | 0, a = (a << 11 | a >>> 21) + n | 0, i += (a ^ n ^ r) + t[11] + 1839030562 | 0, i = (i << 16 | i >>> 16) + a | 0, r += (i ^ a ^ n) + t[14] - 35309556 | 0, r = (r << 23 | r >>> 9) + i | 0, n += (r ^ i ^ a) + t[1] - 1530992060 | 0, n = (n << 4 | n >>> 28) + r | 0, a += (n ^ r ^ i) + t[4] + 1272893353 | 0, a = (a << 11 | a >>> 21) + n | 0, i += (a ^ n ^ r) + t[7] - 155497632 | 0, i = (i << 16 | i >>> 16) + a | 0, r += (i ^ a ^ n) + t[10] - 1094730640 | 0, r = (r << 23 | r >>> 9) + i | 0, n += (r ^ i ^ a) + t[13] + 681279174 | 0, n = (n << 4 | n >>> 28) + r | 0, a += (n ^ r ^ i) + t[0] - 358537222 | 0, a = (a << 11 | a >>> 21) + n | 0, i += (a ^ n ^ r) + t[3] - 722521979 | 0, i = (i << 16 | i >>> 16) + a | 0, r += (i ^ a ^ n) + t[6] + 76029189 | 0, r = (r << 23 | r >>> 9) + i | 0, n += (r ^ i ^ a) + t[9] - 640364487 | 0, n = (n << 4 | n >>> 28) + r | 0, a += (n ^ r ^ i) + t[12] - 421815835 | 0, a = (a << 11 | a >>> 21) + n | 0, i += (a ^ n ^ r) + t[15] + 530742520 | 0, i = (i << 16 | i >>> 16) + a | 0, r += (i ^ a ^ n) + t[2] - 995338651 | 0, r = (r << 23 | r >>> 9) + i | 0, n += (i ^ (r | ~a)) + t[0] - 198630844 | 0, n = (n << 6 | n >>> 26) + r | 0, a += (r ^ (n | ~i)) + t[7] + 1126891415 | 0, a = (a << 10 | a >>> 22) + n | 0, i += (n ^ (a | ~r)) + t[14] - 1416354905 | 0, i = (i << 15 | i >>> 17) + a | 0, r += (a ^ (i | ~n)) + t[5] - 57434055 | 0, r = (r << 21 | r >>> 11) + i | 0, n += (i ^ (r | ~a)) + t[12] + 1700485571 | 0, n = (n << 6 | n >>> 26) + r | 0, a += (r ^ (n | ~i)) + t[3] - 1894986606 | 0, a = (a << 10 | a >>> 22) + n | 0, i += (n ^ (a | ~r)) + t[10] - 1051523 | 0, i = (i << 15 | i >>> 17) + a | 0, r += (a ^ (i | ~n)) + t[1] - 2054922799 | 0, r = (r << 21 | r >>> 11) + i | 0, n += (i ^ (r | ~a)) + t[8] + 1873313359 | 0, n = (n << 6 | n >>> 26) + r | 0, a += (r ^ (n | ~i)) + t[15] - 30611744 | 0, a = (a << 10 | a >>> 22) + n | 0, i += (n ^ (a | ~r)) + t[6] - 1560198380 | 0, i = (i << 15 | i >>> 17) + a | 0, r += (a ^ (i | ~n)) + t[13] + 1309151649 | 0, r = (r << 21 | r >>> 11) + i | 0, n += (i ^ (r | ~a)) + t[4] - 145523070 | 0, n = (n << 6 | n >>> 26) + r | 0, a += (r ^ (n | ~i)) + t[11] - 1120210379 | 0, a = (a << 10 | a >>> 22) + n | 0, i += (n ^ (a | ~r)) + t[2] + 718787259 | 0, i = (i << 15 | i >>> 17) + a | 0, r += (a ^ (i | ~n)) + t[9] - 343485551 | 0, r = (r << 21 | r >>> 11) + i | 0, e[0] = n + e[0] | 0, e[1] = r + e[1] | 0, e[2] = i + e[2] | 0, e[3] = a + e[3] | 0;
729
+ }
730
+ _dataLength = 0;
731
+ _bufferLength = 0;
732
+ _state = new Int32Array(4);
733
+ _buffer = /* @__PURE__ */ new ArrayBuffer(68);
734
+ _buffer8;
735
+ _buffer32;
736
+ constructor() {
737
+ this._buffer8 = new Uint8Array(this._buffer, 0, 68), this._buffer32 = new Uint32Array(this._buffer, 0, 17), this.start();
738
+ }
739
+ start() {
740
+ return this._dataLength = 0, this._bufferLength = 0, this._state.set(e.stateIdentity), this;
741
+ }
742
+ appendStr(t) {
743
+ let n = this._buffer8, r = this._buffer32, i = this._bufferLength, a, o;
744
+ for (o = 0; o < t.length; o += 1) {
745
+ if (a = t.charCodeAt(o), a < 128) n[i++] = a;
746
+ else if (a < 2048) n[i++] = (a >>> 6) + 192, n[i++] = a & 63 | 128;
747
+ else if (a < 55296 || a > 56319) n[i++] = (a >>> 12) + 224, n[i++] = a >>> 6 & 63 | 128, n[i++] = a & 63 | 128;
748
+ else {
749
+ if (a = (a - 55296) * 1024 + (t.charCodeAt(++o) - 56320) + 65536, a > 1114111) throw Error("Unicode standard supports code points up to U+10FFFF");
750
+ n[i++] = (a >>> 18) + 240, n[i++] = a >>> 12 & 63 | 128, n[i++] = a >>> 6 & 63 | 128, n[i++] = a & 63 | 128;
751
+ }
752
+ i >= 64 && (this._dataLength += 64, e._md5cycle(this._state, r), i -= 64, r[0] = r[16]);
753
+ }
754
+ return this._bufferLength = i, this;
755
+ }
756
+ appendAsciiStr(t) {
757
+ let n = this._buffer8, r = this._buffer32, i = this._bufferLength, a, o = 0;
758
+ for (;;) {
759
+ for (a = Math.min(t.length - o, 64 - i); a--;) n[i++] = t.charCodeAt(o++);
760
+ if (i < 64) break;
761
+ this._dataLength += 64, e._md5cycle(this._state, r), i = 0;
762
+ }
763
+ return this._bufferLength = i, this;
764
+ }
765
+ appendByteArray(t) {
766
+ let n = this._buffer8, r = this._buffer32, i = this._bufferLength, a, o = 0;
767
+ for (;;) {
768
+ for (a = Math.min(t.length - o, 64 - i); a--;) n[i++] = t[o++];
769
+ if (i < 64) break;
770
+ this._dataLength += 64, e._md5cycle(this._state, r), i = 0;
771
+ }
772
+ return this._bufferLength = i, this;
773
+ }
774
+ getState() {
775
+ let e = this._state;
776
+ return {
777
+ buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),
778
+ buflen: this._bufferLength,
779
+ length: this._dataLength,
780
+ state: [
781
+ e[0],
782
+ e[1],
783
+ e[2],
784
+ e[3]
785
+ ]
786
+ };
787
+ }
788
+ setState(e) {
789
+ let t = e.buffer, n = e.state, r = this._state, i;
790
+ for (this._dataLength = e.length, this._bufferLength = e.buflen, r[0] = n[0], r[1] = n[1], r[2] = n[2], r[3] = n[3], i = 0; i < t.length; i += 1) this._buffer8[i] = t.charCodeAt(i);
791
+ }
792
+ end(t = !1) {
793
+ let n = this._bufferLength, r = this._buffer8, i = this._buffer32, a = (n >> 2) + 1;
794
+ this._dataLength += n;
795
+ let o = this._dataLength * 8;
796
+ if (r[n] = 128, r[n + 1] = r[n + 2] = r[n + 3] = 0, i.set(e.buffer32Identity.subarray(a), a), n > 55 && (e._md5cycle(this._state, i), i.set(e.buffer32Identity)), o <= 4294967295) i[14] = o;
797
+ else {
798
+ let e = o.toString(16).match(/(.*?)(.{0,8})$/);
799
+ if (e === null) return t ? _e : "";
800
+ let n = parseInt(e[2], 16), r = parseInt(e[1], 16) || 0;
801
+ i[14] = n, i[15] = r;
802
+ }
803
+ return e._md5cycle(this._state, i), t ? this._state : e._hex(this._state);
804
+ }
805
+ };
806
+ if (q.hashStr("hello") !== "5d41402abc4b2a76b9719d911017c592") throw Error("Md5 self test failed.");
807
+ //#endregion
808
+ //#region src/components/auth-gateway/util.ts
809
+ function ve(e) {
810
+ let { email: t, password: n } = e;
811
+ return {
812
+ userName: t,
813
+ passwd: new q().appendAsciiStr(n).end()
814
+ };
1067
815
  }
1068
- async function dA(n) {
1069
- if (!n)
1070
- return;
1071
- const s = await V.from(n).getPalette(), { r: t, g: A, b: e } = s.Vibrant;
1072
- aA([~~t, ~~A, ~~e]);
816
+ async function J(e) {
817
+ if (!e) return;
818
+ let { r: t, g: n, b: r } = (await V.from(e).getPalette()).Vibrant;
819
+ Y([
820
+ ~~t,
821
+ ~~n,
822
+ ~~r
823
+ ]);
1073
824
  }
1074
- function aA(n) {
1075
- const [s, t, A] = n, e = document.documentElement, o = `${s} ${t} ${A}`, i = `rgb(${s},${t},${A})`;
1076
- e.style.setProperty("--color-primary", o), e.style.setProperty("--el-color-primary", i);
1077
- for (let a = 1; a <= 10; a++)
1078
- e.style.setProperty(
1079
- `--el-color-primary-light-${a}`,
1080
- QA(a, { r: s, g: t, b: A })
1081
- ), e.style.setProperty(
1082
- `--el-color-primary-dark-${a}`,
1083
- QA(a, { r: s, g: t, b: A }, { r: 0, g: 0, b: 0 })
1084
- );
825
+ function Y(e) {
826
+ let [t, n, r] = e, i = document.documentElement, a = `${t} ${n} ${r}`, o = `rgb(${t},${n},${r})`;
827
+ i.style.setProperty("--color-primary", a), i.style.setProperty("--el-color-primary", o);
828
+ for (let e = 1; e <= 10; e++) i.style.setProperty(`--el-color-primary-light-${e}`, Se(e, {
829
+ r: t,
830
+ g: n,
831
+ b: r
832
+ })), i.style.setProperty(`--el-color-primary-dark-${e}`, Se(e, {
833
+ r: t,
834
+ g: n,
835
+ b: r
836
+ }, {
837
+ r: 0,
838
+ g: 0,
839
+ b: 0
840
+ }));
1085
841
  }
1086
- function XA(n, s) {
1087
- if (n && (document.title = n), s) {
1088
- let t = document.querySelector("link[rel='icon']");
1089
- t || (t = document.createElement("link"), t.setAttribute("rel", "icon"), document.head.appendChild(t));
1090
- const A = s.startsWith("http") ? s : `${window.location.origin}${s}`;
1091
- t.setAttribute("href", `${A}?v=${Date.now()}`);
1092
- }
842
+ function ye(e, t) {
843
+ if (e && (document.title = e), t) {
844
+ let e = document.querySelector("link[rel='icon']");
845
+ e || (e = document.createElement("link"), e.setAttribute("rel", "icon"), document.head.appendChild(e));
846
+ let n = t.startsWith("http") ? t : `${window.location.origin}${t}`;
847
+ e.setAttribute("href", `${n}?v=${Date.now()}`);
848
+ }
1093
849
  }
1094
- function _A(n, s, t) {
1095
- const A = Math.round(s.r + (n.r - s.r) * t), e = Math.round(s.g + (n.g - s.g) * t), o = Math.round(s.b + (n.b - s.b) * t);
1096
- return { r: A, g: e, b: o };
850
+ function be(e, t, n) {
851
+ return {
852
+ r: Math.round(t.r + (e.r - t.r) * n),
853
+ g: Math.round(t.g + (e.g - t.g) * n),
854
+ b: Math.round(t.b + (e.b - t.b) * n)
855
+ };
1097
856
  }
1098
- function $A({ r: n, g: s, b: t }, A = 1) {
1099
- return `rgba(${n}, ${s}, ${t}, ${A})`;
857
+ function xe({ r: e, g: t, b: n }, r = 1) {
858
+ return `rgba(${e}, ${t}, ${n}, ${r})`;
1100
859
  }
1101
- function QA(n, s, t = { r: 255, g: 255, b: 255 }) {
1102
- const A = n / 10, e = _A(t, s, A);
1103
- return $A(e);
860
+ function Se(e, t, n = {
861
+ r: 255,
862
+ g: 255,
863
+ b: 255
864
+ }) {
865
+ return xe(be(n, t, e / 10));
1104
866
  }
1105
- const At = (n) => {
1106
- const s = {
1107
- minLength: 8,
1108
- lowercase: 1,
1109
- uppercase: 1,
1110
- numbers: 1,
1111
- symbols: 1,
1112
- ...n
1113
- }, t = {
1114
- lowercase: { reg: /[a-z]/g, msg: "小写字母" },
1115
- uppercase: { reg: /[A-Z]/g, msg: "大写字母" },
1116
- numbers: { reg: /[0-9]/g, msg: "数字" },
1117
- symbols: { reg: /[^a-zA-Z0-9]/g, msg: "特殊符号" }
1118
- };
1119
- return (A, e, o) => {
1120
- if (!e)
1121
- return o(new Error("请输入密码"));
1122
- if (e.length < s.minLength)
1123
- return o(new Error(`密码至少 ${s.minLength} 位`));
1124
- for (const i in t)
1125
- if ((e.match(t[i].reg) || []).length < s[i])
1126
- return o(
1127
- new Error(
1128
- `密码至少包含 ${s[i]} 个${t[i].msg}`
1129
- )
1130
- );
1131
- o();
1132
- };
1133
- }, tt = "data:image/png;base64,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", et = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAACMBAMAAACXNbjzAAAALVBMVEUAAAD/UwP/UwL/sQD/swD/UwP/sQD/fwD/VQL/VQX/UwP/sQD/tAD/VAP/sgAfmwAtAAAADXRSTlMAgMDAQECAG2AwkGAwlb+ALgAAAJlJREFUaN7t2qENwlAUheEbAmlKMAgWqKqvxJIwAWED9mUALLIzYO8zTzwBpP2+BX59khNzIbLdq80zKgQFBQUFBQUFBQUFlxkEAADWpru0uUbW37J7VGznNu/INuXQERQUFBQUFBQUFBT8dfAwtTlHth+yMQAAgEV6FCLrjm1O/3XCEhQUFBQUFBQUFBT8RnAqRNYPbcao+ACnVSVbBE+/CAAAAABJRU5ErkJggg==", ot = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsHCAkIBwsJCQkMCwsNEBoREA8PECAXGBMaJiIoKCYiJSQqMD0zKi05LiQlNUg1OT9BREVEKTNLUEpCTz1DREH/2wBDAQsMDBAOEB8RER9BLCUsQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUH/wgARCAQ4B4ADAREAAhEBAxEB/8QAGwABAQEAAwEBAAAAAAAAAAAAAAECAwQFBgf/xAAbAQEBAAMBAQEAAAAAAAAAAAAAAQIDBAUGB//aAAwDAQACEAMQAAAAvxf6CAAAAAAAAAAAAABQAAAAAAAAAEAAAAAAAAAAAAAAAAAKAAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAWgAAAAAQAAAAAAAKAAAAAAAAAFAAAAAAAAAAAAAAAAAAADWOIAAAAAAAAAAAFAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAgAAAAAAAAAAAAAAAABAAAAABaAAAAABAAAAAAAFAAAAAAAAACgAAAAAAAAAAAAAAAAAANY4gAAAAAAAAACgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAQAAAAAAAAAAAAAAAAEAAAAAtAAAAAAgAAAAAACgAAAAAAAABQAAAAAAAAAAAAAAAAAA1jiAAAAAAAABQAAAAAAEAAAAAAAAAAAQKAAAAAAAAQCgAAAAAAAAAACgAAAAACAAAAAAAAAAAAAAAAgAAAAAtAAAAAEAAAAAAAUAAAAAAAAAKAAAAAAAAAAAAAAAAAA1jiAAAAAAAKAAAAAAEAAAAAAAACKAAAAAAAAAAAAAAAAAAQUAAAAAAAACgAAAAAQAAAAAAAAAAAAAAAgAAAAAtAAAAAEAAAAAACgAAAAAAAABQAAAAAAAAAAAAAAAAA1jiAAAAAAKAAAAAAgAAAAAACKAAAAAAAAAAAAAAAAAAAAAAAAQUAAAAAAAUAAAAACAAAAAAAAAAAAAAAgAAAAFoAAAAAgAAAAAACgAAAAAAAAKAAAAAAAAAAAAAAAAA1jiAAAABQAAAAAEAAAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAACCgAAAAAAUAAAACAAAAAAAAAAAAAAEAAAAAtAAAAAEAAAAAAAUAAAAAAAABQAAAAAAAAAAAAAAAA1jiAAABQAAAAAgAAAAARQAAAAAAAAAAAEAAAAAAAAAKAAAAAAAAAAAIKAAAAABQAAAAIAAAAAAAAAAAAAAQAAAAC0AAAAAQAAAAAAKAAAAAAAAAoAAAAAAAAAAAAAAADWOIAAoAAAAAQAAAAAWAAAAAAAAACAAAAAAAAAAAAAAAAAAFAAAAAAAAAlAAAAAAoAAAAEAAAAAAAAAAAAAIAAAABaAAAAAIAAAAAAFAAAAAAAAAUAAAAAAAAAAAAAAANY4gCgAAAAIAAAAAigAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAQUAAAAAUAAAAQAAAAAAAAAAAAAgAAAAFoAAAAEAAAAAACgAAAAAAAAKAAAAAAAAAAAAAAA1jiKAAAAAgAAAARQAAAAAAEAAAAAAAAAAAAoAAABAAAAAAAAAAAAAoAAAAAAgoAAAAFAAAAEAAAAAAAAAAAABAAAAALQAAAAIAAAAAAFAAAAAAAAAUAAAAAAAAAAAAAAN44gAAAAgAAACKAAAAAAEAAAAAAAAoAAAAAAAAAAAAAAABAAAAAAAAAoAAAAAEFAAAAFAAAAEAAAAAAAAAAAABAAAABaAAAABAAAAAAAoAAAAAAAACgAAAAAAAAAAAAAN44gAAEAAAAFgAAAAAEAAAAAAAoAAAAAAAAAAAAAAAAAAAAABAAAAAAAAoAAAAAlAAAAAoAAAEAAAAAAAAAAAAIAAAALQAAAAIAAAAAAFAAAAAAAAAUAAAAAAAAAAAAAN44gAEAAAARQAAAAAgAAAAAFAAAAAAAAAAAgAAAABQAAAAAAAAAAgAAAAAAUAAAACCgAAACgAAAQAAAAAAAAAAAEAAAAAtAAAAAgAAAAACgAAAAAAAAKAAAAAAAAAAAAA3jiAQAAACwAAAAAQAAAACgAAAAAAAQAAAAAAAAAAAAAAAAoAAAAAAAQAAAAAKAAAAIKAAAAKAAAIAAAAAAAAAAAAQAAAAWgAAAAQAAAAABQAAAAAAAAFAAAAAAAAAAAADeOJAAAALAAAAAIAAAABQAAAAAIAAAAAAAAAAAAAAAAAAAAAAAUAAAAAIAAAAAFAAAAEoAAAAoAAAgAAAAAAAAAAAIAAAALQAAAAIAAAAAAoAAAAAAAAUAAAAAAAAAAAAN44AAACwAAAACAAAAUAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAACAAAABQAAABKAAAAKAAAIAAAAAAAAAAAQAAAAWgAAAAQAAAAABQAAAAAAAAFAAAAAAAAAAADeOAAAsAAAAEAAAAoAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAEAAAACgAAASgAAAUAAAQAAAAAAAAAAAgAAAAtAAAAAgAAAAACgAAAAAAABQAAAAAAAAAAA3jgALAAAABAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAIAAAAoAAAEoAAAFAAAEAAAAAAAAAAAIAAABaAAAABAAAAAAFAAAAAAAACgAAAAAAAAAAN44CwAAAAQAAAUAAAAQAAAAAAAAAAAKEKAAAAAAAAAAAAQsAAAAAAAAAAAAoAAAAQAAABQAABKAAABQAAIAAAAAAAAAAAQAAAAWgAAACAAAAAAKAAAAAAAAFAAAAAAAAAADeGFAAACAAACgAAACAAAAAAAAABQhQAAAAAAAAAAAAAAAAAAAIAAAAAAAAABQAAAEAAAAUAAASgAACgAACAAAAAAAAAAAgAAAAtAAAAEAAAAAAUAAAAAAAAKAAAAAAAAAA5MMAAAQAAAUAAACAAAAAAAABQAAAAAAAAAAEAAAAKAAAAAAAAAAIAAAAAAAABQAAAgAAACgAAQUAAAUAACAAAAAAAAAAAgAAAFFAAAAEAAAAAAUAAAAAAAAKAAAAAAAAAHJhgACAAACgAACAAAAAAAAKAAAAAAAgAAQAAAAAAAAAAoAAFAAAAAAEAAAAAAAAFAAACAAABQAAIKAAAKAABAAAAAAAAAACAAAoqBQAAABAAAAAAoAAAAAAAAUAAAAAAAAAOTDAAgAAoAAAEAAAAAAACgAAAABAAgAAAAAAAAAAAAAAAAABQAKAAAABAAAAAAAAKAAAEAAAUAAASgAACgAAQAAAAAAAAAAgKAASgUAAAAQAAAAAKAAAAAAAAFAAAAAAAAAcmGBAABQAAAIAAAAAAFAAAAACBAAAAAAAAAAAAAAAAAAAAAAAACgUAAAACAAAAAAAUAAAIAAAoAAEFAAAFAAEAAAAAAAAAFIAAAlAFAAAAEAAAAACgAAAAAAABQAAAAAAAA5MNYAAoAAEAAAAAACgAAAAIEAAAAAACgAAAAAAAAAAAAAAgAAAAAAoFAAAAEA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glAioBRFCACoihBRAAqIFAQAAAAAAAAogFRQBKALBUUAFgqAEVQgVUAAWAloEFoEAtgBBaBAqhAARQFRQBBQEUBUAUCBQBKAAgFoAgUACAUUCAACgIAFAEoUqKAioAgWAAAAlAIAWgAACAHo83IglARFALIBQJBQCyChAKBBKBJQCxQgAqIoQUQALIKAgAAFgAACUAAAUQEtACoAsFRQAWEoCC0CKoQALAS0CAWiAEtAgoogVQgAIoAloAgoCKAoQKBAFAlAAQC0AQKABAKKBAABQEACgCUABS2RQgCKIAAAKgAgLQAABAD0eXkBKBJQES1AKBJQAWShABRBKBFQCiKEAqCwCUQALIKAgAFggAAAABZQABRAS0AKgUShFAEUSgIqhAqoAAsJaAILRAAssKILQIoVAAQKBLQBBQEChQgUCAKBKAAgFoAEUACAUUCAACgIAFAEoAFAILSBAsApAACoAIWgAACAHo8vIKgCSgFggFAkoBZBQgAoglAkoBYoQAVEUJQIAsgoQACwQACgAEAACygACwEtACoFEqKACwlAQWiBVQABYCWgQWiAEtAEFoEUKgABFAlFAgFARQoQBRAFAEoAQBVACKABABaBAABQEACgCCgCgCFCUgUQUEAASgEBaAABAD0eXkJQBJQCiQUASUAsgoQCiBUCKgFEUIBURQgogCoihABRIAKAAAAAQAC2AALBUUBUAWCooAiqgBFUIoVAAsBLQIBaIAS0CC0CBVQAAigSigQCgIoUIAogCgCUABAqgBFAAgAtAgAAoCAAKBBQBQBAACggFBAAlABC0AACAHo8vISgIigFkAoEgoBZKAgFEEoEVALFCACpYBKIAJYoQAWCAUAsEAAALKAgAWUACwVFAVAolRQAWEoCC0QKqABRCWgQC0QAloEFFECqEABFAVFAgFARQFQBRAFAEoACBVACKABABaBAABQEAAUASgCgCAAAACggACUACgAAQA9Hl5CUCSgAsgFAkoALJQgAoglAkoKIoQCoihBRAFkFCAWCCgFggAAAABZQEAWUAWAloCoAsFRQCwVAQWiBVQABYKigQWiAEVQEFogVQgAIoCooAgoCKAqAKBAoAlAAQKoAQKAIALQIAABQgACgCUACgCAAAACkAAKgAUAACAHo8vISgSUBC2QCgSUAsgoQCgRUCKgFEVABURQlEAVEUIBR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", p = {
1134
- LOGIN: 0,
1135
- REGISTER: 1,
1136
- WECHAT: 2,
1137
- WECHAT_SCAN: 3
1138
- }, st = {
1139
- title: "AIGC实训平台",
1140
- favicon: et,
1141
- loginBackground: ot,
1142
- layout: "default",
1143
- skipBind: "0",
1144
- nb: "0",
1145
- hf: "0",
1146
- cf: `
1147
- <div style="font-size:14px;color:white;">
1148
- <a
1149
- href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31010702009439"
1150
- target="_blank"
1151
- style="text-decoration: none;color:white;"
1152
- >
1153
- 沪公网安备 31010702009439 号
1154
- </a>
1155
- |
1156
- <a href="https://beian.miit.gov.cn/" style="text-decoration: none;color:white;">沪ICP备2020031101号-3</a>
1157
- | © 2025 晶程甲宇科技(上海)有限公司 版权所有
1158
- </div>
1159
- `
1160
- }, it = ["id", "type", "value", "placeholder", "autocomplete"], z = /* @__PURE__ */ H({
1161
- __name: "ag-input",
1162
- props: {
1163
- modelValue: {},
1164
- type: { default: "text" },
1165
- id: { default: "" },
1166
- placeholder: { default: "" },
1167
- autocomplete: { default: "" }
1168
- },
1169
- emits: ["update:modelValue"],
1170
- setup(n, { emit: s }) {
1171
- const t = s, A = b(!1);
1172
- function e(a) {
1173
- return a.replace(/\s+/g, "");
1174
- }
1175
- function o(a) {
1176
- const l = a.target;
1177
- if (A.value) {
1178
- t("update:modelValue", l.value);
1179
- return;
1180
- }
1181
- const r = e(l.value);
1182
- r !== l.value && (l.value = r), t("update:modelValue", r);
1183
- }
1184
- function i(a) {
1185
- A.value = !1;
1186
- const l = a.target, r = e(l.value);
1187
- r !== l.value && (l.value = r), t("update:modelValue", r);
1188
- }
1189
- return (a, l) => (U(), F("input", FA({
1190
- id: n.id,
1191
- type: n.type,
1192
- value: n.modelValue,
1193
- placeholder: n.placeholder,
1194
- autocomplete: n.autocomplete
1195
- }, a.$attrs, {
1196
- onInput: o,
1197
- onCompositionstart: l[0] || (l[0] = (r) => A.value = !0),
1198
- onCompositionend: i
1199
- }), null, 16, it));
1200
- }
1201
- }), nt = {
1202
- key: 0,
1203
- class: "ag-login__title-row"
1204
- }, at = ["src"], lt = { class: "ag-login__title" }, gt = { class: "ag-login__field" }, rt = {
1205
- key: 0,
1206
- class: "ag-login__error"
1207
- }, Ct = { class: "ag-login__field" }, ct = {
1208
- key: 0,
1209
- class: "ag-login__error"
1210
- }, ut = {
1211
- class: "ag-login__button ag-login__button--primary",
1212
- type: "submit"
1213
- }, Qt = { class: "ag-login__actions" }, Bt = /* @__PURE__ */ H({
1214
- __name: "login-form",
1215
- props: {
1216
- confirmText: {},
1217
- hideLoginMethods: { type: Boolean }
1218
- },
1219
- emits: ["toggle", "submit"],
1220
- setup(n, { emit: s }) {
1221
- const t = P("contextProps"), A = s, e = n, o = b({
1222
- email: "",
1223
- password: ""
1224
- }), i = b({
1225
- email: "",
1226
- password: ""
1227
- });
1228
- function a() {
1229
- return i.value.email = o.value.email ? "" : "请输入账号", i.value.password = o.value.password ? "" : "请输入密码", !i.value.email && !i.value.password;
1230
- }
1231
- function l() {
1232
- a() && A("submit", EA(o.value));
1233
- }
1234
- function r(c) {
1235
- A("toggle", c);
1236
- }
1237
- return (c, g) => (U(), F("form", {
1238
- class: "ag-login",
1239
- onSubmit: X(l, ["prevent"]),
1240
- onKeydown: nA(l, ["enter"])
1241
- }, [
1242
- k(t).config?.favicon || k(t).config?.title ? (U(), F("div", nt, [
1243
- k(t).config.favicon ? (U(), F("img", {
1244
- key: 0,
1245
- src: k(t).config.favicon,
1246
- class: "ag-login__logo"
1247
- }, null, 8, at)) : w("", !0),
1248
- C("b", lt, D(k(t).config.title), 1)
1249
- ])) : w("", !0),
1250
- C("div", gt, [
1251
- g[4] || (g[4] = C("label", {
1252
- class: "ag-login__label",
1253
- for: "login-email"
1254
- }, [
1255
- O(" 账号 "),
1256
- C("span", {
1257
- class: "ag-login__required",
1258
- "aria-hidden": "true"
1259
- }, "*")
1260
- ], -1)),
1261
- Z(z, {
1262
- id: "login-email",
1263
- modelValue: o.value.email,
1264
- "onUpdate:modelValue": g[0] || (g[0] = (u) => o.value.email = u),
1265
- name: "username",
1266
- autocomplete: "username",
1267
- class: "ag-login__input",
1268
- placeholder: "请输入账号",
1269
- type: "text"
1270
- }, null, 8, ["modelValue"]),
1271
- i.value.email ? (U(), F("p", rt, D(i.value.email), 1)) : w("", !0)
1272
- ]),
1273
- C("div", Ct, [
1274
- g[5] || (g[5] = C("label", {
1275
- class: "ag-login__label",
1276
- for: "login-password"
1277
- }, [
1278
- O(" 密码 "),
1279
- C("span", {
1280
- class: "ag-login__required",
1281
- "aria-hidden": "true"
1282
- }, "*")
1283
- ], -1)),
1284
- Z(z, {
1285
- id: "login-password",
1286
- modelValue: o.value.password,
1287
- "onUpdate:modelValue": g[1] || (g[1] = (u) => o.value.password = u),
1288
- class: "ag-login__input",
1289
- placeholder: "请输入密码",
1290
- type: "password",
1291
- name: "password",
1292
- autocomplete: "current-password"
1293
- }, null, 8, ["modelValue"]),
1294
- i.value.password ? (U(), F("p", ct, D(i.value.password), 1)) : w("", !0)
1295
- ]),
1296
- C("button", ut, D(e.confirmText || "登 录"), 1),
1297
- C("div", Qt, [
1298
- C("button", {
1299
- class: "ag-login__link",
1300
- type: "button",
1301
- onClick: g[2] || (g[2] = (u) => r(k(p).REGISTER))
1302
- }, " 注册账号 "),
1303
- e.hideLoginMethods ? w("", !0) : (U(), F(fA, { key: 0 }, [
1304
- g[7] || (g[7] = C("div", { class: "ag-login__divider" }, [
1305
- C("span", { class: "ag-login__divider-text" }, "其他登录方式")
1306
- ], -1)),
1307
- C("button", {
1308
- class: "ag-login__wechat-button",
1309
- type: "button",
1310
- onClick: g[3] || (g[3] = (u) => r(k(p).WECHAT_SCAN))
1311
- }, [...g[6] || (g[6] = [
1312
- C("img", {
1313
- src: tt,
1314
- alt: "wechat",
1315
- class: "ag-login__wechat-icon"
1316
- }, null, -1)
1317
- ])])
1318
- ], 64))
1319
- ])
1320
- ], 32));
1321
- }
1322
- }), G = (n, s) => {
1323
- const t = n.__vccOpts || n;
1324
- for (const [A, e] of s)
1325
- t[A] = e;
1326
- return t;
1327
- }, UA = /* @__PURE__ */ G(Bt, [["__scopeId", "data-v-b7fdf81d"]]), ht = { class: "ag-bind-dialog__fullscreen" }, Et = { class: "ag-bind-dialog__content" }, dt = { class: "ag-bind-dialog__card" }, Ut = { class: "ag-bind-dialog__field" }, mt = {
1328
- key: 0,
1329
- class: "ag-bind-dialog__error"
1330
- }, Ft = { class: "ag-bind-dialog__field" }, ft = {
1331
- key: 0,
1332
- class: "ag-bind-dialog__error"
1333
- }, It = { class: "ag-bind-dialog__field" }, Kt = {
1334
- key: 0,
1335
- class: "ag-bind-dialog__error"
1336
- }, Lt = /* @__PURE__ */ H({
1337
- __name: "bind-org-dialog",
1338
- emits: ["confirm"],
1339
- setup(n, { expose: s, emit: t }) {
1340
- const A = t, e = b(!1);
1341
- function o() {
1342
- e.value = !0;
1343
- }
1344
- function i() {
1345
- e.value = !1;
1346
- }
1347
- const a = b({
1348
- orgName: "",
1349
- name: "",
1350
- code: ""
1351
- }), l = b({
1352
- orgName: "",
1353
- name: "",
1354
- code: ""
1355
- });
1356
- function r() {
1357
- return l.value.orgName = a.value.orgName ? "" : "请输入学校", l.value.name = a.value.name ? "" : "请输入姓名", l.value.code = a.value.code ? "" : "请输入学号/工号", !l.value.orgName && !l.value.name && !l.value.code;
1358
- }
1359
- function c() {
1360
- i();
1361
- }
1362
- function g() {
1363
- r() && (c(), A("confirm", a.value));
1364
- }
1365
- return s({
1366
- open: o,
1367
- close: i
1368
- }), (u, B) => (U(), q(_, { name: "ag-bind-dialog-fade" }, {
1369
- default: $(() => [
1370
- e.value ? (U(), F("div", {
1371
- key: 0,
1372
- class: "ag-bind-dialog",
1373
- onClick: X(c, ["self"])
1374
- }, [
1375
- C("div", ht, [
1376
- C("div", Et, [
1377
- B[7] || (B[7] = C("div", { class: "ag-bind-dialog__header" }, [
1378
- C("div", { class: "ag-bind-dialog__title" }, "验证身份信息"),
1379
- C("div", { class: "ag-bind-dialog__subtitle" }, " 我们需要验证你的身份信息,以便为你提供更好的服务 ")
1380
- ], -1)),
1381
- C("div", dt, [
1382
- C("form", {
1383
- class: "ag-bind-dialog__form",
1384
- onSubmit: X(g, ["prevent"]),
1385
- onKeydown: nA(g, ["enter"])
1386
- }, [
1387
- C("div", Ut, [
1388
- B[3] || (B[3] = C("label", {
1389
- class: "ag-bind-dialog__label",
1390
- for: "org-name"
1391
- }, [
1392
- O(" 学校 "),
1393
- C("span", {
1394
- class: "ag-bind-dialog__required",
1395
- "aria-hidden": "true"
1396
- }, "*")
1397
- ], -1)),
1398
- Z(z, {
1399
- id: "org-name",
1400
- modelValue: a.value.orgName,
1401
- "onUpdate:modelValue": B[0] || (B[0] = (Q) => a.value.orgName = Q),
1402
- class: "ag-bind-dialog__input",
1403
- placeholder: "请输入学校"
1404
- }, null, 8, ["modelValue"]),
1405
- l.value.orgName ? (U(), F("p", mt, D(l.value.orgName), 1)) : w("", !0)
1406
- ]),
1407
- C("div", Ft, [
1408
- B[4] || (B[4] = C("label", {
1409
- class: "ag-bind-dialog__label",
1410
- for: "real-name"
1411
- }, [
1412
- O(" 姓名 "),
1413
- C("span", {
1414
- class: "ag-bind-dialog__required",
1415
- "aria-hidden": "true"
1416
- }, "*")
1417
- ], -1)),
1418
- Z(z, {
1419
- id: "real-name",
1420
- modelValue: a.value.name,
1421
- "onUpdate:modelValue": B[1] || (B[1] = (Q) => a.value.name = Q),
1422
- class: "ag-bind-dialog__input",
1423
- placeholder: "请输入姓名"
1424
- }, null, 8, ["modelValue"]),
1425
- l.value.name ? (U(), F("p", ft, D(l.value.name), 1)) : w("", !0)
1426
- ]),
1427
- C("div", It, [
1428
- B[5] || (B[5] = C("label", {
1429
- class: "ag-bind-dialog__label",
1430
- for: "code"
1431
- }, [
1432
- O(" 学号/工号 "),
1433
- C("span", {
1434
- class: "ag-bind-dialog__required",
1435
- "aria-hidden": "true"
1436
- }, "*")
1437
- ], -1)),
1438
- Z(z, {
1439
- id: "code",
1440
- modelValue: a.value.code,
1441
- "onUpdate:modelValue": B[2] || (B[2] = (Q) => a.value.code = Q),
1442
- class: "ag-bind-dialog__input",
1443
- placeholder: "请输入学号/工号"
1444
- }, null, 8, ["modelValue"]),
1445
- l.value.code ? (U(), F("p", Kt, D(l.value.code), 1)) : w("", !0)
1446
- ]),
1447
- B[6] || (B[6] = C("button", {
1448
- class: "ag-bind-dialog__button ag-bind-dialog__button--primary",
1449
- type: "submit"
1450
- }, " 验证 ", -1)),
1451
- C("button", {
1452
- class: "ag-bind-dialog__button ag-bind-dialog__button--outline",
1453
- type: "button",
1454
- onClick: c
1455
- }, " 返回 ")
1456
- ], 32)
1457
- ])
1458
- ])
1459
- ])
1460
- ])) : w("", !0)
1461
- ]),
1462
- _: 1
1463
- }));
1464
- }
1465
- }), yt = /* @__PURE__ */ G(Lt, [["__scopeId", "data-v-86b1cc6a"]]), wt = { class: "ag-register__field" }, St = {
1466
- key: 0,
1467
- class: "ag-register__error"
1468
- }, pt = { class: "ag-register__field" }, bt = {
1469
- key: 0,
1470
- class: "ag-register__error"
1471
- }, kt = { class: "ag-register__field" }, Wt = {
1472
- key: 0,
1473
- class: "ag-register__error"
1474
- }, Rt = {
1475
- class: "ag-register__button ag-register__button--primary",
1476
- type: "submit"
1477
- }, Zt = /* @__PURE__ */ H({
1478
- __name: "register-form",
1479
- props: {
1480
- confirmText: {}
1481
- },
1482
- emits: ["back", "submit"],
1483
- setup(n, { emit: s }) {
1484
- const t = P("contextProps"), A = s, e = n, o = b({
1485
- email: "",
1486
- password: "",
1487
- password2: ""
1488
- });
1489
- IA(() => [o.value.password, o.value.password2], l, {
1490
- deep: !0
1491
- });
1492
- const i = b({
1493
- email: "",
1494
- password: "",
1495
- password2: ""
1496
- }), a = At();
1497
- function l() {
1498
- return i.value.email = "", i.value.password = "", i.value.password2 = "", o.value.email || (i.value.email = "请输入账号"), o.value.password ? t?.strictRegister && a(null, o.value.password, (c) => {
1499
- c && (i.value.password = c.message);
1500
- }) : i.value.password = "请输入密码", o.value.password2 ? o.value.password2 !== o.value.password && (i.value.password2 = "两次输入密码不一致") : i.value.password2 = "请再次输入密码", !i.value.email && !i.value.password && !i.value.password2;
1501
- }
1502
- function r() {
1503
- l() && A("submit", EA(o.value));
1504
- }
1505
- return (c, g) => (U(), F("form", {
1506
- class: "ag-register",
1507
- onSubmit: X(r, ["prevent"]),
1508
- onKeydown: nA(r, ["enter"])
1509
- }, [
1510
- g[7] || (g[7] = C("div", { class: "ag-register__heading" }, "注册账号", -1)),
1511
- C("div", wt, [
1512
- g[4] || (g[4] = C("label", {
1513
- class: "ag-register__label",
1514
- for: "reg-email"
1515
- }, [
1516
- O(" 账号 "),
1517
- C("span", {
1518
- class: "ag-register__required",
1519
- "aria-hidden": "true"
1520
- }, "*")
1521
- ], -1)),
1522
- Z(z, {
1523
- id: "reg-email",
1524
- modelValue: o.value.email,
1525
- "onUpdate:modelValue": g[0] || (g[0] = (u) => o.value.email = u),
1526
- class: "ag-register__input",
1527
- placeholder: "请输入账号",
1528
- type: "text"
1529
- }, null, 8, ["modelValue"]),
1530
- i.value.email ? (U(), F("p", St, D(i.value.email), 1)) : w("", !0)
1531
- ]),
1532
- C("div", pt, [
1533
- g[5] || (g[5] = C("label", {
1534
- class: "ag-register__label",
1535
- for: "reg-password"
1536
- }, [
1537
- O(" 密码 "),
1538
- C("span", {
1539
- class: "ag-register__required",
1540
- "aria-hidden": "true"
1541
- }, "*")
1542
- ], -1)),
1543
- Z(z, {
1544
- id: "reg-password",
1545
- modelValue: o.value.password,
1546
- "onUpdate:modelValue": g[1] || (g[1] = (u) => o.value.password = u),
1547
- class: "ag-register__input",
1548
- placeholder: "请输入密码",
1549
- autocomplete: "new-password",
1550
- type: "password"
1551
- }, null, 8, ["modelValue"]),
1552
- i.value.password ? (U(), F("p", bt, D(i.value.password), 1)) : w("", !0)
1553
- ]),
1554
- C("div", kt, [
1555
- g[6] || (g[6] = C("label", {
1556
- class: "ag-register__label",
1557
- for: "reg-password2"
1558
- }, [
1559
- O(" 再次输入密码 "),
1560
- C("span", {
1561
- class: "ag-register__required",
1562
- "aria-hidden": "true"
1563
- }, "*")
1564
- ], -1)),
1565
- Z(z, {
1566
- id: "reg-password2",
1567
- modelValue: o.value.password2,
1568
- "onUpdate:modelValue": g[2] || (g[2] = (u) => o.value.password2 = u),
1569
- class: "ag-register__input",
1570
- placeholder: "请再次输入密码",
1571
- autocomplete: "new-password",
1572
- type: "password"
1573
- }, null, 8, ["modelValue"]),
1574
- i.value.password2 ? (U(), F("p", Wt, D(i.value.password2), 1)) : w("", !0)
1575
- ]),
1576
- C("button", Rt, D(e.confirmText || "注 册"), 1),
1577
- C("button", {
1578
- class: "ag-register__button ag-register__button--outline",
1579
- type: "button",
1580
- onClick: g[3] || (g[3] = (u) => A("back"))
1581
- }, " 返 回 ")
1582
- ], 32));
1583
- }
1584
- }), mA = /* @__PURE__ */ G(Zt, [["__scopeId", "data-v-834ee773"]]), vt = { class: "ag-wechat-bind" }, Jt = { class: "ag-wechat-bind__profile" }, xt = ["src"], Dt = {
1585
- key: 1,
1586
- class: "ag-wechat-bind__avatar ag-wechat-bind__avatar--placeholder"
1587
- }, jt = { class: "ag-wechat-bind__nickname" }, Mt = /* @__PURE__ */ H({
1588
- __name: "wechat-form",
1589
- props: {
1590
- info: {}
1591
- },
1592
- emits: ["back"],
1593
- setup(n, { emit: s }) {
1594
- const t = P("_login"), A = P("_register"), e = n, o = s, i = b(p.LOGIN);
1595
- function a(c) {
1596
- i.value = c;
1597
- }
1598
- function l(c) {
1599
- t(
1600
- {
1601
- ...c,
1602
- weChatOpenId: e.info.openid
1603
- },
1604
- "normal"
1605
- );
1606
- }
1607
- function r(c) {
1608
- A({
1609
- ...c,
1610
- weChatOpenId: e.info.openid
1611
- });
1612
- }
1613
- return (c, g) => (U(), F("div", vt, [
1614
- C("button", {
1615
- class: "ag-wechat-bind__back",
1616
- type: "button",
1617
- onClick: g[0] || (g[0] = (u) => o("back"))
1618
- }, "返 "),
1619
- C("div", Jt, [
1620
- e.info?.headimgurl ? (U(), F("img", {
1621
- key: 0,
1622
- src: e.info?.headimgurl,
1623
- class: "ag-wechat-bind__avatar"
1624
- }, null, 8, xt)) : (U(), F("div", Dt)),
1625
- C("div", jt, D(e.info?.nickname), 1),
1626
- g[2] || (g[2] = C("div", { class: "ag-wechat-bind__tips" }, [
1627
- C("div", null, "已有账号?输入账号信息登录立即绑定"),
1628
- C("div", { class: "ag-wechat-bind__tips-highlight" }, "如没有账号,注册后登录即绑定")
1629
- ], -1))
1630
- ]),
1631
- Z(_, {
1632
- name: "ag-gateway-zoom",
1633
- mode: "out-in"
1634
- }, {
1635
- default: $(() => [
1636
- i.value === k(p).LOGIN ? (U(), q(UA, {
1637
- key: 0,
1638
- class: "ag-wechat-bind__side-panel",
1639
- hideLoginMethods: "",
1640
- confirmText: "登录并绑定",
1641
- onToggle: a,
1642
- onSubmit: l
1643
- })) : i.value === k(p).REGISTER ? (U(), q(mA, {
1644
- key: 1,
1645
- class: "ag-wechat-bind__side-panel",
1646
- confirmText: "注册并绑定",
1647
- onBack: g[1] || (g[1] = (u) => a(k(p).LOGIN)),
1648
- onSubmit: r
1649
- })) : w("", !0)
1650
- ]),
1651
- _: 1
1652
- })
1653
- ]));
1654
- }
1655
- }), Ot = /* @__PURE__ */ G(Mt, [["__scopeId", "data-v-e1ed15b8"]]), zt = { class: "ag-wechat-scan" }, BA = "wx-login-iframe", Vt = /* @__PURE__ */ H({
1656
- __name: "wechat-scan-view",
1657
- emits: ["back", "submit"],
1658
- setup(n, { emit: s }) {
1659
- const t = P("contextProps"), A = s;
1660
- function e() {
1661
- const i = document.createElement("script");
1662
- i.type = "text/javascript", i.src = "https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js";
1663
- const a = document.body.appendChild(i);
1664
- a.onload = () => {
1665
- const l = {
1666
- self_redirect: !0,
1667
- id: BA,
1668
- appid: t?.wechatConfig?.appId,
1669
- scope: "snsapi_login",
1670
- redirect_uri: encodeURIComponent(`${t?.wechatConfig?.redirectUrl}`),
1671
- state: "jcjy-common-login-by-wx",
1672
- stylelite: 1,
1673
- fast_login: 0
1674
- };
1675
- new window.WxLogin(l), window.addEventListener("message", o);
1676
- };
1677
- }
1678
- function o(i) {
1679
- i.data.type === "router_data" && (A("submit", {
1680
- weChatCode: i.data.data.query?.code
1681
- }), window.removeEventListener("message", o));
1682
- }
1683
- return KA(() => {
1684
- window.removeEventListener("message", o);
1685
- }), e(), (i, a) => (U(), F("div", zt, [
1686
- C("div", {
1687
- id: BA,
1688
- class: "ag-wechat-scan__qr"
1689
- }),
1690
- a[1] || (a[1] = C("b", { class: "ag-wechat-scan__title" }, "请使用微信扫码登录", -1)),
1691
- C("button", {
1692
- class: "ag-wechat-scan__back",
1693
- type: "button",
1694
- onClick: a[0] || (a[0] = (l) => A("back"))
1695
- }, "返 回")
1696
- ]));
1697
- }
1698
- }), Nt = /* @__PURE__ */ G(Vt, [["__scopeId", "data-v-9d254e37"]]), Ht = {
1699
- key: 0,
1700
- class: "ag-gateway__card-shell"
1701
- }, Yt = {
1702
- key: 0,
1703
- class: "ag-gateway__loading"
1704
- }, Pt = {
1705
- key: 0,
1706
- class: "ag-gateway__card ag-gateway__card--auth"
1707
- }, qt = {
1708
- key: 1,
1709
- class: "ag-gateway__card ag-gateway__card--auth"
1710
- }, Tt = ["innerHTML"], Gt = /* @__PURE__ */ H({
1711
- __name: "index",
1712
- props: {
1713
- config: {},
1714
- strictRegister: { type: Boolean, default: !1 },
1715
- binding: {},
1716
- register: {},
1717
- login: {},
1718
- wechatConfig: {}
1719
- },
1720
- emits: ["success"],
1721
- setup(n, { emit: s }) {
1722
- const t = s, A = n, e = N(() => ({
1723
- ...st,
1724
- ...A.config
1725
- })), o = b(), i = b(p.LOGIN), a = b(!1), l = N(() => `ag-gateway--${e.value.layout || "default"}`), r = N(() => {
1726
- const { nb: h } = e.value;
1727
- return +(h || 0) != 1;
1728
- }), c = N(() => {
1729
- const { loginBackground: h } = e.value;
1730
- return r.value ? {
1731
- background: `url('${h}') no-repeat center/100% 100%`
1732
- } : {};
1733
- }), g = N(() => e.value.skipBind === "0"), u = N(() => !!e.value.hideWx);
1734
- async function B() {
1735
- try {
1736
- const { loginBackground: h, favicon: K, title: S } = e.value;
1737
- XA(S, K), h ? await dA(h) : aA([252, 91, 4]), await wA();
1738
- } finally {
1739
- a.value = !0;
1740
- }
1741
- }
1742
- const Q = N(() => +(e.value.hf || 0) == 1 ? "" : e.value.cf);
1743
- function E(h) {
1744
- i.value = h;
1745
- }
1746
- const d = b(), v = b(), f = b(!1), J = b({
1747
- visible: !1,
1748
- message: "",
1749
- type: "success"
1750
- });
1751
- let L = null;
1752
- function W(h, K = "success") {
1753
- L && clearTimeout(L), J.value = {
1754
- visible: !0,
1755
- message: h,
1756
- type: K
1757
- }, L = setTimeout(() => {
1758
- J.value.visible = !1;
1759
- }, 2500);
1760
- }
1761
- async function m(h) {
1762
- f.value = !0;
1763
- try {
1764
- await A.binding(h, {
1765
- token: d.value.token
1766
- }), W("验证成功!", "success"), t("success", d.value);
1767
- } finally {
1768
- f.value = !1;
1769
- }
1770
- }
1771
- async function I(h) {
1772
- try {
1773
- f.value = !0;
1774
- const K = await A.register(h);
1775
- d.value = K, g.value ? (W("注册成功!请验证身份信息", "success"), E(p.LOGIN), o.value.open()) : (W("注册成功!", "success"), t("success", d.value));
1776
- } finally {
1777
- f.value = !1;
1778
- }
1779
- }
1780
- async function y(h, K) {
1781
- try {
1782
- f.value = !0;
1783
- const S = await A.login(h);
1784
- if (K === "wechat" && S.err === 4004) {
1785
- W(S.msg, "error"), v.value = S.weChatUserDetail, i.value = p.WECHAT;
1786
- return;
1787
- }
1788
- d.value = S, !S.type && g.value ? (W("登录成功!请验证身份信息", "success"), o.value.open()) : t("success", d.value);
1789
- } finally {
1790
- f.value = !1;
1791
- }
1792
- }
1793
- function x() {
1794
- v.value = null, E(p.LOGIN);
1795
- }
1796
- return LA(B), tA("contextProps", { ...A, config: e.value }), tA("_login", y), tA("_register", I), (h, K) => (U(), F("div", {
1797
- class: CA(["ag-gateway", l.value]),
1798
- style: yA(c.value)
1799
- }, [
1800
- a.value ? (U(), F("div", Ht, [
1801
- f.value ? (U(), F("div", Yt, [...K[4] || (K[4] = [
1802
- C("div", { class: "ag-gateway__loading-spinner" }, null, -1),
1803
- C("span", null, "请稍候...", -1)
1804
- ])])) : w("", !0),
1805
- Z(_, {
1806
- name: "ag-gateway-zoom",
1807
- mode: "out-in"
1808
- }, {
1809
- default: $(() => [
1810
- i.value === k(p).LOGIN ? (U(), F("div", Pt, [
1811
- Z(UA, {
1812
- key: "login",
1813
- "hide-login-methods": u.value,
1814
- onToggle: E,
1815
- onSubmit: K[0] || (K[0] = (S) => y(S, "normal"))
1816
- }, null, 8, ["hide-login-methods"])
1817
- ])) : i.value === k(p).REGISTER ? (U(), F("div", qt, [
1818
- Z(mA, {
1819
- onBack: K[1] || (K[1] = (S) => E(k(p).LOGIN)),
1820
- onSubmit: I
1821
- })
1822
- ])) : i.value === k(p).WECHAT_SCAN ? (U(), q(Nt, {
1823
- key: 2,
1824
- onBack: K[2] || (K[2] = (S) => E(k(p).LOGIN)),
1825
- onSubmit: K[3] || (K[3] = (S) => y(S, "wechat"))
1826
- })) : i.value === k(p).WECHAT ? (U(), q(Ot, {
1827
- key: 3,
1828
- info: v.value,
1829
- class: "ag-gateway__wechat-panel",
1830
- onBack: x
1831
- }, null, 8, ["info"])) : w("", !0)
1832
- ]),
1833
- _: 1
1834
- })
1835
- ])) : w("", !0),
1836
- C("footer", {
1837
- class: "ag-gateway__footer",
1838
- innerHTML: Q.value
1839
- }, null, 8, Tt),
1840
- Z(yt, {
1841
- ref_key: "bindOrgDialogRef",
1842
- ref: o,
1843
- onConfirm: m
1844
- }, null, 512),
1845
- Z(_, { name: "ag-gateway-toast" }, {
1846
- default: $(() => [
1847
- J.value.visible ? (U(), F("div", {
1848
- key: 0,
1849
- class: CA(["ag-gateway__toast", `ag-gateway__toast--${J.value.type}`])
1850
- }, D(J.value.message), 3)) : w("", !0)
1851
- ]),
1852
- _: 1
1853
- })
1854
- ], 6));
1855
- }
1856
- }), _t = {
1857
- setTheme: aA,
1858
- setThemeByUrl: dA
1859
- }, $t = {
1860
- install(n) {
1861
- n.component("AuthGateway", Gt);
1862
- }
1863
- };
1864
- export {
1865
- Gt as AuthGateway,
1866
- $t as default,
1867
- _t as theme
1868
- };
867
+ var Ce = (e) => {
868
+ let t = {
869
+ minLength: 8,
870
+ lowercase: 1,
871
+ uppercase: 1,
872
+ numbers: 1,
873
+ symbols: 1,
874
+ ...e
875
+ }, n = {
876
+ lowercase: {
877
+ reg: /[a-z]/g,
878
+ msg: "小写字母"
879
+ },
880
+ uppercase: {
881
+ reg: /[A-Z]/g,
882
+ msg: "大写字母"
883
+ },
884
+ numbers: {
885
+ reg: /[0-9]/g,
886
+ msg: "数字"
887
+ },
888
+ symbols: {
889
+ reg: /[^a-zA-Z0-9]/g,
890
+ msg: "特殊符号"
891
+ }
892
+ };
893
+ return (e, r, i) => {
894
+ if (!r) return i(/* @__PURE__ */ Error("请输入密码"));
895
+ if (r.length < t.minLength) return i(/* @__PURE__ */ Error(`密码至少 ${t.minLength} 位`));
896
+ for (let e in n) if ((r.match(n[e].reg) || []).length < t[e]) return i(/* @__PURE__ */ Error(`密码至少包含 ${t[e]} 个${n[e].msg}`));
897
+ i();
898
+ };
899
+ }, we = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAACMBAMAAACXNbjzAAAALVBMVEUAAAD/UwP/UwL/sQD/swD/UwP/sQD/fwD/VQL/VQX/UwP/sQD/tAD/VAP/sgAfmwAtAAAADXRSTlMAgMDAQECAG2AwkGAwlb+ALgAAAJlJREFUaN7t2qENwlAUheEbAmlKMAgWqKqvxJIwAWED9mUALLIzYO8zTzwBpP2+BX59khNzIbLdq80zKgQFBQUFBQUFBQUFlxkEAADWpru0uUbW37J7VGznNu/INuXQERQUFBQUFBQUFBT8dfAwtTlHth+yMQAAgEV6FCLrjm1O/3XCEhQUFBQUFBQUFBT8RnAqRNYPbcao+ACnVSVbBE+/CAAAAABJRU5ErkJggg==", X = {
900
+ LOGIN: 0,
901
+ REGISTER: 1,
902
+ WECHAT: 2,
903
+ WECHAT_SCAN: 3
904
+ }, Te = {
905
+ title: "AIGC实训平台",
906
+ favicon: we,
907
+ layout: "default",
908
+ skipBind: "0",
909
+ nb: "0",
910
+ hf: "0",
911
+ hideRegister: "0",
912
+ cf: "<a href=\"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31010702009439\" target=\"_blank\" style=\"text-decoration: none;\">沪公网安备 31010702009439 号</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"https://beian.miit.gov.cn/\" style=\"text-decoration: none;\">沪ICP备2020031101号-3</a>&nbsp;&nbsp;|&nbsp;&nbsp;© 2025 晶程甲宇科技(上海)有限公司 版权所有"
913
+ }, Ee = { class: "ag-input" }, De = { class: "ag-input-label" }, Oe = { class: "ag-input-content" }, ke = {
914
+ key: 0,
915
+ class: "ag-input-content__prefix"
916
+ }, Ae = [
917
+ "id",
918
+ "type",
919
+ "value",
920
+ "placeholder",
921
+ "autocomplete"
922
+ ], je = {
923
+ key: 1,
924
+ class: "ag-input-content__suffix"
925
+ }, Me = [
926
+ "aria-label",
927
+ "aria-pressed",
928
+ "title"
929
+ ], Ne = {
930
+ key: 0,
931
+ fill: "none",
932
+ stroke: "currentColor",
933
+ viewBox: "0 0 24 24",
934
+ "stroke-width": "2"
935
+ }, Pe = {
936
+ key: 1,
937
+ fill: "none",
938
+ stroke: "currentColor",
939
+ viewBox: "0 0 24 24",
940
+ "stroke-width": "2"
941
+ }, Z = /* @__PURE__ */ u({
942
+ __name: "ag-input",
943
+ props: {
944
+ label: {},
945
+ modelValue: {},
946
+ type: { default: "text" },
947
+ id: { default: "" },
948
+ placeholder: { default: "" },
949
+ autocomplete: { default: "" },
950
+ showPassword: {
951
+ type: Boolean,
952
+ default: !1
953
+ }
954
+ },
955
+ emits: ["update:modelValue"],
956
+ setup(e, { emit: t }) {
957
+ let r = e, s = t, c = b(!1), l = b(!1), u = n(() => r.showPassword && r.type === "password"), d = n(() => u.value && l.value ? "text" : r.type);
958
+ function p() {
959
+ l.value = !l.value;
960
+ }
961
+ function m(e) {
962
+ return e.replace(/\s+/g, "");
963
+ }
964
+ function h(e) {
965
+ let t = e.target;
966
+ if (c.value) {
967
+ s("update:modelValue", t.value);
968
+ return;
969
+ }
970
+ let n = m(t.value);
971
+ n !== t.value && (t.value = n), s("update:modelValue", n);
972
+ }
973
+ function g(e) {
974
+ c.value = !1;
975
+ let t = e.target, n = m(t.value);
976
+ n !== t.value && (t.value = n), s("update:modelValue", n);
977
+ }
978
+ return (t, n) => (v(), a("div", Ee, [o("div", De, S(r.label), 1), o("div", Oe, [
979
+ t.$slots.default ? (v(), a("div", ke, [x(t.$slots, "default")])) : i("", !0),
980
+ o("input", f({
981
+ id: e.id,
982
+ type: d.value,
983
+ value: e.modelValue,
984
+ placeholder: e.placeholder,
985
+ autocomplete: e.autocomplete
986
+ }, t.$attrs, {
987
+ onInput: h,
988
+ onCompositionstart: n[0] ||= (e) => c.value = !0,
989
+ onCompositionend: g
990
+ }), null, 16, Ae),
991
+ t.$slots.suffix || u.value ? (v(), a("div", je, [x(t.$slots, "suffix"), u.value ? (v(), a("button", {
992
+ key: 0,
993
+ class: "ag-input-content__password-toggle",
994
+ type: "button",
995
+ "aria-label": l.value ? "隐藏密码" : "显示密码",
996
+ "aria-pressed": l.value,
997
+ title: l.value ? "隐藏密码" : "显示密码",
998
+ onMousedown: n[1] ||= O(() => {}, ["prevent"]),
999
+ onKeydown: n[2] ||= D(O(() => {}, ["stop"]), ["enter"]),
1000
+ onClick: p
1001
+ }, [l.value ? (v(), a("svg", Ne, [...n[3] ||= [o("path", {
1002
+ "stroke-linecap": "round",
1003
+ "stroke-linejoin": "round",
1004
+ d: "M3 3l18 18M10.58 10.58A2 2 0 0012 14a2 2 0 001.42-.58M9.88 5.08A10.64 10.64 0 0112 4.86c4.67 0 8.62 3 10 7.14a11.8 11.8 0 01-2.68 4.28M6.61 6.61A11.8 11.8 0 002 12c1.38 4.14 5.33 7.14 10 7.14a10.8 10.8 0 004.18-.84"
1005
+ }, null, -1)]])) : (v(), a("svg", Pe, [...n[4] ||= [o("path", {
1006
+ "stroke-linecap": "round",
1007
+ "stroke-linejoin": "round",
1008
+ d: "M2 12s3.64-7 10-7 10 7 10 7-3.64 7-10 7S2 12 2 12z"
1009
+ }, null, -1), o("path", {
1010
+ "stroke-linecap": "round",
1011
+ "stroke-linejoin": "round",
1012
+ d: "M12 15a3 3 0 100-6 3 3 0 000 6z"
1013
+ }, null, -1)]]))], 40, Me)) : i("", !0)])) : i("", !0)
1014
+ ])]));
1015
+ }
1016
+ }), Fe = { class: "ag-login__remember" }, Ie = {
1017
+ class: "ag-login__button ag-login__button--primary",
1018
+ type: "submit"
1019
+ }, Le = { class: "ag-login__actions" }, Re = { class: "ag-login__methods" }, ze = { class: "ag-login__link" }, Q = "jcjy-components:auth-gateway:remember-login", Be = 1, Ve = "jcjy-components-auth-gateway", He = /* @__PURE__ */ u({
1020
+ __name: "login-form",
1021
+ props: {
1022
+ confirmText: {},
1023
+ hideLoginMethods: { type: Boolean }
1024
+ },
1025
+ emits: ["toggle", "submit"],
1026
+ setup(t, { emit: n }) {
1027
+ let r = d("contextProps"), u = n, f = t, p = b({
1028
+ email: "",
1029
+ password: ""
1030
+ }), m = b(!1);
1031
+ function h(e) {
1032
+ let t = [];
1033
+ for (let n = 0; n < e.length; n++) {
1034
+ let r = Ve.charCodeAt(n % 28);
1035
+ t.push((e.charCodeAt(n) ^ r).toString(16));
1036
+ }
1037
+ return t.join(".");
1038
+ }
1039
+ function _(e) {
1040
+ return e ? e.split(".").map((e, t) => {
1041
+ let n = Number.parseInt(e, 16);
1042
+ if (!Number.isFinite(n)) throw Error("Invalid remember login value");
1043
+ let r = Ve.charCodeAt(t % 28);
1044
+ return String.fromCharCode(n ^ r);
1045
+ }).join("") : "";
1046
+ }
1047
+ function y() {
1048
+ try {
1049
+ let e = window.localStorage.getItem(Q);
1050
+ if (!e) return;
1051
+ let t = JSON.parse(e);
1052
+ if (t.v !== Be || !t.email) return;
1053
+ p.value.email = _(t.email), p.value.password = _(t.password || ""), m.value = !0;
1054
+ } catch {
1055
+ m.value = !1;
1056
+ }
1057
+ }
1058
+ function ee() {
1059
+ try {
1060
+ if (!m.value) {
1061
+ window.localStorage.removeItem(Q);
1062
+ return;
1063
+ }
1064
+ window.localStorage.setItem(Q, JSON.stringify({
1065
+ v: Be,
1066
+ email: h(p.value.email),
1067
+ password: h(p.value.password)
1068
+ }));
1069
+ } catch {}
1070
+ }
1071
+ function x() {
1072
+ ee(), u("submit", ve(p.value));
1073
+ }
1074
+ function T(e) {
1075
+ u("toggle", e);
1076
+ }
1077
+ return g(y), (t, n) => (v(), a("form", {
1078
+ class: "ag-login",
1079
+ onSubmit: O(x, ["prevent"]),
1080
+ onKeydown: D(x, ["enter"])
1081
+ }, [
1082
+ n[11] ||= s("<header class=\"ag-login-header\" data-v-476a9185><div class=\"ag-login-header__top\" data-v-476a9185><svg class=\"w-2.5 h-2.5\" fill=\"currentColor\" viewBox=\"0 0 20 20\" data-v-476a9185><path d=\"M5 3a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2V5a2 2 0 00-2-2H5zM5 11a2 2 0 00-2 2v2a2 2 0 002 2h2a2 2 0 002-2v-2a2 2 0 00-2-2H5zM11 5a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V5zM11 13a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z\" data-v-476a9185></path></svg><span data-v-476a9185>WELCOME BACK</span></div><div class=\"ag-login-header__title text-xl font-bold tracking-tight\" data-v-476a9185>登录您的账号</div></header>", 1),
1083
+ l(Z, {
1084
+ modelValue: p.value.email,
1085
+ "onUpdate:modelValue": n[0] ||= (e) => p.value.email = e,
1086
+ class: "ag-login__field",
1087
+ name: "username",
1088
+ label: "账号/邮箱 ",
1089
+ autocomplete: "username",
1090
+ placeholder: "请输入账号/邮箱",
1091
+ type: "text",
1092
+ required: ""
1093
+ }, {
1094
+ default: E(() => [...n[5] ||= [o("svg", {
1095
+ fill: "none",
1096
+ stroke: "currentColor",
1097
+ viewBox: "0 0 24 24",
1098
+ "stroke-width": "2"
1099
+ }, [o("path", {
1100
+ "stroke-linecap": "round",
1101
+ "stroke-linejoin": "round",
1102
+ d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"
1103
+ })], -1)]]),
1104
+ _: 1
1105
+ }, 8, ["modelValue"]),
1106
+ l(Z, {
1107
+ modelValue: p.value.password,
1108
+ "onUpdate:modelValue": n[1] ||= (e) => p.value.password = e,
1109
+ class: "ag-login__field",
1110
+ placeholder: "请输入密码",
1111
+ type: "password",
1112
+ name: "password",
1113
+ label: "密码",
1114
+ autocomplete: "current-password",
1115
+ "show-password": "",
1116
+ required: ""
1117
+ }, {
1118
+ default: E(() => [...n[6] ||= [o("svg", {
1119
+ fill: "none",
1120
+ stroke: "currentColor",
1121
+ viewBox: "0 0 24 24",
1122
+ "stroke-width": "2"
1123
+ }, [o("path", {
1124
+ "stroke-linecap": "round",
1125
+ "stroke-linejoin": "round",
1126
+ d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"
1127
+ })], -1)]]),
1128
+ _: 1
1129
+ }, 8, ["modelValue"]),
1130
+ o("label", Fe, [te(o("input", {
1131
+ "onUpdate:modelValue": n[2] ||= (e) => m.value = e,
1132
+ class: "ag-login__remember-checkbox",
1133
+ type: "checkbox"
1134
+ }, null, 512), [[w, m.value]]), n[7] ||= o("span", { class: "ag-login__remember-text" }, "记住我", -1)]),
1135
+ o("button", Ie, S(f.confirmText || "立 即 登 录"), 1),
1136
+ o("div", Le, [f.hideLoginMethods ? i("", !0) : (v(), a(e, { key: 0 }, [n[9] ||= o("div", { class: "ag-login__divider" }, [o("span", { class: "ag-login__divider-text" }, "其他登录方式")], -1), o("div", Re, [o("button", {
1137
+ class: "ag-login__methods-item",
1138
+ type: "button",
1139
+ onClick: n[3] ||= (e) => T(C(X).WECHAT_SCAN)
1140
+ }, [...n[8] ||= [o("svg", {
1141
+ t: "1775979815773",
1142
+ class: "icon",
1143
+ viewBox: "0 0 1024 1024",
1144
+ version: "1.1",
1145
+ xmlns: "http://www.w3.org/2000/svg",
1146
+ "p-id": "1903",
1147
+ width: "200",
1148
+ height: "200"
1149
+ }, [o("path", {
1150
+ d: "M71.168 700.229818l23.970909-83.898182A296.680727 296.680727 0 0 1 46.545455 453.818182C46.545455 280.576 197.934545 139.636364 384 139.636364c136.168727 0 257.489455 75.636364 310.202182 190.673454l2.024727 0.069818c0.651636 0 1.303273-0.093091 1.954909-0.093091 4.352 0 8.587636 0.442182 12.893091 0.628364 5.026909 0.209455 10.077091 0.256 15.034182 0.698182 4.933818 0.442182 9.751273 1.256727 14.615273 1.908364 4.747636 0.651636 9.565091 1.186909 14.242909 2.048 5.376 1.000727 10.589091 2.373818 15.848727 3.630545 3.979636 0.954182 8.005818 1.745455 11.915636 2.862545 6.144 1.745455 12.101818 3.886545 18.082909 5.981091 2.816 1.000727 5.725091 1.838545 8.494546 2.909091 6.981818 2.699636 13.730909 5.794909 20.433454 8.983273 1.629091 0.768 3.328 1.419636 4.933819 2.234182 7.842909 3.886545 15.429818 8.145455 22.830545 12.683636l1.163636 0.651637c62.650182 38.795636 108.334545 99.537455 124.229819 170.449454l0.139636 0.512c1.768727 7.959273 3.048727 16.081455 4.049455 24.250182 0.116364 0.977455 0.372364 1.931636 0.488727 2.909091a256.395636 256.395636 0 0 1-39.121455 166.260363l19.618909 68.654546a34.909091 34.909091 0 0 1-43.170909 43.170909l-72.168727-20.642909a304.058182 304.058182 0 0 1-187.554909 39.796364c-2.466909-0.279273-4.910545-0.721455-7.354182-1.070546a299.822545 299.822545 0 0 1-25.669818-4.375273c-2.280727-0.512-4.491636-1.070545-6.772364-1.629091a307.735273 307.735273 0 0 1-59.438545-21.015272l-0.884364-0.395637a293.655273 293.655273 0 0 1-55.668363-34.955636c-0.930909-0.744727-1.815273-1.536-2.746182-2.304-7.074909-5.794909-13.824-11.869091-20.270546-18.269091-1.745455-1.745455-3.421091-3.514182-5.12-5.282909a265.146182 265.146182 0 0 1-16.337454-18.734545c-0.954182-1.140364-2.048-2.164364-2.955637-3.351273-88.715636 19.665455-183.226182 4.584727-259.746909-41.216l-87.901091 25.111273a34.839273 34.839273 0 0 1-43.147636-43.147637z m811.054545 12.869818c24.226909-33.093818 37.050182-71.656727 37.050182-111.592727 0-111.057455-99.188364-201.402182-221.090909-201.402182-7.866182 0-15.639273 0.442182-23.319273 1.140364-110.987636 10.658909-197.771636 96.395636-197.771636 200.261818a186.414545 186.414545 0 0 0 29.160727 99.560727c4.724364 7.517091 10.007273 14.661818 15.662546 21.480728l1.256727 1.559272a213.829818 213.829818 0 0 0 41.006546 37.236364c7.284364 5.050182 14.848 9.704727 22.714181 13.917091l0.768 0.418909a233.890909 233.890909 0 0 0 51.083637 19.618909c1.442909 0.372364 2.909091 0.698182 4.398545 1.047273 7.144727 1.675636 14.452364 3.002182 21.806546 4.049454 2.094545 0.279273 4.142545 0.628364 6.237091 0.861091a233.797818 233.797818 0 0 0 156.904727-37.073454 34.792727 34.792727 0 0 1 28.904727-4.491637l26.693818 7.610182-6.865454-23.994182a34.978909 34.978909 0 0 1 5.399272-30.208zM384 209.454545C236.427636 209.454545 116.363636 319.069091 116.363636 453.818182c0 48.523636 15.569455 95.441455 45.032728 135.633454 6.353455 8.704 8.354909 19.874909 5.399272 30.231273l-11.217454 39.284364 42.472727-12.125091c9.867636-2.839273 20.410182-1.163636 28.904727 4.491636 57.390545 38.144 129.140364 53.224727 198.4 43.450182a253.277091 253.277091 0 0 1-18.082909-93.277091c0-124.555636 90.647273-229.492364 213.573818-261.189818C575.255273 260.701091 484.887273 209.454545 384 209.454545z m-93.090909 186.181819a34.909091 34.909091 0 1 0-0.023273-69.841455A34.909091 34.909091 0 0 0 290.909091 395.636364m186.181818 0a34.909091 34.909091 0 1 0-0.023273-69.841455A34.909091 34.909091 0 0 0 477.090909 395.636364m128 116.363636a34.909091 34.909091 0 1 0 0.023273 69.841455A34.909091 34.909091 0 0 0 605.090909 512m186.181818 0a34.909091 34.909091 0 1 0 0.023273 69.841455A34.909091 34.909091 0 0 0 791.272727 512",
1151
+ fill: "#797979",
1152
+ "p-id": "1904"
1153
+ })], -1)]])])], 64)), o("div", ze, [n[10] ||= c(" 还没有账号?", -1), C(r).config.hideRegister === "0" ? (v(), a("button", {
1154
+ key: 0,
1155
+ type: "button",
1156
+ onClick: n[4] ||= (e) => T(C(X).REGISTER)
1157
+ }, " 立即注册 ")) : i("", !0)])])
1158
+ ], 32));
1159
+ }
1160
+ }), $ = (e, t) => {
1161
+ let n = e.__vccOpts || e;
1162
+ for (let [e, r] of t) n[e] = r;
1163
+ return n;
1164
+ }, Ue = /* @__PURE__ */ $(He, [["__scopeId", "data-v-476a9185"]]), We = { class: "ag-bind-dialog__fullscreen" }, Ge = { class: "ag-bind-dialog__content" }, Ke = { class: "ag-bind-dialog__card" }, qe = /* @__PURE__ */ $(/* @__PURE__ */ u({
1165
+ __name: "bind-org-dialog",
1166
+ emits: ["confirm"],
1167
+ setup(e, { expose: n, emit: s }) {
1168
+ let c = s, u = b(!1);
1169
+ function d() {
1170
+ u.value = !0;
1171
+ }
1172
+ function f() {
1173
+ u.value = !1;
1174
+ }
1175
+ let p = b({
1176
+ orgName: "",
1177
+ name: "",
1178
+ code: ""
1179
+ }), m = b({
1180
+ orgName: "",
1181
+ name: "",
1182
+ code: ""
1183
+ });
1184
+ function h() {
1185
+ return m.value.orgName = p.value.orgName ? "" : "请输入学校", m.value.name = p.value.name ? "" : "请输入姓名", m.value.code = p.value.code ? "" : "请输入学号/工号", !m.value.orgName && !m.value.name && !m.value.code;
1186
+ }
1187
+ function g() {
1188
+ f();
1189
+ }
1190
+ function _() {
1191
+ h() && (g(), c("confirm", p.value));
1192
+ }
1193
+ return n({
1194
+ open: d,
1195
+ close: f
1196
+ }), (e, n) => (v(), r(t, { name: "ag-bind-dialog-fade" }, {
1197
+ default: E(() => [u.value ? (v(), a("div", {
1198
+ key: 0,
1199
+ class: "ag-bind-dialog",
1200
+ onClick: O(g, ["self"])
1201
+ }, [o("div", We, [o("div", Ge, [n[4] ||= o("div", { class: "ag-bind-dialog__header" }, [o("div", { class: "ag-bind-dialog__title" }, "验证身份信息"), o("div", { class: "ag-bind-dialog__subtitle" }, " 我们需要验证你的身份信息,以便为你提供更好的服务 ")], -1), o("div", Ke, [o("form", {
1202
+ class: "ag-bind-dialog__form",
1203
+ onSubmit: O(_, ["prevent"]),
1204
+ onKeydown: D(_, ["enter"])
1205
+ }, [
1206
+ l(Z, {
1207
+ modelValue: p.value.orgName,
1208
+ "onUpdate:modelValue": n[0] ||= (e) => p.value.orgName = e,
1209
+ placeholder: "请输入学校",
1210
+ class: "ag-bind-dialog__field",
1211
+ required: "",
1212
+ label: "学校"
1213
+ }, null, 8, ["modelValue"]),
1214
+ l(Z, {
1215
+ label: "姓名",
1216
+ class: "ag-bind-dialog__field",
1217
+ modelValue: p.value.name,
1218
+ "onUpdate:modelValue": n[1] ||= (e) => p.value.name = e,
1219
+ placeholder: "请输入姓名",
1220
+ required: ""
1221
+ }, null, 8, ["modelValue"]),
1222
+ l(Z, {
1223
+ modelValue: p.value.code,
1224
+ "onUpdate:modelValue": n[2] ||= (e) => p.value.code = e,
1225
+ placeholder: "请输入学号/工号",
1226
+ class: "ag-bind-dialog__field",
1227
+ label: "学号/工号",
1228
+ required: ""
1229
+ }, null, 8, ["modelValue"]),
1230
+ o("footer", { class: "ag-bind-dialog__footer" }, [o("button", {
1231
+ class: "ag-bind-dialog__button ag-bind-dialog__button--outline",
1232
+ type: "button",
1233
+ onClick: g
1234
+ }, " 返回 "), n[3] ||= o("button", {
1235
+ class: "ag-bind-dialog__button ag-bind-dialog__button--primary",
1236
+ type: "submit"
1237
+ }, " 验证 ", -1)])
1238
+ ], 32)])])])])) : i("", !0)]),
1239
+ _: 1
1240
+ }));
1241
+ }
1242
+ }), [["__scopeId", "data-v-438cba37"]]), Je = {
1243
+ class: "ag-register__button ag-register__button--primary",
1244
+ type: "submit"
1245
+ }, Ye = /* @__PURE__ */ $(/* @__PURE__ */ u({
1246
+ __name: "register-form",
1247
+ props: { confirmText: {} },
1248
+ emits: ["back", "submit"],
1249
+ setup(e, { emit: t }) {
1250
+ let n = d("contextProps"), r = t, i = e, s = b({
1251
+ email: "",
1252
+ password: "",
1253
+ password2: ""
1254
+ });
1255
+ T(() => [s.value.password, s.value.password2], f, { deep: !0 });
1256
+ let c = b({
1257
+ email: "",
1258
+ password: "",
1259
+ password2: ""
1260
+ }), u = Ce();
1261
+ function f() {
1262
+ return c.value.email = "", c.value.password = "", c.value.password2 = "", s.value.email || (c.value.email = "请输入账号"), s.value.password ? n?.strictRegister && u(null, s.value.password, (e) => {
1263
+ e && (c.value.password = e.message);
1264
+ }) : c.value.password = "请输入密码", s.value.password2 ? s.value.password2 !== s.value.password && (c.value.password2 = "两次输入密码不一致") : c.value.password2 = "请再次输入密码", !c.value.email && !c.value.password && !c.value.password2;
1265
+ }
1266
+ function p() {
1267
+ f() && r("submit", ve(s.value));
1268
+ }
1269
+ return (e, t) => (v(), a("form", {
1270
+ class: "ag-register",
1271
+ onSubmit: O(p, ["prevent"]),
1272
+ onKeydown: D(p, ["enter"])
1273
+ }, [
1274
+ t[7] ||= o("div", { class: "ag-register__heading" }, "注册账号", -1),
1275
+ l(Z, {
1276
+ modelValue: s.value.email,
1277
+ "onUpdate:modelValue": t[0] ||= (e) => s.value.email = e,
1278
+ class: "ag-register__field",
1279
+ label: "账号/邮箱",
1280
+ placeholder: "请输入账号/邮箱",
1281
+ type: "text",
1282
+ required: ""
1283
+ }, {
1284
+ default: E(() => [...t[4] ||= [o("svg", {
1285
+ fill: "none",
1286
+ stroke: "currentColor",
1287
+ viewBox: "0 0 24 24",
1288
+ "stroke-width": "2"
1289
+ }, [o("path", {
1290
+ "stroke-linecap": "round",
1291
+ "stroke-linejoin": "round",
1292
+ d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"
1293
+ })], -1)]]),
1294
+ _: 1
1295
+ }, 8, ["modelValue"]),
1296
+ l(Z, {
1297
+ modelValue: s.value.password,
1298
+ "onUpdate:modelValue": t[1] ||= (e) => s.value.password = e,
1299
+ class: "ag-register__field",
1300
+ placeholder: "请输入密码",
1301
+ type: "password",
1302
+ name: "password",
1303
+ label: "密码",
1304
+ autocomplete: "new-password",
1305
+ "show-password": "",
1306
+ required: ""
1307
+ }, {
1308
+ default: E(() => [...t[5] ||= [o("svg", {
1309
+ fill: "none",
1310
+ stroke: "currentColor",
1311
+ viewBox: "0 0 24 24",
1312
+ "stroke-width": "2"
1313
+ }, [o("path", {
1314
+ "stroke-linecap": "round",
1315
+ "stroke-linejoin": "round",
1316
+ d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"
1317
+ })], -1)]]),
1318
+ _: 1
1319
+ }, 8, ["modelValue"]),
1320
+ l(Z, {
1321
+ modelValue: s.value.password2,
1322
+ "onUpdate:modelValue": t[2] ||= (e) => s.value.password2 = e,
1323
+ class: "ag-register__field",
1324
+ placeholder: "请再次输入密码",
1325
+ type: "password",
1326
+ name: "password",
1327
+ label: "再次输入密码",
1328
+ autocomplete: "new-password",
1329
+ "show-password": "",
1330
+ required: ""
1331
+ }, {
1332
+ default: E(() => [...t[6] ||= [o("svg", {
1333
+ fill: "none",
1334
+ stroke: "currentColor",
1335
+ viewBox: "0 0 24 24",
1336
+ "stroke-width": "2"
1337
+ }, [o("path", {
1338
+ "stroke-linecap": "round",
1339
+ "stroke-linejoin": "round",
1340
+ d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"
1341
+ })], -1)]]),
1342
+ _: 1
1343
+ }, 8, ["modelValue"]),
1344
+ o("button", Je, S(i.confirmText || "注 册"), 1),
1345
+ o("button", {
1346
+ class: "ag-register__button ag-register__button--outline",
1347
+ type: "button",
1348
+ onClick: t[3] ||= (e) => r("back")
1349
+ }, " ")
1350
+ ], 32));
1351
+ }
1352
+ }), [["__scopeId", "data-v-7980b268"]]), Xe = { class: "ag-wechat-bind" }, Ze = { class: "ag-wechat-bind__profile" }, Qe = ["src"], $e = {
1353
+ key: 1,
1354
+ class: "ag-wechat-bind__avatar ag-wechat-bind__avatar--placeholder"
1355
+ }, et = { class: "ag-wechat-bind__nickname" }, tt = /* @__PURE__ */ $(/* @__PURE__ */ u({
1356
+ __name: "wechat-form",
1357
+ props: { info: {} },
1358
+ emits: ["back"],
1359
+ setup(e, { emit: n }) {
1360
+ let s = d("_login"), c = d("_register"), u = e, f = n, p = b(X.LOGIN);
1361
+ function m(e) {
1362
+ p.value = e;
1363
+ }
1364
+ function h(e) {
1365
+ s({
1366
+ ...e,
1367
+ weChatOpenId: u.info.openid
1368
+ }, "normal");
1369
+ }
1370
+ function g(e) {
1371
+ c({
1372
+ ...e,
1373
+ weChatOpenId: u.info.openid
1374
+ });
1375
+ }
1376
+ return (e, n) => (v(), a("div", Xe, [
1377
+ o("button", {
1378
+ class: "ag-wechat-bind__back",
1379
+ type: "button",
1380
+ onClick: n[0] ||= (e) => f("back")
1381
+ }, "返 回"),
1382
+ o("div", Ze, [
1383
+ u.info?.headimgurl ? (v(), a("img", {
1384
+ key: 0,
1385
+ src: u.info?.headimgurl,
1386
+ class: "ag-wechat-bind__avatar"
1387
+ }, null, 8, Qe)) : (v(), a("div", $e)),
1388
+ o("div", et, S(u.info?.nickname), 1),
1389
+ n[2] ||= o("div", { class: "ag-wechat-bind__tips" }, [o("div", null, "已有账号?输入账号信息登录立即绑定"), o("div", { class: "ag-wechat-bind__tips-highlight" }, "如没有账号,注册后登录即绑定")], -1)
1390
+ ]),
1391
+ l(t, {
1392
+ name: "ag-gateway-zoom",
1393
+ mode: "out-in"
1394
+ }, {
1395
+ default: E(() => [p.value === C(X).LOGIN ? (v(), r(Ue, {
1396
+ key: 0,
1397
+ class: "ag-wechat-bind__side-panel",
1398
+ hideLoginMethods: "",
1399
+ confirmText: "登录并绑定",
1400
+ onToggle: m,
1401
+ onSubmit: h
1402
+ })) : p.value === C(X).REGISTER ? (v(), r(Ye, {
1403
+ key: 1,
1404
+ class: "ag-wechat-bind__side-panel",
1405
+ confirmText: "注册并绑定",
1406
+ onBack: n[1] ||= (e) => m(C(X).LOGIN),
1407
+ onSubmit: g
1408
+ })) : i("", !0)]),
1409
+ _: 1
1410
+ })
1411
+ ]));
1412
+ }
1413
+ }), [["__scopeId", "data-v-04a770c9"]]), nt = { class: "ag-wechat-scan" }, rt = "wx-login-iframe", it = /* @__PURE__ */ $(/* @__PURE__ */ u({
1414
+ __name: "wechat-scan-view",
1415
+ emits: ["back", "submit"],
1416
+ setup(e, { emit: t }) {
1417
+ let n = d("contextProps"), r = t;
1418
+ function i() {
1419
+ let e = document.createElement("script");
1420
+ e.type = "text/javascript", e.src = "https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js";
1421
+ let t = document.body.appendChild(e);
1422
+ t.onload = () => {
1423
+ let e = {
1424
+ self_redirect: !0,
1425
+ id: rt,
1426
+ appid: n?.wechatConfig?.appId,
1427
+ scope: "snsapi_login",
1428
+ redirect_uri: encodeURIComponent(`${n?.wechatConfig?.redirectUrl}`),
1429
+ state: "jcjy-common-login-by-wx",
1430
+ stylelite: 1,
1431
+ fast_login: 0
1432
+ };
1433
+ new window.WxLogin(e), window.addEventListener("message", s);
1434
+ };
1435
+ }
1436
+ function s(e) {
1437
+ e.data.type === "router_data" && (r("submit", { weChatCode: e.data.data.query?.code }), window.removeEventListener("message", s));
1438
+ }
1439
+ return _(() => {
1440
+ window.removeEventListener("message", s);
1441
+ }), i(), (e, t) => (v(), a("div", nt, [
1442
+ o("div", {
1443
+ id: rt,
1444
+ class: "ag-wechat-scan__qr"
1445
+ }),
1446
+ t[1] ||= o("b", { class: "ag-wechat-scan__title" }, "请使用微信扫码登录", -1),
1447
+ o("button", {
1448
+ class: "ag-wechat-scan__back",
1449
+ type: "button",
1450
+ onClick: t[0] ||= (e) => r("back")
1451
+ }, "返 回")
1452
+ ]));
1453
+ }
1454
+ }), [["__scopeId", "data-v-428e3da8"]]), at = { class: "ag-gateway-header" }, ot = { class: "ag-gateway-header-left" }, st = ["src"], ct = { class: "ag-gateway-header-right" }, lt = ["href"], ut = {
1455
+ key: 0,
1456
+ class: "ag-gateway__card-shell"
1457
+ }, dt = {
1458
+ key: 0,
1459
+ class: "ag-gateway__loading"
1460
+ }, ft = {
1461
+ key: 0,
1462
+ class: "ag-gateway__card ag-gateway__card--auth"
1463
+ }, pt = {
1464
+ key: 1,
1465
+ class: "ag-gateway__card ag-gateway__card--auth"
1466
+ }, mt = ["innerHTML"], ht = /* @__PURE__ */ u({
1467
+ __name: "index",
1468
+ props: {
1469
+ config: {},
1470
+ strictRegister: {
1471
+ type: Boolean,
1472
+ default: !1
1473
+ },
1474
+ binding: {},
1475
+ register: {},
1476
+ login: {},
1477
+ wechatConfig: {}
1478
+ },
1479
+ emits: ["success"],
1480
+ setup(s, { emit: c }) {
1481
+ let u = c, d = s, f = n(() => ({
1482
+ ...Te,
1483
+ ...d.config
1484
+ })), _ = b(), x = b(X.LOGIN), w = b(!1), T = n(() => {
1485
+ let { loginBackground: e } = f.value;
1486
+ return `ag-gateway--${e ? f.value.layout || "default" : "jcjy"}`;
1487
+ }), te = n(() => {
1488
+ let { nb: e } = f.value;
1489
+ return +(e || 0) != 1;
1490
+ }), D = n(() => {
1491
+ let { loginBackground: e } = f.value;
1492
+ return te.value && e ? { background: `url('${e}') no-repeat center/100% 100%` } : {};
1493
+ }), O = n(() => f.value.skipBind === "0"), ne = n(() => !!f.value.hideWx);
1494
+ async function k() {
1495
+ try {
1496
+ let { loginBackground: e, favicon: t, title: n } = f.value;
1497
+ ye(n, t), e ? await J(e) : Y([
1498
+ 252,
1499
+ 91,
1500
+ 4
1501
+ ]), await p();
1502
+ } finally {
1503
+ w.value = !0;
1504
+ }
1505
+ }
1506
+ let re = n(() => +(f.value.hf || 0) == 1 ? "" : f.value.cf);
1507
+ function A(e) {
1508
+ x.value = e;
1509
+ }
1510
+ let j = b(), M = b(), N = b(!1), P = b({
1511
+ visible: !1,
1512
+ message: "",
1513
+ type: "success"
1514
+ }), F = null;
1515
+ function I(e, t = "success") {
1516
+ F && clearTimeout(F), P.value = {
1517
+ visible: !0,
1518
+ message: e,
1519
+ type: t
1520
+ }, F = setTimeout(() => {
1521
+ P.value.visible = !1;
1522
+ }, 2500);
1523
+ }
1524
+ async function ie(e) {
1525
+ N.value = !0;
1526
+ try {
1527
+ await d.binding(e, { token: j.value.token }), I("验证成功!", "success"), u("success", j.value);
1528
+ } finally {
1529
+ N.value = !1;
1530
+ }
1531
+ }
1532
+ async function L(e) {
1533
+ try {
1534
+ N.value = !0, j.value = await d.register(e), O.value ? (I("注册成功!请验证身份信息", "success"), A(X.LOGIN), _.value.open()) : (I("注册成功!", "success"), u("success", j.value));
1535
+ } finally {
1536
+ N.value = !1;
1537
+ }
1538
+ }
1539
+ async function R(e, t) {
1540
+ try {
1541
+ N.value = !0;
1542
+ let n = await d.login(e);
1543
+ if (t === "wechat" && n.err === 4004) {
1544
+ I(n.msg, "error"), M.value = n.weChatUserDetail, x.value = X.WECHAT;
1545
+ return;
1546
+ }
1547
+ j.value = n, !n.type && O.value ? (I("登录成功!请验证身份信息", "success"), _.value.open()) : u("success", j.value);
1548
+ } finally {
1549
+ N.value = !1;
1550
+ }
1551
+ }
1552
+ function z() {
1553
+ M.value = null, A(X.LOGIN);
1554
+ }
1555
+ return g(k), y("contextProps", {
1556
+ ...d,
1557
+ config: f.value
1558
+ }), y("_login", R), y("_register", L), (n, s) => (v(), a("div", {
1559
+ class: m(["ag-gateway", T.value]),
1560
+ style: h(D.value)
1561
+ }, [
1562
+ o("header", at, [o("div", ot, [f.value.favicon ? (v(), a("img", {
1563
+ key: 0,
1564
+ src: f.value.favicon
1565
+ }, null, 8, st)) : i("", !0), o("div", null, S(f.value.title), 1)]), o("nav", ct, [(v(!0), a(e, null, ee(f.value.links, (e) => (v(), a("a", {
1566
+ href: e.url,
1567
+ target: "__blank"
1568
+ }, S(e.name), 9, lt))), 256))])]),
1569
+ s[5] ||= o("div", { class: "ag-gateway-slogan" }, [
1570
+ o("div", { class: "ag-gateway-slogan__title" }, "数智赋能"),
1571
+ o("div", { class: "ag-gateway-slogan__title" }, "领航未来"),
1572
+ o("div", { class: "ag-gateway-slogan__footer" }, "晶程同行")
1573
+ ], -1),
1574
+ w.value ? (v(), a("div", ut, [N.value ? (v(), a("div", dt, [...s[4] ||= [o("div", { class: "ag-gateway__loading-spinner" }, null, -1), o("span", null, "请稍候...", -1)]])) : i("", !0), l(t, {
1575
+ name: "ag-gateway-zoom",
1576
+ mode: "out-in"
1577
+ }, {
1578
+ default: E(() => [x.value === C(X).LOGIN ? (v(), a("div", ft, [l(Ue, {
1579
+ key: "login",
1580
+ "hide-login-methods": ne.value,
1581
+ onToggle: A,
1582
+ onSubmit: s[0] ||= (e) => R(e, "normal")
1583
+ }, null, 8, ["hide-login-methods"])])) : x.value === C(X).REGISTER ? (v(), a("div", pt, [l(Ye, {
1584
+ onBack: s[1] ||= (e) => A(C(X).LOGIN),
1585
+ onSubmit: L
1586
+ })])) : x.value === C(X).WECHAT_SCAN ? (v(), r(it, {
1587
+ key: 2,
1588
+ onBack: s[2] ||= (e) => A(C(X).LOGIN),
1589
+ onSubmit: s[3] ||= (e) => R(e, "wechat")
1590
+ })) : x.value === C(X).WECHAT ? (v(), r(tt, {
1591
+ key: 3,
1592
+ info: M.value,
1593
+ class: "ag-gateway__wechat-panel",
1594
+ onBack: z
1595
+ }, null, 8, ["info"])) : i("", !0)]),
1596
+ _: 1
1597
+ })])) : i("", !0),
1598
+ o("footer", {
1599
+ class: "ag-gateway__footer",
1600
+ innerHTML: re.value
1601
+ }, null, 8, mt),
1602
+ l(qe, {
1603
+ ref_key: "bindOrgDialogRef",
1604
+ ref: _,
1605
+ onConfirm: ie
1606
+ }, null, 512),
1607
+ l(t, { name: "ag-gateway-toast" }, {
1608
+ default: E(() => [P.value.visible ? (v(), a("div", {
1609
+ key: 0,
1610
+ class: m(["ag-gateway__toast", `ag-gateway__toast--${P.value.type}`])
1611
+ }, S(P.value.message), 3)) : i("", !0)]),
1612
+ _: 1
1613
+ })
1614
+ ], 6));
1615
+ }
1616
+ }), gt = {
1617
+ setTheme: Y,
1618
+ setThemeByUrl: J
1619
+ }, _t = { install(e) {
1620
+ e.component("AuthGateway", ht);
1621
+ } };
1622
+ //#endregion
1623
+ export { ht as AuthGateway, _t as default, gt as theme };