workdesktop-ai 1.2.0 → 1.2.1

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 (173) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +11 -8
  3. package/dist/api-button/index.mjs +1 -1
  4. package/dist/auto-complete/index.mjs +1 -1
  5. package/dist/checkbox-list/index.mjs +1 -1
  6. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-CH_B3jbO.mjs → ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs} +2 -2
  7. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-CH_B3jbO.mjs.map → ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs.map} +1 -1
  8. package/dist/chunks/{AutoComplete-6yrCFGZ5.mjs → AutoComplete-C6Nxatvt.mjs} +2 -2
  9. package/dist/chunks/{AutoComplete-6yrCFGZ5.mjs.map → AutoComplete-C6Nxatvt.mjs.map} +1 -1
  10. package/dist/chunks/{CheckboxList-ChmfF6zs.mjs → CheckboxList-5AEx33r5.mjs} +2 -2
  11. package/dist/chunks/{CheckboxList-ChmfF6zs.mjs.map → CheckboxList-5AEx33r5.mjs.map} +1 -1
  12. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-D9ZUQB7V.mjs → ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs} +2 -2
  13. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-D9ZUQB7V.mjs.map → ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs.map} +1 -1
  14. package/dist/chunks/{DataForm-Rsa1PT-X.mjs → DataForm-C6VLTSOm.mjs} +3 -3
  15. package/dist/chunks/{DataForm-Rsa1PT-X.mjs.map → DataForm-C6VLTSOm.mjs.map} +1 -1
  16. package/dist/chunks/{DataGrid-DzbJpT43.mjs → DataGrid-Dd7n5JM7.mjs} +3 -3
  17. package/dist/chunks/{DataGrid-DzbJpT43.mjs.map → DataGrid-Dd7n5JM7.mjs.map} +1 -1
  18. package/dist/chunks/{EditableGrid-C-0uy89H.mjs → EditableGrid-CDeeVkaX.mjs} +3 -3
  19. package/dist/chunks/{EditableGrid-C-0uy89H.mjs.map → EditableGrid-CDeeVkaX.mjs.map} +1 -1
  20. package/dist/chunks/{ImageUpload-CrDyIjWC.mjs → ImageUpload-CQA9XQ7Q.mjs} +2 -2
  21. package/dist/chunks/{ImageUpload-CrDyIjWC.mjs.map → ImageUpload-CQA9XQ7Q.mjs.map} +1 -1
  22. package/dist/chunks/Path-C_oyo6Dg.mjs +200 -0
  23. package/dist/chunks/Path-C_oyo6Dg.mjs.map +1 -0
  24. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-ClrF3C2w.mjs → PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs} +2 -2
  25. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-ClrF3C2w.mjs.map → PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs.map} +1 -1
  26. package/dist/chunks/{RadioList-BIwUZ6lm.mjs → RadioList-BUWcP_Pk.mjs} +2 -2
  27. package/dist/chunks/{RadioList-BIwUZ6lm.mjs.map → RadioList-BUWcP_Pk.mjs.map} +1 -1
  28. package/dist/chunks/{Requester.vue_vue_type_script_setup_true_lang-Bu10N1Hj.mjs → Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs} +2 -2
  29. package/dist/chunks/{Requester.vue_vue_type_script_setup_true_lang-Bu10N1Hj.mjs.map → Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs.map} +1 -1
  30. package/dist/chunks/{Select-DlJ9U0nE.mjs → Select-uvFy7_NU.mjs} +2 -2
  31. package/dist/chunks/{Select-DlJ9U0nE.mjs.map → Select-uvFy7_NU.mjs.map} +1 -1
  32. package/dist/chunks/Station-DLV19USa.mjs +780 -0
  33. package/dist/chunks/Station-DLV19USa.mjs.map +1 -0
  34. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-BxJdsReQ.mjs → Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs} +2 -2
  35. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-BxJdsReQ.mjs.map → Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs.map} +1 -1
  36. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-DORizGEF.mjs → Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs} +2 -2
  37. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-DORizGEF.mjs.map → Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs.map} +1 -1
  38. package/dist/chunks/{Viewer-DcMSN3_1.mjs → Viewer-CjLSQTrw.mjs} +2 -2
  39. package/dist/chunks/{Viewer-DcMSN3_1.mjs.map → Viewer-CjLSQTrw.mjs.map} +1 -1
  40. package/dist/chunks/{http-9ToPNkWJ.mjs → http-C06mNpwY.mjs} +1180 -1065
  41. package/dist/chunks/http-C06mNpwY.mjs.map +1 -0
  42. package/dist/chunks/station-linkage-D54-_iyL.mjs +77 -0
  43. package/dist/chunks/station-linkage-D54-_iyL.mjs.map +1 -0
  44. package/dist/chunks/{useApiAction-BetCGQrx.mjs → useApiAction-DxVQWWxv.mjs} +2 -2
  45. package/dist/chunks/{useApiAction-BetCGQrx.mjs.map → useApiAction-DxVQWWxv.mjs.map} +1 -1
  46. package/dist/chunks/{useColumnSettings-CnXeA0k7.mjs → useColumnSettings-BwG2V9xp.mjs} +2 -2
  47. package/dist/chunks/{useColumnSettings-CnXeA0k7.mjs.map → useColumnSettings-BwG2V9xp.mjs.map} +1 -1
  48. package/dist/chunks/{useOptionsLoader-BwRdHDPL.mjs → useOptionsLoader-DEVCYhrp.mjs} +2 -2
  49. package/dist/chunks/{useOptionsLoader-BwRdHDPL.mjs.map → useOptionsLoader-DEVCYhrp.mjs.map} +1 -1
  50. package/dist/confirm-button/index.mjs +1 -1
  51. package/dist/data-form/index.mjs +1 -1
  52. package/dist/data-form/style.css +1 -1
  53. package/dist/data-grid/index.mjs +1 -1
  54. package/dist/editable-grid/index.mjs +1 -1
  55. package/dist/image-upload/index.mjs +1 -1
  56. package/dist/index.esm.js +86 -80
  57. package/dist/index.esm.js.map +1 -1
  58. package/dist/index.umd.js +124 -21
  59. package/dist/index.umd.js.map +1 -1
  60. package/dist/path/index.mjs +7 -0
  61. package/dist/path/index.mjs.map +1 -0
  62. package/dist/path/style.css +1 -0
  63. package/dist/prompt-button/index.mjs +1 -1
  64. package/dist/radio-list/index.mjs +1 -1
  65. package/dist/requester/index.mjs +1 -1
  66. package/dist/select/index.mjs +1 -1
  67. package/dist/station/index.mjs +1 -1
  68. package/dist/station/style.css +1 -1
  69. package/dist/style.css +1 -1
  70. package/dist/switch/index.mjs +1 -1
  71. package/dist/upload/index.mjs +1 -1
  72. package/dist/viewer/index.mjs +1 -1
  73. package/llms.txt +69 -9
  74. package/package.json +6 -1
  75. package/dist/chunks/Station-CrMTjqfa.mjs +0 -796
  76. package/dist/chunks/Station-CrMTjqfa.mjs.map +0 -1
  77. package/dist/chunks/http-9ToPNkWJ.mjs.map +0 -1
  78. package/dist/types/src/components/buttons/ApiButton.vue.d.ts +0 -134
  79. package/dist/types/src/components/buttons/ConfirmButton.vue.d.ts +0 -169
  80. package/dist/types/src/components/buttons/DialogButton.vue.d.ts +0 -167
  81. package/dist/types/src/components/buttons/DrawerButton.vue.d.ts +0 -186
  82. package/dist/types/src/components/buttons/PopconfirmButton.vue.d.ts +0 -317
  83. package/dist/types/src/components/buttons/PromptButton.vue.d.ts +0 -180
  84. package/dist/types/src/components/buttons/RouteButton.vue.d.ts +0 -122
  85. package/dist/types/src/components/buttons/TipsButton.vue.d.ts +0 -66
  86. package/dist/types/src/components/buttons/useApiAction.d.ts +0 -20
  87. package/dist/types/src/components/common/props.d.ts +0 -122
  88. package/dist/types/src/components/containers/Drawer.vue.d.ts +0 -172
  89. package/dist/types/src/components/containers/Iframe.vue.d.ts +0 -81
  90. package/dist/types/src/components/containers/containerContext.d.ts +0 -15
  91. package/dist/types/src/components/containers/useContainerController.d.ts +0 -24
  92. package/dist/types/src/components/containers/useIframeContainer.d.ts +0 -20
  93. package/dist/types/src/components/core/Requester.vue.d.ts +0 -41
  94. package/dist/types/src/components/data/datagrid/DataGrid.vue.d.ts +0 -542
  95. package/dist/types/src/components/data/datagrid/useColumnSettings.d.ts +0 -62
  96. package/dist/types/src/components/data/editable-grid/EditableGrid.vue.d.ts +0 -586
  97. package/dist/types/src/components/data/viewer/Viewer.vue.d.ts +0 -187
  98. package/dist/types/src/components/form/FormItem.vue.d.ts +0 -62
  99. package/dist/types/src/components/form/SearchItem.vue.d.ts +0 -62
  100. package/dist/types/src/components/form/SearchPanel.vue.d.ts +0 -167
  101. package/dist/types/src/components/form/data-form/DataForm.vue.d.ts +0 -311
  102. package/dist/types/src/components/index.d.ts +0 -31
  103. package/dist/types/src/components/inputs/AutoComplete.vue.d.ts +0 -166
  104. package/dist/types/src/components/inputs/CheckboxList.vue.d.ts +0 -166
  105. package/dist/types/src/components/inputs/RadioList.vue.d.ts +0 -166
  106. package/dist/types/src/components/inputs/Select.vue.d.ts +0 -176
  107. package/dist/types/src/components/inputs/Switch.vue.d.ts +0 -116
  108. package/dist/types/src/components/inputs/useOptionsLoader.d.ts +0 -32
  109. package/dist/types/src/components/layout/Station.vue.d.ts +0 -302
  110. package/dist/types/src/components/layout/StationMenuNode.vue.d.ts +0 -20
  111. package/dist/types/src/components/layout/types.d.ts +0 -54
  112. package/dist/types/src/components/styles/Panel.vue.d.ts +0 -94
  113. package/dist/types/src/components/styles/Tips.vue.d.ts +0 -60
  114. package/dist/types/src/components/upload/ImageUpload.vue.d.ts +0 -176
  115. package/dist/types/src/components/upload/Upload.vue.d.ts +0 -235
  116. package/dist/types/src/entries/api-button.d.ts +0 -9
  117. package/dist/types/src/entries/auto-complete.d.ts +0 -9
  118. package/dist/types/src/entries/checkbox-list.d.ts +0 -9
  119. package/dist/types/src/entries/components-map.d.ts +0 -8
  120. package/dist/types/src/entries/confirm-button.d.ts +0 -9
  121. package/dist/types/src/entries/data-form.d.ts +0 -9
  122. package/dist/types/src/entries/data-grid.d.ts +0 -9
  123. package/dist/types/src/entries/dialog-button.d.ts +0 -9
  124. package/dist/types/src/entries/drawer-button.d.ts +0 -9
  125. package/dist/types/src/entries/drawer.d.ts +0 -9
  126. package/dist/types/src/entries/editable-grid.d.ts +0 -9
  127. package/dist/types/src/entries/form-item.d.ts +0 -9
  128. package/dist/types/src/entries/iframe.d.ts +0 -9
  129. package/dist/types/src/entries/image-upload.d.ts +0 -9
  130. package/dist/types/src/entries/panel.d.ts +0 -9
  131. package/dist/types/src/entries/prompt-button.d.ts +0 -9
  132. package/dist/types/src/entries/radio-list.d.ts +0 -9
  133. package/dist/types/src/entries/requester.d.ts +0 -9
  134. package/dist/types/src/entries/route-button.d.ts +0 -9
  135. package/dist/types/src/entries/search-item.d.ts +0 -9
  136. package/dist/types/src/entries/search-panel.d.ts +0 -9
  137. package/dist/types/src/entries/select.d.ts +0 -9
  138. package/dist/types/src/entries/station.d.ts +0 -9
  139. package/dist/types/src/entries/switch.d.ts +0 -9
  140. package/dist/types/src/entries/tips-button.d.ts +0 -9
  141. package/dist/types/src/entries/tips.d.ts +0 -9
  142. package/dist/types/src/entries/upload.d.ts +0 -9
  143. package/dist/types/src/entries/viewer.d.ts +0 -9
  144. package/dist/types/src/index.d.ts +0 -23
  145. package/dist/types/src/lib/composables/useConfig.d.ts +0 -19
  146. package/dist/types/src/lib/composables/useDataGrid.d.ts +0 -69
  147. package/dist/types/src/lib/composables/useEventBus.d.ts +0 -16
  148. package/dist/types/src/lib/composables/useGlobalState.d.ts +0 -5
  149. package/dist/types/src/lib/composables/useRequest.d.ts +0 -42
  150. package/dist/types/src/lib/configs/default-config.d.ts +0 -6
  151. package/dist/types/src/lib/core/config.d.ts +0 -28
  152. package/dist/types/src/lib/core/http.d.ts +0 -100
  153. package/dist/types/src/lib/core/linkage.d.ts +0 -48
  154. package/dist/types/src/lib/core/skins/apple.d.ts +0 -3
  155. package/dist/types/src/lib/core/skins/business.d.ts +0 -3
  156. package/dist/types/src/lib/core/skins/chinese.d.ts +0 -3
  157. package/dist/types/src/lib/core/skins/cool.d.ts +0 -3
  158. package/dist/types/src/lib/core/skins/cyberpunk.d.ts +0 -3
  159. package/dist/types/src/lib/core/skins/default.d.ts +0 -3
  160. package/dist/types/src/lib/core/skins/fashion.d.ts +0 -3
  161. package/dist/types/src/lib/core/skins/flat.d.ts +0 -3
  162. package/dist/types/src/lib/core/skins/governance.d.ts +0 -3
  163. package/dist/types/src/lib/core/skins/index.d.ts +0 -15
  164. package/dist/types/src/lib/core/skins/tech-brain.d.ts +0 -5
  165. package/dist/types/src/lib/core/skins/tech.d.ts +0 -3
  166. package/dist/types/src/lib/core/skins/types.d.ts +0 -19
  167. package/dist/types/src/lib/core/station-linkage.d.ts +0 -41
  168. package/dist/types/src/lib/core/theme.d.ts +0 -11
  169. package/dist/types/src/lib/core/utils.d.ts +0 -28
  170. package/dist/types/src/lib/install.d.ts +0 -11
  171. package/dist/types/src/types/config.d.ts +0 -130
  172. package/dist/types/src/types/index.d.ts +0 -4
  173. package/dist/types/vite.config.d.ts +0 -7
