workdesktop-ai 1.1.1 → 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 (174) hide show
  1. package/CHANGELOG.md +43 -6
  2. package/README.md +26 -13
  3. package/dist/api-button/index.mjs +1 -1
  4. package/dist/auto-complete/index.mjs +1 -1
  5. package/dist/base.css +1 -1
  6. package/dist/checkbox-list/index.mjs +1 -1
  7. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-KKzJxwpV.mjs → ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs} +2 -2
  8. package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-KKzJxwpV.mjs.map → ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs.map} +1 -1
  9. package/dist/chunks/{AutoComplete-CLV_PwcZ.mjs → AutoComplete-C6Nxatvt.mjs} +2 -2
  10. package/dist/chunks/{AutoComplete-CLV_PwcZ.mjs.map → AutoComplete-C6Nxatvt.mjs.map} +1 -1
  11. package/dist/chunks/{CheckboxList-Bx3Ce1q5.mjs → CheckboxList-5AEx33r5.mjs} +2 -2
  12. package/dist/chunks/{CheckboxList-Bx3Ce1q5.mjs.map → CheckboxList-5AEx33r5.mjs.map} +1 -1
  13. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-D4w6G2Kv.mjs → ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs} +2 -2
  14. package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-D4w6G2Kv.mjs.map → ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs.map} +1 -1
  15. package/dist/chunks/{DataForm-C5MBVdei.mjs → DataForm-C6VLTSOm.mjs} +16 -16
  16. package/dist/chunks/{DataForm-C5MBVdei.mjs.map → DataForm-C6VLTSOm.mjs.map} +1 -1
  17. package/dist/chunks/{DataGrid-HUzKWuQx.mjs → DataGrid-Dd7n5JM7.mjs} +4 -4
  18. package/dist/chunks/{DataGrid-HUzKWuQx.mjs.map → DataGrid-Dd7n5JM7.mjs.map} +1 -1
  19. package/dist/chunks/{EditableGrid-C8A-nJZv.mjs → EditableGrid-CDeeVkaX.mjs} +330 -333
  20. package/dist/chunks/EditableGrid-CDeeVkaX.mjs.map +1 -0
  21. package/dist/chunks/{ImageUpload-DGehzaYa.mjs → ImageUpload-CQA9XQ7Q.mjs} +2 -2
  22. package/dist/chunks/{ImageUpload-DGehzaYa.mjs.map → ImageUpload-CQA9XQ7Q.mjs.map} +1 -1
  23. package/dist/chunks/{Panel-CrRqBTj6.mjs → Panel-BHqAeBaH.mjs} +8 -8
  24. package/dist/chunks/Panel-BHqAeBaH.mjs.map +1 -0
  25. package/dist/chunks/Path-C_oyo6Dg.mjs +200 -0
  26. package/dist/chunks/Path-C_oyo6Dg.mjs.map +1 -0
  27. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-Gck1QAHc.mjs → PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs} +2 -2
  28. package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-Gck1QAHc.mjs.map → PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs.map} +1 -1
  29. package/dist/chunks/{RadioList-vE8JOuST.mjs → RadioList-BUWcP_Pk.mjs} +2 -2
  30. package/dist/chunks/{RadioList-vE8JOuST.mjs.map → RadioList-BUWcP_Pk.mjs.map} +1 -1
  31. package/dist/chunks/{Requester.vue_vue_type_script_setup_true_lang-B8TwXbYR.mjs → Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs} +2 -2
  32. package/dist/chunks/{Requester.vue_vue_type_script_setup_true_lang-B8TwXbYR.mjs.map → Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs.map} +1 -1
  33. package/dist/chunks/{SearchPanel-xQ1hPaNq.mjs → SearchPanel-DPlWWuXb.mjs} +2 -2
  34. package/dist/chunks/{SearchPanel-xQ1hPaNq.mjs.map → SearchPanel-DPlWWuXb.mjs.map} +1 -1
  35. package/dist/chunks/{Select-DAGZDXvI.mjs → Select-uvFy7_NU.mjs} +2 -2
  36. package/dist/chunks/{Select-DAGZDXvI.mjs.map → Select-uvFy7_NU.mjs.map} +1 -1
  37. package/dist/chunks/Station-DLV19USa.mjs +780 -0
  38. package/dist/chunks/Station-DLV19USa.mjs.map +1 -0
  39. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-CulPqp7M.mjs → Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs} +2 -2
  40. package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-CulPqp7M.mjs.map → Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs.map} +1 -1
  41. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-D07Bhllc.mjs → Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs} +2 -2
  42. package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-D07Bhllc.mjs.map → Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs.map} +1 -1
  43. package/dist/chunks/{Viewer-iub6TjoD.mjs → Viewer-CjLSQTrw.mjs} +2 -2
  44. package/dist/chunks/{Viewer-iub6TjoD.mjs.map → Viewer-CjLSQTrw.mjs.map} +1 -1
  45. package/dist/chunks/http-C06mNpwY.mjs +4141 -0
  46. package/dist/chunks/http-C06mNpwY.mjs.map +1 -0
  47. package/dist/chunks/station-linkage-D54-_iyL.mjs +77 -0
  48. package/dist/chunks/station-linkage-D54-_iyL.mjs.map +1 -0
  49. package/dist/chunks/{useApiAction-6_vvf5Fd.mjs → useApiAction-DxVQWWxv.mjs} +2 -2
  50. package/dist/chunks/{useApiAction-6_vvf5Fd.mjs.map → useApiAction-DxVQWWxv.mjs.map} +1 -1
  51. package/dist/chunks/{useColumnSettings-BYDQdk4o.mjs → useColumnSettings-BwG2V9xp.mjs} +2 -2
  52. package/dist/chunks/{useColumnSettings-BYDQdk4o.mjs.map → useColumnSettings-BwG2V9xp.mjs.map} +1 -1
  53. package/dist/chunks/{useOptionsLoader-Bi8oqNbG.mjs → useOptionsLoader-DEVCYhrp.mjs} +2 -2
  54. package/dist/chunks/{useOptionsLoader-Bi8oqNbG.mjs.map → useOptionsLoader-DEVCYhrp.mjs.map} +1 -1
  55. package/dist/confirm-button/index.mjs +1 -1
  56. package/dist/data-form/index.mjs +1 -1
  57. package/dist/data-form/style.css +1 -1
  58. package/dist/data-grid/index.mjs +1 -1
  59. package/dist/data-grid/style.css +1 -1
  60. package/dist/editable-grid/index.mjs +1 -1
  61. package/dist/editable-grid/style.css +1 -1
  62. package/dist/image-upload/index.mjs +1 -1
  63. package/dist/index.esm.js +133 -124
  64. package/dist/index.esm.js.map +1 -1
  65. package/dist/index.umd.js +705 -15
  66. package/dist/index.umd.js.map +1 -1
  67. package/dist/panel/index.mjs +1 -1
  68. package/dist/panel/style.css +1 -1
  69. package/dist/path/index.mjs +7 -0
  70. package/dist/path/index.mjs.map +1 -0
  71. package/dist/path/style.css +1 -0
  72. package/dist/prompt-button/index.mjs +1 -1
  73. package/dist/radio-list/index.mjs +1 -1
  74. package/dist/requester/index.mjs +1 -1
  75. package/dist/search-panel/index.mjs +1 -1
  76. package/dist/search-panel/style.css +1 -1
  77. package/dist/select/index.mjs +1 -1
  78. package/dist/station/index.mjs +1 -1
  79. package/dist/station/style.css +1 -1
  80. package/dist/style.css +1 -1
  81. package/dist/switch/index.mjs +1 -1
  82. package/dist/upload/index.mjs +1 -1
  83. package/dist/viewer/index.mjs +1 -1
  84. package/llms.txt +99 -9
  85. package/package.json +6 -1
  86. package/dist/chunks/EditableGrid-C8A-nJZv.mjs.map +0 -1
  87. package/dist/chunks/Panel-CrRqBTj6.mjs.map +0 -1
  88. package/dist/chunks/Station-BF_QlQ8c.mjs +0 -796
  89. package/dist/chunks/Station-BF_QlQ8c.mjs.map +0 -1
  90. package/dist/chunks/http-Bs-dM076.mjs +0 -2951
  91. package/dist/chunks/http-Bs-dM076.mjs.map +0 -1
  92. package/dist/types/src/components/buttons/ApiButton.vue.d.ts +0 -134
  93. package/dist/types/src/components/buttons/ConfirmButton.vue.d.ts +0 -169
  94. package/dist/types/src/components/buttons/DialogButton.vue.d.ts +0 -167
  95. package/dist/types/src/components/buttons/DrawerButton.vue.d.ts +0 -186
  96. package/dist/types/src/components/buttons/PopconfirmButton.vue.d.ts +0 -317
  97. package/dist/types/src/components/buttons/PromptButton.vue.d.ts +0 -180
  98. package/dist/types/src/components/buttons/RouteButton.vue.d.ts +0 -122
  99. package/dist/types/src/components/buttons/TipsButton.vue.d.ts +0 -66
  100. package/dist/types/src/components/buttons/useApiAction.d.ts +0 -20
  101. package/dist/types/src/components/common/props.d.ts +0 -122
  102. package/dist/types/src/components/containers/Drawer.vue.d.ts +0 -172
  103. package/dist/types/src/components/containers/Iframe.vue.d.ts +0 -81
  104. package/dist/types/src/components/containers/containerContext.d.ts +0 -15
  105. package/dist/types/src/components/containers/useContainerController.d.ts +0 -24
  106. package/dist/types/src/components/containers/useIframeContainer.d.ts +0 -20
  107. package/dist/types/src/components/core/Requester.vue.d.ts +0 -41
  108. package/dist/types/src/components/data/datagrid/DataGrid.vue.d.ts +0 -542
  109. package/dist/types/src/components/data/datagrid/useColumnSettings.d.ts +0 -62
  110. package/dist/types/src/components/data/editable-grid/EditableGrid.vue.d.ts +0 -586
  111. package/dist/types/src/components/data/viewer/Viewer.vue.d.ts +0 -187
  112. package/dist/types/src/components/form/FormItem.vue.d.ts +0 -62
  113. package/dist/types/src/components/form/SearchItem.vue.d.ts +0 -62
  114. package/dist/types/src/components/form/SearchPanel.vue.d.ts +0 -167
  115. package/dist/types/src/components/form/data-form/DataForm.vue.d.ts +0 -311
  116. package/dist/types/src/components/index.d.ts +0 -31
  117. package/dist/types/src/components/inputs/AutoComplete.vue.d.ts +0 -166
  118. package/dist/types/src/components/inputs/CheckboxList.vue.d.ts +0 -166
  119. package/dist/types/src/components/inputs/RadioList.vue.d.ts +0 -166
  120. package/dist/types/src/components/inputs/Select.vue.d.ts +0 -176
  121. package/dist/types/src/components/inputs/Switch.vue.d.ts +0 -116
  122. package/dist/types/src/components/inputs/useOptionsLoader.d.ts +0 -32
  123. package/dist/types/src/components/layout/Station.vue.d.ts +0 -302
  124. package/dist/types/src/components/layout/StationMenuNode.vue.d.ts +0 -20
  125. package/dist/types/src/components/layout/types.d.ts +0 -54
  126. package/dist/types/src/components/styles/Panel.vue.d.ts +0 -94
  127. package/dist/types/src/components/styles/Tips.vue.d.ts +0 -60
  128. package/dist/types/src/components/upload/ImageUpload.vue.d.ts +0 -176
  129. package/dist/types/src/components/upload/Upload.vue.d.ts +0 -235
  130. package/dist/types/src/entries/api-button.d.ts +0 -9
  131. package/dist/types/src/entries/auto-complete.d.ts +0 -9
  132. package/dist/types/src/entries/checkbox-list.d.ts +0 -9
  133. package/dist/types/src/entries/components-map.d.ts +0 -8
  134. package/dist/types/src/entries/confirm-button.d.ts +0 -9
  135. package/dist/types/src/entries/data-form.d.ts +0 -9
  136. package/dist/types/src/entries/data-grid.d.ts +0 -9
  137. package/dist/types/src/entries/dialog-button.d.ts +0 -9
  138. package/dist/types/src/entries/drawer-button.d.ts +0 -9
  139. package/dist/types/src/entries/drawer.d.ts +0 -9
  140. package/dist/types/src/entries/editable-grid.d.ts +0 -9
  141. package/dist/types/src/entries/form-item.d.ts +0 -9
  142. package/dist/types/src/entries/iframe.d.ts +0 -9
  143. package/dist/types/src/entries/image-upload.d.ts +0 -9
  144. package/dist/types/src/entries/panel.d.ts +0 -9
  145. package/dist/types/src/entries/prompt-button.d.ts +0 -9
  146. package/dist/types/src/entries/radio-list.d.ts +0 -9
  147. package/dist/types/src/entries/requester.d.ts +0 -9
  148. package/dist/types/src/entries/route-button.d.ts +0 -9
  149. package/dist/types/src/entries/search-item.d.ts +0 -9
  150. package/dist/types/src/entries/search-panel.d.ts +0 -9
  151. package/dist/types/src/entries/select.d.ts +0 -9
  152. package/dist/types/src/entries/station.d.ts +0 -9
  153. package/dist/types/src/entries/switch.d.ts +0 -9
  154. package/dist/types/src/entries/tips-button.d.ts +0 -9
  155. package/dist/types/src/entries/tips.d.ts +0 -9
  156. package/dist/types/src/entries/upload.d.ts +0 -9
  157. package/dist/types/src/entries/viewer.d.ts +0 -9
  158. package/dist/types/src/index.d.ts +0 -21
  159. package/dist/types/src/lib/composables/useConfig.d.ts +0 -19
  160. package/dist/types/src/lib/composables/useDataGrid.d.ts +0 -69
  161. package/dist/types/src/lib/composables/useEventBus.d.ts +0 -16
  162. package/dist/types/src/lib/composables/useGlobalState.d.ts +0 -5
  163. package/dist/types/src/lib/composables/useRequest.d.ts +0 -42
  164. package/dist/types/src/lib/configs/default-config.d.ts +0 -6
  165. package/dist/types/src/lib/core/config.d.ts +0 -28
  166. package/dist/types/src/lib/core/http.d.ts +0 -100
  167. package/dist/types/src/lib/core/linkage.d.ts +0 -48
  168. package/dist/types/src/lib/core/station-linkage.d.ts +0 -41
  169. package/dist/types/src/lib/core/theme.d.ts +0 -6
  170. package/dist/types/src/lib/core/utils.d.ts +0 -28
  171. package/dist/types/src/lib/install.d.ts +0 -11
  172. package/dist/types/src/types/config.d.ts +0 -126
  173. package/dist/types/src/types/index.d.ts +0 -4
  174. package/dist/types/vite.config.d.ts +0 -7
