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 CHANGED
@@ -32,6 +32,7 @@ yarn add morghulis
32
32
  import { createApp } from 'vue'
33
33
  import App from './App.vue'
34
34
  import { createMorghulis } from 'morghulis'
35
+ import 'morghulis/dist/style.css'
35
36
 
36
37
  const app = createApp(App)
37
38
 
@@ -1,23 +1,145 @@
1
- import L from "element-plus";
2
- import { default as Ce } from "element-plus";
3
- import { defineComponent as q, mergeDefaults as G, useSlots as J, computed as E, ref as m, resolveComponent as d, resolveDirective as Q, openBlock as p, createBlock as M, mergeProps as X, unref as V, withKeys as Z, createSlots as ee, withCtx as l, createElementVNode as S, renderSlot as F, createVNode as n, createTextVNode as f, toDisplayString as C, createElementBlock as A, Fragment as z, createCommentVNode as v, withDirectives as ue } from "vue";
4
- import oe from "lodash";
5
- import { library as te } from "@fortawesome/fontawesome-svg-core";
6
- import { fas as le } from "@fortawesome/free-solid-svg-icons";
7
- import { FontAwesomeIcon as ae } from "@fortawesome/vue-fontawesome";
8
- const ne = (u = {}) => (u.baseUrl, u.timeout, u.headers, {
9
- // 发送消息
10
- send: (t, a) => (console.log(`发送消息: ${t}`, a), Promise.resolve({ success: !0 })),
11
- // 接收消息
12
- on: (t, a) => (console.log(`监听事件: ${t}`), () => {
13
- console.log(`取消监听: ${t}`);
14
- }),
15
- // 关闭通道
16
- close: () => {
17
- console.log("关闭通道");
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
- var O = {
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 re = {
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: (u) => u(),
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
- }, se = {
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
- }, ie = /* @__PURE__ */ q({
351
+ }, Se = /* @__PURE__ */ se({
230
352
  __name: "MDialog",
231
- props: /* @__PURE__ */ G({
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
- }, re),
386
+ }, Pe),
265
387
  emits: ["close", "update:title", "update:subTitle", "update:modelValue"],
266
- setup(u, { expose: t, emit: a }) {
267
- let c = a, r = u;
268
- const T = J(), N = E(() => !!T.header), _ = E(() => !!T.footer), I = _.value || !!r.confirm, i = m(!1), s = m({}), w = m(""), x = m(""), j = E({
269
- get: () => r.title,
270
- set: (e) => {
271
- c("update:title", e), w.value = e || "对话框";
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
- }), k = E({
274
- get: () => r.subTitle,
275
- set: (e) => {
276
- c("update:subTitle", e), x.value = e || "";
395
+ }), I = B({
396
+ get: () => t.subTitle,
397
+ set: (a) => {
398
+ o("update:subTitle", a), V.value = a || "";
277
399
  }
278
- }), H = m({}), $ = E({
279
- get: () => r.modelValue,
280
- set: (e) => {
281
- c("update:modelValue", e);
400
+ }), ee = D({}), j = B({
401
+ get: () => t.modelValue,
402
+ set: (a) => {
403
+ o("update:modelValue", a);
282
404
  }
283
405
  });
284
- function K(e = {}, o) {
285
- if (o) {
286
- const { title: B, subTitle: g } = o;
287
- j.value = B, k.value = g;
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
- H.value = e, s.value = oe.cloneDeep(e), c("update:modelValue", !0);
411
+ ee.value = a, E.value = x.cloneDeep(a), o("update:modelValue", !0);
290
412
  }
291
- function D() {
292
- i.value = !1, c("update:modelValue", !1);
413
+ function v() {
414
+ f.value = !1, o("update:modelValue", !1);
293
415
  }
294
- function R() {
295
- i.value = !0, r.confirm && r.confirm(s.value, D);
416
+ function te() {
417
+ f.value = !0, t.confirm && t.confirm(E.value, v);
296
418
  }
297
- function h() {
298
- i.value = !0, r.cancel ? r.cancel(s.value, D) : D();
419
+ function M() {
420
+ f.value = !0, t.cancel ? t.cancel(E.value, v) : v();
299
421
  }
300
- return t({ open: K, close: D }), (e, o) => {
301
- const B = d("el-text"), g = d("el-divider"), U = d("fa"), y = d("el-button"), P = d("el-space"), Y = d("el-dialog"), W = Q("loading");
302
- return p(), M(Y, X({
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: $.value,
305
- "onUpdate:modelValue": o[0] || (o[0] = (b) => $.value = b)
306
- }, { ...e.$props, ...e.$attrs }, {
307
- onClose: o[1] || (o[1] = (b) => V(c)("close")),
308
- onKeydown: o[2] || (o[2] = Z((b) => h(), ["esc"]))
309
- }), ee({
310
- header: l(() => [
311
- S("div", null, [
312
- F(e.$slots, "title", { data: s.value }, () => [
313
- n(B, {
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: l(() => [
318
- f(C(w.value), 1)
439
+ default: c(() => [
440
+ h(w(O.value), 1)
319
441
  ]),
320
442
  _: 1
321
443
  })
322
444
  ]),
323
- F(e.$slots, "sub-title", { data: s.value }, () => [
324
- k.value ? (p(), A(z, { key: 0 }, [
325
- n(g, { direction: "vertical" }),
326
- n(B, {
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: l(() => [
331
- f(C(x.value), 1)
452
+ default: c(() => [
453
+ h(w(V.value), 1)
332
454
  ]),
333
455
  _: 1
334
456
  })
335
- ], 64)) : v("", !0)
457
+ ], 64)) : A("", !0)
336
458
  ])
337
459
  ]),
338
- S("div", null, [
339
- N.value ? (p(), A(z, { key: 0 }, [
340
- F(e.$slots, "header", { data: s.value }),
341
- n(g, { direction: "vertical" })
342
- ], 64)) : v("", !0),
343
- n(y, {
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: i.value,
348
- onClick: h
469
+ disabled: f.value,
470
+ onClick: M
349
471
  }, {
350
- default: l(() => [
351
- n(U, { icon: "close" })
472
+ default: c(() => [
473
+ d(oe, { icon: "close" })
352
474
  ]),
353
475
  _: 1
354
476
  }, 8, ["disabled"])
355
477
  ])
356
478
  ]),
357
- default: l(() => [
358
- ue((p(), A("div", se, [
359
- F(e.$slots, "default", { data: s.value })
479
+ default: c(() => [
480
+ fe((y(), S("div", Re, [
481
+ C(a.$slots, "default", { data: E.value })
360
482
  ])), [
361
- [W, i.value]
483
+ [le, f.value]
362
484
  ])
363
485
  ]),
364
486
  _: 2
365
487
  }, [
366
- V(I) ? {
488
+ H(F) ? {
367
489
  name: "footer",
368
- fn: l(() => [
369
- n(P, null, {
370
- default: l(() => [
371
- _.value ? F(e.$slots, "footer", {
490
+ fn: c(() => [
491
+ d(z, null, {
492
+ default: c(() => [
493
+ s.value ? C(a.$slots, "footer", {
372
494
  key: 0,
373
- data: s.value
374
- }) : v("", !0),
375
- o[3] || (o[3] = f("   "))
495
+ data: E.value
496
+ }) : A("", !0),
497
+ i[3] || (i[3] = h("   "))
376
498
  ]),
377
499
  _: 3
378
500
  }),
379
- e.confirm ? (p(), M(P, { key: 0 }, {
380
- default: l(() => [
381
- n(y, {
501
+ a.confirm ? (y(), q(z, { key: 0 }, {
502
+ default: c(() => [
503
+ d(P, {
382
504
  type: "success",
383
- disabled: i.value,
384
- onClick: R
505
+ disabled: f.value,
506
+ onClick: te
385
507
  }, {
386
- default: l(() => [
387
- f(C(e.confirmButtonText), 1)
508
+ default: c(() => [
509
+ h(w(a.confirmButtonText), 1)
388
510
  ]),
389
511
  _: 1
390
512
  }, 8, ["disabled"]),
391
- n(y, {
513
+ d(P, {
392
514
  type: "info",
393
- onClick: h,
394
- disabled: i.value
515
+ onClick: M,
516
+ disabled: f.value
395
517
  }, {
396
- default: l(() => [
397
- f(C(e.cancelButtonText), 1)
518
+ default: c(() => [
519
+ h(w(a.cancelButtonText), 1)
398
520
  ]),
399
521
  _: 1
400
522
  }, 8, ["disabled"])
401
523
  ]),
402
524
  _: 1
403
- })) : v("", !0)
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
- te.add(le);
412
- const ce = (u) => {
413
- const t = ne(u || {});
533
+ function Ue(e) {
534
+ const { getRequest: u } = Q(e);
414
535
  return {
415
- install: (a) => {
416
- a.provide("channel", t), a.component("MDialog", ie), a.use(L, {
417
- locale: O
418
- }), a.component("fa", ae);
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
- }, De = {
422
- install: (u, t) => {
423
- u.use(L, {
424
- locale: O
425
- }), ce(t).install(u);
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
- Ce as ElementPlus,
430
- ie as MDialog,
431
- ce as createMorghulis,
432
- De as default
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
@@ -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 &nbsp;\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 &nbsp;\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]}