package/dist/index.esm.js CHANGED
@@ -1,41 +1,42 @@
1
1
  /* empty css */
2
- import { i as k, r as P } from "./chunks/http-9ToPNkWJ.mjs";
3
- import { R as he, S as be, d as ye, g as Be, a as Se, b as we, l as ve, m as Ce, c as Pe, s as De } from "./chunks/http-9ToPNkWJ.mjs";
4
- import { W as G } from "./chunks/DataGrid-DzbJpT43.mjs";
5
- import { W as E } from "./chunks/EditableGrid-C-0uy89H.mjs";
6
- import { W as j } from "./chunks/Viewer-DcMSN3_1.mjs";
7
- import { W as q } from "./chunks/DataForm-Rsa1PT-X.mjs";
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
8
  import { W as I } from "./chunks/SearchPanel-DPlWWuXb.mjs";
9
9
  import { W as L } from "./chunks/FormItem-C1q0opnk.mjs";
10
10
  import { W as _ } from "./chunks/SearchItem-pFO57lEO.mjs";
11
- import { _ as N } from "./chunks/ApiButton.vue_vue_type_script_setup_true_lang-CH_B3jbO.mjs";
12
- import { _ as F } from "./chunks/ConfirmButton.vue_vue_type_script_setup_true_lang-D9ZUQB7V.mjs";
13
- import { _ as M } from "./chunks/DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.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
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-BetCGQrx.mjs";
15
+ import { u as rt } from "./chunks/useApiAction-DxVQWWxv.mjs";
16
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-ClrF3C2w.mjs";
17
+ import { _ as ft } from "./chunks/PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs";
18
18
  import { _ as ct } from "./chunks/RouteButton.vue_vue_type_script_setup_true_lang-Da0D3tKA.mjs";