package/dist/index.esm.js CHANGED
@@ -1,48 +1,49 @@
1
1
  /* empty css */
2
- import { i as G, r as D } from "./chunks/http-Bs-dM076.mjs";
3
- import { R as he, d as be, g as ye, a as Be, m as we, b as Se, s as ve } from "./chunks/http-Bs-dM076.mjs";
4
- import { W as j } from "./chunks/DataGrid-HUzKWuQx.mjs";
5
- import { W as k } from "./chunks/EditableGrid-C8A-nJZv.mjs";
6
- import { W as q } from "./chunks/Viewer-iub6TjoD.mjs";
7
- import { W as L } from "./chunks/DataForm-C5MBVdei.mjs";
8
- import { W as E } from "./chunks/SearchPanel-xQ1hPaNq.mjs";
9
- import { W as I } from "./chunks/FormItem-C1q0opnk.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
+ import { W as I } from "./chunks/SearchPanel-DPlWWuXb.mjs";
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-KKzJxwpV.mjs";
12
- import { _ as F } from "./chunks/ConfirmButton.vue_vue_type_script_setup_true_lang-D4w6G2Kv.mjs";
13
- import { _ as M } from "./chunks/DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs";
14
- import { defineComponent as V, ref as T, resolveComponent as w, openBlock as P, createElementBlock as U, Fragment as H, createVNode as R, mergeProps as z, unref as J, withCtx as K, renderSlot as Q, createTextVNode as X, toDisplayString as Y, createBlock as Z, createCommentVNode as tt, shallowRef as A, onUnmounted as $, isReactive as et, reactive as ot } from "vue";
15
- import { u as rt } from "./chunks/useApiAction-6_vvf5Fd.mjs";
16
- import { t as nt, b as at, a as it, h as st, f as lt } from "./chunks/props-DAytpx7D.mjs";
17
- import { _ as ft } from "./chunks/PromptButton.vue_vue_type_script_setup_true_lang-Gck1QAHc.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
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-DAGZDXvI.mjs";
24
- import { W as Wt } from "./chunks/AutoComplete-CLV_PwcZ.mjs";
25
- import { W as ht } from "./chunks/CheckboxList-Bx3Ce1q5.mjs";
26
- import { W as bt } from "./chunks/RadioList-vE8JOuST.mjs";
27
- import { _ as yt } from "./chunks/Switch.vue_vue_type_script_setup_true_lang-CulPqp7M.mjs";
28
- import { _ as Bt } from "./chunks/Upload.vue_vue_type_script_setup_true_lang-D07Bhllc.mjs";
29
- import { W as wt } from "./chunks/ImageUpload-DGehzaYa.mjs";
30
- import { W as St } from "./chunks/Panel-CrRqBTj6.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-C_oyo6Dg.mjs";
31
32
  import { W as vt } from "./chunks/Tips-IWCZcR1K.mjs";
