workdesktop-ai 1.2.2 → 1.2.4

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.
Files changed (127) hide show
  1. package/dist/api-button/index.mjs +1 -1
  2. package/dist/auto-complete/index.mjs +1 -1
  3. package/dist/checkbox-list/index.mjs +1 -1
  4. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs → ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs} +2 -2
  5. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs.map → ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs.map} +1 -1
  6. package/dist/chunks/{AutoComplete-C6Nxatvt.mjs → AutoComplete-DqyhsqiS.mjs} +2 -2
  7. package/dist/chunks/{AutoComplete-C6Nxatvt.mjs.map → AutoComplete-DqyhsqiS.mjs.map} +1 -1
  8. package/dist/chunks/{CheckboxList-5AEx33r5.mjs → CheckboxList-RxJGe-LQ.mjs} +2 -2
  9. package/dist/chunks/{CheckboxList-5AEx33r5.mjs.map → CheckboxList-RxJGe-LQ.mjs.map} +1 -1
  10. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs → ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs} +2 -2
  11. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs.map → ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs.map} +1 -1
  12. package/dist/chunks/{DataForm-C6VLTSOm.mjs → DataForm-DYMderSS.mjs} +8 -7
  13. package/dist/chunks/{DataForm-C6VLTSOm.mjs.map → DataForm-DYMderSS.mjs.map} +1 -1
  14. package/dist/chunks/{DataGrid-Dd7n5JM7.mjs → DataGrid-DWAhwLVk.mjs} +3 -3
  15. package/dist/chunks/{DataGrid-Dd7n5JM7.mjs.map → DataGrid-DWAhwLVk.mjs.map} +1 -1
  16. package/dist/chunks/{DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs → DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs} +2 -2
  17. package/dist/chunks/{DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs.map → DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs.map} +1 -1
  18. package/dist/chunks/{Drawer-ucXKUecL.mjs → Drawer-BzdohcBg.mjs} +96 -90
  19. package/dist/chunks/Drawer-BzdohcBg.mjs.map +1 -0
  20. package/dist/chunks/{DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs → DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs} +2 -2
  21. package/dist/chunks/{DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs.map → DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs.map} +1 -1
  22. package/dist/chunks/{EditableGrid-CDeeVkaX.mjs → EditableGrid-e3wwCaem.mjs} +6 -5
  23. package/dist/chunks/{EditableGrid-CDeeVkaX.mjs.map → EditableGrid-e3wwCaem.mjs.map} +1 -1
  24. package/dist/chunks/Guide-AWaWvQoq.mjs +347 -0
  25. package/dist/chunks/Guide-AWaWvQoq.mjs.map +1 -0
  26. package/dist/chunks/Iframe-DcFFi0S9.mjs +128 -0
  27. package/dist/chunks/Iframe-DcFFi0S9.mjs.map +1 -0
  28. package/dist/chunks/{ImageUpload-CQA9XQ7Q.mjs → ImageUpload-BK7tbU2o.mjs} +5 -4
  29. package/dist/chunks/{ImageUpload-CQA9XQ7Q.mjs.map → ImageUpload-BK7tbU2o.mjs.map} +1 -1
  30. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs → PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs} +2 -2
  31. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs.map → PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs.map} +1 -1
  32. package/dist/chunks/{RadioList-BUWcP_Pk.mjs → RadioList-DuEeHumw.mjs} +2 -2
  33. package/dist/chunks/{RadioList-BUWcP_Pk.mjs.map → RadioList-DuEeHumw.mjs.map} +1 -1
  34. package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs +63 -0
  35. package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs.map +1 -0
  36. package/dist/chunks/{Select-uvFy7_NU.mjs → Select-MD3taMJo.mjs} +2 -2
  37. package/dist/chunks/{Select-uvFy7_NU.mjs.map → Select-MD3taMJo.mjs.map} +1 -1
  38. package/dist/chunks/{Station-BTP0SbBg.mjs → Station-2m9uznh3.mjs} +2 -2
  39. package/dist/chunks/{Station-BTP0SbBg.mjs.map → Station-2m9uznh3.mjs.map} +1 -1
  40. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs → Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs} +2 -2
  41. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs.map → Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs.map} +1 -1
  42. package/dist/chunks/Tips-B_18E4mc.mjs +71 -0
  43. package/dist/chunks/Tips-B_18E4mc.mjs.map +1 -0
  44. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs → Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs} +5 -4
  45. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs.map → Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs.map} +1 -1
  46. package/dist/chunks/{Viewer-CjLSQTrw.mjs → Viewer-FSV6xObc.mjs} +2 -2
  47. package/dist/chunks/{Viewer-CjLSQTrw.mjs.map → Viewer-FSV6xObc.mjs.map} +1 -1
  48. package/dist/chunks/config-B6nWG5dv.mjs +1378 -0
  49. package/dist/chunks/config-B6nWG5dv.mjs.map +1 -0
  50. package/dist/chunks/http-BKKP0gEJ.mjs +2774 -0
  51. package/dist/chunks/http-BKKP0gEJ.mjs.map +1 -0
  52. package/dist/chunks/{useApiAction-DxVQWWxv.mjs → useApiAction-71XPKjlQ.mjs} +2 -2
  53. package/dist/chunks/{useApiAction-DxVQWWxv.mjs.map → useApiAction-71XPKjlQ.mjs.map} +1 -1
  54. package/dist/chunks/{useColumnSettings-BwG2V9xp.mjs → useColumnSettings-CbiWd27-.mjs} +22 -21
  55. package/dist/chunks/{useColumnSettings-BwG2V9xp.mjs.map → useColumnSettings-CbiWd27-.mjs.map} +1 -1
  56. package/dist/chunks/useConfig-CPioiLWJ.mjs +23 -0
  57. package/dist/chunks/useConfig-CPioiLWJ.mjs.map +1 -0
  58. package/dist/chunks/{useOptionsLoader-DEVCYhrp.mjs → useOptionsLoader-D4Jh4f1F.mjs} +2 -2
  59. package/dist/chunks/{useOptionsLoader-DEVCYhrp.mjs.map → useOptionsLoader-D4Jh4f1F.mjs.map} +1 -1
  60. package/dist/confirm-button/index.mjs +1 -1
  61. package/dist/data-form/index.mjs +1 -1
  62. package/dist/data-grid/index.mjs +1 -1
  63. package/dist/dialog-button/index.mjs +1 -1
  64. package/dist/drawer/index.mjs +1 -1
  65. package/dist/drawer/style.css +1 -1
  66. package/dist/drawer-button/index.mjs +1 -1
  67. package/dist/editable-grid/index.mjs +1 -1
  68. package/dist/guide/index.mjs +7 -0
  69. package/dist/guide/index.mjs.map +1 -0
  70. package/dist/guide/style.css +1 -0
  71. package/dist/iframe/index.mjs +1 -1
  72. package/dist/iframe/style.css +1 -1
  73. package/dist/image-upload/index.mjs +1 -1
  74. package/dist/index.esm.js +194 -189
  75. package/dist/index.esm.js.map +1 -1
  76. package/dist/index.umd.js +25 -21
  77. package/dist/index.umd.js.map +1 -1
  78. package/dist/prompt-button/index.mjs +1 -1
  79. package/dist/radio-list/index.mjs +1 -1
  80. package/dist/requester/index.mjs +1 -1
  81. package/dist/select/index.mjs +1 -1
  82. package/dist/station/index.mjs +1 -1
  83. package/dist/station/style.css +1 -1
  84. package/dist/style.css +1 -1
  85. package/dist/switch/index.mjs +1 -1
  86. package/dist/tips/index.mjs +1 -1
  87. package/dist/tips/style.css +1 -1
  88. package/dist/types/src/components/buttons/ApiButton.vue.d.ts +3 -3
  89. package/dist/types/src/components/buttons/ConfirmButton.vue.d.ts +5 -5
  90. package/dist/types/src/components/buttons/DialogButton.vue.d.ts +3 -3
  91. package/dist/types/src/components/buttons/DrawerButton.vue.d.ts +4 -4
  92. package/dist/types/src/components/buttons/PopconfirmButton.vue.d.ts +6 -6
  93. package/dist/types/src/components/buttons/PromptButton.vue.d.ts +5 -5
  94. package/dist/types/src/components/buttons/RouteButton.vue.d.ts +1 -1
  95. package/dist/types/src/components/buttons/TipsButton.vue.d.ts +1 -1
  96. package/dist/types/src/components/containers/Drawer.vue.d.ts +4 -4
  97. package/dist/types/src/components/containers/Iframe.vue.d.ts +42 -0
  98. package/dist/types/src/components/data/datagrid/DataGrid.vue.d.ts +5 -5
  99. package/dist/types/src/components/data/editable-grid/EditableGrid.vue.d.ts +7 -7
  100. package/dist/types/src/components/data/viewer/Viewer.vue.d.ts +1 -1
  101. package/dist/types/src/components/form/FormItem.vue.d.ts +1 -1
  102. package/dist/types/src/components/form/SearchItem.vue.d.ts +1 -1
  103. package/dist/types/src/components/form/data-form/DataForm.vue.d.ts +10 -10
  104. package/dist/types/src/components/guide/Guide.vue.d.ts +116 -0
  105. package/dist/types/src/components/index.d.ts +2 -1
  106. package/dist/types/src/components/inputs/AutoComplete.vue.d.ts +6 -6
  107. package/dist/types/src/components/inputs/CheckboxList.vue.d.ts +6 -6
  108. package/dist/types/src/components/inputs/RadioList.vue.d.ts +6 -6
  109. package/dist/types/src/components/inputs/Select.vue.d.ts +6 -6
  110. package/dist/types/src/components/inputs/Switch.vue.d.ts +9 -9
  111. package/dist/types/src/components/styles/Path.vue.d.ts +1 -1
  112. package/dist/types/src/components/styles/Tips.vue.d.ts +17 -0
  113. package/dist/types/src/components/upload/ImageUpload.vue.d.ts +5 -5
  114. package/dist/types/src/components/upload/Upload.vue.d.ts +5 -5
  115. package/dist/types/src/entries/guide.d.ts +9 -0
  116. package/dist/upload/index.mjs +1 -1
  117. package/dist/viewer/index.mjs +1 -1
  118. package/package.json +2 -2
  119. package/dist/chunks/Drawer-ucXKUecL.mjs.map +0 -1
  120. package/dist/chunks/Iframe-CeSiMnvR.mjs +0 -65
  121. package/dist/chunks/Iframe-CeSiMnvR.mjs.map +0 -1
  122. package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs +0 -80
  123. package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs.map +0 -1
  124. package/dist/chunks/Tips-IWCZcR1K.mjs +0 -63
  125. package/dist/chunks/Tips-IWCZcR1K.mjs.map +0 -1
  126. package/dist/chunks/http-C06mNpwY.mjs +0 -4141
  127. package/dist/chunks/http-C06mNpwY.mjs.map +0 -1