19
19
  import { _ as ut } from "./chunks/TipsButton.vue_vue_type_script_setup_true_lang-DvcpRSV1.mjs";
20
20
  import { _ as pt } from "./chunks/DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs";
21
21
  import { W as dt } from "./chunks/Drawer-ucXKUecL.mjs";
22
22
  import { W as mt } from "./chunks/Iframe-CeSiMnvR.mjs";
23
- import { W as gt } from "./chunks/Select-DlJ9U0nE.mjs";
24
- import { W as Wt } from "./chunks/AutoComplete-6yrCFGZ5.mjs";
25
- import { W as ht } from "./chunks/CheckboxList-ChmfF6zs.mjs";
26
- import { W as bt } from "./chunks/RadioList-BIwUZ6lm.mjs";
27
- import { _ as yt } from "./chunks/Switch.vue_vue_type_script_setup_true_lang-BxJdsReQ.mjs";
28
- import { _ as Bt } from "./chunks/Upload.vue_vue_type_script_setup_true_lang-DORizGEF.mjs";
29
- import { W as St } from "./chunks/ImageUpload-CrDyIjWC.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
30
  import { W as wt } from "./chunks/Panel-BHqAeBaH.mjs";
31
+ import { W as Ct } from "./chunks/Path-C_oyo6Dg.mjs";
31
32
  import { W as vt } from "./chunks/Tips-IWCZcR1K.mjs";
