morghulis 1.0.16 → 1.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/morghulis.es.js +258 -123
- package/dist/morghulis.es.js.map +1 -1
- package/dist/morghulis.umd.js +1 -5
- package/dist/morghulis.umd.js.map +1 -1
- package/package.json +6 -2
package/README.md
CHANGED
package/dist/morghulis.es.js
CHANGED
@@ -1,23 +1,145 @@
|
|
1
|
-
import
|
2
|
-
import { default as
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
}),
|
15
|
-
|
16
|
-
|
17
|
-
|
1
|
+
import W, { ElMessage as k, ElMessageBox as p } from "element-plus";
|
2
|
+
import { default as eu } from "element-plus";
|
3
|
+
import re from "axios";
|
4
|
+
import N from "nprogress";
|
5
|
+
import "nprogress/nprogress.css";
|
6
|
+
import _ from "js-cookie";
|
7
|
+
import x from "lodash";
|
8
|
+
import { nanoid as ae } from "nanoid";
|
9
|
+
import { defineComponent as se, mergeDefaults as ie, useSlots as ce, computed as B, ref as D, resolveComponent as g, resolveDirective as de, openBlock as y, createBlock as q, mergeProps as Ee, unref as H, withKeys as pe, createSlots as me, withCtx as c, createElementVNode as J, renderSlot as C, createVNode as d, createTextVNode as h, toDisplayString as w, createElementBlock as S, Fragment as K, createCommentVNode as A, withDirectives as fe } from "vue";
|
10
|
+
import { library as ge } from "@fortawesome/fontawesome-svg-core";
|
11
|
+
import { fas as Fe } from "@fortawesome/free-solid-svg-icons";
|
12
|
+
import { FontAwesomeIcon as Be } from "@fortawesome/vue-fontawesome";
|
13
|
+
const $ = {
|
14
|
+
info: (e) => k({ message: e, type: "info", grouping: !0 }),
|
15
|
+
success: (e) => k({ message: e, type: "success", grouping: !0 }),
|
16
|
+
warning: (e) => k({ message: e, type: "warning", grouping: !0 }),
|
17
|
+
error: (e) => k({ message: e, type: "error", grouping: !0 })
|
18
|
+
}, We = {
|
19
|
+
info: (e, u) => p.alert(e, u, { type: "info" }),
|
20
|
+
success: (e, u) => p.alert(e, u, { type: "success" }),
|
21
|
+
warning: (e, u) => p.alert(e, u, { type: "warning" }),
|
22
|
+
error: (e, u) => p.alert(e, u, { type: "error" })
|
23
|
+
}, Ge = {
|
24
|
+
info: (e, u) => p.confirm(e, u, { type: "info" }),
|
25
|
+
success: (e, u) => p.confirm(e, u, { type: "success" }),
|
26
|
+
warning: (e, u) => p.confirm(e, u, { type: "warning" }),
|
27
|
+
error: (e, u) => p.confirm(e, u, { type: "error" })
|
28
|
+
};
|
29
|
+
function De() {
|
30
|
+
function e(t) {
|
31
|
+
const n = U(t), l = L(n), s = t.substring(t.indexOf(".") + 1);
|
32
|
+
return n === t ? l : x.get(l, s);
|
18
33
|
}
|
19
|
-
|
20
|
-
|
34
|
+
function u(t, n) {
|
35
|
+
const l = U(t);
|
36
|
+
if (n == null)
|
37
|
+
o(l);
|
38
|
+
else if (l === t)
|
39
|
+
_.set(l, JSON.stringify(n));
|
40
|
+
else {
|
41
|
+
const s = L(l) || {}, F = x.set(s, t, n);
|
42
|
+
_.set(l, JSON.stringify(F));
|
43
|
+
}
|
44
|
+
}
|
45
|
+
function r(t, n) {
|
46
|
+
return e(t) == null && u(t, n), e(t);
|
47
|
+
}
|
48
|
+
function o(t) {
|
49
|
+
const n = U(t);
|
50
|
+
if (n === t)
|
51
|
+
_.remove(n);
|
52
|
+
else {
|
53
|
+
const l = L(n), s = t.substring(t.indexOf(".") + 1);
|
54
|
+
x.unset(l, s), u(n, l);
|
55
|
+
}
|
56
|
+
}
|
57
|
+
return { get: e, set: u, remove: o, load: r };
|
58
|
+
}
|
59
|
+
function U(e) {
|
60
|
+
let r = e.split(".")[0], o = r.indexOf("[");
|
61
|
+
return o === -1 ? r : r.substring(0, o);
|
62
|
+
}
|
63
|
+
function L(e) {
|
64
|
+
const u = _.get(e);
|
65
|
+
if (u == null)
|
66
|
+
return null;
|
67
|
+
try {
|
68
|
+
return JSON.parse(u);
|
69
|
+
} catch {
|
70
|
+
return u;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
const m = {
|
74
|
+
CLIENT: "client",
|
75
|
+
USER: "uid",
|
76
|
+
AUTH: "auth"
|
77
|
+
}, { load: ye, get: Ce, remove: he, set: ve } = De();
|
78
|
+
function be() {
|
79
|
+
let e = ae().replace(/-/g, "_");
|
80
|
+
e = ye(m.CLIENT, e);
|
81
|
+
const u = () => Ce(m.USER);
|
82
|
+
return { $client: e, user: u, check: (l) => u() === l, login: (l) => ve(m.USER, l), logout: () => he(m.USER), bearer: () => u() ? "Bearer 123" : null };
|
83
|
+
}
|
84
|
+
const { check: Te, logout: G, $client: ke, user: we, bearer: Ae } = be();
|
85
|
+
function Q(e = "/api/", u) {
|
86
|
+
function r(t) {
|
87
|
+
const n = re.create({ baseURL: e, responseType: u }), { request: l, response: s } = n.interceptors;
|
88
|
+
return l.use((F) => _e(F), Y), s.use(xe, Y), n;
|
89
|
+
}
|
90
|
+
function o() {
|
91
|
+
}
|
92
|
+
return { getRequest: r, all: o };
|
93
|
+
}
|
94
|
+
function _e(e, u) {
|
95
|
+
return N.start(), e.headers[m.CLIENT] = ke, e.headers[m.USER] = we(), e.headers[m.AUTH] = Ae(), e;
|
96
|
+
}
|
97
|
+
function xe(e) {
|
98
|
+
N.done();
|
99
|
+
let { headers: u, data: r } = e;
|
100
|
+
const o = u[m.USER];
|
101
|
+
if (o && !Te(o))
|
102
|
+
return G(), Promise.reject("登录已过期");
|
103
|
+
if (r && r.code !== void 0) {
|
104
|
+
const { code: t, message: n, result: l } = r;
|
105
|
+
if (t === 200)
|
106
|
+
return l;
|
107
|
+
const s = $e(t);
|
108
|
+
return $[s](n), Promise.reject(n);
|
109
|
+
}
|
110
|
+
return r;
|
111
|
+
}
|
112
|
+
function Y(e) {
|
113
|
+
if (N.done(), e.response) {
|
114
|
+
const { status: u } = e.response;
|
115
|
+
u === 401 ? (G(), $.error("登录已过期")) : $.error(`请求错误: ${u}`);
|
116
|
+
} else
|
117
|
+
$.error(`网络错误: ${e.message}`);
|
118
|
+
return Promise.reject(e);
|
119
|
+
}
|
120
|
+
function $e(e) {
|
121
|
+
return e >= 200 && e < 300 ? "success" : e >= 300 && e < 400 ? "info" : e >= 400 && e < 500 ? "warning" : "error";
|
122
|
+
}
|
123
|
+
const Me = (e = {}) => {
|
124
|
+
const u = e.baseUrl || "";
|
125
|
+
e.timeout, e.headers;
|
126
|
+
const { getRequest: r } = Q(u), o = r();
|
127
|
+
return {
|
128
|
+
// 发送消息
|
129
|
+
send: (t, n) => (console.log(`发送消息: ${t}`, n), o.post(t, n)),
|
130
|
+
// 接收消息
|
131
|
+
on: (t, n) => (console.log(`监听事件: ${t}`), () => {
|
132
|
+
console.log(`取消监听: ${t}`);
|
133
|
+
}),
|
134
|
+
// 关闭通道
|
135
|
+
close: () => {
|
136
|
+
console.log("关闭通道");
|
137
|
+
},
|
138
|
+
// 暴露http实例
|
139
|
+
http: o
|
140
|
+
};
|
141
|
+
};
|
142
|
+
var X = {
|
21
143
|
name: "zh-cn",
|
22
144
|
el: {
|
23
145
|
breadcrumb: {
|
@@ -195,7 +317,7 @@ var O = {
|
|
195
317
|
}
|
196
318
|
}
|
197
319
|
};
|
198
|
-
const
|
320
|
+
const Pe = {
|
199
321
|
title: "对话框",
|
200
322
|
width: 600,
|
201
323
|
fullscreen: !1,
|
@@ -213,7 +335,7 @@ const re = {
|
|
213
335
|
closeOnClickModal: !1,
|
214
336
|
closeOnPressEscape: !1,
|
215
337
|
showClose: !1,
|
216
|
-
beforeClose: (
|
338
|
+
beforeClose: (e) => e(),
|
217
339
|
draggable: !0,
|
218
340
|
overFlow: !1,
|
219
341
|
center: !1,
|
@@ -222,13 +344,13 @@ const re = {
|
|
222
344
|
closeIcon: "close",
|
223
345
|
confirmButtonText: "确认",
|
224
346
|
cancelButtonText: "取消"
|
225
|
-
},
|
347
|
+
}, Re = {
|
226
348
|
class: "mor-dialog-body",
|
227
349
|
"element-loading-background": "rgba(0,0,0,0.1)",
|
228
350
|
"element-loading-text": "加载中..."
|
229
|
-
},
|
351
|
+
}, Se = /* @__PURE__ */ se({
|
230
352
|
__name: "MDialog",
|
231
|
-
props: /* @__PURE__ */
|
353
|
+
props: /* @__PURE__ */ ie({
|
232
354
|
modelValue: { type: Boolean },
|
233
355
|
title: {},
|
234
356
|
subTitle: {},
|
@@ -261,146 +383,146 @@ const re = {
|
|
261
383
|
cancel: { type: Function },
|
262
384
|
confirmButtonText: {},
|
263
385
|
cancelButtonText: {}
|
264
|
-
},
|
386
|
+
}, Pe),
|
265
387
|
emits: ["close", "update:title", "update:subTitle", "update:modelValue"],
|
266
|
-
setup(
|
267
|
-
let
|
268
|
-
const
|
269
|
-
get: () =>
|
270
|
-
set: (
|
271
|
-
|
388
|
+
setup(e, { expose: u, emit: r }) {
|
389
|
+
let o = r, t = e;
|
390
|
+
const n = ce(), l = B(() => !!n.header), s = B(() => !!n.footer), F = s.value || !!t.confirm, f = D(!1), E = D({}), O = D(""), V = D(""), Z = B({
|
391
|
+
get: () => t.title,
|
392
|
+
set: (a) => {
|
393
|
+
o("update:title", a), O.value = a || "对话框";
|
272
394
|
}
|
273
|
-
}),
|
274
|
-
get: () =>
|
275
|
-
set: (
|
276
|
-
|
395
|
+
}), I = B({
|
396
|
+
get: () => t.subTitle,
|
397
|
+
set: (a) => {
|
398
|
+
o("update:subTitle", a), V.value = a || "";
|
277
399
|
}
|
278
|
-
}),
|
279
|
-
get: () =>
|
280
|
-
set: (
|
281
|
-
|
400
|
+
}), ee = D({}), j = B({
|
401
|
+
get: () => t.modelValue,
|
402
|
+
set: (a) => {
|
403
|
+
o("update:modelValue", a);
|
282
404
|
}
|
283
405
|
});
|
284
|
-
function
|
285
|
-
if (
|
286
|
-
const { title:
|
287
|
-
|
406
|
+
function ue(a = {}, i) {
|
407
|
+
if (i) {
|
408
|
+
const { title: b, subTitle: T } = i;
|
409
|
+
Z.value = b, I.value = T;
|
288
410
|
}
|
289
|
-
|
411
|
+
ee.value = a, E.value = x.cloneDeep(a), o("update:modelValue", !0);
|
290
412
|
}
|
291
|
-
function
|
292
|
-
|
413
|
+
function v() {
|
414
|
+
f.value = !1, o("update:modelValue", !1);
|
293
415
|
}
|
294
|
-
function
|
295
|
-
|
416
|
+
function te() {
|
417
|
+
f.value = !0, t.confirm && t.confirm(E.value, v);
|
296
418
|
}
|
297
|
-
function
|
298
|
-
|
419
|
+
function M() {
|
420
|
+
f.value = !0, t.cancel ? t.cancel(E.value, v) : v();
|
299
421
|
}
|
300
|
-
return
|
301
|
-
const
|
302
|
-
return
|
422
|
+
return u({ open: ue, close: v }), (a, i) => {
|
423
|
+
const b = g("el-text"), T = g("el-divider"), oe = g("fa"), P = g("el-button"), z = g("el-space"), ne = g("el-dialog"), le = de("loading");
|
424
|
+
return y(), q(ne, Ee({
|
303
425
|
class: "mor-dialog",
|
304
|
-
modelValue:
|
305
|
-
"onUpdate:modelValue":
|
306
|
-
}, { ...
|
307
|
-
onClose:
|
308
|
-
onKeydown:
|
309
|
-
}),
|
310
|
-
header:
|
311
|
-
|
312
|
-
|
313
|
-
|
426
|
+
modelValue: j.value,
|
427
|
+
"onUpdate:modelValue": i[0] || (i[0] = (R) => j.value = R)
|
428
|
+
}, { ...a.$props, ...a.$attrs }, {
|
429
|
+
onClose: i[1] || (i[1] = (R) => H(o)("close")),
|
430
|
+
onKeydown: i[2] || (i[2] = pe((R) => M(), ["esc"]))
|
431
|
+
}), me({
|
432
|
+
header: c(() => [
|
433
|
+
J("div", null, [
|
434
|
+
C(a.$slots, "title", { data: E.value }, () => [
|
435
|
+
d(b, {
|
314
436
|
size: "large",
|
315
437
|
tag: "b"
|
316
438
|
}, {
|
317
|
-
default:
|
318
|
-
|
439
|
+
default: c(() => [
|
440
|
+
h(w(O.value), 1)
|
319
441
|
]),
|
320
442
|
_: 1
|
321
443
|
})
|
322
444
|
]),
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
445
|
+
C(a.$slots, "sub-title", { data: E.value }, () => [
|
446
|
+
I.value ? (y(), S(K, { key: 0 }, [
|
447
|
+
d(T, { direction: "vertical" }),
|
448
|
+
d(b, {
|
327
449
|
tag: "b",
|
328
450
|
type: "info"
|
329
451
|
}, {
|
330
|
-
default:
|
331
|
-
|
452
|
+
default: c(() => [
|
453
|
+
h(w(V.value), 1)
|
332
454
|
]),
|
333
455
|
_: 1
|
334
456
|
})
|
335
|
-
], 64)) :
|
457
|
+
], 64)) : A("", !0)
|
336
458
|
])
|
337
459
|
]),
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
], 64)) :
|
343
|
-
|
460
|
+
J("div", null, [
|
461
|
+
l.value ? (y(), S(K, { key: 0 }, [
|
462
|
+
C(a.$slots, "header", { data: E.value }),
|
463
|
+
d(T, { direction: "vertical" })
|
464
|
+
], 64)) : A("", !0),
|
465
|
+
d(P, {
|
344
466
|
size: "small",
|
345
467
|
style: { padding: "3px 6px" },
|
346
468
|
type: "danger",
|
347
|
-
disabled:
|
348
|
-
onClick:
|
469
|
+
disabled: f.value,
|
470
|
+
onClick: M
|
349
471
|
}, {
|
350
|
-
default:
|
351
|
-
|
472
|
+
default: c(() => [
|
473
|
+
d(oe, { icon: "close" })
|
352
474
|
]),
|
353
475
|
_: 1
|
354
476
|
}, 8, ["disabled"])
|
355
477
|
])
|
356
478
|
]),
|
357
|
-
default:
|
358
|
-
|
359
|
-
|
479
|
+
default: c(() => [
|
480
|
+
fe((y(), S("div", Re, [
|
481
|
+
C(a.$slots, "default", { data: E.value })
|
360
482
|
])), [
|
361
|
-
[
|
483
|
+
[le, f.value]
|
362
484
|
])
|
363
485
|
]),
|
364
486
|
_: 2
|
365
487
|
}, [
|
366
|
-
|
488
|
+
H(F) ? {
|
367
489
|
name: "footer",
|
368
|
-
fn:
|
369
|
-
|
370
|
-
default:
|
371
|
-
|
490
|
+
fn: c(() => [
|
491
|
+
d(z, null, {
|
492
|
+
default: c(() => [
|
493
|
+
s.value ? C(a.$slots, "footer", {
|
372
494
|
key: 0,
|
373
|
-
data:
|
374
|
-
}) :
|
375
|
-
|
495
|
+
data: E.value
|
496
|
+
}) : A("", !0),
|
497
|
+
i[3] || (i[3] = h(" "))
|
376
498
|
]),
|
377
499
|
_: 3
|
378
500
|
}),
|
379
|
-
|
380
|
-
default:
|
381
|
-
|
501
|
+
a.confirm ? (y(), q(z, { key: 0 }, {
|
502
|
+
default: c(() => [
|
503
|
+
d(P, {
|
382
504
|
type: "success",
|
383
|
-
disabled:
|
384
|
-
onClick:
|
505
|
+
disabled: f.value,
|
506
|
+
onClick: te
|
385
507
|
}, {
|
386
|
-
default:
|
387
|
-
|
508
|
+
default: c(() => [
|
509
|
+
h(w(a.confirmButtonText), 1)
|
388
510
|
]),
|
389
511
|
_: 1
|
390
512
|
}, 8, ["disabled"]),
|
391
|
-
|
513
|
+
d(P, {
|
392
514
|
type: "info",
|
393
|
-
onClick:
|
394
|
-
disabled:
|
515
|
+
onClick: M,
|
516
|
+
disabled: f.value
|
395
517
|
}, {
|
396
|
-
default:
|
397
|
-
|
518
|
+
default: c(() => [
|
519
|
+
h(w(a.cancelButtonText), 1)
|
398
520
|
]),
|
399
521
|
_: 1
|
400
522
|
}, 8, ["disabled"])
|
401
523
|
]),
|
402
524
|
_: 1
|
403
|
-
})) :
|
525
|
+
})) : A("", !0)
|
404
526
|
]),
|
405
527
|
key: "0"
|
406
528
|
} : void 0
|
@@ -408,27 +530,40 @@ const re = {
|
|
408
530
|
};
|
409
531
|
}
|
410
532
|
});
|
411
|
-
|
412
|
-
const
|
413
|
-
const t = ne(u || {});
|
533
|
+
function Ue(e) {
|
534
|
+
const { getRequest: u } = Q(e);
|
414
535
|
return {
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
536
|
+
http: u()
|
537
|
+
};
|
538
|
+
}
|
539
|
+
ge.add(Fe);
|
540
|
+
const Le = (e) => {
|
541
|
+
const u = Me(e || {}), { baseURL: r } = e || { baseURL: "/api/", minioURL: "/dfs/" };
|
542
|
+
return Ue(r), {
|
543
|
+
install: (o) => {
|
544
|
+
o.provide("options", e), o.provide("channel", u), o.component("MDialog", Se), o.use(W, {
|
545
|
+
locale: X
|
546
|
+
}), o.component("fa", Be);
|
419
547
|
}
|
420
548
|
};
|
421
|
-
},
|
422
|
-
install: (
|
423
|
-
|
424
|
-
locale:
|
425
|
-
}),
|
549
|
+
}, Qe = {
|
550
|
+
install: (e, u) => {
|
551
|
+
e.use(W, {
|
552
|
+
locale: X
|
553
|
+
}), Le(u).install(e);
|
426
554
|
}
|
427
555
|
};
|
428
556
|
export {
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
557
|
+
We as $alert,
|
558
|
+
Ge as $confirm,
|
559
|
+
$ as $message,
|
560
|
+
eu as ElementPlus,
|
561
|
+
Se as MDialog,
|
562
|
+
Le as createMorghulis,
|
563
|
+
Qe as default,
|
564
|
+
be as useMorghulisAuthorize,
|
565
|
+
Ue as useMorghulisChannel,
|
566
|
+
De as useMorghulisCookies,
|
567
|
+
Q as useMorghulisRequest
|
433
568
|
};
|
434
569
|
//# sourceMappingURL=morghulis.es.js.map
|
package/dist/morghulis.es.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"morghulis.es.js","sources":["../src/tools/sockets.ts","../node_modules/element-plus/es/locale/lang/zh-cn.mjs","../src/types/dialog.types.ts","../src/components/dialog/MDialog.vue","../src/index.ts"],"sourcesContent":["// 简单的通信通道实现\nexport const $channel = (options: any = {}) => {\n const baseUrl = options.baseUrl || '';\n const timeout = options.timeout || 30000;\n const headers = options.headers || {};\n \n // 这里可以实现实际的通信逻辑\n // 例如:WebSocket连接、HTTP请求等\n \n return {\n // 发送消息\n send: (event: string, data: any) => {\n console.log(`发送消息: ${event}`, data);\n // 实际发送逻辑\n return Promise.resolve({ success: true });\n },\n \n // 接收消息\n on: (event: string, callback: Function) => {\n console.log(`监听事件: ${event}`);\n // 实际监听逻辑\n return () => {\n console.log(`取消监听: ${event}`);\n // 取消监听逻辑\n };\n },\n \n // 关闭通道\n close: () => {\n console.log('关闭通道');\n // 实际关闭逻辑\n }\n };\n};","var zhCn = {\n name: \"zh-cn\",\n el: {\n breadcrumb: {\n label: \"\\u9762\\u5305\\u5C51\"\n },\n colorpicker: {\n confirm: \"\\u786E\\u5B9A\",\n clear: \"\\u6E05\\u7A7A\",\n defaultLabel: \"\\u989C\\u8272\\u9009\\u62E9\\u5668\",\n description: \"\\u5F53\\u524D\\u989C\\u8272 {color}\\uFF0C\\u6309 Enter \\u952E\\u9009\\u62E9\\u65B0\\u989C\\u8272\",\n alphaLabel: \"\\u9009\\u62E9\\u900F\\u660E\\u5EA6\\u7684\\u503C\"\n },\n datepicker: {\n now: \"\\u6B64\\u523B\",\n today: \"\\u4ECA\\u5929\",\n cancel: \"\\u53D6\\u6D88\",\n clear: \"\\u6E05\\u7A7A\",\n confirm: \"\\u786E\\u5B9A\",\n dateTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u952E\\u4E0E Enter \\u952E\\u53EF\\u9009\\u62E9\\u65E5\\u671F\",\n monthTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u952E\\u4E0E Enter \\u952E\\u53EF\\u9009\\u62E9\\u6708\\u4EFD\",\n yearTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u952E\\u4E0E Enter \\u952E\\u53EF\\u9009\\u62E9\\u5E74\\u4EFD\",\n selectedDate: \"\\u5DF2\\u9009\\u65E5\\u671F\",\n selectDate: \"\\u9009\\u62E9\\u65E5\\u671F\",\n selectTime: \"\\u9009\\u62E9\\u65F6\\u95F4\",\n startDate: \"\\u5F00\\u59CB\\u65E5\\u671F\",\n startTime: \"\\u5F00\\u59CB\\u65F6\\u95F4\",\n endDate: \"\\u7ED3\\u675F\\u65E5\\u671F\",\n endTime: \"\\u7ED3\\u675F\\u65F6\\u95F4\",\n prevYear: \"\\u524D\\u4E00\\u5E74\",\n nextYear: \"\\u540E\\u4E00\\u5E74\",\n prevMonth: \"\\u4E0A\\u4E2A\\u6708\",\n nextMonth: \"\\u4E0B\\u4E2A\\u6708\",\n year: \"\\u5E74\",\n month1: \"1 \\u6708\",\n month2: \"2 \\u6708\",\n month3: \"3 \\u6708\",\n month4: \"4 \\u6708\",\n month5: \"5 \\u6708\",\n month6: \"6 \\u6708\",\n month7: \"7 \\u6708\",\n month8: \"8 \\u6708\",\n month9: \"9 \\u6708\",\n month10: \"10 \\u6708\",\n month11: \"11 \\u6708\",\n month12: \"12 \\u6708\",\n weeks: {\n sun: \"\\u65E5\",\n mon: \"\\u4E00\",\n tue: \"\\u4E8C\",\n wed: \"\\u4E09\",\n thu: \"\\u56DB\",\n fri: \"\\u4E94\",\n sat: \"\\u516D\"\n },\n weeksFull: {\n sun: \"\\u661F\\u671F\\u65E5\",\n mon: \"\\u661F\\u671F\\u4E00\",\n tue: \"\\u661F\\u671F\\u4E8C\",\n wed: \"\\u661F\\u671F\\u4E09\",\n thu: \"\\u661F\\u671F\\u56DB\",\n fri: \"\\u661F\\u671F\\u4E94\",\n sat: \"\\u661F\\u671F\\u516D\"\n },\n months: {\n jan: \"\\u4E00\\u6708\",\n feb: \"\\u4E8C\\u6708\",\n mar: \"\\u4E09\\u6708\",\n apr: \"\\u56DB\\u6708\",\n may: \"\\u4E94\\u6708\",\n jun: \"\\u516D\\u6708\",\n jul: \"\\u4E03\\u6708\",\n aug: \"\\u516B\\u6708\",\n sep: \"\\u4E5D\\u6708\",\n oct: \"\\u5341\\u6708\",\n nov: \"\\u5341\\u4E00\\u6708\",\n dec: \"\\u5341\\u4E8C\\u6708\"\n }\n },\n inputNumber: {\n decrease: \"\\u51CF\\u5C11\\u6570\\u503C\",\n increase: \"\\u589E\\u52A0\\u6570\\u503C\"\n },\n select: {\n loading: \"\\u52A0\\u8F7D\\u4E2D\",\n noMatch: \"\\u65E0\\u5339\\u914D\\u6570\\u636E\",\n noData: \"\\u65E0\\u6570\\u636E\",\n placeholder: \"\\u8BF7\\u9009\\u62E9\"\n },\n dropdown: {\n toggleDropdown: \"\\u5207\\u6362\\u4E0B\\u62C9\\u9009\\u9879\"\n },\n mention: {\n loading: \"\\u52A0\\u8F7D\\u4E2D\"\n },\n cascader: {\n noMatch: \"\\u65E0\\u5339\\u914D\\u6570\\u636E\",\n loading: \"\\u52A0\\u8F7D\\u4E2D\",\n placeholder: \"\\u8BF7\\u9009\\u62E9\",\n noData: \"\\u6682\\u65E0\\u6570\\u636E\"\n },\n pagination: {\n goto: \"\\u524D\\u5F80\",\n pagesize: \"\\u6761/\\u9875\",\n total: \"\\u5171 {total} \\u6761\",\n pageClassifier: \"\\u9875\",\n page: \"\\u9875\",\n prev: \"\\u4E0A\\u4E00\\u9875\",\n next: \"\\u4E0B\\u4E00\\u9875\",\n currentPage: \"\\u7B2C {pager} \\u9875\",\n prevPages: \"\\u5411\\u524D {pager} \\u9875\",\n nextPages: \"\\u5411\\u540E {pager} \\u9875\",\n deprecationWarning: \"\\u4F60\\u4F7F\\u7528\\u4E86\\u4E00\\u4E9B\\u5DF2\\u88AB\\u5E9F\\u5F03\\u7684\\u7528\\u6CD5\\uFF0C\\u8BF7\\u53C2\\u8003 el-pagination \\u7684\\u5B98\\u65B9\\u6587\\u6863\"\n },\n dialog: {\n close: \"\\u5173\\u95ED\\u6B64\\u5BF9\\u8BDD\\u6846\"\n },\n drawer: {\n close: \"\\u5173\\u95ED\\u6B64\\u5BF9\\u8BDD\\u6846\"\n },\n messagebox: {\n title: \"\\u63D0\\u793A\",\n confirm: \"\\u786E\\u5B9A\",\n cancel: \"\\u53D6\\u6D88\",\n error: \"\\u8F93\\u5165\\u7684\\u6570\\u636E\\u4E0D\\u5408\\u6CD5!\",\n close: \"\\u5173\\u95ED\\u6B64\\u5BF9\\u8BDD\\u6846\"\n },\n upload: {\n deleteTip: \"\\u6309 delete \\u952E\\u53EF\\u5220\\u9664\",\n delete: \"\\u5220\\u9664\",\n preview: \"\\u67E5\\u770B\\u56FE\\u7247\",\n continue: \"\\u7EE7\\u7EED\\u4E0A\\u4F20\"\n },\n slider: {\n defaultLabel: \"\\u6ED1\\u5757\\u4ECB\\u4E8E {min} \\u81F3 {max}\",\n defaultRangeStartLabel: \"\\u9009\\u62E9\\u8D77\\u59CB\\u503C\",\n defaultRangeEndLabel: \"\\u9009\\u62E9\\u7ED3\\u675F\\u503C\"\n },\n table: {\n emptyText: \"\\u6682\\u65E0\\u6570\\u636E\",\n confirmFilter: \"\\u7B5B\\u9009\",\n resetFilter: \"\\u91CD\\u7F6E\",\n clearFilter: \"\\u5168\\u90E8\",\n sumText: \"\\u5408\\u8BA1\"\n },\n tour: {\n next: \"\\u4E0B\\u4E00\\u6B65\",\n previous: \"\\u4E0A\\u4E00\\u6B65\",\n finish: \"\\u7ED3\\u675F\\u5BFC\\u89C8\"\n },\n tree: {\n emptyText: \"\\u6682\\u65E0\\u6570\\u636E\"\n },\n transfer: {\n noMatch: \"\\u65E0\\u5339\\u914D\\u6570\\u636E\",\n noData: \"\\u65E0\\u6570\\u636E\",\n titles: [\"\\u5217\\u8868 1\", \"\\u5217\\u8868 2\"],\n filterPlaceholder: \"\\u8BF7\\u8F93\\u5165\\u641C\\u7D22\\u5185\\u5BB9\",\n noCheckedFormat: \"\\u5171 {total} \\u9879\",\n hasCheckedFormat: \"\\u5DF2\\u9009 {checked}/{total} \\u9879\"\n },\n image: {\n error: \"\\u52A0\\u8F7D\\u5931\\u8D25\"\n },\n pageHeader: {\n title: \"\\u8FD4\\u56DE\"\n },\n popconfirm: {\n confirmButtonText: \"\\u786E\\u5B9A\",\n cancelButtonText: \"\\u53D6\\u6D88\"\n },\n carousel: {\n leftArrow: \"\\u4E0A\\u4E00\\u5F20\\u5E7B\\u706F\\u7247\",\n rightArrow: \"\\u4E0B\\u4E00\\u5F20\\u5E7B\\u706F\\u7247\",\n indicator: \"\\u5E7B\\u706F\\u7247\\u5207\\u6362\\u81F3\\u7D22\\u5F15 {index}\"\n }\n }\n};\n\nexport { zhCn as default };\n//# sourceMappingURL=zh-cn.mjs.map\n","export interface MorDialogProps {\n modelValue?: boolean,\n title?: string,\n subTitle?: string,\n width?: string | number,\n fullscreen?: boolean,\n top?: string,\n modal?: boolean,\n modalClass?: string,\n headerClass?: string,\n bodyClass?: string,\n footerClass?: string,\n appendToBody?: boolean,\n appendTo?: string,\n lockScroll?: boolean,\n openDelay?: number,\n closeDelay?: number,\n closeOnClickModal?: boolean,\n closeOnPressEscape?: boolean,\n showClose?: boolean,\n beforeClose?: Function,\n draggable?: boolean,\n overFlow?: boolean,\n center?: boolean,\n alignCenter?: boolean,\n destroyOnClose?: boolean,\n closeIcon?: string,\n zIndex?: number,\n headerAriaLevel?: string,\n confirm?: Function,\n cancel?: Function,\n confirmButtonText?: string\n cancelButtonText?: string\n}\n\nexport const morDialogPropsDefault: MorDialogProps = {\n title: '对话框',\n width: 600,\n fullscreen: false,\n top: '30px',\n modal: true,\n modalClass: 'mor-dialog-modal',\n headerClass: 'mor-dialog-header',\n bodyClass: 'mor-dialog-body-wrapper',\n footerClass: 'mor-dialog-footer',\n appendToBody: true,\n appendTo: 'body',\n lockScroll: true,\n openDelay: 0,\n closeDelay: 0,\n closeOnClickModal: false,\n closeOnPressEscape: false,\n showClose: false,\n beforeClose: (done: Function) => done(),\n draggable: true,\n overFlow: false,\n center: false,\n alignCenter: false,\n destroyOnClose: true,\n closeIcon: 'close',\n confirmButtonText: '确认',\n cancelButtonText: '取消',\n}","<template>\n <el-dialog\n class=\"mor-dialog\"\n v-model=\"visible\"\n v-bind=\"{...$props, ...$attrs}\"\n @close=\"emits('close')\"\n @keydown.esc=\"handleCancel()\"\n >\n <template #header>\n <div>\n <slot name=\"title\" :data=\"$data\">\n <el-text size=\"large\" tag=\"b\">{{ __title }}</el-text>\n </slot>\n <slot name=\"sub-title\" :data=\"$data\">\n <template v-if=\"$subTitle\">\n <el-divider direction=\"vertical\"></el-divider>\n <el-text tag=\"b\" type=\"info\">{{ __subTitle }}</el-text>\n </template>\n </slot>\n </div>\n <div>\n <template v-if=\"hasHeader\">\n <slot name=\"header\" :data=\"$data\"></slot>\n <el-divider direction=\"vertical\"></el-divider>\n </template>\n <el-button\n size=\"small\"\n style=\"padding: 3px 6px\"\n type=\"danger\"\n :disabled=\"loading\"\n @click=\"handleCancel\"\n >\n <fa icon=\"close\"></fa>\n </el-button>\n </div>\n </template>\n <template #default>\n <div\n v-loading=\"loading\"\n class=\"mor-dialog-body\"\n element-loading-background=\"rgba(0,0,0,0.1)\"\n element-loading-text=\"加载中...\"\n >\n <slot :data=\"$data\"></slot>\n </div>\n </template>\n <template #footer v-if=\"showFooter\">\n <el-space>\n <slot v-if=\"hasFooter\" name=\"footer\" :data=\"$data\"/>\n \n </el-space>\n <el-space v-if=\"confirm\">\n <el-button\n type=\"success\"\n :disabled=\"loading\"\n @click=\"handleConfirm\"\n >\n {{ confirmButtonText }}\n </el-button>\n <el-button\n type=\"info\"\n @click=\"handleCancel\"\n :disabled=\"loading\"\n >\n {{ cancelButtonText }}\n </el-button>\n </el-space>\n </template>\n </el-dialog>\n</template>\n\n<script setup lang=\"ts\">\n\nimport {computed, ref, useSlots} from \"vue\";\nimport _ from 'lodash'\n\nimport {morDialogPropsDefault, type MorDialogProps} from \"../../types/dialog.types.ts\";\n\n// 已从types/dialog.types.ts导入MorDialogProps接口,无需重复定义\n\nlet emits = defineEmits(['close', 'update:title', 'update:subTitle', 'update:modelValue'])\nlet props = withDefaults(\n defineProps<MorDialogProps>(),\n morDialogPropsDefault\n)\n\n/**\n * 功能区\n */\nconst slots = useSlots();\nconst hasHeader = computed(() => !!slots.header)\nconst hasFooter = computed(() => !!slots.footer)\nconst showFooter = hasFooter.value || !!props.confirm\n\n\nconst loading = ref(false)\nconst $data: any = ref({})\nconst __title = ref('')\nconst __subTitle = ref('')\nconst $title = computed({\n get: () => props.title,\n set: (v) => {\n emits('update:title', v)\n __title.value = v || '对话框'\n }\n})\nconst $subTitle = computed({\n get: () => props.subTitle,\n set: (v) => {\n emits('update:subTitle', v)\n __subTitle.value = v || ''\n }\n})\n\nconst $origin = ref({})\n\n// 将visible与modelValue同步\nconst visible = computed({\n get: () => props.modelValue,\n set: (value) => {\n emits('update:modelValue', value)\n }\n})\n\nexport type MorDialogConfig = {\n title: string,\n subTitle: string\n}\n\nfunction open(data: any = {}, config?: MorDialogConfig) {\n if (config) {\n const {title, subTitle} = config\n $title.value = title\n $subTitle.value = subTitle\n }\n $origin.value = data\n $data.value = _.cloneDeep(data)\n emits('update:modelValue', true)\n}\n\nfunction close() {\n loading.value = false\n emits('update:modelValue', false)\n}\n\nfunction handleConfirm() {\n loading.value = true\n props.confirm && props.confirm($data.value, close)\n}\n\nfunction handleCancel() {\n loading.value = true\n if (props.cancel) {\n props.cancel($data.value, close)\n } else {\n close()\n }\n}\n\ndefineExpose({open, close})\n\n</script>\n\n<style>\n.mor-dialog {\n border: 2px solid #aaaaaa;\n}\n\n.mor-dialog-modal {\n background-color: rgba(4, 33, 71, 0.15) !important;\n}\n\n.mor-dialog-header {\n display: flex !important;\n align-items: center !important;\n justify-content: space-between !important;\n padding-left: 5px;\n}\n\n.mor-dialog-body-wrapper {\n padding: 0;\n background-color: transparent;\n}\n\n.mor-dialog-body {\n background-color: #ffffff;\n}\n\n.mor-dialog-footer {\n color: #aaa;\n padding-left: 5px;\n display: flex !important;\n align-items: center !important;\n justify-content: space-between !important;\n}\n</style>","import type {App} from \"vue\";\nimport ElementPlus from 'element-plus'\n// 确保导入Element Plus的样式\nimport 'element-plus/dist/index.css'\nimport {$channel} from \"./tools/sockets.ts\";\nimport 'font-awesome/css/font-awesome.css'\n// 导入组件库自身的基础样式\nimport './base.css'\nimport type {MorOption} from \"./types/io.types.ts\";\nimport zhCn from 'element-plus/es/locale/lang/zh-cn'\nimport MDialog from \"./components/dialog/MDialog.vue\";\nimport {library} from '@fortawesome/fontawesome-svg-core';\nimport {fas} from '@fortawesome/free-solid-svg-icons'\nimport {FontAwesomeIcon} from '@fortawesome/vue-fontawesome';\n// 导入Element Plus的组件类型,确保IDE能够识别\nimport type * as ElementPlusComponents from 'element-plus'\n\n// 注册FontAwesome图标\nlibrary.add(fas);\n\n// 创建Morghulis实例的工厂函数\nexport const createMorghulis = (options?: MorOption) => {\n const channel = $channel(options || {})\n return {\n install: (Vue: App) => {\n Vue.provide('channel', channel)\n Vue.component('MDialog', MDialog)\n Vue.use(ElementPlus, {\n locale: zhCn,\n })\n Vue.component('fa', FontAwesomeIcon)\n }\n }\n}\n\n// 导出组件,方便单独引入\nexport {\n MDialog\n}\n\n// 导出Element Plus,确保用户可以访问所有Element Plus组件\nexport { ElementPlus }\n\n// 导出类型定义\nexport type * from './types/dialog.types.ts'\nexport type * from './types/io.types.ts'\n// 重新导出Element Plus的类型,确保IDE能够识别\nexport type * from 'element-plus'\n\n// 默认导出\nexport default {\n install: (app: App, options?: MorOption) => {\n // 先安装Element Plus,确保其组件和样式被正确加载\n app.use(ElementPlus, {\n locale: zhCn,\n })\n // 再安装Morghulis组件\n createMorghulis(options).install(app)\n }\n}"],"names":["$channel","options","event","data","callback","zhCn","morDialogPropsDefault","done","emits","__emit","props","__props","slots","useSlots","hasHeader","computed","hasFooter","showFooter","loading","ref","$data","__title","__subTitle","$title","v","$subTitle","$origin","visible","value","open","config","title","subTitle","_","close","handleConfirm","handleCancel","__expose","library","fas","createMorghulis","channel","Vue","MDialog","ElementPlus","FontAwesomeIcon","index","app"],"mappings":"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","x_google_ignoreList":[1]}
|
1
|
+
{"version":3,"file":"morghulis.es.js","sources":["../src/tools/feedback.ts","../src/hooks/cookies.ts","../src/hooks/authorize.ts","../src/hooks/request.ts","../src/tools/sockets.ts","../node_modules/element-plus/es/locale/lang/zh-cn.mjs","../src/types/dialog.types.ts","../src/components/dialog/MDialog.vue","../src/hooks/channel.ts","../src/index.ts"],"sourcesContent":["import {ElMessage} from 'element-plus'\nimport {ElMessageBox} from 'element-plus'\nimport type {MorghulisMessageInterface, MorghulisMessageBoxInterface} from \"../types/feedback.types\";\n\nexport const $message: MorghulisMessageInterface = {\n info: (message: string) => ElMessage({message, type: 'info', grouping: true}),\n success: (message: string) => ElMessage({message, type: 'success', grouping: true}),\n warning: (message: string) => ElMessage({message, type: 'warning', grouping: true}),\n error: (message: string) => ElMessage({message, type: 'error', grouping: true}),\n}\n\nexport const $alert: MorghulisMessageBoxInterface = {\n info: (message: string, title?: string) => ElMessageBox.alert(message, title, {type: 'info'}),\n success: (message: string, title?: string) => ElMessageBox.alert(message, title, {type: 'success'}),\n warning: (message: string, title?: string) => ElMessageBox.alert(message, title, {type: 'warning'}),\n error: (message: string, title?: string) => ElMessageBox.alert(message, title, {type: 'error'}),\n}\n\nexport const $confirm: MorghulisMessageBoxInterface = {\n info: (message: string, title?: string) => ElMessageBox.confirm(message, title, {type: 'info'}),\n success: (message: string, title?: string) => ElMessageBox.confirm(message, title, {type: 'success'}),\n warning: (message: string, title?: string) => ElMessageBox.confirm(message, title, {type: 'warning'}),\n error: (message: string, title?: string) => ElMessageBox.confirm(message, title, {type: 'error'}),\n}","import Cookies from 'js-cookie'\nimport _ from 'lodash'\n\n\nexport function useMorghulisCookies() {\n\n function get(path: string): any {\n const key = getKeyFromPath(path)\n const value = getJsonFromCookies(key)\n const _path = path.substring(path.indexOf('.') + 1)\n return key === path ? value : _.get(value, _path)\n }\n\n function set(path: string, value?: any): void {\n const key = getKeyFromPath(path)\n if (value == null) remove(key)\n else if (key === path) Cookies.set(key, JSON.stringify(value))\n else {\n const oldValue = getJsonFromCookies(key) || {}\n const newValue = _.set(oldValue, path, value);\n Cookies.set(key, JSON.stringify(newValue))\n }\n }\n\n function load(key: string, value?: any): any {\n const val = get(key)\n if (val == null) set(key, value)\n return get(key)\n }\n\n function remove(path: string): void {\n const key = getKeyFromPath(path)\n if (key === path) Cookies.remove(key)\n else {\n const value = getJsonFromCookies(key)\n const _path = path.substring(path.indexOf('.') + 1)\n _.unset(value, _path)\n set(key, value)\n }\n }\n\n return {get, set, remove, load}\n}\n\nfunction getKeyFromPath(path: string) {\n const ks = path.split('.')\n let key = ks[0]\n let index = key.indexOf('[')\n return index === -1 ? key : key.substring(0, index)\n}\n\nfunction getJsonFromCookies(key: string) {\n const value = Cookies.get(key)\n if (value == null) return null\n try {\n return JSON.parse(value)\n } catch (e) {\n return value\n }\n}","import {useMorghulisCookies} from \"./cookies\";\nimport {nanoid} from \"nanoid\";\n\nexport const SYSTEM_KEY = {\n CLIENT: 'client', USER: 'uid', AUTH: 'auth',\n}\nconst {load, get, remove, set} = useMorghulisCookies()\n\nexport function useMorghulisAuthorize() {\n let $client = nanoid().replace(/-/g, '_')\n $client = load(SYSTEM_KEY.CLIENT, $client)\n const user = () => get(SYSTEM_KEY.USER)\n const check = (uid?: any) => user() === uid\n const login = (uid: any) => set(SYSTEM_KEY.USER, uid)\n const logout = () => remove(SYSTEM_KEY.USER)\n const bearer = () => user() ? `Bearer ${123}` : null\n return {$client, user, check, login, logout, bearer}\n}","import type {AxiosResponse, InternalAxiosRequestConfig} from 'axios'\nimport axios, {type ResponseType} from 'axios'\nimport NProgress from 'nprogress'\nimport 'nprogress/nprogress.css'\nimport {$message} from \"../tools/feedback.ts\";\nimport type {UIFeedbackTypes} from \"../types/ui.types.ts\";\nimport {SYSTEM_KEY, useMorghulisAuthorize} from \"./authorize.ts\";\n\nconst {check, logout, $client, user, bearer} = useMorghulisAuthorize()\n\n\nexport function useMorghulisRequest(baseURL: string = '/api/', responseType?: ResponseType) {\n function getRequest(auth?: boolean) {\n const instance = axios.create({baseURL, responseType})\n const {request, response} = instance.interceptors\n request.use((config) => beforeRequest(config, auth), onReject)\n response.use(beforeResponse, onReject)\n return instance\n }\n\n function all() {\n // 实现批量请求功能\n }\n\n return {getRequest, all}\n\n}\n\nfunction beforeRequest(\n config: InternalAxiosRequestConfig, auth?: boolean\n): InternalAxiosRequestConfig | Promise<any> {\n NProgress.start()\n config.headers[SYSTEM_KEY.CLIENT] = $client\n config.headers[SYSTEM_KEY.USER] = user()\n config.headers[SYSTEM_KEY.AUTH] = bearer()\n return config\n}\n\n\nfunction beforeResponse(\n response: AxiosResponse\n): AxiosResponse | Promise<any> {\n NProgress.done()\n let {headers, data} = response\n const UID = headers[SYSTEM_KEY.USER]\n if (UID && !check(UID)) {\n logout()\n return Promise.reject('登录已过期')\n }\n if (data && data.code !== undefined) {\n const {code, message, result} = data\n if (code === 200) return result\n const type = getTypeByCode(code)\n $message[type](message)\n return Promise.reject(message)\n }\n return data\n}\n\nfunction onReject(error: any) {\n NProgress.done()\n if (error.response) {\n const {status} = error.response\n if (status === 401) {\n logout()\n $message.error('登录已过期')\n } else {\n $message.error(`请求错误: ${status}`)\n }\n } else {\n $message.error(`网络错误: ${error.message}`)\n }\n return Promise.reject(error)\n}\n\nfunction getTypeByCode(code: number): UIFeedbackTypes {\n if (code >= 200 && code < 300) return 'success'\n if (code >= 300 && code < 400) return 'info'\n if (code >= 400 && code < 500) return 'warning'\n return 'error'\n}","import { useMorghulisRequest } from '../hooks/request';\nimport type { MorOption } from '../types/io.types';\nimport type { MorghulisOptions } from '../types/channel.types';\n\n// 增强的通信通道实现\nexport const $channel = (options: MorOption & MorghulisOptions = {}) => {\n const baseUrl = options.baseUrl || '';\n const timeout = options.timeout || 30000;\n const headers = options.headers || {};\n \n // 获取请求实例\n const { getRequest } = useMorghulisRequest(baseUrl);\n const http = getRequest();\n \n return {\n // 发送消息\n send: (event: string, data: any) => {\n console.log(`发送消息: ${event}`, data);\n // 使用http实例发送请求\n return http.post(event, data);\n },\n \n // 接收消息\n on: (event: string, callback: Function) => {\n console.log(`监听事件: ${event}`);\n // 实际监听逻辑\n return () => {\n console.log(`取消监听: ${event}`);\n // 取消监听逻辑\n };\n },\n \n // 关闭通道\n close: () => {\n console.log('关闭通道');\n // 实际关闭逻辑\n },\n \n // 暴露http实例\n http\n };\n};","var zhCn = {\n name: \"zh-cn\",\n el: {\n breadcrumb: {\n label: \"\\u9762\\u5305\\u5C51\"\n },\n colorpicker: {\n confirm: \"\\u786E\\u5B9A\",\n clear: \"\\u6E05\\u7A7A\",\n defaultLabel: \"\\u989C\\u8272\\u9009\\u62E9\\u5668\",\n description: \"\\u5F53\\u524D\\u989C\\u8272 {color}\\uFF0C\\u6309 Enter \\u952E\\u9009\\u62E9\\u65B0\\u989C\\u8272\",\n alphaLabel: \"\\u9009\\u62E9\\u900F\\u660E\\u5EA6\\u7684\\u503C\"\n },\n datepicker: {\n now: \"\\u6B64\\u523B\",\n today: \"\\u4ECA\\u5929\",\n cancel: \"\\u53D6\\u6D88\",\n clear: \"\\u6E05\\u7A7A\",\n confirm: \"\\u786E\\u5B9A\",\n dateTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u952E\\u4E0E Enter \\u952E\\u53EF\\u9009\\u62E9\\u65E5\\u671F\",\n monthTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u952E\\u4E0E Enter \\u952E\\u53EF\\u9009\\u62E9\\u6708\\u4EFD\",\n yearTablePrompt: \"\\u4F7F\\u7528\\u65B9\\u5411\\u952E\\u4E0E Enter \\u952E\\u53EF\\u9009\\u62E9\\u5E74\\u4EFD\",\n selectedDate: \"\\u5DF2\\u9009\\u65E5\\u671F\",\n selectDate: \"\\u9009\\u62E9\\u65E5\\u671F\",\n selectTime: \"\\u9009\\u62E9\\u65F6\\u95F4\",\n startDate: \"\\u5F00\\u59CB\\u65E5\\u671F\",\n startTime: \"\\u5F00\\u59CB\\u65F6\\u95F4\",\n endDate: \"\\u7ED3\\u675F\\u65E5\\u671F\",\n endTime: \"\\u7ED3\\u675F\\u65F6\\u95F4\",\n prevYear: \"\\u524D\\u4E00\\u5E74\",\n nextYear: \"\\u540E\\u4E00\\u5E74\",\n prevMonth: \"\\u4E0A\\u4E2A\\u6708\",\n nextMonth: \"\\u4E0B\\u4E2A\\u6708\",\n year: \"\\u5E74\",\n month1: \"1 \\u6708\",\n month2: \"2 \\u6708\",\n month3: \"3 \\u6708\",\n month4: \"4 \\u6708\",\n month5: \"5 \\u6708\",\n month6: \"6 \\u6708\",\n month7: \"7 \\u6708\",\n month8: \"8 \\u6708\",\n month9: \"9 \\u6708\",\n month10: \"10 \\u6708\",\n month11: \"11 \\u6708\",\n month12: \"12 \\u6708\",\n weeks: {\n sun: \"\\u65E5\",\n mon: \"\\u4E00\",\n tue: \"\\u4E8C\",\n wed: \"\\u4E09\",\n thu: \"\\u56DB\",\n fri: \"\\u4E94\",\n sat: \"\\u516D\"\n },\n weeksFull: {\n sun: \"\\u661F\\u671F\\u65E5\",\n mon: \"\\u661F\\u671F\\u4E00\",\n tue: \"\\u661F\\u671F\\u4E8C\",\n wed: \"\\u661F\\u671F\\u4E09\",\n thu: \"\\u661F\\u671F\\u56DB\",\n fri: \"\\u661F\\u671F\\u4E94\",\n sat: \"\\u661F\\u671F\\u516D\"\n },\n months: {\n jan: \"\\u4E00\\u6708\",\n feb: \"\\u4E8C\\u6708\",\n mar: \"\\u4E09\\u6708\",\n apr: \"\\u56DB\\u6708\",\n may: \"\\u4E94\\u6708\",\n jun: \"\\u516D\\u6708\",\n jul: \"\\u4E03\\u6708\",\n aug: \"\\u516B\\u6708\",\n sep: \"\\u4E5D\\u6708\",\n oct: \"\\u5341\\u6708\",\n nov: \"\\u5341\\u4E00\\u6708\",\n dec: \"\\u5341\\u4E8C\\u6708\"\n }\n },\n inputNumber: {\n decrease: \"\\u51CF\\u5C11\\u6570\\u503C\",\n increase: \"\\u589E\\u52A0\\u6570\\u503C\"\n },\n select: {\n loading: \"\\u52A0\\u8F7D\\u4E2D\",\n noMatch: \"\\u65E0\\u5339\\u914D\\u6570\\u636E\",\n noData: \"\\u65E0\\u6570\\u636E\",\n placeholder: \"\\u8BF7\\u9009\\u62E9\"\n },\n dropdown: {\n toggleDropdown: \"\\u5207\\u6362\\u4E0B\\u62C9\\u9009\\u9879\"\n },\n mention: {\n loading: \"\\u52A0\\u8F7D\\u4E2D\"\n },\n cascader: {\n noMatch: \"\\u65E0\\u5339\\u914D\\u6570\\u636E\",\n loading: \"\\u52A0\\u8F7D\\u4E2D\",\n placeholder: \"\\u8BF7\\u9009\\u62E9\",\n noData: \"\\u6682\\u65E0\\u6570\\u636E\"\n },\n pagination: {\n goto: \"\\u524D\\u5F80\",\n pagesize: \"\\u6761/\\u9875\",\n total: \"\\u5171 {total} \\u6761\",\n pageClassifier: \"\\u9875\",\n page: \"\\u9875\",\n prev: \"\\u4E0A\\u4E00\\u9875\",\n next: \"\\u4E0B\\u4E00\\u9875\",\n currentPage: \"\\u7B2C {pager} \\u9875\",\n prevPages: \"\\u5411\\u524D {pager} \\u9875\",\n nextPages: \"\\u5411\\u540E {pager} \\u9875\",\n deprecationWarning: \"\\u4F60\\u4F7F\\u7528\\u4E86\\u4E00\\u4E9B\\u5DF2\\u88AB\\u5E9F\\u5F03\\u7684\\u7528\\u6CD5\\uFF0C\\u8BF7\\u53C2\\u8003 el-pagination \\u7684\\u5B98\\u65B9\\u6587\\u6863\"\n },\n dialog: {\n close: \"\\u5173\\u95ED\\u6B64\\u5BF9\\u8BDD\\u6846\"\n },\n drawer: {\n close: \"\\u5173\\u95ED\\u6B64\\u5BF9\\u8BDD\\u6846\"\n },\n messagebox: {\n title: \"\\u63D0\\u793A\",\n confirm: \"\\u786E\\u5B9A\",\n cancel: \"\\u53D6\\u6D88\",\n error: \"\\u8F93\\u5165\\u7684\\u6570\\u636E\\u4E0D\\u5408\\u6CD5!\",\n close: \"\\u5173\\u95ED\\u6B64\\u5BF9\\u8BDD\\u6846\"\n },\n upload: {\n deleteTip: \"\\u6309 delete \\u952E\\u53EF\\u5220\\u9664\",\n delete: \"\\u5220\\u9664\",\n preview: \"\\u67E5\\u770B\\u56FE\\u7247\",\n continue: \"\\u7EE7\\u7EED\\u4E0A\\u4F20\"\n },\n slider: {\n defaultLabel: \"\\u6ED1\\u5757\\u4ECB\\u4E8E {min} \\u81F3 {max}\",\n defaultRangeStartLabel: \"\\u9009\\u62E9\\u8D77\\u59CB\\u503C\",\n defaultRangeEndLabel: \"\\u9009\\u62E9\\u7ED3\\u675F\\u503C\"\n },\n table: {\n emptyText: \"\\u6682\\u65E0\\u6570\\u636E\",\n confirmFilter: \"\\u7B5B\\u9009\",\n resetFilter: \"\\u91CD\\u7F6E\",\n clearFilter: \"\\u5168\\u90E8\",\n sumText: \"\\u5408\\u8BA1\"\n },\n tour: {\n next: \"\\u4E0B\\u4E00\\u6B65\",\n previous: \"\\u4E0A\\u4E00\\u6B65\",\n finish: \"\\u7ED3\\u675F\\u5BFC\\u89C8\"\n },\n tree: {\n emptyText: \"\\u6682\\u65E0\\u6570\\u636E\"\n },\n transfer: {\n noMatch: \"\\u65E0\\u5339\\u914D\\u6570\\u636E\",\n noData: \"\\u65E0\\u6570\\u636E\",\n titles: [\"\\u5217\\u8868 1\", \"\\u5217\\u8868 2\"],\n filterPlaceholder: \"\\u8BF7\\u8F93\\u5165\\u641C\\u7D22\\u5185\\u5BB9\",\n noCheckedFormat: \"\\u5171 {total} \\u9879\",\n hasCheckedFormat: \"\\u5DF2\\u9009 {checked}/{total} \\u9879\"\n },\n image: {\n error: \"\\u52A0\\u8F7D\\u5931\\u8D25\"\n },\n pageHeader: {\n title: \"\\u8FD4\\u56DE\"\n },\n popconfirm: {\n confirmButtonText: \"\\u786E\\u5B9A\",\n cancelButtonText: \"\\u53D6\\u6D88\"\n },\n carousel: {\n leftArrow: \"\\u4E0A\\u4E00\\u5F20\\u5E7B\\u706F\\u7247\",\n rightArrow: \"\\u4E0B\\u4E00\\u5F20\\u5E7B\\u706F\\u7247\",\n indicator: \"\\u5E7B\\u706F\\u7247\\u5207\\u6362\\u81F3\\u7D22\\u5F15 {index}\"\n }\n }\n};\n\nexport { zhCn as default };\n//# sourceMappingURL=zh-cn.mjs.map\n","export interface MorDialogProps {\n modelValue?: boolean,\n title?: string,\n subTitle?: string,\n width?: string | number,\n fullscreen?: boolean,\n top?: string,\n modal?: boolean,\n modalClass?: string,\n headerClass?: string,\n bodyClass?: string,\n footerClass?: string,\n appendToBody?: boolean,\n appendTo?: string,\n lockScroll?: boolean,\n openDelay?: number,\n closeDelay?: number,\n closeOnClickModal?: boolean,\n closeOnPressEscape?: boolean,\n showClose?: boolean,\n beforeClose?: Function,\n draggable?: boolean,\n overFlow?: boolean,\n center?: boolean,\n alignCenter?: boolean,\n destroyOnClose?: boolean,\n closeIcon?: string,\n zIndex?: number,\n headerAriaLevel?: string,\n confirm?: Function,\n cancel?: Function,\n confirmButtonText?: string\n cancelButtonText?: string\n}\n\nexport const morDialogPropsDefault: MorDialogProps = {\n title: '对话框',\n width: 600,\n fullscreen: false,\n top: '30px',\n modal: true,\n modalClass: 'mor-dialog-modal',\n headerClass: 'mor-dialog-header',\n bodyClass: 'mor-dialog-body-wrapper',\n footerClass: 'mor-dialog-footer',\n appendToBody: true,\n appendTo: 'body',\n lockScroll: true,\n openDelay: 0,\n closeDelay: 0,\n closeOnClickModal: false,\n closeOnPressEscape: false,\n showClose: false,\n beforeClose: (done: Function) => done(),\n draggable: true,\n overFlow: false,\n center: false,\n alignCenter: false,\n destroyOnClose: true,\n closeIcon: 'close',\n confirmButtonText: '确认',\n cancelButtonText: '取消',\n}","<template>\n <el-dialog\n class=\"mor-dialog\"\n v-model=\"visible\"\n v-bind=\"{...$props, ...$attrs}\"\n @close=\"emits('close')\"\n @keydown.esc=\"handleCancel()\"\n >\n <template #header>\n <div>\n <slot name=\"title\" :data=\"$data\">\n <el-text size=\"large\" tag=\"b\">{{ __title }}</el-text>\n </slot>\n <slot name=\"sub-title\" :data=\"$data\">\n <template v-if=\"$subTitle\">\n <el-divider direction=\"vertical\"></el-divider>\n <el-text tag=\"b\" type=\"info\">{{ __subTitle }}</el-text>\n </template>\n </slot>\n </div>\n <div>\n <template v-if=\"hasHeader\">\n <slot name=\"header\" :data=\"$data\"></slot>\n <el-divider direction=\"vertical\"></el-divider>\n </template>\n <el-button\n size=\"small\"\n style=\"padding: 3px 6px\"\n type=\"danger\"\n :disabled=\"loading\"\n @click=\"handleCancel\"\n >\n <fa icon=\"close\"></fa>\n </el-button>\n </div>\n </template>\n <template #default>\n <div\n v-loading=\"loading\"\n class=\"mor-dialog-body\"\n element-loading-background=\"rgba(0,0,0,0.1)\"\n element-loading-text=\"加载中...\"\n >\n <slot :data=\"$data\"></slot>\n </div>\n </template>\n <template #footer v-if=\"showFooter\">\n <el-space>\n <slot v-if=\"hasFooter\" name=\"footer\" :data=\"$data\"/>\n \n </el-space>\n <el-space v-if=\"confirm\">\n <el-button\n type=\"success\"\n :disabled=\"loading\"\n @click=\"handleConfirm\"\n >\n {{ confirmButtonText }}\n </el-button>\n <el-button\n type=\"info\"\n @click=\"handleCancel\"\n :disabled=\"loading\"\n >\n {{ cancelButtonText }}\n </el-button>\n </el-space>\n </template>\n </el-dialog>\n</template>\n\n<script setup lang=\"ts\">\n\nimport {computed, ref, useSlots} from \"vue\";\nimport _ from 'lodash'\n\nimport {morDialogPropsDefault, type MorDialogProps} from \"../../types/dialog.types.ts\";\n\n// 已从types/dialog.types.ts导入MorDialogProps接口,无需重复定义\n\nlet emits = defineEmits(['close', 'update:title', 'update:subTitle', 'update:modelValue'])\nlet props = withDefaults(\n defineProps<MorDialogProps>(),\n morDialogPropsDefault\n)\n\n/**\n * 功能区\n */\nconst slots = useSlots();\nconst hasHeader = computed(() => !!slots.header)\nconst hasFooter = computed(() => !!slots.footer)\nconst showFooter = hasFooter.value || !!props.confirm\n\n\nconst loading = ref(false)\nconst $data: any = ref({})\nconst __title = ref('')\nconst __subTitle = ref('')\nconst $title = computed({\n get: () => props.title,\n set: (v) => {\n emits('update:title', v)\n __title.value = v || '对话框'\n }\n})\nconst $subTitle = computed({\n get: () => props.subTitle,\n set: (v) => {\n emits('update:subTitle', v)\n __subTitle.value = v || ''\n }\n})\n\nconst $origin = ref({})\n\n// 将visible与modelValue同步\nconst visible = computed({\n get: () => props.modelValue,\n set: (value) => {\n emits('update:modelValue', value)\n }\n})\n\nexport type MorDialogConfig = {\n title: string,\n subTitle: string\n}\n\nfunction open(data: any = {}, config?: MorDialogConfig) {\n if (config) {\n const {title, subTitle} = config\n $title.value = title\n $subTitle.value = subTitle\n }\n $origin.value = data\n $data.value = _.cloneDeep(data)\n emits('update:modelValue', true)\n}\n\nfunction close() {\n loading.value = false\n emits('update:modelValue', false)\n}\n\nfunction handleConfirm() {\n loading.value = true\n props.confirm && props.confirm($data.value, close)\n}\n\nfunction handleCancel() {\n loading.value = true\n if (props.cancel) {\n props.cancel($data.value, close)\n } else {\n close()\n }\n}\n\ndefineExpose({open, close})\n\n</script>\n\n<style>\n.mor-dialog {\n border: 2px solid #aaaaaa;\n}\n\n.mor-dialog-modal {\n background-color: rgba(4, 33, 71, 0.15) !important;\n}\n\n.mor-dialog-header {\n display: flex !important;\n align-items: center !important;\n justify-content: space-between !important;\n padding-left: 5px;\n}\n\n.mor-dialog-body-wrapper {\n padding: 0;\n background-color: transparent;\n}\n\n.mor-dialog-body {\n background-color: #ffffff;\n}\n\n.mor-dialog-footer {\n color: #aaa;\n padding-left: 5px;\n display: flex !important;\n align-items: center !important;\n justify-content: space-between !important;\n}\n</style>","import {useMorghulisRequest} from \"./request\";\n\nexport function useMorghulisChannel(baseURL: string) {\n const {getRequest} = useMorghulisRequest(baseURL)\n const http = getRequest()\n\n // 这里可以添加更多的通道相关功能\n \n return {\n http\n }\n}","import type {App} from \"vue\";\nimport ElementPlus from 'element-plus'\n// 确保导入Element Plus的样式\nimport 'element-plus/dist/index.css'\nimport {$channel} from \"./tools/sockets.ts\";\nimport 'font-awesome/css/font-awesome.css'\n// 导入组件库自身的基础样式\nimport './base.css'\nimport type {MorOption} from \"./types/io.types.ts\";\nimport type {MorghulisOptions} from \"./types/channel.types.ts\";\nimport zhCn from 'element-plus/es/locale/lang/zh-cn'\nimport MDialog from \"./components/dialog/MDialog.vue\";\nimport {library} from '@fortawesome/fontawesome-svg-core';\nimport {fas} from '@fortawesome/free-solid-svg-icons'\nimport {FontAwesomeIcon} from '@fortawesome/vue-fontawesome';\n// 导入Element Plus的组件类型,确保IDE能够识别\nimport type * as ElementPlusComponents from 'element-plus'\n// 导入hooks\nimport {useMorghulisCookies} from \"./hooks/cookies.ts\";\nimport {useMorghulisAuthorize} from \"./hooks/authorize.ts\";\nimport {useMorghulisChannel} from \"./hooks/channel.ts\";\nimport {useMorghulisRequest} from \"./hooks/request.ts\";\n// 导入工具\nimport {$message, $alert, $confirm} from \"./tools/feedback.ts\";\n\n// 注册FontAwesome图标\nlibrary.add(fas);\n\n// 创建Morghulis实例的工厂函数\nexport const createMorghulis = (options?: MorOption & MorghulisOptions) => {\n const channel = $channel(options || {})\n const {baseURL} = options || {baseURL: '/api/', minioURL: '/dfs/'}\n useMorghulisChannel(baseURL as string)\n \n return {\n install: (Vue: App) => {\n Vue.provide('options', options)\n Vue.provide('channel', channel)\n Vue.component('MDialog', MDialog)\n Vue.use(ElementPlus, {\n locale: zhCn,\n })\n Vue.component('fa', FontAwesomeIcon)\n }\n }\n}\n\n// 导出组件,方便单独引入\nexport {\n MDialog\n}\n\n// 导出hooks\nexport {\n useMorghulisCookies,\n useMorghulisAuthorize,\n useMorghulisChannel,\n useMorghulisRequest\n}\n\n// 导出工具\nexport {\n $message,\n $alert,\n $confirm\n}\n\n// 导出Element Plus,确保用户可以访问所有Element Plus组件\nexport { ElementPlus }\n\n// 导出类型定义\nexport type * from './types/dialog.types.ts'\nexport type * from './types/io.types.ts'\nexport type * from './types/channel.types.ts'\nexport type * from './types/feedback.types.ts'\nexport type * from './types/ui.types.ts'\n// 重新导出Element Plus的类型,确保IDE能够识别\nexport type * from 'element-plus'\n\n// 默认导出\nexport default {\n install: (app: App, options?: MorOption) => {\n // 先安装Element Plus,确保其组件和样式被正确加载\n app.use(ElementPlus, {\n locale: zhCn,\n })\n // 再安装Morghulis组件\n createMorghulis(options).install(app)\n }\n}"],"names":["$message","message","ElMessage","$alert","title","ElMessageBox","$confirm","useMorghulisCookies","get","path","key","getKeyFromPath","value","getJsonFromCookies","_path","_","set","remove","Cookies","oldValue","newValue","load","index","SYSTEM_KEY","useMorghulisAuthorize","$client","nanoid","user","uid","check","logout","bearer","useMorghulisRequest","baseURL","responseType","getRequest","auth","instance","axios","request","response","config","beforeRequest","onReject","beforeResponse","all","NProgress","headers","data","UID","code","result","type","getTypeByCode","error","status","$channel","options","baseUrl","http","event","callback","zhCn","morDialogPropsDefault","done","emits","__emit","props","__props","slots","useSlots","hasHeader","computed","hasFooter","showFooter","loading","ref","$data","__title","__subTitle","$title","v","$subTitle","$origin","visible","open","subTitle","close","handleConfirm","handleCancel","__expose","useMorghulisChannel","library","fas","createMorghulis","channel","Vue","MDialog","ElementPlus","FontAwesomeIcon","app"],"mappings":"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","x_google_ignoreList":[5]}
|