package/dist/index.esm.js CHANGED
@@ -1,51 +1,54 @@
1
1
  /* empty css */
2
- import { i as k, r as P } from "./chunks/http-C06mNpwY.mjs";
3
- import { R as ye, S as Be, d as Se, g as we, a as Ce, b as ve, l as Pe, m as De, c as Re, s as Te } from "./chunks/http-C06mNpwY.mjs";
4
- import { W as G } from "./chunks/DataGrid-Dd7n5JM7.mjs";
5
- import { W as E } from "./chunks/EditableGrid-CDeeVkaX.mjs";
6
- import { W as j } from "./chunks/Viewer-CjLSQTrw.mjs";
7
- import { W as q } from "./chunks/DataForm-C6VLTSOm.mjs";
8
- import { W as I } from "./chunks/SearchPanel-DPlWWuXb.mjs";
9
- import { W as L } from "./chunks/FormItem-C1q0opnk.mjs";
10
- import { W as _ } from "./chunks/SearchItem-pFO57lEO.mjs";
11
- import { _ as N } from "./chunks/ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs";
12
- import { _ as M } from "./chunks/ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs";
13
- import { _ as F } from "./chunks/DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs";
14
- import { defineComponent as V, ref as A, resolveComponent as S, openBlock as D, createElementBlock as U, Fragment as H, createVNode as R, mergeProps as z, unref as K, withCtx as J, renderSlot as Q, createTextVNode as X, toDisplayString as Y, createBlock as Z, createCommentVNode as tt, shallowRef as T, onUnmounted as $, isReactive as et, reactive as ot } from "vue";
15
- import { u as rt } from "./chunks/useApiAction-DxVQWWxv.mjs";
16
- import { t as nt, b as at, a as st, h as it, f as lt } from "./chunks/props-DAytpx7D.mjs";
17
- import { _ as ft } from "./chunks/PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs";
18
- import { _ as ct } from "./chunks/RouteButton.vue_vue_type_script_setup_true_lang-Da0D3tKA.mjs";
19
- import { _ as ut } from "./chunks/TipsButton.vue_vue_type_script_setup_true_lang-DvcpRSV1.mjs";
20
- import { _ as pt } from "./chunks/DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs";
21
- import { W as dt } from "./chunks/Drawer-ucXKUecL.mjs";
22
- import { W as mt } from "./chunks/Iframe-CeSiMnvR.mjs";
23
- import { W as gt } from "./chunks/Select-uvFy7_NU.mjs";
24
- import { W as Wt } from "./chunks/AutoComplete-C6Nxatvt.mjs";
25
- import { W as ht } from "./chunks/CheckboxList-5AEx33r5.mjs";
26
- import { W as bt } from "./chunks/RadioList-BUWcP_Pk.mjs";
27
- import { _ as yt } from "./chunks/Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs";
28
- import { _ as Bt } from "./chunks/Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs";
29
- import { W as St } from "./chunks/ImageUpload-CQA9XQ7Q.mjs";
30
- import { W as wt } from "./chunks/Panel-BHqAeBaH.mjs";
31
- import { W as Ct } from "./chunks/Path-pIP0JQ0c.mjs";
32
- import { W as vt } from "./chunks/Tips-IWCZcR1K.mjs";
33
- import { W as Pt } from "./chunks/Station-BTP0SbBg.mjs";
34
- import { _ as Dt } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs";
35
- import { u as $e, a as Oe } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs";
36
- import { c as ke, g as Ge, r as Ee, a as je, b as qe, s as Ie } from "./chunks/linkage-FbL1mcz3.mjs";
37
- import { g as _e, n as Ne, r as Me, a as Fe, s as Ve, b as Ue } from "./chunks/station-linkage-D54-_iyL.mjs";
38
- import { u as ze } from "./chunks/useColumnSettings-BwG2V9xp.mjs";
39
- const Rt = /* @__PURE__ */ V({
2
+ import { i as G } from "./chunks/config-B6nWG5dv.mjs";
3
+ import { S as we, d as Ce, g as ve, a as Pe, b as De, l as Re, m as Te, r as Ae, s as $e } from "./chunks/config-B6nWG5dv.mjs";
4
+ import { W as k } from "./chunks/Guide-AWaWvQoq.mjs";
5
+ import { W as E } from "./chunks/DataGrid-DWAhwLVk.mjs";
6
+ import { W as j } from "./chunks/EditableGrid-e3wwCaem.mjs";
7
+ import { W as q } from "./chunks/Viewer-FSV6xObc.mjs";
8
+ import { W as I } from "./chunks/DataForm-DYMderSS.mjs";
9
+ import { W as L } from "./chunks/SearchPanel-DPlWWuXb.mjs";
10
+ import { W as _ } from "./chunks/FormItem-C1q0opnk.mjs";
11
+ import { W as N } from "./chunks/SearchItem-pFO57lEO.mjs";
12
+ import { _ as M } from "./chunks/ApiButton.vue_vue_type_script_setup_true_lang-GBEBLUxz.mjs";
13
+ import { _ as F } from "./chunks/ConfirmButton.vue_vue_type_script_setup_true_lang-BPtvM5GB.mjs";
14
+ import { _ as V } from "./chunks/DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs";
15
+ import { defineComponent as U, ref as A, resolveComponent as S, openBlock as P, createElementBlock as H, Fragment as z, createVNode as D, mergeProps as K, unref as J, withCtx as Q, renderSlot as X, createTextVNode as Y, toDisplayString as Z, createBlock as tt, createCommentVNode as et, shallowRef as R, onUnmounted as $, isReactive as ot, reactive as rt } from "vue";
16
+ import { u as nt } from "./chunks/useApiAction-71XPKjlQ.mjs";
17
+ import { t as at, b as it, a as st, h as ft, f as lt } from "./chunks/props-DAytpx7D.mjs";
18
+ import { _ as ct } from "./chunks/PromptButton.vue_vue_type_script_setup_true_lang-82Mxc2Qv.mjs";
19
+ import { _ as ut } from "./chunks/RouteButton.vue_vue_type_script_setup_true_lang-Da0D3tKA.mjs";
20
+ import { _ as pt } from "./chunks/TipsButton.vue_vue_type_script_setup_true_lang-DvcpRSV1.mjs";
21
+ import { _ as mt } from "./chunks/DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs";
22
+ import { W as dt } from "./chunks/Drawer-BzdohcBg.mjs";
23
+ import { W as gt } from "./chunks/Iframe-DcFFi0S9.mjs";
24
+ import { W as Wt } from "./chunks/Select-MD3taMJo.mjs";
25
+ import { W as ht } from "./chunks/AutoComplete-DqyhsqiS.mjs";
26
+ import { W as bt } from "./chunks/CheckboxList-RxJGe-LQ.mjs";
27
+ import { W as yt } from "./chunks/RadioList-DuEeHumw.mjs";
28
+ import { _ as Bt } from "./chunks/Switch.vue_vue_type_script_setup_true_lang-vok-8-BT.mjs";
29
+ import { _ as St } from "./chunks/Upload.vue_vue_type_script_setup_true_lang-DVDw-3mF.mjs";
30
+ import { W as wt } from "./chunks/ImageUpload-BK7tbU2o.mjs";
31
+ import { W as Ct } from "./chunks/Panel-BHqAeBaH.mjs";
32
+ import { W as vt } from "./chunks/Path-pIP0JQ0c.mjs";
33
+ import { W as Pt } from "./chunks/Tips-B_18E4mc.mjs";
34
+ import { W as Dt } from "./chunks/Station-2m9uznh3.mjs";
35
+ import { _ as Rt } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-xCw4QHCA.mjs";
36
+ import { r as T } from "./chunks/http-BKKP0gEJ.mjs";
37
+ import { R as Oe } from "./chunks/http-BKKP0gEJ.mjs";
38
+ import { c as ke, g as Ee, r as je, a as qe, b as Ie, s as Le } from "./chunks/linkage-FbL1mcz3.mjs";
39
+ import { g as Ne, n as Me, r as Fe, a as Ve, s as Ue, b as He } from "./chunks/station-linkage-D54-_iyL.mjs";
40
+ import { u as Ke } from "./chunks/useColumnSettings-CbiWd27-.mjs";
41
+ import { u as Qe, a as Xe } from "./chunks/useConfig-CPioiLWJ.mjs";
42
+ const Tt = /* @__PURE__ */ U({
40
43
  name: "WdPopconfirmButton",
41
44
  inheritAttrs: !1,
42
45
  __name: "PopconfirmButton",
43
46
  props: {
44
47
  ...lt,
45
- ...it,
48
+ ...ft,
46
49
  ...st,
50
+ ...it,
47
51
  ...at,
48
- ...nt,
49
52
  // ---------- el-popconfirm 集成属性 ----------
50
53
  /** 确认提示标题 */
51
54
  title: { type: String, default: "" },
@@ -107,7 +110,7 @@ const Rt = /* @__PURE__ */ V({
107
110
  "apiAfter"
108
111
  ],
109
112
  setup(t, { emit: o }) {
110
- const e = t, a = o, i = A(), { loading: s, doRequest: f } = rt({
113
+ const e = t, a = o, s = A(), { loading: i, doRequest: l } = nt({
111
114
  getApi: () => e.api,
112
115
  getMethod: () => e.apiMethod,
113
116
  getParam: () => e.apiParam,
@@ -117,42 +120,42 @@ const Rt = /* @__PURE__ */ V({
117
120
  buttonLoading: () => e.buttonLoading,
118
121
  getReqOptions: () => ({ showLoading: e.pageLoading })
119
122
  });
120
- function d(r) {
123
+ function m(r) {
121
124
  a("click", r);
122
125
  }
123
- async function m() {
124
- a("confirm"), await f();
126
+ async function d() {
127
+ a("confirm"), await l();
125
128
  }
126
129
  function h() {
127
130
  a("cancel");
128
131
  }
129
132
  return (r, u) => {
130
- const l = S("el-button"), b = S("el-tooltip"), g = S("el-popconfirm");
131
- return D(), U(H, null, [
132
- R(l, z({
133
+ const f = S("el-button"), b = S("el-tooltip"), g = S("el-popconfirm");
134
+ return P(), H(z, null, [
135
+ D(f, K({
133
136
  ref_key: "btnRef",
134
- ref: i
137
+ ref: s
135
138
  }, r.$attrs, {
136
- loading: K(s),
137
- onClick: d
139
+ loading: J(i),
140
+ onClick: m
138
141
  }), {
139
- default: J(() => [
140
- Q(r.$slots, "default", {}, () => [
141
- X(Y(r.label), 1)
142
+ default: Q(() => [
143
+ X(r.$slots, "default", {}, () => [
144
+ Y(Z(r.label), 1)
142
145
  ])
143
146
  ]),
144
147
  _: 3
145
148
  }, 16, ["loading"]),
146
- r.tips ? (D(), Z(b, {
149
+ r.tips ? (P(), tt(b, {
147
150
  key: 0,
148
- "virtual-ref": i.value,
151
+ "virtual-ref": s.value,
149
152
  "virtual-triggering": "",
150
153
  content: r.tips,
151
154
  effect: r.tipsType,
152
155
  placement: r.placement
153
- }, null, 8, ["virtual-ref", "content", "effect", "placement"])) : tt("", !0),
154
- R(g, {
155
- "virtual-ref": i.value,
156
+ }, null, 8, ["virtual-ref", "content", "effect", "placement"])) : et("", !0),
157
+ D(g, {
158
+ "virtual-ref": s.value,
156
159
  "virtual-triggering": "",
157
160
  title: t.title,
158
161
  "confirm-button-text": t.confirmButtonText,
@@ -171,7 +174,7 @@ const Rt = /* @__PURE__ */ V({
171
174
  "show-after": t.showAfter,
172
175
  teleported: t.teleported,
173
176
  persistent: t.persistent,
174
- onConfirm: m,
177
+ onConfirm: d,
175
178
  onCancel: h,
176
179
  onShow: u[0] || (u[0] = (y) => a("show")),
177
180
  onHide: u[1] || (u[1] = (y) => a("hide"))
@@ -179,85 +182,86 @@ const Rt = /* @__PURE__ */ V({
179
182
  ], 64);
180
183
  };
181
184
  }
182
- }), Tt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
185
+ }), At = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
183
186
  __proto__: null,
184
- WdApiButton: N,
185
- WdAutoComplete: Wt,
186
- WdCheckboxList: ht,
187
- WdConfirmButton: M,
188
- WdDataForm: q,
189
- WdDataGrid: G,
190
- WdDialogButton: F,
187
+ WdApiButton: M,
188
+ WdAutoComplete: ht,
189
+ WdCheckboxList: bt,
190
+ WdConfirmButton: F,
191
+ WdDataForm: I,
192
+ WdDataGrid: E,
193
+ WdDialogButton: V,
191
194
  WdDrawer: dt,
192
- WdDrawerButton: pt,
193
- WdEditableGrid: E,
194
- WdFormItem: L,
195
- WdIframe: mt,
196
- WdImageUpload: St,
197
- WdPanel: wt,
198
- WdPath: Ct,
199
- WdPopconfirmButton: Rt,
200
- WdPromptButton: ft,
201
- WdRadioList: bt,
202
- WdRequester: Dt,
203
- WdRouteButton: ct,
204
- WdSearchItem: _,
205
- WdSearchPanel: I,
206
- WdSelect: gt,
207
- WdStation: Pt,
208
- WdSwitch: yt,
209
- WdTips: vt,
210
- WdTipsButton: ut,
211
- WdUpload: Bt,
212
- WdViewer: j
213
- }, Symbol.toStringTag, { value: "Module" })), At = Object.values(Tt), $t = (t, o) => {
214
- k(o), At.forEach((e) => {
195
+ WdDrawerButton: mt,
196
+ WdEditableGrid: j,
197
+ WdFormItem: _,
198
+ WdGuide: k,
199
+ WdIframe: gt,
200
+ WdImageUpload: wt,
201
+ WdPanel: Ct,
202
+ WdPath: vt,
203
+ WdPopconfirmButton: Tt,
204
+ WdPromptButton: ct,
205
+ WdRadioList: yt,
206
+ WdRequester: Rt,
207
+ WdRouteButton: ut,
208
+ WdSearchItem: N,
209
+ WdSearchPanel: L,
210
+ WdSelect: Wt,
211
+ WdStation: Dt,
212
+ WdSwitch: Bt,
213
+ WdTips: Pt,
214
+ WdTipsButton: pt,
215
+ WdUpload: St,
216
+ WdViewer: q
217
+ }, Symbol.toStringTag, { value: "Module" })), $t = Object.values(At), xt = (t, o) => {
218
+ G(o), $t.forEach((e) => {
215
219
  e != null && e.name && t.component(e.name, e);
216
220
  });
217
- }, de = { install: $t };
218
- function me(t, o = {}) {
221
+ }, We = { install: xt };
222
+ function he(t, o = {}) {
219
223
  const {
220
224
  method: e = "post",
221
225
  immediate: a = !0,
222
- initialParams: i,
223
- reqOptions: s,
224
- onSuccess: f,
225
- onFail: d,
226
- onError: m
227
- } = o, h = T(null), r = A(!1), u = T(null);
228
- let l = null;
226
+ initialParams: s,
227
+ reqOptions: i,
228
+ onSuccess: l,
229
+ onFail: m,
230
+ onError: d
231
+ } = o, h = R(null), r = A(!1), u = R(null);
232
+ let f = null;
229
233
  function b() {
230
234
  return typeof t == "function" ? t() : t;
231
235
  }
232
236
  async function g(W) {
233
- r.value = !0, u.value = null, l && l.abort(), l = new AbortController();
234
- const C = { ...s, signal: l.signal };
237
+ r.value = !0, u.value = null, f && f.abort(), f = new AbortController();
238
+ const C = { ...i, signal: f.signal };
235
239
  try {
236
240
  let n;
237
241
  const v = b();
238
- return e === "get" || e === "delete" ? n = await P.request(
242
+ return e === "get" || e === "delete" ? n = await T.request(
239
243
  { url: v, method: e, params: W },
240
244
  C
241
- ) : n = await P.request({ url: v, method: e, data: W }, C), n.success ? (h.value = n.data, f == null || f(n.data, n)) : d == null || d(n), n;
245
+ ) : n = await T.request({ url: v, method: e, data: W }, C), n.success ? (h.value = n.data, l == null || l(n.data, n)) : m == null || m(n), n;
242
246
  } catch (n) {
243
- return u.value = n instanceof Error ? n : new Error((n == null ? void 0 : n.message) || "请求失败"), m == null || m(n), null;
247
+ return u.value = n instanceof Error ? n : new Error((n == null ? void 0 : n.message) || "请求失败"), d == null || d(n), null;
244
248
  } finally {
245
- r.value = !1, l = null;
249
+ r.value = !1, f = null;
246
250
  }
247
251
  }
248
252
  function y() {
249
253
  return g(B);
250
254
  }
251
255
  function w() {
252
- l && (l.abort(), l = null, r.value = !1);
256
+ f && (f.abort(), f = null, r.value = !1);
253
257
  }
254
- let B = i;
255
- const x = (W) => (B = W ?? B, g(W));
256
- return a && g(i), $(w), {
258
+ let B = s;
259
+ const O = (W) => (B = W ?? B, g(W));
260
+ return a && g(s), $(w), {
257
261
  data: h,
258
262
  loading: r,
259
263
  error: u,
260
- run: x,
264
+ run: O,
261
265
  refresh: y,
262
266
  abort: w
263
267
  };
@@ -268,25 +272,25 @@ function Ot(t, o) {
268
272
  e && e.forEach((a) => {
269
273
  try {
270
274
  a(o);
271
- } catch (i) {
272
- console.error(`[WorkDesktop] eventBus[${t}] handler error:`, i);
275
+ } catch (s) {
276
+ console.error(`[WorkDesktop] eventBus[${t}] handler error:`, s);
273
277
  }
274
278
  });
275
279
  }
276
- function xt(t, o) {
277
- return p.has(t) || p.set(t, /* @__PURE__ */ new Set()), p.get(t).add(o), () => O(t, o);
280
+ function Gt(t, o) {
281
+ return p.has(t) || p.set(t, /* @__PURE__ */ new Set()), p.get(t).add(o), () => x(t, o);
278
282
  }
279
- function O(t, o) {
283
+ function x(t, o) {
280
284
  var e;
281
285
  (e = p.get(t)) == null || e.delete(o);
282
286
  }
283
287
  function kt(t) {
284
288
  t ? p.delete(t) : p.clear();
285
289
  }
286
- function ge() {
290
+ function be() {
287
291
  const t = [], o = (e, a) => {
288
- const i = xt(e, a);
289
- return t.push(i), i;
292
+ const s = Gt(e, a);
293
+ return t.push(s), s;
290
294
  };
291
295
  try {
292
296
  $(() => {
@@ -297,88 +301,89 @@ function ge() {
297
301
  return {
298
302
  emit: Ot,
299
303
  on: o,
300
- off: O,
304
+ off: x,
301
305
  clear: kt
302
306
  };
303
307
  }
304
- const c = ot({});
305
- function We(t, o) {
308
+ const c = rt({});
309
+ function ye(t, o) {
306
310
  if (!(t in c))
307
- c[t] = o ? et(o) ? o : { ...o } : {};
311
+ c[t] = o ? ot(o) ? o : { ...o } : {};
308
312
  else if (o && typeof o == "object")
309
- for (const s of Object.keys(o))
310
- c[t][s] === void 0 && (c[t][s] = o[s]);
313
+ for (const i of Object.keys(o))
314
+ c[t][i] === void 0 && (c[t][i] = o[i]);
311
315
  const e = c[t];
312
- return { state: e, set: (s) => {
313
- const f = typeof s == "function" ? s(e) : s;
314
- Object.assign(c[t], f);
316
+ return { state: e, set: (i) => {
317
+ const l = typeof i == "function" ? i(e) : i;
318
+ Object.assign(c[t], l);
315
319
  }, reset: () => {
316
- const s = o ? { ...o } : {};
317
- Object.keys(c[t]).forEach((f) => delete c[t][f]), Object.assign(c[t], s);
320
+ const i = o ? { ...o } : {};
321
+ Object.keys(c[t]).forEach((l) => delete c[t][l]), Object.assign(c[t], i);
318
322
  } };
319
323
  }
320
324
  export {
321
- ye as RequestAPI,
322
- Be as SKIN_PRESETS,
323
- N as WdApiButton,
324
- Wt as WdAutoComplete,
325
- ht as WdCheckboxList,
326
- M as WdConfirmButton,
327
- q as WdDataForm,
328
- G as WdDataGrid,
329
- F as WdDialogButton,
325
+ Oe as RequestAPI,
326
+ we as SKIN_PRESETS,
327
+ M as WdApiButton,
328
+ ht as WdAutoComplete,
329
+ bt as WdCheckboxList,
330
+ F as WdConfirmButton,
331
+ I as WdDataForm,
332
+ E as WdDataGrid,
333
+ V as WdDialogButton,
330
334
  dt as WdDrawer,
331
- pt as WdDrawerButton,
332
- E as WdEditableGrid,
333
- L as WdFormItem,
334
- mt as WdIframe,
335
- St as WdImageUpload,
336
- wt as WdPanel,
337
- Ct as WdPath,
338
- Rt as WdPopconfirmButton,
339
- ft as WdPromptButton,
340
- bt as WdRadioList,
341
- Dt as WdRequester,
342
- ct as WdRouteButton,
343
- _ as WdSearchItem,
344
- I as WdSearchPanel,
345
- gt as WdSelect,
346
- Pt as WdStation,
347
- yt as WdSwitch,
348
- vt as WdTips,
349
- ut as WdTipsButton,
350
- Bt as WdUpload,
351
- j as WdViewer,
352
- de as WorkDesktop,
335
+ mt as WdDrawerButton,
336
+ j as WdEditableGrid,
337
+ _ as WdFormItem,
338
+ k as WdGuide,
339
+ gt as WdIframe,
340
+ wt as WdImageUpload,
341
+ Ct as WdPanel,
342
+ vt as WdPath,
343
+ Tt as WdPopconfirmButton,
344
+ ct as WdPromptButton,
345
+ yt as WdRadioList,
346
+ Rt as WdRequester,
347
+ ut as WdRouteButton,
348
+ N as WdSearchItem,
349
+ L as WdSearchPanel,
350
+ Wt as WdSelect,
351
+ Dt as WdStation,
352
+ Bt as WdSwitch,
353
+ Pt as WdTips,
354
+ pt as WdTipsButton,
355
+ St as WdUpload,
356
+ q as WdViewer,
357
+ We as WorkDesktop,
353
358
  ke as clearLinkageRegistry,
354
- Se as deepMerge,
355
- de as default,
356
- we as getComponentDefault,
357
- Ge as getDataGrids,
358
- Ce as getGlobalConfig,
359
- ve as getSkinPreset,
360
- _e as getStationMenuChain,
361
- P as http,
362
- k as initConfig,
363
- Pe as listSkins,
364
- De as mergeConfig,
365
- Ne as notifyStationChange,
366
- Ee as refreshDataGrid,
367
- Me as refreshStationView,
368
- je as registerDataGrid,
369
- Fe as registerStation,
370
- P as request,
371
- Re as resetConfig,
372
- qe as resetSearchDataGrid,
373
- Ie as searchDataGrid,
374
- Te as setGlobalConfig,
375
- Ve as setStationFooter,
376
- Ue as subscribeStationChange,
377
- $e as useConfig,
378
- ze as useDataGrid,
379
- ge as useEventBus,
380
- Oe as useGlobalConfig,
381
- We as useGlobalState,
382
- me as useRequest
359
+ Ce as deepMerge,
360
+ We as default,
361
+ ve as getComponentDefault,
362
+ Ee as getDataGrids,
363
+ Pe as getGlobalConfig,
364
+ De as getSkinPreset,
365
+ Ne as getStationMenuChain,
366
+ T as http,
367
+ G as initConfig,
368
+ Re as listSkins,
369
+ Te as mergeConfig,
370
+ Me as notifyStationChange,
371
+ je as refreshDataGrid,
372
+ Fe as refreshStationView,
373
+ qe as registerDataGrid,
374
+ Ve as registerStation,
375
+ T as request,
376
+ Ae as resetConfig,
377
+ Ie as resetSearchDataGrid,
378
+ Le as searchDataGrid,
379
+ $e as setGlobalConfig,
380
+ Ue as setStationFooter,
381
+ He as subscribeStationChange,
382
+ Qe as useConfig,
383
+ Ke as useDataGrid,
384
+ be as useEventBus,
385
+ Xe as useGlobalConfig,
386
+ ye as useGlobalState,
387
+ he as useRequest
383
388
  };
384
389
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/buttons/PopconfirmButton.vue","../src/lib/install.ts","../src/lib/composables/useRequest.ts","../src/lib/composables/useEventBus.ts","../src/lib/composables/useGlobalState.ts"],"sourcesContent":["<template>\n <!-- 悬停提示(el-tooltip)与气泡确认(el-popconfirm)平级,均以 virtual-ref 指向同一按钮:\n hover 显示提示、click 弹出确认,互不嵌套、互不冲突 -->\n <el-button ref=\"btnRef\" v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\n <slot>{{ label }}</slot>\n </el-button>\n\n <el-tooltip\n v-if=\"tips\"\n :virtual-ref=\"btnRef\"\n virtual-triggering\n :content=\"tips\"\n :effect=\"tipsType\"\n :placement=\"placement\"\n />\n\n <el-popconfirm\n :virtual-ref=\"btnRef\"\n virtual-triggering\n :title=\"title\"\n :confirm-button-text=\"confirmButtonText\"\n :cancel-button-text=\"cancelButtonText\"\n :confirm-button-type=\"confirmButtonType\"\n :cancel-button-type=\"cancelButtonType\"\n :icon=\"popIcon\"\n :icon-color=\"popIconColor\"\n :hide-after=\"hideAfter\"\n :disabled=\"popDisabled\"\n :width=\"width\"\n :trigger=\"trigger\"\n :placement=\"placement\"\n :popper-class=\"popperClass\"\n :popper-options=\"popperOptions\"\n :show-after=\"showAfter\"\n :teleported=\"teleported\"\n :persistent=\"persistent\"\n @confirm=\"onConfirm\"\n @cancel=\"onCancel\"\n @show=\"emit('show')\"\n @hide=\"emit('hide')\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, type Component, type PropType } from 'vue'\nimport { useApiAction } from './useApiAction'\nimport { filterProp, headRefreshDatagridProp, apiProps, buttonTextProp, tipsProp } from '../common/props'\n\ndefineOptions({ name: 'WdPopconfirmButton', inheritAttrs: false })\n\nconst props = defineProps({\n ...filterProp,\n ...headRefreshDatagridProp,\n ...apiProps,\n ...buttonTextProp,\n ...tipsProp,\n // ---------- el-popconfirm 集成属性 ----------\n /** 确认提示标题 */\n title: { type: String, default: '' },\n /** 确定按钮文案 */\n confirmButtonText: { type: String, default: '确定' },\n /** 取消按钮文案 */\n cancelButtonText: { type: String, default: '取消' },\n /** 确定按钮类型 */\n confirmButtonType: {\n type: String as PropType<'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'>,\n default: 'primary'\n },\n /** 取消按钮类型 */\n cancelButtonType: {\n type: String as PropType<'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'>,\n default: 'text'\n },\n /** 弹层图标(命名 popIcon 避免与 el-button 的 icon 透传冲突) */\n popIcon: { type: [String, Object] as PropType<string | Component>, default: undefined },\n /** 弹层图标颜色 */\n popIconColor: { type: String, default: undefined },\n /** 关闭动画时长(ms,继承自 el-popconfirm) */\n hideAfter: { type: Number, default: undefined },\n /** 禁用确认弹层(命名 popDisabled 避免与 el-button 的 disabled 透传冲突) */\n popDisabled: { type: Boolean, default: false },\n /** 弹层宽度 */\n width: { type: [String, Number], default: undefined },\n /** 触发方式 */\n trigger: {\n type: String as PropType<'click' | 'hover' | 'focus' | 'contextmenu'>,\n default: 'click'\n },\n /** 弹层自定义类名 */\n popperClass: { type: String, default: '' },\n /** popper 配置 */\n popperOptions: { type: Object, default: undefined },\n /** 显示延迟(ms) */\n showAfter: { type: Number, default: undefined },\n /** 是否挂载到 body */\n teleported: { type: Boolean, default: true },\n /** 关闭时是否保留内容 */\n persistent: { type: Boolean, default: false },\n // ---------- 请求相关 ----------\n /** 按钮级 loading(默认 true);false 时按钮不转圈 */\n buttonLoading: { type: Boolean, default: true },\n /** 页面级 loading(全局遮罩 ElLoading) */\n pageLoading: { type: Boolean, default: false }\n})\n\nconst emit = defineEmits([\n 'click',\n 'confirm',\n 'cancel',\n 'show',\n 'hide',\n 'apiBefore',\n 'apiSuccess',\n 'apiFail',\n 'apiException',\n 'apiAfter'\n])\n\n/** 按钮引用:el-tooltip / el-popconfirm 通过 virtual-ref 指向它 */\nconst btnRef = ref<InstanceType<typeof import('element-plus').ElButton>>()\n\nconst { loading, doRequest } = useApiAction({\n getApi: () => props.api,\n getMethod: () => props.apiMethod,\n getParam: () => props.apiParam,\n getFilter: () => props.filter,\n getHeadRefresh: () => props.headRefreshDatagrid,\n emit,\n buttonLoading: () => props.buttonLoading,\n getReqOptions: () => ({ showLoading: props.pageLoading })\n})\n\n/** 点击按钮(弹层触发由 el-popconfirm 接管) */\nfunction onClick(event: MouseEvent) {\n emit('click', event)\n}\n\n/** 用户点击「确定」→ 自动请求 API */\nasync function onConfirm() {\n emit('confirm')\n await doRequest()\n}\n\n/** 用户点击「取消」 */\nfunction onCancel() {\n emit('cancel')\n}\n</script>\n","/**\n * Vue 插件入口(PRD 8.2 双入口)\n *\n * npm:app.use(WorkDesktop, config)\n * script:window.workDesktopConfig 配置 + window.WorkDesktop 自动安装\n */\nimport type { App, Plugin } from 'vue'\nimport type { DeepPartial, WorkDesktopConfig } from '../types/config'\nimport { initConfig } from './core/config'\nimport * as components from '../components'\n\nconst componentList = Object.values(components)\n\nconst install: Plugin['install'] = (app: App, config?: DeepPartial<WorkDesktopConfig>) => {\n // 双入口配置汇入同一套 merge 逻辑\n initConfig(config)\n componentList.forEach((comp: any) => {\n if (comp?.name) app.component(comp.name, comp)\n })\n}\n\nconst WorkDesktop: Plugin = { install }\n\nexport default WorkDesktop\nexport { install }\n","import { ref, shallowRef, isRef, onUnmounted } from 'vue'\nimport { request, type ApiResult } from '../core/http'\nimport type { ReqOptions } from '../../types/config'\n\n/**\n * useRequest(PRD 5.3)\n * 封装请求逻辑,返回 data/loading/error + 请求方法。\n *\n * @example\n * const { data, loading, run } = useRequest<User[]>('/api/users', {\n * method: 'post',\n * immediate: false,\n * reqConfig: { showTips: false }\n * })\n * run({ page: 1 })\n */\n\nexport interface UseRequestOptions {\n /** 请求方法,默认 post */\n method?: 'get' | 'post' | 'put' | 'delete'\n /** 是否立即自动请求,默认 true */\n immediate?: boolean\n /** 自动请求时的初始参数 */\n initialParams?: any\n /** 请求级覆盖项(透传给 http) */\n reqOptions?: ReqOptions\n /** 成功回调(data 为解封后的业务数据) */\n onSuccess?: (data: any, result: ApiResult) => void\n /** 业务失败回调 */\n onFail?: (result: ApiResult) => void\n /** 异常回调 */\n onError?: (error: any) => void\n}\n\nexport function useRequest<T = any>(api: string | (() => string), options: UseRequestOptions = {}) {\n const {\n method = 'post',\n immediate = true,\n initialParams,\n reqOptions,\n onSuccess,\n onFail,\n onError\n } = options\n\n const data = shallowRef<T | null>(null)\n const loading = ref(false)\n const error = shallowRef<Error | null>(null)\n\n let controller: AbortController | null = null\n\n function resolveApi(): string {\n return typeof api === 'function' ? api() : api\n }\n\n async function run(params?: any): Promise<ApiResult<T> | null> {\n loading.value = true\n error.value = null\n // 支持中断:上一个未完成则中止\n if (controller) controller.abort()\n controller = new AbortController()\n\n const opts: ReqOptions = { ...reqOptions, signal: controller.signal }\n try {\n let result: ApiResult<T>\n const url = resolveApi()\n if (method === 'get' || method === 'delete') {\n result = await request.request<T>(\n { url, method, params },\n opts\n )\n } else {\n result = await request.request<T>({ url, method, data: params }, opts)\n }\n\n if (result.success) {\n data.value = result.data\n onSuccess?.(result.data, result)\n } else {\n onFail?.(result)\n }\n return result\n } catch (e: any) {\n error.value = e instanceof Error ? e : new Error(e?.message || '请求失败')\n onError?.(e)\n return null\n } finally {\n loading.value = false\n controller = null\n }\n }\n\n function refresh() {\n return run(lastParams)\n }\n\n function abort() {\n if (controller) {\n controller.abort()\n controller = null\n loading.value = false\n }\n }\n\n let lastParams: any = initialParams\n\n // 包装 run 记录最后参数供 refresh\n const runWrap = (params?: any) => {\n lastParams = params ?? lastParams\n return run(params)\n }\n\n if (immediate) {\n run(initialParams)\n }\n\n onUnmounted(abort)\n\n return {\n data,\n loading,\n error,\n run: runWrap,\n refresh,\n abort\n }\n}\n\n/** 工具:解包可能为 ref 的值 */\nexport function unrefValue<T>(v: T | { value: T }): T {\n return isRef(v) ? (v as any).value : (v as T)\n}\n","import { onUnmounted } from 'vue'\n\n/**\n * 轻量事件总线(PRD 5.3 / 6.3)\n * 跨组件事件联动。组件卸载自动 off。\n */\n\ntype Handler = (payload?: any) => void\n\nconst channel: Map<string, Set<Handler>> = new Map()\n\nfunction emit(event: string, payload?: any) {\n const set = channel.get(event)\n if (!set) return\n set.forEach((fn) => {\n try {\n fn(payload)\n } catch (e) {\n console.error(`[WorkDesktop] eventBus[${event}] handler error:`, e)\n }\n })\n}\n\nfunction on(event: string, handler: Handler): () => void {\n if (!channel.has(event)) channel.set(event, new Set())\n channel.get(event)!.add(handler)\n return () => off(event, handler)\n}\n\nfunction off(event: string, handler: Handler) {\n channel.get(event)?.delete(handler)\n}\n\nfunction clear(event?: string) {\n if (event) channel.delete(event)\n else channel.clear()\n}\n\nexport function useEventBus() {\n const disposers: Array<() => void> = []\n\n const autoOn = (event: string, handler: Handler) => {\n const dispose = on(event, handler)\n disposers.push(dispose)\n return dispose\n }\n\n // 组件卸载时自动 off(setup 上下文中)\n try {\n onUnmounted(() => {\n disposers.forEach((d) => d())\n disposers.length = 0\n })\n } catch {\n // 组件外使用时无生命周期,忽略\n }\n\n return {\n emit,\n on: autoOn,\n off,\n clear\n }\n}\n\nexport type EventBus = ReturnType<typeof useEventBus>\n","import { reactive, isReactive } from 'vue'\n\n/**\n * 全局响应式状态单例(PRD 5.3,替代 Pinia 的轻量方案)\n * 相同 key 共享同一份状态,跨组件/跨层级复用。\n */\n\nconst globalStore: Record<string, any> = reactive({})\n\nexport function useGlobalState<T extends object = Record<string, any>>(\n key: string,\n initial?: T\n): { state: T; set: (partial: Partial<T> | ((prev: T) => Partial<T>)) => void; reset: () => void } {\n if (!(key in globalStore)) {\n globalStore[key] = initial ? (isReactive(initial) ? initial : { ...initial }) : {}\n } else if (initial && typeof initial === 'object') {\n // 已存在则补齐缺失的初始字段\n for (const k of Object.keys(initial)) {\n if (globalStore[key][k] === undefined) {\n globalStore[key][k] = (initial as any)[k]\n }\n }\n }\n\n const state = globalStore[key] as T\n\n const set = (partial: Partial<T> | ((prev: T) => Partial<T>)) => {\n const patch = typeof partial === 'function' ? (partial as (p: T) => Partial<T>)(state) : partial\n Object.assign(globalStore[key], patch)\n }\n\n const reset = () => {\n const fresh = initial ? { ...initial } : {}\n Object.keys(globalStore[key]).forEach((k) => delete globalStore[key][k])\n Object.assign(globalStore[key], fresh)\n }\n\n return { state, set, reset }\n}\n"],"names":["props","__props","emit","__emit","btnRef","ref","loading","doRequest","useApiAction","onClick","event","onConfirm","onCancel","_createVNode","_component_el_button","_mergeProps","$attrs","_unref","_renderSlot","_ctx","label","tips","_createBlock","_component_el_tooltip","tipsType","placement","_component_el_popconfirm","componentList","components","install","app","config","initConfig","comp","WorkDesktop","useRequest","api","options","method","immediate","initialParams","reqOptions","onSuccess","onFail","onError","data","shallowRef","error","controller","resolveApi","run","params","opts","result","url","request","e","refresh","lastParams","abort","runWrap","onUnmounted","channel","payload","set","fn","on","handler","off","_a","clear","useEventBus","disposers","autoOn","dispose","d","globalStore","reactive","useGlobalState","key","initial","isReactive","k","state","partial","patch","fresh"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/buttons/PopconfirmButton.vue","../src/lib/install.ts","../src/lib/composables/useRequest.ts","../src/lib/composables/useEventBus.ts","../src/lib/composables/useGlobalState.ts"],"sourcesContent":["<template>\n <!-- 悬停提示(el-tooltip)与气泡确认(el-popconfirm)平级,均以 virtual-ref 指向同一按钮:\n hover 显示提示、click 弹出确认,互不嵌套、互不冲突 -->\n <el-button ref=\"btnRef\" v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\n <slot>{{ label }}</slot>\n </el-button>\n\n <el-tooltip\n v-if=\"tips\"\n :virtual-ref=\"btnRef\"\n virtual-triggering\n :content=\"tips\"\n :effect=\"tipsType\"\n :placement=\"placement\"\n />\n\n <el-popconfirm\n :virtual-ref=\"btnRef\"\n virtual-triggering\n :title=\"title\"\n :confirm-button-text=\"confirmButtonText\"\n :cancel-button-text=\"cancelButtonText\"\n :confirm-button-type=\"confirmButtonType\"\n :cancel-button-type=\"cancelButtonType\"\n :icon=\"popIcon\"\n :icon-color=\"popIconColor\"\n :hide-after=\"hideAfter\"\n :disabled=\"popDisabled\"\n :width=\"width\"\n :trigger=\"trigger\"\n :placement=\"placement\"\n :popper-class=\"popperClass\"\n :popper-options=\"popperOptions\"\n :show-after=\"showAfter\"\n :teleported=\"teleported\"\n :persistent=\"persistent\"\n @confirm=\"onConfirm\"\n @cancel=\"onCancel\"\n @show=\"emit('show')\"\n @hide=\"emit('hide')\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, type Component, type PropType } from 'vue'\nimport { useApiAction } from './useApiAction'\nimport { filterProp, headRefreshDatagridProp, apiProps, buttonTextProp, tipsProp } from '../common/props'\n\ndefineOptions({ name: 'WdPopconfirmButton', inheritAttrs: false })\n\nconst props = defineProps({\n ...filterProp,\n ...headRefreshDatagridProp,\n ...apiProps,\n ...buttonTextProp,\n ...tipsProp,\n // ---------- el-popconfirm 集成属性 ----------\n /** 确认提示标题 */\n title: { type: String, default: '' },\n /** 确定按钮文案 */\n confirmButtonText: { type: String, default: '确定' },\n /** 取消按钮文案 */\n cancelButtonText: { type: String, default: '取消' },\n /** 确定按钮类型 */\n confirmButtonType: {\n type: String as PropType<'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'>,\n default: 'primary'\n },\n /** 取消按钮类型 */\n cancelButtonType: {\n type: String as PropType<'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'>,\n default: 'text'\n },\n /** 弹层图标(命名 popIcon 避免与 el-button 的 icon 透传冲突) */\n popIcon: { type: [String, Object] as PropType<string | Component>, default: undefined },\n /** 弹层图标颜色 */\n popIconColor: { type: String, default: undefined },\n /** 关闭动画时长(ms,继承自 el-popconfirm) */\n hideAfter: { type: Number, default: undefined },\n /** 禁用确认弹层(命名 popDisabled 避免与 el-button 的 disabled 透传冲突) */\n popDisabled: { type: Boolean, default: false },\n /** 弹层宽度 */\n width: { type: [String, Number], default: undefined },\n /** 触发方式 */\n trigger: {\n type: String as PropType<'click' | 'hover' | 'focus' | 'contextmenu'>,\n default: 'click'\n },\n /** 弹层自定义类名 */\n popperClass: { type: String, default: '' },\n /** popper 配置 */\n popperOptions: { type: Object, default: undefined },\n /** 显示延迟(ms) */\n showAfter: { type: Number, default: undefined },\n /** 是否挂载到 body */\n teleported: { type: Boolean, default: true },\n /** 关闭时是否保留内容 */\n persistent: { type: Boolean, default: false },\n // ---------- 请求相关 ----------\n /** 按钮级 loading(默认 true);false 时按钮不转圈 */\n buttonLoading: { type: Boolean, default: true },\n /** 页面级 loading(全局遮罩 ElLoading) */\n pageLoading: { type: Boolean, default: false }\n})\n\nconst emit = defineEmits([\n 'click',\n 'confirm',\n 'cancel',\n 'show',\n 'hide',\n 'apiBefore',\n 'apiSuccess',\n 'apiFail',\n 'apiException',\n 'apiAfter'\n])\n\n/** 按钮引用:el-tooltip / el-popconfirm 通过 virtual-ref 指向它 */\nconst btnRef = ref<InstanceType<typeof import('element-plus').ElButton>>()\n\nconst { loading, doRequest } = useApiAction({\n getApi: () => props.api,\n getMethod: () => props.apiMethod,\n getParam: () => props.apiParam,\n getFilter: () => props.filter,\n getHeadRefresh: () => props.headRefreshDatagrid,\n emit,\n buttonLoading: () => props.buttonLoading,\n getReqOptions: () => ({ showLoading: props.pageLoading })\n})\n\n/** 点击按钮(弹层触发由 el-popconfirm 接管) */\nfunction onClick(event: MouseEvent) {\n emit('click', event)\n}\n\n/** 用户点击「确定」→ 自动请求 API */\nasync function onConfirm() {\n emit('confirm')\n await doRequest()\n}\n\n/** 用户点击「取消」 */\nfunction onCancel() {\n emit('cancel')\n}\n</script>\n","/**\n * Vue 插件入口(PRD 8.2 双入口)\n *\n * npm:app.use(WorkDesktop, config)\n * script:window.workDesktopConfig 配置 + window.WorkDesktop 自动安装\n */\nimport type { App, Plugin } from 'vue'\nimport type { DeepPartial, WorkDesktopConfig } from '../types/config'\nimport { initConfig } from './core/config'\nimport * as components from '../components'\n\nconst componentList = Object.values(components)\n\nconst install: Plugin['install'] = (app: App, config?: DeepPartial<WorkDesktopConfig>) => {\n // 双入口配置汇入同一套 merge 逻辑\n initConfig(config)\n componentList.forEach((comp: any) => {\n if (comp?.name) app.component(comp.name, comp)\n })\n}\n\nconst WorkDesktop: Plugin = { install }\n\nexport default WorkDesktop\nexport { install }\n","import { ref, shallowRef, isRef, onUnmounted } from 'vue'\nimport { request, type ApiResult } from '../core/http'\nimport type { ReqOptions } from '../../types/config'\n\n/**\n * useRequest(PRD 5.3)\n * 封装请求逻辑,返回 data/loading/error + 请求方法。\n *\n * @example\n * const { data, loading, run } = useRequest<User[]>('/api/users', {\n * method: 'post',\n * immediate: false,\n * reqConfig: { showTips: false }\n * })\n * run({ page: 1 })\n */\n\nexport interface UseRequestOptions {\n /** 请求方法,默认 post */\n method?: 'get' | 'post' | 'put' | 'delete'\n /** 是否立即自动请求,默认 true */\n immediate?: boolean\n /** 自动请求时的初始参数 */\n initialParams?: any\n /** 请求级覆盖项(透传给 http) */\n reqOptions?: ReqOptions\n /** 成功回调(data 为解封后的业务数据) */\n onSuccess?: (data: any, result: ApiResult) => void\n /** 业务失败回调 */\n onFail?: (result: ApiResult) => void\n /** 异常回调 */\n onError?: (error: any) => void\n}\n\nexport function useRequest<T = any>(api: string | (() => string), options: UseRequestOptions = {}) {\n const {\n method = 'post',\n immediate = true,\n initialParams,\n reqOptions,\n onSuccess,\n onFail,\n onError\n } = options\n\n const data = shallowRef<T | null>(null)\n const loading = ref(false)\n const error = shallowRef<Error | null>(null)\n\n let controller: AbortController | null = null\n\n function resolveApi(): string {\n return typeof api === 'function' ? api() : api\n }\n\n async function run(params?: any): Promise<ApiResult<T> | null> {\n loading.value = true\n error.value = null\n // 支持中断:上一个未完成则中止\n if (controller) controller.abort()\n controller = new AbortController()\n\n const opts: ReqOptions = { ...reqOptions, signal: controller.signal }\n try {\n let result: ApiResult<T>\n const url = resolveApi()\n if (method === 'get' || method === 'delete') {\n result = await request.request<T>(\n { url, method, params },\n opts\n )\n } else {\n result = await request.request<T>({ url, method, data: params }, opts)\n }\n\n if (result.success) {\n data.value = result.data\n onSuccess?.(result.data, result)\n } else {\n onFail?.(result)\n }\n return result\n } catch (e: any) {\n error.value = e instanceof Error ? e : new Error(e?.message || '请求失败')\n onError?.(e)\n return null\n } finally {\n loading.value = false\n controller = null\n }\n }\n\n function refresh() {\n return run(lastParams)\n }\n\n function abort() {\n if (controller) {\n controller.abort()\n controller = null\n loading.value = false\n }\n }\n\n let lastParams: any = initialParams\n\n // 包装 run 记录最后参数供 refresh\n const runWrap = (params?: any) => {\n lastParams = params ?? lastParams\n return run(params)\n }\n\n if (immediate) {\n run(initialParams)\n }\n\n onUnmounted(abort)\n\n return {\n data,\n loading,\n error,\n run: runWrap,\n refresh,\n abort\n }\n}\n\n/** 工具:解包可能为 ref 的值 */\nexport function unrefValue<T>(v: T | { value: T }): T {\n return isRef(v) ? (v as any).value : (v as T)\n}\n","import { onUnmounted } from 'vue'\n\n/**\n * 轻量事件总线(PRD 5.3 / 6.3)\n * 跨组件事件联动。组件卸载自动 off。\n */\n\ntype Handler = (payload?: any) => void\n\nconst channel: Map<string, Set<Handler>> = new Map()\n\nfunction emit(event: string, payload?: any) {\n const set = channel.get(event)\n if (!set) return\n set.forEach((fn) => {\n try {\n fn(payload)\n } catch (e) {\n console.error(`[WorkDesktop] eventBus[${event}] handler error:`, e)\n }\n })\n}\n\nfunction on(event: string, handler: Handler): () => void {\n if (!channel.has(event)) channel.set(event, new Set())\n channel.get(event)!.add(handler)\n return () => off(event, handler)\n}\n\nfunction off(event: string, handler: Handler) {\n channel.get(event)?.delete(handler)\n}\n\nfunction clear(event?: string) {\n if (event) channel.delete(event)\n else channel.clear()\n}\n\nexport function useEventBus() {\n const disposers: Array<() => void> = []\n\n const autoOn = (event: string, handler: Handler) => {\n const dispose = on(event, handler)\n disposers.push(dispose)\n return dispose\n }\n\n // 组件卸载时自动 off(setup 上下文中)\n try {\n onUnmounted(() => {\n disposers.forEach((d) => d())\n disposers.length = 0\n })\n } catch {\n // 组件外使用时无生命周期,忽略\n }\n\n return {\n emit,\n on: autoOn,\n off,\n clear\n }\n}\n\nexport type EventBus = ReturnType<typeof useEventBus>\n","import { reactive, isReactive } from 'vue'\n\n/**\n * 全局响应式状态单例(PRD 5.3,替代 Pinia 的轻量方案)\n * 相同 key 共享同一份状态,跨组件/跨层级复用。\n */\n\nconst globalStore: Record<string, any> = reactive({})\n\nexport function useGlobalState<T extends object = Record<string, any>>(\n key: string,\n initial?: T\n): { state: T; set: (partial: Partial<T> | ((prev: T) => Partial<T>)) => void; reset: () => void } {\n if (!(key in globalStore)) {\n globalStore[key] = initial ? (isReactive(initial) ? initial : { ...initial }) : {}\n } else if (initial && typeof initial === 'object') {\n // 已存在则补齐缺失的初始字段\n for (const k of Object.keys(initial)) {\n if (globalStore[key][k] === undefined) {\n globalStore[key][k] = (initial as any)[k]\n }\n }\n }\n\n const state = globalStore[key] as T\n\n const set = (partial: Partial<T> | ((prev: T) => Partial<T>)) => {\n const patch = typeof partial === 'function' ? (partial as (p: T) => Partial<T>)(state) : partial\n Object.assign(globalStore[key], patch)\n }\n\n const reset = () => {\n const fresh = initial ? { ...initial } : {}\n Object.keys(globalStore[key]).forEach((k) => delete globalStore[key][k])\n Object.assign(globalStore[key], fresh)\n }\n\n return { state, set, reset }\n}\n"],"names":["props","__props","emit","__emit","btnRef","ref","loading","doRequest","useApiAction","onClick","event","onConfirm","onCancel","_createVNode","_component_el_button","_mergeProps","$attrs","_unref","_renderSlot","_ctx","label","tips","_createBlock","_component_el_tooltip","tipsType","placement","_component_el_popconfirm","componentList","components","install","app","config","initConfig","comp","WorkDesktop","useRequest","api","options","method","immediate","initialParams","reqOptions","onSuccess","onFail","onError","data","shallowRef","error","controller","resolveApi","run","params","opts","result","url","request","e","refresh","lastParams","abort","runWrap","onUnmounted","channel","payload","set","fn","on","handler","off","_a","clear","useEventBus","disposers","autoOn","dispose","d","globalStore","reactive","useGlobalState","key","initial","isReactive","k","state","partial","patch","fresh"],"mappings":"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"}