32
- import { W as Ct } from "./chunks/Station-CrMTjqfa.mjs";
33
- import { r as Te, a as Ae, s as $e } from "./chunks/Station-CrMTjqfa.mjs";
34
- import { _ as Pt } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-Bu10N1Hj.mjs";
35
- import { u as xe, a as ke } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-Bu10N1Hj.mjs";
36
- import { c as Ee, g as je, r as qe, a as Ie, b as Le, s as _e } from "./chunks/linkage-FbL1mcz3.mjs";
37
- import { u as Fe } from "./chunks/useColumnSettings-CnXeA0k7.mjs";
38
- const Dt = /* @__PURE__ */ V({
33
+ import { W as Pt } from "./chunks/Station-DLV19USa.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({
39
40
  name: "WdPopconfirmButton",
40
41
  inheritAttrs: !1,
41
42
  __name: "PopconfirmButton",
@@ -178,15 +179,15 @@ const Dt = /* @__PURE__ */ V({
178
179
  ], 64);
179
180
  };
180
181
  }
181
- }), Rt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
182
+ }), Tt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
182
183
  __proto__: null,
183
184
  WdApiButton: N,
184
185
  WdAutoComplete: Wt,
185
186
  WdCheckboxList: ht,
186
- WdConfirmButton: F,
187
+ WdConfirmButton: M,
187
188
  WdDataForm: q,