32
- import { W as Ct } from "./chunks/Station-BF_QlQ8c.mjs";
33
- import { r as De, a as Pe, s as Re } from "./chunks/Station-BF_QlQ8c.mjs";
34
- import { _ as Dt } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-B8TwXbYR.mjs";
35
- import { u as Te, a as $e } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-B8TwXbYR.mjs";
36
- import { c as xe, g as Ge, r as je, a as ke, b as qe, s as Le } from "./chunks/linkage-FbL1mcz3.mjs";
37
- import { u as Ie } from "./chunks/useColumnSettings-BYDQdk4o.mjs";
38
- const Pt = /* @__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",
42
43
  props: {
43
44
  ...lt,
44
- ...st,
45
45
  ...it,
46
+ ...st,
46
47
  ...at,
47
48
  ...nt,
48
49
  // ---------- el-popconfirm 集成属性 ----------
@@ -106,7 +107,7 @@ const Pt = /* @__PURE__ */ V({
106
107
  "apiAfter"
107
108
  ],
108
109
  setup(t, { emit: o }) {
109
- const e = t, a = o, s = T(), { loading: i, doRequest: f } = rt({
110
+ const e = t, a = o, i = A(), { loading: s, doRequest: f } = rt({
110
111
  getApi: () => e.api,
111
112
  getMethod: () => e.apiMethod,
112
113
  getParam: () => e.apiParam,
@@ -126,32 +127,32 @@ const Pt = /* @__PURE__ */ V({
126
127
  a("cancel");
127
128
  }
128
129
  return (r, u) => {
129
- const l = w("el-button"), b = w("el-tooltip"), g = w("el-popconfirm");
130
- return P(), U(H, null, [
130
+ const l = S("el-button"), b = S("el-tooltip"), g = S("el-popconfirm");
131
+ return D(), U(H, null, [
131
132
  R(l, z({
132
133
  ref_key: "btnRef",
133
- ref: s
134
+ ref: i
134
135
  }, r.$attrs, {
135
- loading: J(i),
136
+ loading: K(s),
136
137
  onClick: d
137
138
  }), {
138
- default: K(() => [
139
+ default: J(() => [
139
140
  Q(r.$slots, "default", {}, () => [
140
141
  X(Y(r.label), 1)
141
142
  ])
142
143
  ]),
143
144
  _: 3
144
145
  }, 16, ["loading"]),
145
- r.tips ? (P(), Z(b, {
146
+ r.tips ? (D(), Z(b, {
146
147
  key: 0,
147
- "virtual-ref": s.value,
148
+ "virtual-ref": i.value,
148
149
  "virtual-triggering": "",
149
150
  content: r.tips,
150
151
  effect: r.tipsType,
151
152
  placement: r.placement
152
153
  }, null, 8, ["virtual-ref", "content", "effect", "placement"])) : tt("", !0),
153
154
  R(g, {
154
- "virtual-ref": s.value,
155
+ "virtual-ref": i.value,
155
156
  "virtual-triggering": "",
156
157
  title: t.title,
157
158
  "confirm-button-text": t.confirmButtonText,
@@ -178,65 +179,66 @@ const Pt = /* @__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
- WdDataForm: L,
188
- WdDataGrid: j,
189
- WdDialogButton: M,
187
+ WdConfirmButton: M,
188
+ WdDataForm: q,
189
+ WdDataGrid: G,
190
+ WdDialogButton: F,
190
191
  WdDrawer: dt,
191
192
  WdDrawerButton: pt,
192
- WdEditableGrid: k,
193
- WdFormItem: I,
193
+ WdEditableGrid: E,
194
+ WdFormItem: L,
194
195
  WdIframe: mt,
195
- WdImageUpload: wt,
196
- WdPanel: St,
197
- WdPopconfirmButton: Pt,
196
+ WdImageUpload: St,
197
+ WdPanel: wt,
198
+ WdPath: Ct,
199
+ WdPopconfirmButton: Rt,
198
200
  WdPromptButton: ft,
199
201
  WdRadioList: bt,
200
202
  WdRequester: Dt,
201
203
  WdRouteButton: ct,
202
204
  WdSearchItem: _,
203
- WdSearchPanel: E,
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
- WdViewer: q
211
- }, Symbol.toStringTag, { value: "Module" })), At = Object.values(Rt), Tt = (t, o) => {
212
- G(o), At.forEach((e) => {
212
+ WdViewer: j
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: Tt };
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,
220
- initialParams: s,
221
- reqOptions: i,
222
+ initialParams: i,
223
+ reqOptions: s,
222
224
  onSuccess: f,
223
225
  onFail: d,
224
226
  onError: m
225
- } = o, h = A(null), r = T(!1), u = A(null);
227
+ } = o, h = T(null), r = A(!1), u = T(null);
226
228
  let l = null;
227
229
  function b() {
228
230
  return typeof t == "function" ? t() : t;
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 = { ...i, signal: l.signal };
234
+ const C = { ...s, signal: l.signal };
233
235
  try {
234
236
  let n;
235
- const C = b();
236
- return e === "get" || e === "delete" ? n = await D.request(
237
- { url: C, method: e, params: W },
238
- v
239
- ) : n = await D.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;
237
+ const v = b();
238
+ return e === "get" || e === "delete" ? n = await P.request(
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 {
@@ -246,45 +248,45 @@ function pe(t, o = {}) {
246
248
  function y() {
247
249
  return g(B);
248
250
  }
249
- function S() {
251
+ function w() {
250
252
  l && (l.abort(), l = null, r.value = !1);
251
253
  }
252
- let B = s;
254
+ let B = i;
253
255
  const x = (W) => (B = W ?? B, g(W));
254
- return a && g(s), $(S), {
256
+ return a && g(i), $(w), {
255
257
  data: h,
256
258
  loading: r,
257
259
  error: u,
258
260
  run: x,
259
261
  refresh: y,
260
- abort: S
262
+ abort: w
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 {
268
270
  a(o);
269
- } catch (s) {
270
- console.error(`[WorkDesktop] eventBus[${t}] handler error:`, s);
271
+ } catch (i) {
272
+ console.error(`[WorkDesktop] eventBus[${t}] handler error:`, i);
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 s = Ot(e, a);
287
- return t.push(s), s;
288
+ const i = xt(e, a);
289
+ return t.push(i), i;
288
290
  };
289
291
  try {
290
292
  $(() => {
@@ -293,83 +295,90 @@ 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")
307
- for (const i of Object.keys(o))
308
- c[t][i] === void 0 && (c[t][i] = o[i]);
309
+ for (const s of Object.keys(o))
310
+ c[t][s] === void 0 && (c[t][s] = o[s]);
309
311
  const e = c[t];
310
- return { state: e, set: (i) => {
311
- const f = typeof i == "function" ? i(e) : i;
312
+ return { state: e, set: (s) => {
313
+ const f = typeof s == "function" ? s(e) : s;
312
314
  Object.assign(c[t], f);
313
315
  }, reset: () => {
314
- const i = o ? { ...o } : {};
315
- Object.keys(c[t]).forEach((f) => delete c[t][f]), Object.assign(c[t], i);
316
+ const s = o ? { ...o } : {};
317
+ Object.keys(c[t]).forEach((f) => delete c[t][f]), Object.assign(c[t], s);
316
318
  } };
317
319
  }
318
320
  export {
319
- he as RequestAPI,
321
+ ye as RequestAPI,
322
+ Be as SKIN_PRESETS,
320
323
  N as WdApiButton,
321
324
  Wt as WdAutoComplete,
322
325
  ht as WdCheckboxList,
323
- F as WdConfirmButton,
324
- L as WdDataForm,
325
- j as WdDataGrid,
326
- M as WdDialogButton,
326
+ M as WdConfirmButton,
327
+ q as WdDataForm,
328
+ G as WdDataGrid,
329
+ F as WdDialogButton,
327
330
  dt as WdDrawer,
328
331
  pt as WdDrawerButton,
329
- k as WdEditableGrid,
330
- I as WdFormItem,
332
+ E as WdEditableGrid,
333
+ L as WdFormItem,
331
334
  mt as WdIframe,
332
- wt as WdImageUpload,
333
- St as WdPanel,
334
- Pt as WdPopconfirmButton,
335
+ St as WdImageUpload,
336
+ wt as WdPanel,
337
+ Ct as WdPath,
338
+ Rt as WdPopconfirmButton,
335
339
  ft as WdPromptButton,
336
340
  bt as WdRadioList,
337
341
  Dt as WdRequester,
338
342
  ct as WdRouteButton,
339
343
  _ as WdSearchItem,
340
- E as WdSearchPanel,
344
+ I as WdSearchPanel,
341
345
  gt as WdSelect,
342
- Ct as WdStation,
346
+ Pt as WdStation,
343
347
  yt as WdSwitch,
344
348
  vt as WdTips,
345
349
  ut as WdTipsButton,
346
350
  Bt as WdUpload,
347
- q as WdViewer,
348
- ue as WorkDesktop,
349
- xe as clearLinkageRegistry,
350
- be as deepMerge,
351
- ue as default,
352
- ye as getComponentDefault,
351
+ j as WdViewer,
352
+ de as WorkDesktop,
353
+ ke as clearLinkageRegistry,
354
+ Se as deepMerge,
355
+ de as default,
356
+ we as getComponentDefault,
353
357
  Ge as getDataGrids,
354
- Be as getGlobalConfig,
355
- D as http,
356
- G as initConfig,
357
- we as mergeConfig,
358
- je as refreshDataGrid,
359
- De as refreshStationView,
360
- ke as registerDataGrid,
361
- Pe as registerStation,
362
- D as request,
363
- Se as resetConfig,
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,
364
372
  qe as resetSearchDataGrid,
365
- Le as searchDataGrid,
366
- ve as setGlobalConfig,
367
- Re as setStationFooter,
368
- Te as useConfig,
369
- Ie as useDataGrid,
370
- de as useEventBus,
371
- $e as useGlobalConfig,
372
- me as useGlobalState,
373
- pe as useRequest
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
374
383
  };
375
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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"}