188
189
  WdDataGrid: G,
189
- WdDialogButton: M,
190
+ WdDialogButton: F,
190
191
  WdDrawer: dt,
191
192
  WdDrawerButton: pt,
192
193
  WdEditableGrid: E,
@@ -194,26 +195,27 @@ const Dt = /* @__PURE__ */ V({
194
195
  WdIframe: mt,
195
196
  WdImageUpload: St,
196
197
  WdPanel: wt,
197
- WdPopconfirmButton: Dt,
198
+ WdPath: Ct,
199
+ WdPopconfirmButton: Rt,
198
200
  WdPromptButton: ft,
199
201
  WdRadioList: bt,
200
- WdRequester: Pt,
202
+ WdRequester: Dt,
201
203
  WdRouteButton: ct,
202
204
  WdSearchItem: _,
203
205
  WdSearchPanel: I,
204
206
  WdSelect: gt,
205
- WdStation: Ct,
207
+ WdStation: Pt,
206
208
  WdSwitch: yt,
207
209
  WdTips: vt,
208
210
  WdTipsButton: ut,
209
211
  WdUpload: Bt,
210
212
  WdViewer: j
211
- }, Symbol.toStringTag, { value: "Module" })), Tt = Object.values(Rt), At = (t, o) => {
212
- k(o), Tt.forEach((e) => {
213
+ }, Symbol.toStringTag, { value: "Module" })), At = Object.values(Tt), $t = (t, o) => {
214
+ k(o), At.forEach((e) => {
213
215
  e != null && e.name && t.component(e.name, e);
214
216
  });
215
- }, ue = { install: At };
216
- function pe(t, o = {}) {
217
+ }, de = { install: $t };
218
+ function me(t, o = {}) {
217
219
  const {
218
220
  method: e = "post",
219
221
  immediate: a = !0,
@@ -229,14 +231,14 @@ function pe(t, o = {}) {
229
231
  }
230
232
  async function g(W) {
231
233
  r.value = !0, u.value = null, l && l.abort(), l = new AbortController();
232
- const v = { ...s, signal: l.signal };
234
+ const C = { ...s, signal: l.signal };
233
235
  try {
234
236
  let n;
235
- const C = b();
237
+ const v = b();
236
238
  return e === "get" || e === "delete" ? n = await P.request(
237
- { url: C, method: e, params: W },
238
- v
239
- ) : n = await P.request({ url: C, method: e, data: W }, v), n.success ? (h.value = n.data, f == null || f(n.data, n)) : d == null || d(n), n;
239
+ { url: v, method: e, params: W },
240
+ 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;
240
242
  } catch (n) {
241
243
  return u.value = n instanceof Error ? n : new Error((n == null ? void 0 : n.message) || "请求失败"), m == null || m(n), null;
242
244
  } finally {
@@ -261,7 +263,7 @@ function pe(t, o = {}) {
261
263
  };
262
264
  }
263
265
  const p = /* @__PURE__ */ new Map();
264
- function $t(t, o) {
266
+ function Ot(t, o) {
265
267
  const e = p.get(t);
266
268
  e && e.forEach((a) => {
267
269
  try {
@@ -271,19 +273,19 @@ function $t(t, o) {
271
273
  }
272
274
  });
273
275
  }
274
- function Ot(t, o) {
276
+ function xt(t, o) {
275
277
  return p.has(t) || p.set(t, /* @__PURE__ */ new Set()), p.get(t).add(o), () => O(t, o);
276
278
  }
277
279
  function O(t, o) {
278
280
  var e;
279
281
  (e = p.get(t)) == null || e.delete(o);
280
282
  }
281
- function xt(t) {
283
+ function kt(t) {
282
284
  t ? p.delete(t) : p.clear();
283
285
  }
284
- function de() {
286
+ function ge() {
285
287
  const t = [], o = (e, a) => {
286
- const i = Ot(e, a);
288
+ const i = xt(e, a);
287
289
  return t.push(i), i;
288
290
  };
289
291
  try {
@@ -293,14 +295,14 @@ function de() {
293
295
  } catch {
294
296
  }
295
297
  return {
296
- emit: $t,
298
+ emit: Ot,
297
299
  on: o,
298
300
  off: O,
299
- clear: xt
301
+ clear: kt
300
302
  };
301
303
  }
302
304
  const c = ot({});
303
- function me(t, o) {
305
+ function We(t, o) {
304
306
  if (!(t in c))
305
307
  c[t] = o ? et(o) ? o : { ...o } : {};
306
308
  else if (o && typeof o == "object")
@@ -316,15 +318,15 @@ function me(t, o) {
316
318
  } };
317
319
  }
318
320
  export {
319
- he as RequestAPI,
320
- be as SKIN_PRESETS,
321
+ ye as RequestAPI,
322
+ Be as SKIN_PRESETS,
321
323
  N as WdApiButton,
322
324
  Wt as WdAutoComplete,
323
325
  ht as WdCheckboxList,
324
- F as WdConfirmButton,
326
+ M as WdConfirmButton,
325
327
  q as WdDataForm,
326
328
  G as WdDataGrid,
327
- M as WdDialogButton,
329
+ F as WdDialogButton,
328
330
  dt as WdDrawer,
329
331
  pt as WdDrawerButton,
330
332
  E as WdEditableGrid,
@@ -332,47 +334,51 @@ export {
332
334
  mt as WdIframe,
333
335
  St as WdImageUpload,
334
336
  wt as WdPanel,
335
- Dt as WdPopconfirmButton,
337
+ Ct as WdPath,
338
+ Rt as WdPopconfirmButton,
336
339
  ft as WdPromptButton,
337
340
  bt as WdRadioList,
338
- Pt as WdRequester,
341
+ Dt as WdRequester,
339
342
  ct as WdRouteButton,
340
343
  _ as WdSearchItem,
341
344
  I as WdSearchPanel,
342
345
  gt as WdSelect,
343
- Ct as WdStation,
346
+ Pt as WdStation,
344
347
  yt as WdSwitch,
345
348
  vt as WdTips,
346
349
  ut as WdTipsButton,
347
350
  Bt as WdUpload,
348
351
  j as WdViewer,
349
- ue as WorkDesktop,
350
- Ee as clearLinkageRegistry,
351
- ye as deepMerge,
352
- ue as default,
353
- Be as getComponentDefault,
354
- je as getDataGrids,
355
- Se as getGlobalConfig,
356
- we as getSkinPreset,
352
+ de as WorkDesktop,
353
+ 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,
357
361
  P as http,
358
362
  k as initConfig,
359
- ve as listSkins,
360
- Ce as mergeConfig,
361
- qe as refreshDataGrid,
362
- Te as refreshStationView,
363
- Ie as registerDataGrid,
364
- Ae as registerStation,
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,
365
370
  P as request,
366
- Pe as resetConfig,
367
- Le as resetSearchDataGrid,
368
- _e as searchDataGrid,
369
- De as setGlobalConfig,
370
- $e as setStationFooter,
371
- xe as useConfig,
372
- Fe as useDataGrid,
373
- de as useEventBus,
374
- ke as useGlobalConfig,
375
- me as useGlobalState,
376
- pe as useRequest
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
377
383
  };
378
384
  //# 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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"}