@ditari/bsui 5.1.18 → 5.1.20

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 (113) hide show
  1. package/dist/cjs/components/action-bar/ActionBar.vue.cjs +10 -0
  2. package/dist/cjs/components/action-bar/ActionBar.vue.cjs.map +1 -0
  3. package/dist/cjs/components/action-bar/ActionBar.vue.d.ts +47 -0
  4. package/dist/cjs/components/action-bar/ActionBar.vue2.cjs +114 -0
  5. package/dist/cjs/components/action-bar/ActionBar.vue2.cjs.map +1 -0
  6. package/dist/cjs/components/action-bar/index.cjs +16 -0
  7. package/dist/cjs/components/action-bar/index.cjs.map +1 -0
  8. package/dist/cjs/components/action-bar/index.d.ts +4 -0
  9. package/dist/cjs/components/card/Card.cjs.map +1 -1
  10. package/dist/cjs/components/card/style.cjs.map +1 -1
  11. package/dist/cjs/components/dic/DicReplace.cjs.map +1 -1
  12. package/dist/cjs/components/form/FormLayout.cjs +147 -23
  13. package/dist/cjs/components/form/FormLayout.cjs.map +1 -1
  14. package/dist/cjs/components/form/FormLayout.d.ts +61 -0
  15. package/dist/cjs/components/index.cjs +6 -0
  16. package/dist/cjs/components/index.cjs.map +1 -1
  17. package/dist/cjs/components/index.d.ts +2 -0
  18. package/dist/cjs/components/layout/AppContext.cjs.map +1 -1
  19. package/dist/cjs/components/layout/AppLayout.cjs.map +1 -1
  20. package/dist/cjs/components/layout/List.cjs +25 -8
  21. package/dist/cjs/components/layout/List.cjs.map +1 -1
  22. package/dist/cjs/components/layout/Show.cjs.map +1 -1
  23. package/dist/cjs/components/layout/components/layout/RouterContentName.vue2.cjs.map +1 -1
  24. package/dist/cjs/components/layout/components/mobile/MobileList.cjs.map +1 -1
  25. package/dist/cjs/components/layout/style.cjs.map +1 -1
  26. package/dist/cjs/components/select/Select.vue2.cjs +0 -3
  27. package/dist/cjs/components/select/Select.vue2.cjs.map +1 -1
  28. package/dist/cjs/components/table/Table.cjs +13 -12
  29. package/dist/cjs/components/table/Table.cjs.map +1 -1
  30. package/dist/cjs/components/table/Table.d.ts +1 -1
  31. package/dist/cjs/components/table-form/TableForm.cjs.map +1 -1
  32. package/dist/cjs/components/table-form/TableFormItem.cjs.map +1 -1
  33. package/dist/cjs/components/table-form/index.cjs.map +1 -1
  34. package/dist/cjs/components/table-form/interface.cjs.map +1 -1
  35. package/dist/cjs/components/table-form/style.cjs.map +1 -1
  36. package/dist/cjs/components/tools-bar/ToolsBar.vue.cjs +10 -0
  37. package/dist/cjs/components/tools-bar/ToolsBar.vue.cjs.map +1 -0
  38. package/dist/cjs/components/tools-bar/ToolsBar.vue.d.ts +27 -0
  39. package/dist/cjs/components/tools-bar/ToolsBar.vue2.cjs +124 -0
  40. package/dist/cjs/components/tools-bar/ToolsBar.vue2.cjs.map +1 -0
  41. package/dist/cjs/components/tools-bar/index.cjs +16 -0
  42. package/dist/cjs/components/tools-bar/index.cjs.map +1 -0
  43. package/dist/cjs/components/tools-bar/index.d.ts +4 -0
  44. package/dist/cjs/hooks/useDesign.cjs.map +1 -1
  45. package/dist/cjs/index.cjs +5 -0
  46. package/dist/cjs/index.cjs.map +1 -1
  47. package/dist/cjs/utils/withInstall.cjs.map +1 -1
  48. package/dist/esm/components/action-bar/ActionBar.vue.d.ts +47 -0
  49. package/dist/esm/components/action-bar/ActionBar.vue.mjs +6 -0
  50. package/dist/esm/components/action-bar/ActionBar.vue.mjs.map +1 -0
  51. package/dist/esm/components/action-bar/ActionBar.vue2.mjs +110 -0
  52. package/dist/esm/components/action-bar/ActionBar.vue2.mjs.map +1 -0
  53. package/dist/esm/components/action-bar/index.d.ts +4 -0
  54. package/dist/esm/components/action-bar/index.mjs +11 -0
  55. package/dist/esm/components/action-bar/index.mjs.map +1 -0
  56. package/dist/esm/components/card/Card.mjs.map +1 -1
  57. package/dist/esm/components/card/style.mjs.map +1 -1
  58. package/dist/esm/components/dic/DicReplace.mjs.map +1 -1
  59. package/dist/esm/components/form/FormLayout.d.ts +61 -0
  60. package/dist/esm/components/form/FormLayout.mjs +149 -25
  61. package/dist/esm/components/form/FormLayout.mjs.map +1 -1
  62. package/dist/esm/components/index.d.ts +2 -0
  63. package/dist/esm/components/index.mjs +4 -0
  64. package/dist/esm/components/index.mjs.map +1 -1
  65. package/dist/esm/components/layout/AppContext.mjs.map +1 -1
  66. package/dist/esm/components/layout/AppLayout.mjs.map +1 -1
  67. package/dist/esm/components/layout/List.mjs +26 -9
  68. package/dist/esm/components/layout/List.mjs.map +1 -1
  69. package/dist/esm/components/layout/Show.mjs.map +1 -1
  70. package/dist/esm/components/layout/components/layout/RouterContentName.vue2.mjs.map +1 -1
  71. package/dist/esm/components/layout/components/mobile/MobileList.mjs.map +1 -1
  72. package/dist/esm/components/layout/style.mjs.map +1 -1
  73. package/dist/esm/components/select/Select.vue2.mjs +0 -3
  74. package/dist/esm/components/select/Select.vue2.mjs.map +1 -1
  75. package/dist/esm/components/table/Table.d.ts +1 -1
  76. package/dist/esm/components/table/Table.mjs +13 -12
  77. package/dist/esm/components/table/Table.mjs.map +1 -1
  78. package/dist/esm/components/table-form/TableForm.mjs.map +1 -1
  79. package/dist/esm/components/table-form/TableFormItem.mjs.map +1 -1
  80. package/dist/esm/components/table-form/index.mjs.map +1 -1
  81. package/dist/esm/components/table-form/interface.mjs.map +1 -1
  82. package/dist/esm/components/table-form/style.mjs.map +1 -1
  83. package/dist/esm/components/tools-bar/ToolsBar.vue.d.ts +27 -0
  84. package/dist/esm/components/tools-bar/ToolsBar.vue.mjs +6 -0
  85. package/dist/esm/components/tools-bar/ToolsBar.vue.mjs.map +1 -0
  86. package/dist/esm/components/tools-bar/ToolsBar.vue2.mjs +120 -0
  87. package/dist/esm/components/tools-bar/ToolsBar.vue2.mjs.map +1 -0
  88. package/dist/esm/components/tools-bar/index.d.ts +4 -0
  89. package/dist/esm/components/tools-bar/index.mjs +11 -0
  90. package/dist/esm/components/tools-bar/index.mjs.map +1 -0
  91. package/dist/esm/hooks/useDesign.mjs.map +1 -1
  92. package/dist/esm/index.mjs +3 -0
  93. package/dist/esm/index.mjs.map +1 -1
  94. package/dist/esm/utils/withInstall.mjs.map +1 -1
  95. package/dist/types/components/action-bar/ActionBar.vue.d.ts +47 -0
  96. package/dist/types/components/action-bar/ActionBar.vue.d.ts.map +1 -0
  97. package/dist/types/components/action-bar/index.d.ts +4 -0
  98. package/dist/types/components/action-bar/index.d.ts.map +1 -0
  99. package/dist/types/components/form/FormLayout.d.ts +61 -0
  100. package/dist/types/components/form/FormLayout.d.ts.map +1 -1
  101. package/dist/types/components/index.d.ts +2 -0
  102. package/dist/types/components/index.d.ts.map +1 -1
  103. package/dist/types/components/layout/List.d.ts.map +1 -1
  104. package/dist/types/components/layout/components/layout/RouterContentName.vue.d.ts.map +1 -1
  105. package/dist/types/components/table/Table.d.ts +1 -1
  106. package/dist/types/components/table/Table.d.ts.map +1 -1
  107. package/dist/types/components/tools-bar/ToolsBar.vue.d.ts +27 -0
  108. package/dist/types/components/tools-bar/ToolsBar.vue.d.ts.map +1 -0
  109. package/dist/types/components/tools-bar/index.d.ts +4 -0
  110. package/dist/types/components/tools-bar/index.d.ts.map +1 -0
  111. package/dist/types/index.d.ts.map +1 -1
  112. package/package.json +1 -1
  113. package/src/index.ts +2 -0
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var ActionBar_vue_vue_type_script_setup_true_lang = require('./ActionBar.vue2.cjs');
6
+
7
+ "use strict";
8
+
9
+ exports.default = ActionBar_vue_vue_type_script_setup_true_lang.default;
10
+ //# sourceMappingURL=ActionBar.vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionBar.vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1,47 @@
1
+ import { type VNode } from "vue";
2
+ interface ButtonItem {
3
+ title: string | VNode;
4
+ status?: boolean | ((record: {
5
+ [key: string]: unknown;
6
+ }) => boolean);
7
+ onClick?: (record: {
8
+ [key: string]: unknown;
9
+ }) => void;
10
+ onEvent?: (record: {
11
+ [key: string]: unknown;
12
+ }) => void;
13
+ }
14
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
15
+ buttonGroups: {
16
+ type: ArrayConstructor;
17
+ required: false;
18
+ };
19
+ actions: {
20
+ type: ArrayConstructor;
21
+ required: false;
22
+ };
23
+ record: {
24
+ type: ObjectConstructor;
25
+ required: true;
26
+ };
27
+ }>, {
28
+ props: any;
29
+ isShow: (item: ButtonItem) => boolean;
30
+ visibleButtons: import("vue").ComputedRef<ButtonItem[]>;
31
+ showDivider: (item: ButtonItem) => boolean;
32
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
33
+ buttonGroups: {
34
+ type: ArrayConstructor;
35
+ required: false;
36
+ };
37
+ actions: {
38
+ type: ArrayConstructor;
39
+ required: false;
40
+ };
41
+ record: {
42
+ type: ObjectConstructor;
43
+ required: true;
44
+ };
45
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
46
+ export default _default;
47
+ //# sourceMappingURL=ActionBar.vue.d.ts.map
@@ -0,0 +1,114 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue = require('vue');
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __defProps = Object.defineProperties;
10
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
11
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
+ var __spreadValues = (a, b) => {
16
+ for (var prop in b || (b = {}))
17
+ if (__hasOwnProp.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ if (__getOwnPropSymbols)
20
+ for (var prop of __getOwnPropSymbols(b)) {
21
+ if (__propIsEnum.call(b, prop))
22
+ __defNormalProp(a, prop, b[prop]);
23
+ }
24
+ return a;
25
+ };
26
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
27
+ const _hoisted_1 = ["onClick"];
28
+ var _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
29
+ name: "DActionBar"
30
+ }), {
31
+ __name: "ActionBar",
32
+ props: {
33
+ buttonGroups: { type: Array, required: false },
34
+ actions: { type: Array, required: false },
35
+ record: { type: Object, required: true }
36
+ },
37
+ setup(__props) {
38
+ const props = __props;
39
+ const isShow = (item) => {
40
+ var _a;
41
+ if (typeof item.status === "function") {
42
+ return item.status(props.record);
43
+ }
44
+ return (_a = item.status) != null ? _a : true;
45
+ };
46
+ const visibleButtons = vue.computed(() => {
47
+ const groups = props.actions || props.buttonGroups || [];
48
+ return groups.filter((item) => isShow(item));
49
+ });
50
+ const showDivider = (item) => {
51
+ if (!isShow(item)) {
52
+ return false;
53
+ }
54
+ const visibleIndex = visibleButtons.value.findIndex((v) => v.title === item.title);
55
+ return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;
56
+ };
57
+ return (_ctx, _cache) => {
58
+ const _component_a_divider = vue.resolveComponent("a-divider");
59
+ return vue.openBlock(), vue.createElementBlock("div", {
60
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
61
+ }, ["stop"]))
62
+ }, [
63
+ (vue.openBlock(true), vue.createElementBlock(
64
+ vue.Fragment,
65
+ null,
66
+ vue.renderList(__props.actions || __props.buttonGroups || [], (item, index) => {
67
+ return vue.openBlock(), vue.createElementBlock(
68
+ vue.Fragment,
69
+ { key: index },
70
+ [
71
+ isShow(item) ? (vue.openBlock(), vue.createElementBlock("a", {
72
+ key: 0,
73
+ onClick: vue.withModifiers(($event) => {
74
+ var _a;
75
+ return (_a = item.onClick || item.onEvent) == null ? void 0 : _a(__props.record);
76
+ }, ["stop"])
77
+ }, [
78
+ item.title instanceof Object ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(item.title), {
79
+ key: 0,
80
+ record: __props.record
81
+ }, null, 8, ["record"])) : (vue.openBlock(), vue.createElementBlock(
82
+ vue.Fragment,
83
+ { key: 1 },
84
+ [
85
+ vue.createTextVNode(
86
+ vue.toDisplayString(item.title),
87
+ 1
88
+ /* TEXT */
89
+ )
90
+ ],
91
+ 64
92
+ /* STABLE_FRAGMENT */
93
+ ))
94
+ ], 8, _hoisted_1)) : vue.createCommentVNode("v-if", true),
95
+ showDivider(item) ? (vue.openBlock(), vue.createBlock(_component_a_divider, {
96
+ key: 1,
97
+ type: "vertical",
98
+ style: { "border-color": "#3e7fff", "border-width": "2px" }
99
+ })) : vue.createCommentVNode("v-if", true)
100
+ ],
101
+ 64
102
+ /* STABLE_FRAGMENT */
103
+ );
104
+ }),
105
+ 128
106
+ /* KEYED_FRAGMENT */
107
+ ))
108
+ ]);
109
+ };
110
+ }
111
+ }));
112
+
113
+ exports.default = _sfc_main;
114
+ //# sourceMappingURL=ActionBar.vue2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionBar.vue2.cjs","sources":["../../../../src/components/action-bar/ActionBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\n import { computed, type VNode } from \"vue\";\r\n\r\n defineOptions({\r\n name: \"DActionBar\"\r\n });\r\n\r\n interface ButtonItem {\r\n title: string | VNode;\r\n status?: boolean | ((record: { [key: string]: unknown }) => boolean);\r\n onClick?: (record: { [key: string]: unknown }) => void;\r\n onEvent?: (record: { [key: string]: unknown }) => void; // 别名,为了向后兼容\r\n }\r\n\r\n // 2. 普通的 Props 声明\r\n const props = defineProps({\n buttonGroups: { type: Array, required: false },\n actions: { type: Array, required: false },\n record: { type: Object, required: true }\n});\r\n\r\n /**\r\n * 判断按钮是否显示\r\n */\r\n const isShow = (item: ButtonItem): boolean => {\r\n if (typeof item.status === \"function\") {\r\n return item.status(props.record);\r\n }\r\n return item.status ?? true;\r\n };\r\n\r\n /**\r\n * 过滤出当前真正显示的按钮列表\r\n */\r\n const visibleButtons = computed(() => {\r\n const groups: ButtonItem[] = props.actions || props.buttonGroups || [];\r\n return groups.filter((item: ButtonItem) => isShow(item));\r\n });\r\n\r\n /**\r\n * 判断分隔线状态\r\n */\r\n const showDivider = (item: ButtonItem): boolean => {\r\n if (!isShow(item)) {\r\n return false;\r\n }\r\n\r\n // 逻辑保持不变:在可见列表里找自己\r\n const visibleIndex = visibleButtons.value.findIndex((v: ButtonItem) => v.title === item.title);\r\n return visibleIndex !== -1 && visibleIndex < visibleButtons.value.length - 1;\r\n };\r\n</script>\r\n\r\n<template>\r\n <div @click.stop>\r\n <template v-for=\"(item, index) in actions || buttonGroups || []\" :key=\"index\">\r\n <a v-if=\"isShow(item)\" @click.stop=\"(item.onClick || item.onEvent)?.(record)\">\r\n <template v-if=\"item.title instanceof Object\">\r\n <component :is=\"item.title\" :record=\"record\" />\r\n </template>\r\n <template v-else>\r\n {{ item.title }}\r\n </template>\r\n </a>\r\n <a-divider\r\n v-if=\"showDivider(item)\"\r\n type=\"vertical\"\r\n style=\"border-color: #3e7fff; border-width: 2px\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["computed","_createElementBlock","_openBlock","_Fragment","_withModifiers","_createBlock","_resolveDynamicComponent","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeE,IAAA,MAAM,KAAA,GAAQ,OAAA;AASd,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAA8B;;AAC5C,MAAA,IAAI,OAAO,IAAA,CAAK,MAAA,KAAW,UAAA,EAAY;AACrC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAAA,MACjC;AACA,MAAA,OAAA,CAAO,EAAA,GAAA,IAAA,CAAK,WAAL,IAAA,GAAA,EAAA,GAAe,IAAA;AAAA,IACxB,CAAA;AAKA,IAAA,MAAM,cAAA,GAAiBA,aAAS,MAAM;AACpC,MAAA,MAAM,MAAA,GAAuB,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,gBAAgB,EAAC;AACrE,MAAA,OAAO,OAAO,MAAA,CAAO,CAAC,IAAA,KAAqB,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA,IACzD,CAAC,CAAA;AAKD,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAA8B;AACjD,MAAA,IAAI,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,MAAM,YAAA,GAAe,eAAe,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAkB,CAAA,CAAE,KAAA,KAAU,IAAA,CAAK,KAAK,CAAA;AAC7F,MAAA,OAAO,YAAA,KAAiB,CAAA,CAAA,IAAM,YAAA,GAAe,cAAA,CAAe,MAAM,MAAA,GAAS,CAAA;AAAA,IAC7E,CAAA;;;8BAIAC,sBAAA,CAgBM,KAAA,EAAA;AAAA,QAhBA,OAAA,8CAAD,MAAA;AAAA,QAAA,CAAA,EAAW,CAAA,MAAA,CAAA,CAAA;AAAA;SACdC,aAAA,CAAA,IAAA,CAAA,EAAAD,sBAAA;AAAA,UAcWE,YAAA;AAAA;yBAduB,QAAA,OAAA,IAAW,OAAA,iBAAY,EAAA,EAAA,CAAvC,IAAA,EAAM,KAAA,KAAK;;;qBAA0C,KAAA,EAAK;AAAA,cAAA;AAAA,gBACjE,OAAO,IAAI,CAAA,qBAApBF,uBAOI,GAAA,EAAA;AAAA;kBAPoB,OAAA,EAAKG,iBAAA,CAAA,CAAA,MAAA,KAAA;;AAAQ,oBAAA,OAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,OAAA,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgC,OAAA,CAAA,MAAA,CAAA;AAAA,kBAAA,CAAA,EAAM,CAAA,MAAA,CAAA;AAAA;kBACzD,IAAA,CAAK,iBAAiB,MAAA,qBACpCC,eAAA,CAA+CC,2BAAA,CAA/B,IAAA,CAAK,KAAK,CAAA,EAAA;AAAA;oBAAG,QAAQ,OAAA,CAAA;AAAA,+DAEvCL,sBAAA;AAAA,oBAEWE,YAAA;AAAA,oBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,oBAAA;AAAA,sBADNI,mBAAA;AAAA,wBAAAC,mBAAA,CAAA,KAAK,KAAK,CAAA;AAAA,wBAAA;AAAA;AAAA;AAAA;;;;;gBAIT,YAAY,IAAI,CAAA,qBADxBH,gBAIE,oBAAA,EAAA;AAAA;kBAFA,IAAA,EAAK,UAAA;AAAA,kBACL,KAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,gBAAA,KAAA;AAAA;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('./ActionBar.vue.cjs');
6
+ var ActionBar_vue_vue_type_script_setup_true_lang = require('./ActionBar.vue2.cjs');
7
+
8
+ "use strict";
9
+ ActionBar_vue_vue_type_script_setup_true_lang.default.install = function(app) {
10
+ app.component(ActionBar_vue_vue_type_script_setup_true_lang.default.name, ActionBar_vue_vue_type_script_setup_true_lang.default);
11
+ return app;
12
+ };
13
+
14
+ exports.ActionBar = ActionBar_vue_vue_type_script_setup_true_lang.default;
15
+ exports.default = ActionBar_vue_vue_type_script_setup_true_lang.default;
16
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/components/action-bar/index.ts"],"sourcesContent":["import ActionBar from \"./ActionBar.vue\";\r\nimport type { App } from \"vue\";\r\n\r\nActionBar.install = function (app: App) {\r\n app.component(ActionBar.name!, ActionBar);\r\n return app;\r\n};\r\n\r\nexport { ActionBar };\r\nexport default ActionBar;\r\n"],"names":["ActionBar"],"mappings":";;;;;;;;AAGAA,qDAAA,CAAU,OAAA,GAAU,SAAU,GAAA,EAAU;AACtC,EAAA,GAAA,CAAI,SAAA,CAAUA,qDAAA,CAAU,IAAA,EAAOA,qDAAS,CAAA;AACxC,EAAA,OAAO,GAAA;AACT,CAAA;;;;;"}
@@ -0,0 +1,4 @@
1
+ import ActionBar from "./ActionBar.vue";
2
+ export { ActionBar };
3
+ export default ActionBar;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.cjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["// components/card/index.tsx\r\nimport { defineComponent } from \"vue\";\r\n\r\nimport { cx } from \"@emotion/css\"; // 引入 cx\r\n\r\nimport { useDesign } from \"../../hooks/useDesign\"; // 引入我们刚才写的 hook\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\nimport { useStyle } from \"./style\";\r\n\r\nconst _Card = defineComponent({\r\n name: \"DCard\",\r\n props: {\r\n title: String\r\n },\r\n setup(props, { slots }) {\r\n // 初始化 Design Hook,传入组件名 'card'\r\n const { getPrefixCls } = useDesign(\"card\");\r\n\r\n // 初始化 Emotion 样式\r\n const styles = useStyle();\r\n\r\n return () => {\r\n // 生成语义化类名\r\n const rootCls = getPrefixCls();\r\n const headerCls = getPrefixCls(\"head\");\r\n const iconCls = getPrefixCls(\"icon\");\r\n const titleCls = getPrefixCls(\"title\");\r\n const actionCls = getPrefixCls(\"action\");\r\n const bodyCls = getPrefixCls(\"body\");\r\n\r\n return (\r\n <div class={cx(rootCls, styles.container)}>\r\n {/* Header 区域 */}\r\n <div class={cx(headerCls, styles.header)}>\r\n {slots.icon && (\r\n <div class={cx(iconCls, styles.icon)}>\r\n {slots.icon()}\r\n </div>\r\n )}\r\n <div class={cx(titleCls, styles.header_title)}>\r\n {props.title}\r\n </div>\r\n </div>\r\n {/*action*/}\r\n {slots.action && (\r\n <div class={cx(actionCls, styles.action)}>\r\n {slots.action()}\r\n </div>\r\n )}\r\n\r\n {/* Body 区域 */}\r\n <div class={cx(bodyCls, styles.body)}>\r\n {slots.default?.()}\r\n </div>\r\n </div>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const Card = withInstall(_Card);\r\n"],"names":["_Card","defineComponent","name","props","title","String","setup","slots","getPrefixCls","useDesign","styles","useStyle","rootCls","headerCls","iconCls","titleCls","actionCls","bodyCls","_createVNode","cx","container","header","icon","header_title","action","body","default","Card","withInstall"],"mappings":";;;;;;;;;AAUA,MAAMA,wBAAQC,mBAAAA,CAAgB;AAAA,EAC5BC,IAAAA,EAAM,OAAA;AAAA,EACNC,KAAAA,EAAO;AAAA,IACLC,KAAAA,EAAOC;AAAAA,GACT;AAAA,EACAC,MAAMH,KAAAA,EAAO;AAAA,IAAEI;AAAAA,GAAM,EAAG;AAEtB,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAa,GAAIC,oBAAU,MAAM,CAAA;AAGzC,IAAA,MAAMC,SAASC,cAAAA,EAAS;AAExB,IAAA,OAAO,MAAM;AAtBjB,MAAA,IAAA,EAAA;AAwBM,MAAA,MAAMC,UAAUJ,YAAAA,EAAa;AAC7B,MAAA,MAAMK,SAAAA,GAAYL,aAAa,MAAM,CAAA;AACrC,MAAA,MAAMM,OAAAA,GAAUN,aAAa,MAAM,CAAA;AACnC,MAAA,MAAMO,QAAAA,GAAWP,aAAa,OAAO,CAAA;AACrC,MAAA,MAAMQ,SAAAA,GAAYR,aAAa,QAAQ,CAAA;AACvC,MAAA,MAAMS,OAAAA,GAAUT,aAAa,MAAM,CAAA;AAEnC,MAAA,OAAAU,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,MAAAA,CAAGP,OAAAA,EAASF,MAAAA,CAAOU,SAAS;AAAA,OAAC,EAAA,CAAAF,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAE3BC,MAAAA,CAAGN,SAAAA,EAAWH,MAAAA,CAAOW,MAAM;AAAA,OAAC,EAAA,CACrCd,KAAAA,CAAMe,IAAAA,IAAIJ,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACGC,MAAAA,CAAGL,OAAAA,EAASJ,MAAAA,CAAOY,IAAI;AAAA,OAAC,EAAA,CACjCf,KAAAA,CAAMe,IAAAA,EAAM,CAAA,CAAA,EAEhBJ,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACWC,MAAAA,CAAGJ,QAAAA,EAAUL,MAAAA,CAAOa,YAAY;AAAA,OAAC,EAAA,CAC1CpB,KAAAA,CAAMC,KAAK,CAAA,CAAA,CAAA,CAAA,EAIfG,KAAAA,CAAMiB,MAAAA,IAAMN,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACCC,MAAAA,CAAGH,SAAAA,EAAWN,MAAAA,CAAOc,MAAM;AAAA,OAAC,EAAA,CACrCjB,KAAAA,CAAMiB,MAAAA,EAAQ,CAAA,CAAA,EAElBN,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAGWC,MAAAA,CAAGF,OAAAA,EAASP,MAAAA,CAAOe,IAAI;AAAA,SAAC,CAAA,CACjClB,EAAAA,GAAAA,KAAAA,CAAMmB,YAANnB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAiB,CAAA,CAAA,CAAA,CAAA;AAAA,IAI1B,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMoB,IAAAA,GAAOC,wBAAY5B,KAAK;;;;"}
1
+ {"version":3,"file":"Card.cjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["// components/card/index.tsx\nimport { defineComponent } from \"vue\";\n\nimport { cx } from \"@emotion/css\"; // 引入 cx\n\nimport { useDesign } from \"../../hooks/useDesign\"; // 引入我们刚才写的 hook\nimport { withInstall } from \"../../utils/withInstall\";\n\nimport { useStyle } from \"./style\";\n\nconst _Card = defineComponent({\n name: \"DCard\",\n props: {\n title: String\n },\n setup(props, { slots }) {\n // 初始化 Design Hook,传入组件名 'card'\n const { getPrefixCls } = useDesign(\"card\");\n\n // 初始化 Emotion 样式\n const styles = useStyle();\n\n return () => {\n // 生成语义化类名\n const rootCls = getPrefixCls();\n const headerCls = getPrefixCls(\"head\");\n const iconCls = getPrefixCls(\"icon\");\n const titleCls = getPrefixCls(\"title\");\n const actionCls = getPrefixCls(\"action\");\n const bodyCls = getPrefixCls(\"body\");\n\n return (\n <div class={cx(rootCls, styles.container)}>\n {/* Header 区域 */}\n <div class={cx(headerCls, styles.header)}>\n {slots.icon && (\n <div class={cx(iconCls, styles.icon)}>\n {slots.icon()}\n </div>\n )}\n <div class={cx(titleCls, styles.header_title)}>\n {props.title}\n </div>\n </div>\n {/*action*/}\n {slots.action && (\n <div class={cx(actionCls, styles.action)}>\n {slots.action()}\n </div>\n )}\n\n {/* Body 区域 */}\n <div class={cx(bodyCls, styles.body)}>\n {slots.default?.()}\n </div>\n </div>\n );\n };\n }\n});\n\nexport const Card = withInstall(_Card);\n"],"names":["_Card","defineComponent","name","props","title","String","setup","slots","getPrefixCls","useDesign","styles","useStyle","rootCls","headerCls","iconCls","titleCls","actionCls","bodyCls","_createVNode","cx","container","header","icon","header_title","action","body","default","Card","withInstall"],"mappings":";;;;;;;;;AAUA,MAAMA,wBAAQC,mBAAAA,CAAgB;AAAA,EAC5BC,IAAAA,EAAM,OAAA;AAAA,EACNC,KAAAA,EAAO;AAAA,IACLC,KAAAA,EAAOC;AAAAA,GACT;AAAA,EACAC,MAAMH,KAAAA,EAAO;AAAA,IAAEI;AAAAA,GAAM,EAAG;AAEtB,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAa,GAAIC,oBAAU,MAAM,CAAA;AAGzC,IAAA,MAAMC,SAASC,cAAAA,EAAS;AAExB,IAAA,OAAO,MAAM;AAtBjB,MAAA,IAAA,EAAA;AAwBM,MAAA,MAAMC,UAAUJ,YAAAA,EAAa;AAC7B,MAAA,MAAMK,SAAAA,GAAYL,aAAa,MAAM,CAAA;AACrC,MAAA,MAAMM,OAAAA,GAAUN,aAAa,MAAM,CAAA;AACnC,MAAA,MAAMO,QAAAA,GAAWP,aAAa,OAAO,CAAA;AACrC,MAAA,MAAMQ,SAAAA,GAAYR,aAAa,QAAQ,CAAA;AACvC,MAAA,MAAMS,OAAAA,GAAUT,aAAa,MAAM,CAAA;AAEnC,MAAA,OAAAU,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,MAAAA,CAAGP,OAAAA,EAASF,MAAAA,CAAOU,SAAS;AAAA,OAAC,EAAA,CAAAF,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAE3BC,MAAAA,CAAGN,SAAAA,EAAWH,MAAAA,CAAOW,MAAM;AAAA,OAAC,EAAA,CACrCd,KAAAA,CAAMe,IAAAA,IAAIJ,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACGC,MAAAA,CAAGL,OAAAA,EAASJ,MAAAA,CAAOY,IAAI;AAAA,OAAC,EAAA,CACjCf,KAAAA,CAAMe,IAAAA,EAAM,CAAA,CAAA,EAEhBJ,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACWC,MAAAA,CAAGJ,QAAAA,EAAUL,MAAAA,CAAOa,YAAY;AAAA,OAAC,EAAA,CAC1CpB,KAAAA,CAAMC,KAAK,CAAA,CAAA,CAAA,CAAA,EAIfG,KAAAA,CAAMiB,MAAAA,IAAMN,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACCC,MAAAA,CAAGH,SAAAA,EAAWN,MAAAA,CAAOc,MAAM;AAAA,OAAC,EAAA,CACrCjB,KAAAA,CAAMiB,MAAAA,EAAQ,CAAA,CAAA,EAElBN,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAGWC,MAAAA,CAAGF,OAAAA,EAASP,MAAAA,CAAOe,IAAI;AAAA,SAAC,CAAA,CACjClB,EAAAA,GAAAA,KAAAA,CAAMmB,YAANnB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAiB,CAAA,CAAA,CAAA,CAAA;AAAA,IAI1B,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMoB,IAAAA,GAAOC,wBAAY5B,KAAK;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"style.cjs","sources":["../../../../src/components/card/style.ts"],"sourcesContent":["import { css } from \"@emotion/css\";\r\n\r\nexport const useStyle = () => {\r\n return {\r\n container: css`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: #fff;\r\n `,\r\n header: css`\r\n display: flex;\r\n margin-bottom: 20px;\r\n `,\r\n header_title: css`\r\n line-height: 1.5;\r\n /* 如果标题过长,防止换行破坏布局,可以加这行 */\r\n white-space: nowrap;\r\n `,\r\n // 可选:如果你需要对 icon 容器做特殊处理(例如防止图标被压缩)\r\n icon: css`\r\n margin-right: 10px;\r\n display: inline-flex;\r\n align-items: center;\r\n flex-shrink: 0; /* 防止标题过长时挤压图标 */\r\n `,\r\n action: css`\r\n margin-bottom: 10px;\r\n `,\r\n body: css`\r\n display: flex;\r\n flex-direction: column;\r\n `\r\n };\r\n};\r\n"],"names":["css"],"mappings":";;;;;AAEO,MAAM,WAAW,MAAM;AAC5B,EAAA,OAAO;AAAA,IACL,SAAA,EAAWA,OAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAKX,MAAA,EAAQA,OAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAIR,YAAA,EAAcA,OAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA;AAAA,IAMd,IAAA,EAAMA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAMN,MAAA,EAAQA,OAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAGR,IAAA,EAAMA,OAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GAIR;AACF;;;;"}
1
+ {"version":3,"file":"style.cjs","sources":["../../../../src/components/card/style.ts"],"sourcesContent":["import { css } from \"@emotion/css\";\n\nexport const useStyle = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n background-color: #fff;\n `,\n header: css`\n display: flex;\n margin-bottom: 20px;\n `,\n header_title: css`\n line-height: 1.5;\n /* 如果标题过长,防止换行破坏布局,可以加这行 */\n white-space: nowrap;\n `,\n // 可选:如果你需要对 icon 容器做特殊处理(例如防止图标被压缩)\n icon: css`\n margin-right: 10px;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0; /* 防止标题过长时挤压图标 */\n `,\n action: css`\n margin-bottom: 10px;\n `,\n body: css`\n display: flex;\n flex-direction: column;\n `\n };\n};\n"],"names":["css"],"mappings":";;;;;AAEO,MAAM,WAAW,MAAM;AAC5B,EAAA,OAAO;AAAA,IACL,SAAA,EAAWA,OAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAKX,MAAA,EAAQA,OAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAIR,YAAA,EAAcA,OAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA;AAAA,IAMd,IAAA,EAAMA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAMN,MAAA,EAAQA,OAAA;AAAA;AAAA,IAAA,CAAA;AAAA,IAGR,IAAA,EAAMA,OAAA;AAAA;AAAA;AAAA,IAAA;AAAA,GAIR;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DicReplace.cjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\r\n * 字典替换\r\n * 根据字典名字及对应的value替换成中文或者人能看懂的文字\r\n * @author 余春林\r\n */\r\nimport {\r\n defineComponent,\r\n inject,\r\n onActivated,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useDicStore, useNavTabStore } from \"@ditari/store\";\r\n\r\nexport default defineComponent({\r\n name: \"DicRep\",\r\n props: {\r\n // 字典名称\r\n name: {\r\n type: String,\r\n default: \"\"\r\n },\r\n // 值\r\n value: {\r\n type: [String, Number],\r\n default: \"\"\r\n }\r\n },\r\n setup(props) {\r\n const { list } = storeToRefs(useNavTabStore());\r\n const { getDicTextByValue } = useDicStore();\r\n const route = useRoute();\r\n // 判断使用组件的页面是否被缓存\r\n const isKeepAlive = list.value.some(\r\n item =>\r\n item.fullPath === route.fullPath &&\r\n item.meta?.keepAlive\r\n );\r\n const dicValueTxt = ref<string>(\"\");\r\n\r\n // 注入 fetchDic,提供默认值\r\n const fetchDic = inject<\r\n (name: string) => Promise<unknown[]>\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n >(\"fetchDic\", async (_name: string) => {\r\n // console.warn(\r\n // `fetchDic 未注入,使用默认实现,name: ${name}`\r\n // );\r\n return [];\r\n });\r\n\r\n onActivated(async () => {\r\n // 缓存页面被激活的时候调用\r\n await loadDicData();\r\n });\r\n\r\n onMounted(async () => {\r\n if (!isKeepAlive) {\r\n // 未缓存页面 挂载的时候调用\r\n await loadDicData();\r\n }\r\n });\r\n\r\n // 请求字典数据的函数\r\n async function loadDicData() {\r\n try {\r\n // 调用注入进来的fetchDic方法\r\n await fetchDic(props.name);\r\n replace(props.value);\r\n } catch (error) {\r\n console.error(\"获取字典数据失败:\", error);\r\n }\r\n }\r\n\r\n loadDicData().then(() =>\r\n console.log(\"success load dic\")\r\n );\r\n\r\n watch(\r\n () => props.value,\r\n (val: string | number) => {\r\n replace(val);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function replace(val: string | number) {\r\n const value = val;\r\n const name = props.name;\r\n dicValueTxt.value = getDicTextByValue(\r\n name,\r\n value?.toString()\r\n );\r\n }\r\n\r\n return () => (\r\n <span class={\"d-dic\"}>{dicValueTxt.value}</span>\r\n );\r\n }\r\n});\r\n"],"names":["name","props","type","String","default","value","Number","setup","list","storeToRefs","useNavTabStore","getDicTextByValue","useDicStore","route","useRoute","isKeepAlive","some","item","fullPath","meta","keepAlive","dicValueTxt","ref","fetchDic","inject","_name","onActivated","loadDicData","onMounted","replace","error","console","then","log","watch","val","immediate","toString","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"DicReplace.cjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\n * 字典替换\n * 根据字典名字及对应的value替换成中文或者人能看懂的文字\n * @author 余春林\n */\nimport {\n defineComponent,\n inject,\n onActivated,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { useRoute } from \"vue-router\";\nimport { storeToRefs } from \"pinia\";\n\nimport { useDicStore, useNavTabStore } from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DicRep\",\n props: {\n // 字典名称\n name: {\n type: String,\n default: \"\"\n },\n // 值\n value: {\n type: [String, Number],\n default: \"\"\n }\n },\n setup(props) {\n const { list } = storeToRefs(useNavTabStore());\n const { getDicTextByValue } = useDicStore();\n const route = useRoute();\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = list.value.some(\n item =>\n item.fullPath === route.fullPath &&\n item.meta?.keepAlive\n );\n const dicValueTxt = ref<string>(\"\");\n\n // 注入 fetchDic,提供默认值\n const fetchDic = inject<\n (name: string) => Promise<unknown[]>\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n >(\"fetchDic\", async (_name: string) => {\n // console.warn(\n // `fetchDic 未注入,使用默认实现,name: ${name}`\n // );\n return [];\n });\n\n onActivated(async () => {\n // 缓存页面被激活的时候调用\n await loadDicData();\n });\n\n onMounted(async () => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n await loadDicData();\n }\n });\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n replace(props.value);\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n loadDicData().then(() =>\n console.log(\"success load dic\")\n );\n\n watch(\n () => props.value,\n (val: string | number) => {\n replace(val);\n },\n {\n immediate: true\n }\n );\n\n function replace(val: string | number) {\n const value = val;\n const name = props.name;\n dicValueTxt.value = getDicTextByValue(\n name,\n value?.toString()\n );\n }\n\n return () => (\n <span class={\"d-dic\"}>{dicValueTxt.value}</span>\n );\n }\n});\n"],"names":["name","props","type","String","default","value","Number","setup","list","storeToRefs","useNavTabStore","getDicTextByValue","useDicStore","route","useRoute","isKeepAlive","some","item","fullPath","meta","keepAlive","dicValueTxt","ref","fetchDic","inject","_name","onActivated","loadDicData","onMounted","replace","error","console","then","log","watch","val","immediate","toString","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,qDAA+B;AAAA,EAC7BA,IAAAA,EAAM,QAAA;AAAA,EACNC,KAAAA,EAAO;AAAA;AAAA,IAELD,IAAAA,EAAM;AAAA,MACJE,IAAAA,EAAMC,MAAAA;AAAAA,MACNC,OAAAA,EAAS;AAAA,KACX;AAAA;AAAA,IAEAC,KAAAA,EAAO;AAAA,MACLH,IAAAA,EAAM,CAACC,MAAAA,EAAQG,MAAM,CAAA;AAAA,MACrBF,OAAAA,EAAS;AAAA;AACX,GACF;AAAA,EACAG,MAAMN,KAAAA,EAAO;AACX,IAAA,MAAM;AAAA,MAAEO;AAAAA,KAAK,GAAIC,iBAAAA,CAAYC,oBAAAA,EAAgB,CAAA;AAC7C,IAAA,MAAM;AAAA,MAAEC;AAAAA,QAAsBC,iBAAAA,EAAY;AAC1C,IAAA,MAAMC,QAAQC,kBAAAA,EAAS;AAEvB,IAAA,MAAMC,WAAAA,GAAcP,IAAAA,CAAKH,KAAAA,CAAMW,IAAAA,CAC7BC,CAAAA,IAAAA,KAAI;AAtCV,MAAA,IAAA,EAAA;AAuCQA,MAAAA,OAAAA,IAAAA,CAAKC,QAAAA,KAAaL,KAAAA,CAAMK,QAAAA,KAAAA,CACxBD,EAAAA,GAAAA,IAAAA,CAAKE,SAALF,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAWG,SAAAA,CAAAA;AAAAA,IAAAA,CACf,CAAA;AACA,IAAA,MAAMC,WAAAA,GAAcC,QAAY,EAAE,CAAA;AAGlC,IAAA,MAAMC,QAAAA,GAAWC,UAAAA,CAGf,UAAA,EAAY,CAAOC,KAAAA,KAAkB,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AAIrC,MAAA,OAAO,EAAA;AAAA,IACT,CAAA,CAAC,CAAA;AAEDC,IAAAA,eAAAA,CAAY,MAAY,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AAEtB,MAAA,MAAMC,WAAAA,EAAY;AAAA,IACpB,CAAA,CAAC,CAAA;AAEDC,IAAAA,aAAAA,CAAU,MAAY,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AACpB,MAAA,IAAI,CAACb,WAAAA,EAAa;AAEhB,QAAA,MAAMY,WAAAA,EAAY;AAAA,MACpB;AAAA,IACF,CAAA,CAAC,CAAA;AAGD,IAAA,SAAeA,WAAAA,GAAc;AAAA,MAAA,OAAA,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AAC3B,QAAA,IAAI;AAEF,UAAA,MAAMJ,QAAAA,CAAStB,MAAMD,IAAI,CAAA;AACzB6B,UAAAA,OAAAA,CAAQ5B,MAAMI,KAAK,CAAA;AAAA,QACrB,SAASyB,KAAAA,EAAO;AACdC,UAAAA,OAAAA,CAAQD,KAAAA,CAAM,qDAAaA,KAAK,CAAA;AAAA,QAClC;AAAA,MACF,CAAA,CAAA;AAAA,IAAA;AAEAH,IAAAA,WAAAA,GAAcK,IAAAA,CAAK,MACjBD,OAAAA,CAAQE,GAAAA,CAAI,kBAAkB,CAChC,CAAA;AAEAC,IAAAA,SAAAA,CACE,MAAMjC,KAAAA,CAAMI,KAAAA,EACX8B,CAAAA,GAAAA,KAAyB;AACxBN,MAAAA,OAAAA,CAAQM,GAAG,CAAA;AAAA,IACb,CAAA,EACA;AAAA,MACEC,SAAAA,EAAW;AAAA,KAEf,CAAA;AAEA,IAAA,SAASP,QAAQM,GAAAA,EAAsB;AACrC,MAAA,MAAM9B,KAAAA,GAAQ8B,GAAAA;AACd,MAAA,MAAMnC,OAAOC,KAAAA,CAAMD,IAAAA;AACnBqB,MAAAA,WAAAA,CAAYhB,KAAAA,GAAQM,iBAAAA,CAClBX,IAAAA,EACAK,KAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAOgC,QAAAA,EACT,CAAA;AAAA,IACF;AAEA,IAAA,OAAO,MAAAC,gBAAA,MAAA,EAAA;AAAA,MAAA,OAAA,EACQ;AAAA,KAAO,EAAA,CAAGjB,WAAAA,CAAYhB,KAAK,CAAA,CAAA;AAAA,EAE5C;AACF,CAAC,CAAA;;;;"}
@@ -7,6 +7,58 @@ var antDesignVue = require('ant-design-vue');
7
7
  var iconsVue = require('@ant-design/icons-vue');
8
8
 
9
9
  "use strict";
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
+ var __spreadValues = (a, b) => {
16
+ for (var prop in b || (b = {}))
17
+ if (__hasOwnProp.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ if (__getOwnPropSymbols)
20
+ for (var prop of __getOwnPropSymbols(b)) {
21
+ if (__propIsEnum.call(b, prop))
22
+ __defNormalProp(a, prop, b[prop]);
23
+ }
24
+ return a;
25
+ };
26
+ const {
27
+ useBreakpoint
28
+ } = antDesignVue.Grid;
29
+ const RESPONSIVE_CONFIG = {
30
+ xs: {
31
+ span: 24,
32
+ colsPerRow: 1
33
+ },
34
+ // < 576px - 手机
35
+ sm: {
36
+ span: 12,
37
+ colsPerRow: 2
38
+ },
39
+ // ≥ 576px - 平板竖屏
40
+ md: {
41
+ span: 8,
42
+ colsPerRow: 3
43
+ },
44
+ // ≥ 768px - 平板横屏
45
+ lg: {
46
+ span: 6,
47
+ colsPerRow: 4
48
+ },
49
+ // ≥ 992px - 小桌面
50
+ xl: {
51
+ span: 6,
52
+ colsPerRow: 4
53
+ },
54
+ // ≥ 1200px - 桌面
55
+ xxl: {
56
+ span: 6,
57
+ colsPerRow: 4
58
+ }
59
+ // ≥ 1600px - 大桌面
60
+ };
61
+ const DEFAULT_VISIBLE_ROWS = 2;
10
62
  var FormLayout = /* @__PURE__ */ vue.defineComponent({
11
63
  name: "DQueryForm",
12
64
  props: {
@@ -25,6 +77,11 @@ var FormLayout = /* @__PURE__ */ vue.defineComponent({
25
77
  loading: {
26
78
  type: Boolean,
27
79
  default: false
80
+ },
81
+ // 自定义响应式配置(可选)
82
+ responsiveConfig: {
83
+ type: Object,
84
+ default: () => ({})
28
85
  }
29
86
  },
30
87
  emits: ["reset", "query"],
@@ -43,6 +100,8 @@ var FormLayout = /* @__PURE__ */ vue.defineComponent({
43
100
  const {
44
101
  rowRef,
45
102
  actionSpan,
103
+ actionPush,
104
+ currentSpan,
46
105
  onExpend,
47
106
  expendBtnVisible,
48
107
  isExpend
@@ -119,47 +178,109 @@ var FormLayout = /* @__PURE__ */ vue.defineComponent({
119
178
  }
120
179
  function useExpand() {
121
180
  const gridCount = 24;
122
- const colSpan = 6;
123
- const colsPerRow = 4;
181
+ const screens = useBreakpoint();
182
+ const mergedConfig = vue.computed(() => __spreadValues(__spreadValues({}, RESPONSIVE_CONFIG), props.responsiveConfig));
183
+ const currentConfig = vue.computed(() => {
184
+ const config = mergedConfig.value;
185
+ if (screens.value.xxl) return config.xxl;
186
+ if (screens.value.xl) return config.xl;
187
+ if (screens.value.lg) return config.lg;
188
+ if (screens.value.md) return config.md;
189
+ if (screens.value.sm) return config.sm;
190
+ return config.xs;
191
+ });
192
+ const currentSpan2 = vue.computed(() => currentConfig.value.span);
193
+ const colsPerRow = vue.computed(() => currentConfig.value.colsPerRow);
124
194
  const actionSpan2 = vue.ref(6);
195
+ const actionPush2 = vue.ref(0);
125
196
  const isExpend2 = vue.ref(false);
126
197
  const expendBtnVisible2 = vue.ref(false);
127
198
  const rowRef2 = vue.ref(null);
128
199
  vue.onMounted(() => {
129
- handleShowOrHidden();
200
+ updateLayout();
201
+ });
202
+ vue.watch(screens, () => {
203
+ vue.nextTick(() => {
204
+ updateLayout();
205
+ });
206
+ }, {
207
+ deep: true
130
208
  });
131
209
  function onExpend2() {
132
210
  isExpend2.value = !isExpend2.value;
133
- handleShowOrHidden();
211
+ updateLayout();
134
212
  }
135
- function handleShowOrHidden() {
136
- var _a, _b;
137
- const colEl = Array.from((_b = (_a = rowRef2.value) == null ? void 0 : _a.$el) == null ? void 0 : _b.children);
213
+ function updateLayout() {
214
+ var _a;
215
+ const rowEl = (_a = rowRef2.value) == null ? void 0 : _a.$el;
216
+ if (!rowEl) return;
217
+ const colEl = Array.from(rowEl.children);
138
218
  const colElLen = colEl.length - 1;
139
- const occupiedCols = colElLen * colSpan;
140
- const fullRows = Math.ceil(colElLen / colsPerRow);
141
- const lastRowCols = occupiedCols % gridCount;
142
- const remainingCols = gridCount - lastRowCols;
143
- if (fullRows > 2) {
219
+ if (colElLen <= 0) return;
220
+ const actualSpan = currentSpan2.value;
221
+ const cols = colsPerRow.value;
222
+ colEl.forEach((col, index) => {
223
+ if (index === colElLen) return;
224
+ updateColSpan(col, actualSpan);
225
+ col.style.display = "";
226
+ });
227
+ const lastSlotIndex = cols * DEFAULT_VISIBLE_ROWS - 1;
228
+ if (colElLen > lastSlotIndex) {
144
229
  expendBtnVisible2.value = true;
230
+ if (!isExpend2.value) {
231
+ colEl.forEach((col, index) => {
232
+ if (index === colElLen) return;
233
+ if (index >= lastSlotIndex) {
234
+ col.style.display = "none";
235
+ }
236
+ });
237
+ actionSpan2.value = actualSpan;
238
+ actionPush2.value = 0;
239
+ } else {
240
+ const lastRowItems = colElLen % cols;
241
+ const lastRowOccupied = lastRowItems === 0 ? gridCount : lastRowItems * actualSpan;
242
+ const remainingCols = gridCount - lastRowOccupied;
243
+ if (remainingCols >= actualSpan) {
244
+ actionSpan2.value = remainingCols;
245
+ actionPush2.value = 0;
246
+ } else {
247
+ actionSpan2.value = actualSpan;
248
+ actionPush2.value = gridCount - actualSpan;
249
+ }
250
+ }
145
251
  } else {
146
- actionSpan2.value = remainingCols;
252
+ expendBtnVisible2.value = false;
253
+ const lastRowItems = colElLen % cols;
254
+ const lastRowOccupied = lastRowItems === 0 ? gridCount : lastRowItems * actualSpan;
255
+ const remainingCols = gridCount - lastRowOccupied;
256
+ if (remainingCols >= actualSpan) {
257
+ actionSpan2.value = remainingCols;
258
+ actionPush2.value = 0;
259
+ } else {
260
+ actionSpan2.value = actualSpan;
261
+ actionPush2.value = gridCount - actualSpan;
262
+ }
147
263
  }
148
- const lastRowStartIndex = colsPerRow * (fullRows - 1) - 1;
149
- if (expendBtnVisible2.value) {
150
- colEl.forEach((col, index) => {
151
- if (index >= lastRowStartIndex) {
152
- index !== colElLen ? col.style.display = !isExpend2.value ? "none" : "block" : null;
264
+ }
265
+ function updateColSpan(colEl, newSpan) {
266
+ const classList = colEl.classList;
267
+ for (let i = classList.length - 1; i >= 0; i--) {
268
+ const className = classList[i];
269
+ if (className.startsWith("ant-col-") && !className.includes("-offset-") && !className.includes("-push-") && !className.includes("-pull-")) {
270
+ const span = parseInt(className.replace("ant-col-", ""), 10);
271
+ if (!isNaN(span)) {
272
+ classList.remove(className);
273
+ break;
153
274
  }
154
- });
155
- }
156
- if (expendBtnVisible2.value) {
157
- isExpend2.value ? actionSpan2.value = remainingCols : actionSpan2.value = colSpan;
275
+ }
158
276
  }
277
+ classList.add(`ant-col-${newSpan}`);
159
278
  }
160
279
  return {
161
280
  rowRef: rowRef2,
162
281
  actionSpan: actionSpan2,
282
+ actionPush: actionPush2,
283
+ currentSpan: currentSpan2,
163
284
  onExpend: onExpend2,
164
285
  expendBtnVisible: expendBtnVisible2,
165
286
  isExpend: isExpend2
@@ -184,8 +305,11 @@ var FormLayout = /* @__PURE__ */ vue.defineComponent({
184
305
  var _a;
185
306
  return [(_a = slots.default) == null ? void 0 : _a.call(slots), vue.createVNode(antDesignVue.Col, {
186
307
  "span": actionSpan.value,
308
+ "push": actionPush.value,
187
309
  "style": {
188
- textAlign: "right"
310
+ display: "flex",
311
+ justifyContent: "flex-end",
312
+ alignItems: "flex-start"
189
313
  }
190
314
  }, {
191
315
  default: () => [vue.createVNode(antDesignVue.FormItem, null, {
@@ -1 +1 @@
1
- {"version":3,"file":"FormLayout.cjs","sources":["../../../../src/components/form/FormLayout.tsx"],"sourcesContent":["import {\r\n defineComponent,\r\n onMounted,\r\n ref,\r\n watch,\r\n watchEffect\r\n} from \"vue\";\r\nimport {\r\n Button,\r\n Col,\r\n Form,\r\n FormItem,\r\n Row,\r\n Space\r\n} from \"ant-design-vue\";\r\n\r\nimport {\r\n DoubleRightOutlined,\r\n ReloadOutlined,\r\n SearchOutlined\r\n} from \"@ant-design/icons-vue\";\r\n\r\n/**\r\n * 查询表单渲染\r\n * 展开,隐藏功能\r\n */\r\nexport default defineComponent({\r\n name: \"DQueryForm\",\r\n props: {\r\n scheme: {\r\n type: [Array, Object] as unknown as () =>\r\n | any[]\r\n | Record<string, any>,\r\n default: () => []\r\n },\r\n model: {\r\n type: Object as () => Record<string, unknown>,\r\n default: () => ({})\r\n },\r\n labelWidth: {\r\n type: String,\r\n default: \"90px\"\r\n },\r\n loading: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n emits: [\"reset\", \"query\"],\r\n setup(props, { slots, emit }) {\r\n // 表单\r\n const {\r\n loading,\r\n modelValue,\r\n formRef,\r\n onQuery,\r\n onReset,\r\n onKeyup\r\n } = useForm();\r\n // 展开\r\n const {\r\n rowRef,\r\n actionSpan,\r\n onExpend,\r\n expendBtnVisible,\r\n isExpend\r\n } = useExpand();\r\n //渲染操作列\r\n const { renderAction } = useRender();\r\n\r\n function useForm() {\r\n const loading = ref(false);\r\n const formRef = ref<any>(null);\r\n const modelValue = ref<any>({});\r\n\r\n watchEffect(() => {\r\n modelValue.value = props.model;\r\n });\r\n\r\n watch(\r\n () => props.loading,\r\n val => {\r\n loading.value = val;\r\n }\r\n );\r\n\r\n /// 监听回车事件\r\n // watch(enterKey, (v) => {\r\n // if (v) {\r\n // // 有路由名字会被keepalive进行缓存\r\n // // 用于判断当前页面是否被激活 因为页面被缓存的时候,页面切换后,回车事件依然会触发\r\n // const isActive = keepStore.list.some((name) => name === route.name);\r\n // console.log(route.name);\r\n // if (!loading.value && isActive) {\r\n // emit(\"query\", modelValue.value);\r\n // }\r\n // //TODO 逻辑有问题\r\n // if (!route.name) {\r\n // // 没有路由名字,不会被缓存\r\n // if (!loading.value) {\r\n // emit(\"query\", modelValue.value);\r\n // }\r\n // } else {\r\n //\r\n // }\r\n // }\r\n // });\r\n\r\n const onQuery = () => {\r\n emit(\"query\", modelValue.value);\r\n };\r\n\r\n const onReset = () => {\r\n formRef.value?.resetFields();\r\n emit(\"reset\");\r\n };\r\n\r\n const onKeyup = (event: any) => {\r\n if (event.keyCode === 13) {\r\n if (!loading.value) {\r\n emit(\"query\", modelValue.value);\r\n }\r\n }\r\n };\r\n return {\r\n loading,\r\n modelValue,\r\n formRef,\r\n onQuery,\r\n onReset,\r\n onKeyup\r\n };\r\n }\r\n\r\n function useRender() {\r\n /**\r\n * 操作按钮渲染\r\n */\r\n function renderAction() {\r\n return (\r\n <Space>\r\n <Button\r\n loading={loading.value}\r\n type={\"primary\"}\r\n shape={\"round\"}\r\n onClick={onQuery}\r\n >\r\n {{\r\n default: () => \"查询\",\r\n icon: () => <SearchOutlined />\r\n }}\r\n </Button>\r\n <Button\r\n disabled={loading.value}\r\n shape={\"round\"}\r\n onClick={onReset}\r\n >\r\n {{\r\n default: () => \"重置\",\r\n icon: () => <ReloadOutlined />\r\n }}\r\n </Button>\r\n {expendBtnVisible.value ? (\r\n <Button onClick={onExpend} shape={\"round\"}>\r\n {{\r\n default: () =>\r\n isExpend.value ? \"收起\" : \"展开\",\r\n icon: () => (\r\n <DoubleRightOutlined\r\n rotate={isExpend.value ? -90 : 90}\r\n />\r\n )\r\n }}\r\n </Button>\r\n ) : null}\r\n </Space>\r\n );\r\n }\r\n\r\n return {\r\n renderAction\r\n };\r\n }\r\n\r\n function useExpand() {\r\n // 为24网格布局\r\n const gridCount = 24;\r\n // 每列占6个格子\r\n const colSpan = 6;\r\n // 每行显示4列\r\n const colsPerRow = 4;\r\n // 操作按钮span\r\n const actionSpan = ref(6);\r\n // 控制展开或隐藏按钮文本\r\n const isExpend = ref(false);\r\n // 控制展开按按钮是否显示\r\n const expendBtnVisible = ref(false);\r\n // 行对象\r\n const rowRef = ref<any>(null);\r\n\r\n onMounted(() => {\r\n handleShowOrHidden();\r\n });\r\n\r\n function onExpend() {\r\n isExpend.value = !isExpend.value;\r\n handleShowOrHidden();\r\n }\r\n\r\n /**\r\n * 处理隐藏或显示\r\n */\r\n function handleShowOrHidden() {\r\n const colEl = Array.from(\r\n rowRef.value?.$el?.children\r\n );\r\n // col总条数 减掉操作栏按钮的div个数为1\r\n const colElLen = colEl.length - 1;\r\n // 已占用的网格数 = col总条数 * 每列占用的网格数\r\n const occupiedCols = colElLen * colSpan;\r\n // 总行数 = 总div数 / 每行显示的列数\r\n const fullRows = Math.ceil(colElLen / colsPerRow);\r\n // 最后一行的网格数 = 已占用的网格数 % 24\r\n const lastRowCols = occupiedCols % gridCount;\r\n // 最后一行剩余的网格数\r\n const remainingCols = gridCount - lastRowCols;\r\n\r\n // 网格行大于2才显示展开或隐藏按钮\r\n if (fullRows > 2) {\r\n expendBtnVisible.value = true;\r\n } else {\r\n // 如果没有大于两行,操作栏占用剩余的宽度\r\n actionSpan.value = remainingCols;\r\n }\r\n // 最后一行的起始索引\r\n const lastRowStartIndex =\r\n colsPerRow * (fullRows - 1) - 1;\r\n // 只有展开按钮显示时才处理\r\n if (expendBtnVisible.value) {\r\n colEl.forEach((col: any, index) => {\r\n if (index >= lastRowStartIndex) {\r\n // 最后一个元素不隐藏 是操作按钮的div\r\n index !== colElLen\r\n ? (col.style.display = !isExpend.value\r\n ? \"none\"\r\n : \"block\")\r\n : null; // 隐藏元素\r\n }\r\n });\r\n }\r\n\r\n if (expendBtnVisible.value) {\r\n // 如果是展开状态 则操作按钮占用剩余的网格数 否则占用6个网格\r\n isExpend.value\r\n ? (actionSpan.value = remainingCols)\r\n : (actionSpan.value = colSpan);\r\n }\r\n }\r\n\r\n return {\r\n rowRef,\r\n actionSpan,\r\n onExpend,\r\n expendBtnVisible,\r\n isExpend\r\n };\r\n }\r\n\r\n return () => (\r\n <div onKeyup={onKeyup}>\r\n <Form\r\n ref={formRef}\r\n colon={false}\r\n labelCol={{ style: { width: props.labelWidth } }}\r\n model={modelValue.value}\r\n >\r\n <Row ref={rowRef}>\r\n {slots.default?.()}\r\n <Col\r\n span={actionSpan.value}\r\n style={{ textAlign: \"right\" }}\r\n >\r\n <FormItem>\r\n {slots.action\r\n ? slots.action()\r\n : renderAction()}\r\n </FormItem>\r\n </Col>\r\n </Row>\r\n </Form>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["name","props","scheme","type","Array","Object","default","model","labelWidth","String","loading","Boolean","emits","setup","slots","emit","modelValue","formRef","onQuery","onReset","onKeyup","useForm","rowRef","actionSpan","onExpend","expendBtnVisible","isExpend","useExpand","renderAction","useRender","ref","watchEffect","value","watch","val","resetFields","event","keyCode","_createVNode","Space","Button","icon","SearchOutlined","ReloadOutlined","DoubleRightOutlined","gridCount","colSpan","colsPerRow","onMounted","handleShowOrHidden","colEl","from","$el","children","colElLen","length","occupiedCols","fullRows","Math","ceil","lastRowCols","remainingCols","lastRowStartIndex","forEach","col","index","style","display","Form","width","Row","Col","textAlign","FormItem","action"],"mappings":"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"}
1
+ {"version":3,"file":"FormLayout.cjs","sources":["../../../../src/components/form/FormLayout.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch,\r\n watchEffect\r\n} from \"vue\";\r\nimport {\r\n Button,\r\n Col,\r\n Form,\r\n FormItem,\r\n Grid,\r\n Row,\r\n Space\r\n} from \"ant-design-vue\";\r\n\r\nimport {\r\n DoubleRightOutlined,\r\n ReloadOutlined,\r\n SearchOutlined\r\n} from \"@ant-design/icons-vue\";\r\n\r\nconst { useBreakpoint } = Grid;\r\n\r\n// 响应式配置:不同断点下的栅格配置\r\nconst RESPONSIVE_CONFIG = {\r\n xs: { span: 24, colsPerRow: 1 }, // < 576px - 手机\r\n sm: { span: 12, colsPerRow: 2 }, // ≥ 576px - 平板竖屏\r\n md: { span: 8, colsPerRow: 3 }, // ≥ 768px - 平板横屏\r\n lg: { span: 6, colsPerRow: 4 }, // ≥ 992px - 小桌面\r\n xl: { span: 6, colsPerRow: 4 }, // ≥ 1200px - 桌面\r\n xxl: { span: 6, colsPerRow: 4 } // ≥ 1600px - 大桌面\r\n} as const;\r\n\r\n// 默认显示的行数(收起状态)\r\nconst DEFAULT_VISIBLE_ROWS = 2;\r\n\r\n/**\r\n * 查询表单渲染\r\n * 展开,隐藏功能\r\n * 支持响应式栅格布局\r\n */\r\nexport default defineComponent({\r\n name: \"DQueryForm\",\r\n props: {\r\n scheme: {\r\n type: [Array, Object] as unknown as () =>\r\n | any[]\r\n | Record<string, any>,\r\n default: () => []\r\n },\r\n model: {\r\n type: Object as () => Record<string, unknown>,\r\n default: () => ({})\r\n },\r\n labelWidth: {\r\n type: String,\r\n default: \"90px\"\r\n },\r\n loading: {\r\n type: Boolean,\r\n default: false\r\n },\r\n // 自定义响应式配置(可选)\r\n responsiveConfig: {\r\n type: Object as () => Partial<typeof RESPONSIVE_CONFIG>,\r\n default: () => ({})\r\n }\r\n },\r\n emits: [\"reset\", \"query\"],\r\n setup(props, { slots, emit }) {\r\n // 表单\r\n const {\r\n loading,\r\n modelValue,\r\n formRef,\r\n onQuery,\r\n onReset,\r\n onKeyup\r\n } = useForm();\r\n\r\n // 响应式布局\r\n const {\r\n rowRef,\r\n actionSpan,\r\n actionPush,\r\n currentSpan,\r\n onExpend,\r\n expendBtnVisible,\r\n isExpend\r\n } = useExpand();\r\n\r\n // 渲染操作列\r\n const { renderAction } = useRender();\r\n\r\n function useForm() {\r\n const loading = ref(false);\r\n const formRef = ref<any>(null);\r\n const modelValue = ref<any>({});\r\n\r\n watchEffect(() => {\r\n modelValue.value = props.model;\r\n });\r\n\r\n watch(\r\n () => props.loading,\r\n val => {\r\n loading.value = val;\r\n }\r\n );\r\n\r\n const onQuery = () => {\r\n emit(\"query\", modelValue.value);\r\n };\r\n\r\n const onReset = () => {\r\n formRef.value?.resetFields();\r\n emit(\"reset\");\r\n };\r\n\r\n const onKeyup = (event: any) => {\r\n if (event.keyCode === 13) {\r\n if (!loading.value) {\r\n emit(\"query\", modelValue.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n loading,\r\n modelValue,\r\n formRef,\r\n onQuery,\r\n onReset,\r\n onKeyup\r\n };\r\n }\r\n\r\n function useRender() {\r\n function renderAction() {\r\n return (\r\n <Space>\r\n <Button\r\n loading={loading.value}\r\n type={\"primary\"}\r\n shape={\"round\"}\r\n onClick={onQuery}\r\n >\r\n {{\r\n default: () => \"查询\",\r\n icon: () => <SearchOutlined />\r\n }}\r\n </Button>\r\n <Button\r\n disabled={loading.value}\r\n shape={\"round\"}\r\n onClick={onReset}\r\n >\r\n {{\r\n default: () => \"重置\",\r\n icon: () => <ReloadOutlined />\r\n }}\r\n </Button>\r\n {expendBtnVisible.value ? (\r\n <Button onClick={onExpend} shape={\"round\"}>\r\n {{\r\n default: () =>\r\n isExpend.value ? \"收起\" : \"展开\",\r\n icon: () => (\r\n <DoubleRightOutlined\r\n rotate={isExpend.value ? -90 : 90}\r\n />\r\n )\r\n }}\r\n </Button>\r\n ) : null}\r\n </Space>\r\n );\r\n }\r\n\r\n return {\r\n renderAction\r\n };\r\n }\r\n\r\n function useExpand() {\r\n const gridCount = 24;\r\n const screens = useBreakpoint();\r\n\r\n // 合并默认配置和自定义配置\r\n const mergedConfig = computed(() => ({\r\n ...RESPONSIVE_CONFIG,\r\n ...props.responsiveConfig\r\n }));\r\n\r\n // 根据当前断点获取配置\r\n const currentConfig = computed(() => {\r\n const config = mergedConfig.value;\r\n // 按优先级从大到小检查\r\n if (screens.value.xxl) return config.xxl;\r\n if (screens.value.xl) return config.xl;\r\n if (screens.value.lg) return config.lg;\r\n if (screens.value.md) return config.md;\r\n if (screens.value.sm) return config.sm;\r\n return config.xs;\r\n });\r\n\r\n // 当前每个表单项占用的栅格数\r\n const currentSpan = computed(() => currentConfig.value.span);\r\n // 当前每行显示的列数\r\n const colsPerRow = computed(() => currentConfig.value.colsPerRow);\r\n\r\n // 操作按钮 span\r\n const actionSpan = ref(6);\r\n // 操作按钮 push(用于右对齐)\r\n const actionPush = ref(0);\r\n // 控制展开或隐藏按钮文本\r\n const isExpend = ref(false);\r\n // 控制展开按钮是否显示\r\n const expendBtnVisible = ref(false);\r\n // 行对象\r\n const rowRef = ref<any>(null);\r\n\r\n // 初始化和响应式更新\r\n onMounted(() => {\r\n updateLayout();\r\n });\r\n\r\n // 监听断点变化,重新计算布局\r\n watch(\r\n screens,\r\n () => {\r\n // 等待 DOM 更新后再计算\r\n nextTick(() => {\r\n updateLayout();\r\n });\r\n },\r\n { deep: true }\r\n );\r\n\r\n function onExpend() {\r\n isExpend.value = !isExpend.value;\r\n updateLayout();\r\n }\r\n\r\n /**\r\n * 更新布局(响应式)\r\n */\r\n function updateLayout() {\r\n const rowEl = rowRef.value?.$el;\r\n if (!rowEl) return;\r\n\r\n const colEl = Array.from(rowEl.children) as HTMLElement[];\r\n // col 总条数,减掉操作栏按钮的 div(个数为1)\r\n const colElLen = colEl.length - 1;\r\n\r\n if (colElLen <= 0) return;\r\n\r\n // 使用响应式配置的 span(而不是从 DOM 读取)\r\n const actualSpan = currentSpan.value;\r\n const cols = colsPerRow.value;\r\n\r\n // 动态更新所有子 Col 的 span\r\n colEl.forEach((col, index) => {\r\n if (index === colElLen) return; // 跳过操作按钮\r\n updateColSpan(col, actualSpan);\r\n col.style.display = \"\";\r\n });\r\n\r\n // 第二行最后一个位置的索引(用于收起状态下放置操作按钮)\r\n const lastSlotIndex = cols * DEFAULT_VISIBLE_ROWS - 1;\r\n\r\n // 超过默认显示行数才显示展开/收起按钮\r\n if (colElLen > lastSlotIndex) {\r\n expendBtnVisible.value = true;\r\n\r\n // 收起状态:隐藏第二行最后一格及之后的元素\r\n if (!isExpend.value) {\r\n colEl.forEach((col: any, index) => {\r\n if (index === colElLen) return;\r\n if (index >= lastSlotIndex) {\r\n col.style.display = \"none\";\r\n }\r\n });\r\n // 操作按钮占用第二行最后一格\r\n actionSpan.value = actualSpan;\r\n actionPush.value = 0;\r\n } else {\r\n // 展开状态:操作按钮在最后一行右对齐\r\n const lastRowItems = colElLen % cols;\r\n const lastRowOccupied = lastRowItems === 0 ? gridCount : lastRowItems * actualSpan;\r\n const remainingCols = gridCount - lastRowOccupied;\r\n\r\n if (remainingCols >= actualSpan) {\r\n actionSpan.value = remainingCols;\r\n actionPush.value = 0;\r\n } else {\r\n actionSpan.value = actualSpan;\r\n actionPush.value = gridCount - actualSpan;\r\n }\r\n }\r\n } else {\r\n // 不超过两行:不显示展开按钮,操作按钮在最后一行右对齐\r\n expendBtnVisible.value = false;\r\n\r\n const lastRowItems = colElLen % cols;\r\n const lastRowOccupied = lastRowItems === 0 ? gridCount : lastRowItems * actualSpan;\r\n const remainingCols = gridCount - lastRowOccupied;\r\n\r\n if (remainingCols >= actualSpan) {\r\n actionSpan.value = remainingCols;\r\n actionPush.value = 0;\r\n } else {\r\n actionSpan.value = actualSpan;\r\n actionPush.value = gridCount - actualSpan;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 动态更新 Col 的 span(通过修改 class)\r\n */\r\n function updateColSpan(colEl: HTMLElement, newSpan: number) {\r\n const classList = colEl.classList;\r\n // 移除旧的 ant-col-{span} class\r\n for (let i = classList.length - 1; i >= 0; i--) {\r\n const className = classList[i];\r\n if (className.startsWith(\"ant-col-\") && !className.includes(\"-offset-\") && !className.includes(\"-push-\") && !className.includes(\"-pull-\")) {\r\n const span = parseInt(className.replace(\"ant-col-\", \"\"), 10);\r\n if (!isNaN(span)) {\r\n classList.remove(className);\r\n break;\r\n }\r\n }\r\n }\r\n // 添加新的 span class\r\n classList.add(`ant-col-${newSpan}`);\r\n }\r\n\r\n return {\r\n rowRef,\r\n actionSpan,\r\n actionPush,\r\n currentSpan,\r\n onExpend,\r\n expendBtnVisible,\r\n isExpend\r\n };\r\n }\r\n\r\n return () => (\r\n <div onKeyup={onKeyup}>\r\n <Form\r\n ref={formRef}\r\n colon={false}\r\n labelCol={{ style: { width: props.labelWidth } }}\r\n model={modelValue.value}\r\n >\r\n <Row ref={rowRef}>\r\n {slots.default?.()}\r\n <Col\r\n span={actionSpan.value}\r\n push={actionPush.value}\r\n style={{\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n alignItems: \"flex-start\"\r\n }}\r\n >\r\n <FormItem>\r\n {slots.action\r\n ? slots.action()\r\n : renderAction()}\r\n </FormItem>\r\n </Col>\r\n </Row>\r\n </Form>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["useBreakpoint","Grid","RESPONSIVE_CONFIG","xs","span","colsPerRow","sm","md","lg","xl","xxl","DEFAULT_VISIBLE_ROWS","name","props","scheme","type","Array","Object","default","model","labelWidth","String","loading","Boolean","responsiveConfig","emits","setup","slots","emit","modelValue","formRef","onQuery","onReset","onKeyup","useForm","rowRef","actionSpan","actionPush","currentSpan","onExpend","expendBtnVisible","isExpend","useExpand","renderAction","useRender","ref","watchEffect","value","watch","val","resetFields","event","keyCode","_createVNode","Space","Button","icon","SearchOutlined","ReloadOutlined","DoubleRightOutlined","gridCount","screens","mergedConfig","computed","currentConfig","config","onMounted","updateLayout","nextTick","deep","rowEl","$el","colEl","from","children","colElLen","length","actualSpan","cols","forEach","col","index","updateColSpan","style","display","lastSlotIndex","lastRowItems","lastRowOccupied","remainingCols","newSpan","classList","i","className","startsWith","includes","parseInt","replace","isNaN","remove","add","Form","width","Row","Col","justifyContent","alignItems","FormItem","action"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM;AAAA,EAAEA;AAAc,CAAA,GAAIC,iBAAAA;AAG1B,MAAMC,iBAAAA,GAAoB;AAAA,EACxBC,EAAAA,EAAI;AAAA,IAAEC,IAAAA,EAAM,EAAA;AAAA,IAAIC,UAAAA,EAAY;AAAA,GAAE;AAAA;AAAA,EAC9BC,EAAAA,EAAI;AAAA,IAAEF,IAAAA,EAAM,EAAA;AAAA,IAAIC,UAAAA,EAAY;AAAA,GAAE;AAAA;AAAA,EAC9BE,EAAAA,EAAI;AAAA,IAAEH,IAAAA,EAAM,CAAA;AAAA,IAAGC,UAAAA,EAAY;AAAA,GAAE;AAAA;AAAA,EAC7BG,EAAAA,EAAI;AAAA,IAAEJ,IAAAA,EAAM,CAAA;AAAA,IAAGC,UAAAA,EAAY;AAAA,GAAE;AAAA;AAAA,EAC7BI,EAAAA,EAAI;AAAA,IAAEL,IAAAA,EAAM,CAAA;AAAA,IAAGC,UAAAA,EAAY;AAAA,GAAE;AAAA;AAAA,EAC7BK,GAAAA,EAAK;AAAA,IAAEN,IAAAA,EAAM,CAAA;AAAA,IAAGC,UAAAA,EAAY;AAAA;AAAE;AAChC,CAAA;AAGA,MAAMM,oBAAAA,GAAuB,CAAA;AAO7B,qDAA+B;AAAA,EAC7BC,IAAAA,EAAM,YAAA;AAAA,EACNC,KAAAA,EAAO;AAAA,IACLC,MAAAA,EAAQ;AAAA,MACNC,IAAAA,EAAM,CAACC,KAAAA,EAAOC,MAAM,CAAA;AAAA,MAGpBC,OAAAA,EAASA,MAAM;AAAA,KACjB;AAAA,IACAC,KAAAA,EAAO;AAAA,MACLJ,IAAAA,EAAME,MAAAA;AAAAA,MACNC,OAAAA,EAASA,OAAO,EAAC;AAAA,KACnB;AAAA,IACAE,UAAAA,EAAY;AAAA,MACVL,IAAAA,EAAMM,MAAAA;AAAAA,MACNH,OAAAA,EAAS;AAAA,KACX;AAAA,IACAI,OAAAA,EAAS;AAAA,MACPP,IAAAA,EAAMQ,OAAAA;AAAAA,MACNL,OAAAA,EAAS;AAAA,KACX;AAAA;AAAA,IAEAM,gBAAAA,EAAkB;AAAA,MAChBT,IAAAA,EAAME,MAAAA;AAAAA,MACNC,OAAAA,EAASA,OAAO,EAAC;AAAA;AACnB,GACF;AAAA,EACAO,KAAAA,EAAO,CAAC,OAAA,EAAS,OAAO,CAAA;AAAA,EACxBC,MAAMb,KAAAA,EAAO;AAAA,IAAEc,KAAAA;AAAAA,IAAOC;AAAAA,GAAK,EAAG;AAE5B,IAAA,MAAM;AAAA,MACJN,OAAAA;AAAAA,MACAO,UAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAC;AAAAA,QACEC,OAAAA,EAAQ;AAGZ,IAAA,MAAM;AAAA,MACJC,MAAAA;AAAAA,MACAC,UAAAA;AAAAA,MACAC,UAAAA;AAAAA,MACAC,WAAAA;AAAAA,MACAC,QAAAA;AAAAA,MACAC,gBAAAA;AAAAA,MACAC;AAAAA,QACEC,SAAAA,EAAU;AAGd,IAAA,MAAM;AAAA,MAAEC;AAAAA,QAAiBC,SAAAA,EAAU;AAEnC,IAAA,SAASV,OAAAA,GAAU;AACjB,MAAA,MAAMZ,QAAAA,GAAUuB,QAAI,KAAK,CAAA;AACzB,MAAA,MAAMf,QAAAA,GAAUe,QAAS,IAAI,CAAA;AAC7B,MAAA,MAAMhB,WAAAA,GAAagB,OAAAA,CAAS,EAAE,CAAA;AAE9BC,MAAAA,eAAAA,CAAY,MAAM;AAChBjB,QAAAA,WAAAA,CAAWkB,QAAQlC,KAAAA,CAAMM,KAAAA;AAAAA,MAC3B,CAAC,CAAA;AAED6B,MAAAA,SAAAA,CACE,MAAMnC,KAAAA,CAAMS,OAAAA,EACZ2B,CAAAA,GAAAA,KAAO;AACL3B,QAAAA,SAAQyB,KAAAA,GAAQE,GAAAA;AAAAA,MAClB,CACF,CAAA;AAEA,MAAA,MAAMlB,WAAUA,MAAM;AACpBH,QAAAA,IAAAA,CAAK,OAAA,EAASC,YAAWkB,KAAK,CAAA;AAAA,MAChC,CAAA;AAEA,MAAA,MAAMf,WAAUA,MAAM;AAtH5B,QAAA,IAAA,EAAA;AAuHQF,QAAAA,CAAAA,EAAAA,GAAAA,QAAAA,CAAQiB,UAARjB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAeoB,WAAAA,EAAAA;AACftB,QAAAA,IAAAA,CAAK,OAAO,CAAA;AAAA,MACd,CAAA;AAEA,MAAA,MAAMK,WAAWkB,CAAAA,KAAAA,KAAe;AAC9B,QAAA,IAAIA,KAAAA,CAAMC,YAAY,EAAA,EAAI;AACxB,UAAA,IAAI,CAAC9B,SAAQyB,KAAAA,EAAO;AAClBnB,YAAAA,IAAAA,CAAK,OAAA,EAASC,YAAWkB,KAAK,CAAA;AAAA,UAChC;AAAA,QACF;AAAA,MACF,CAAA;AAEA,MAAA,OAAO;AAAA,QACLzB,OAAAA,EAAAA,QAAAA;AAAAA,QACAO,UAAAA,EAAAA,WAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,QACAC,OAAAA,EAAAA;AAAAA,OACF;AAAA,IACF;AAEA,IAAA,SAASW,SAAAA,GAAY;AACnB,MAAA,SAASD,aAAAA,GAAe;AACtB,QAAA,OAAAU,eAAAA,CAAAC,oBAAA,IAAA,EAAA;AAAA,UAAApC,OAAAA,EAAAA,MAAA,CAAAmC,eAAAA,CAAAE,mBAAAA,EAAA;AAAA,YAAA,WAGejC,OAAAA,CAAQyB,KAAAA;AAAAA,YAAK,MAAA,EAChB,SAAA;AAAA,YAAS,OAAA,EACR,OAAA;AAAA,YAAO,SAAA,EACLhB;AAAAA,WAAO,EAAA;AAAA,YAGdb,SAASA,MAAM,cAAA;AAAA,YACfsC,IAAAA,EAAMA,MAAAH,eAAAA,CAAAI,uBAAAA,EAAA,MAAA,IAAA;AAAA,WAAwB,CAAA,EAAAJ,eAAAA,CAAAE,mBAAAA,EAAA;AAAA,YAAA,YAItBjC,OAAAA,CAAQyB,KAAAA;AAAAA,YAAK,OAAA,EAChB,OAAA;AAAA,YAAO,SAAA,EACLf;AAAAA,WAAO,EAAA;AAAA,YAGdd,SAASA,MAAM,cAAA;AAAA,YACfsC,IAAAA,EAAMA,MAAAH,eAAAA,CAAAK,uBAAAA,EAAA,MAAA,IAAA;AAAA,WAAwB,CAAA,EAGjClB,gBAAAA,CAAiBO,KAAAA,GAAKM,gBAAAE,mBAAAA,EAAA;AAAA,YAAA,SAAA,EACJhB,QAAAA;AAAAA,YAAQ,OAAA,EAAS;AAAA,WAAO,EAAA;AAAA,YAErCrB,OAAAA,EAASA,MACPuB,QAAAA,CAASM,KAAAA,GAAQ,cAAA,GAAO,cAAA;AAAA,YAC1BS,IAAAA,EAAMA,MAAAH,eAAAA,CAAAM,4BAAAA,EAAA;AAAA,cAAA,QAAA,EAEMlB,QAAAA,CAASM,KAAAA,GAAQ,CAAA,EAAA,GAAM;AAAA,eAAE,IAAA;AAAA,WAEpC,IAGH,IAAI;AAAA,SAAA,CAAA;AAAA,MAGd;AAEA,MAAA,OAAO;AAAA,QACLJ,YAAAA,EAAAA;AAAAA,OACF;AAAA,IACF;AAEA,IAAA,SAASD,SAAAA,GAAY;AACnB,MAAA,MAAMkB,SAAAA,GAAY,EAAA;AAClB,MAAA,MAAMC,UAAU7D,aAAAA,EAAc;AAG9B,MAAA,MAAM8D,eAAeC,YAAAA,CAAS,MAAO,cAAA,CAAA,cAAA,CAAA,EAAA,EAChC7D,iBAAAA,CAAAA,EACAW,MAAMW,gBAAAA,CACT,CAAA;AAGF,MAAA,MAAMwC,aAAAA,GAAgBD,aAAS,MAAM;AACnC,QAAA,MAAME,SAASH,YAAAA,CAAaf,KAAAA;AAE5B,QAAA,IAAIc,OAAAA,CAAQd,KAAAA,CAAMrC,GAAAA,EAAK,OAAOuD,MAAAA,CAAOvD,GAAAA;AACrC,QAAA,IAAImD,OAAAA,CAAQd,KAAAA,CAAMtC,EAAAA,EAAI,OAAOwD,MAAAA,CAAOxD,EAAAA;AACpC,QAAA,IAAIoD,OAAAA,CAAQd,KAAAA,CAAMvC,EAAAA,EAAI,OAAOyD,MAAAA,CAAOzD,EAAAA;AACpC,QAAA,IAAIqD,OAAAA,CAAQd,KAAAA,CAAMxC,EAAAA,EAAI,OAAO0D,MAAAA,CAAO1D,EAAAA;AACpC,QAAA,IAAIsD,OAAAA,CAAQd,KAAAA,CAAMzC,EAAAA,EAAI,OAAO2D,MAAAA,CAAO3D,EAAAA;AACpC,QAAA,OAAO2D,MAAAA,CAAO9D,EAAAA;AAAAA,MAChB,CAAC,CAAA;AAGD,MAAA,MAAMmC,YAAAA,GAAcyB,YAAAA,CAAS,MAAMC,aAAAA,CAAcjB,MAAM3C,IAAI,CAAA;AAE3D,MAAA,MAAMC,UAAAA,GAAa0D,YAAAA,CAAS,MAAMC,aAAAA,CAAcjB,MAAM1C,UAAU,CAAA;AAGhE,MAAA,MAAM+B,WAAAA,GAAaS,QAAI,CAAC,CAAA;AAExB,MAAA,MAAMR,WAAAA,GAAaQ,QAAI,CAAC,CAAA;AAExB,MAAA,MAAMJ,SAAAA,GAAWI,QAAI,KAAK,CAAA;AAE1B,MAAA,MAAML,iBAAAA,GAAmBK,QAAI,KAAK,CAAA;AAElC,MAAA,MAAMV,OAAAA,GAASU,QAAS,IAAI,CAAA;AAG5BqB,MAAAA,aAAAA,CAAU,MAAM;AACdC,QAAAA,YAAAA,EAAa;AAAA,MACf,CAAC,CAAA;AAGDnB,MAAAA,SAAAA,CACEa,SACA,MAAM;AAEJO,QAAAA,YAAAA,CAAS,MAAM;AACbD,UAAAA,YAAAA,EAAa;AAAA,QACf,CAAC,CAAA;AAAA,MACH,CAAA,EACA;AAAA,QAAEE,IAAAA,EAAM;AAAA,OACV,CAAA;AAEA,MAAA,SAAS9B,SAAAA,GAAW;AAClBE,QAAAA,SAAAA,CAASM,KAAAA,GAAQ,CAACN,SAAAA,CAASM,KAAAA;AAC3BoB,QAAAA,YAAAA,EAAa;AAAA,MACf;AAKA,MAAA,SAASA,YAAAA,GAAe;AA3P9B,QAAA,IAAA,EAAA;AA4PQ,QAAA,MAAMG,KAAAA,GAAAA,CAAQnC,EAAAA,GAAAA,OAAAA,CAAOY,KAAAA,KAAPZ,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAcoC,GAAAA;AAC5B,QAAA,IAAI,CAACD,KAAAA,EAAO;AAEZ,QAAA,MAAME,KAAAA,GAAQxD,KAAAA,CAAMyD,IAAAA,CAAKH,KAAAA,CAAMI,QAAQ,CAAA;AAEvC,QAAA,MAAMC,QAAAA,GAAWH,MAAMI,MAAAA,GAAS,CAAA;AAEhC,QAAA,IAAID,YAAY,CAAA,EAAG;AAGnB,QAAA,MAAME,aAAavC,YAAAA,CAAYS,KAAAA;AAC/B,QAAA,MAAM+B,OAAOzE,UAAAA,CAAW0C,KAAAA;AAGxByB,QAAAA,KAAAA,CAAMO,OAAAA,CAAQ,CAACC,GAAAA,EAAKC,KAAAA,KAAU;AAC5B,UAAA,IAAIA,UAAUN,QAAAA,EAAU;AACxBO,UAAAA,aAAAA,CAAcF,KAAKH,UAAU,CAAA;AAC7BG,UAAAA,GAAAA,CAAIG,MAAMC,OAAAA,GAAU,EAAA;AAAA,QACtB,CAAC,CAAA;AAGD,QAAA,MAAMC,aAAAA,GAAgBP,OAAOnE,oBAAAA,GAAuB,CAAA;AAGpD,QAAA,IAAIgE,WAAWU,aAAAA,EAAe;AAC5B7C,UAAAA,kBAAiBO,KAAAA,GAAQ,IAAA;AAGzB,UAAA,IAAI,CAACN,UAASM,KAAAA,EAAO;AACnByB,YAAAA,KAAAA,CAAMO,OAAAA,CAAQ,CAACC,GAAAA,EAAUC,KAAAA,KAAU;AACjC,cAAA,IAAIA,UAAUN,QAAAA,EAAU;AACxB,cAAA,IAAIM,SAASI,aAAAA,EAAe;AAC1BL,gBAAAA,GAAAA,CAAIG,MAAMC,OAAAA,GAAU,MAAA;AAAA,cACtB;AAAA,YACF,CAAC,CAAA;AAEDhD,YAAAA,YAAWW,KAAAA,GAAQ8B,UAAAA;AACnBxC,YAAAA,YAAWU,KAAAA,GAAQ,CAAA;AAAA,UACrB,CAAA,MAAO;AAEL,YAAA,MAAMuC,eAAeX,QAAAA,GAAWG,IAAAA;AAChC,YAAA,MAAMS,eAAAA,GAAkBD,YAAAA,KAAiB,CAAA,GAAI1B,SAAAA,GAAY0B,YAAAA,GAAeT,UAAAA;AACxE,YAAA,MAAMW,gBAAgB5B,SAAAA,GAAY2B,eAAAA;AAElC,YAAA,IAAIC,iBAAiBX,UAAAA,EAAY;AAC/BzC,cAAAA,YAAWW,KAAAA,GAAQyC,aAAAA;AACnBnD,cAAAA,YAAWU,KAAAA,GAAQ,CAAA;AAAA,YACrB,CAAA,MAAO;AACLX,cAAAA,YAAWW,KAAAA,GAAQ8B,UAAAA;AACnBxC,cAAAA,WAAAA,CAAWU,QAAQa,SAAAA,GAAYiB,UAAAA;AAAAA,YACjC;AAAA,UACF;AAAA,QACF,CAAA,MAAO;AAELrC,UAAAA,kBAAiBO,KAAAA,GAAQ,KAAA;AAEzB,UAAA,MAAMuC,eAAeX,QAAAA,GAAWG,IAAAA;AAChC,UAAA,MAAMS,eAAAA,GAAkBD,YAAAA,KAAiB,CAAA,GAAI1B,SAAAA,GAAY0B,YAAAA,GAAeT,UAAAA;AACxE,UAAA,MAAMW,gBAAgB5B,SAAAA,GAAY2B,eAAAA;AAElC,UAAA,IAAIC,iBAAiBX,UAAAA,EAAY;AAC/BzC,YAAAA,YAAWW,KAAAA,GAAQyC,aAAAA;AACnBnD,YAAAA,YAAWU,KAAAA,GAAQ,CAAA;AAAA,UACrB,CAAA,MAAO;AACLX,YAAAA,YAAWW,KAAAA,GAAQ8B,UAAAA;AACnBxC,YAAAA,WAAAA,CAAWU,QAAQa,SAAAA,GAAYiB,UAAAA;AAAAA,UACjC;AAAA,QACF;AAAA,MACF;AAKA,MAAA,SAASK,aAAAA,CAAcV,OAAoBiB,OAAAA,EAAiB;AAC1D,QAAA,MAAMC,YAAYlB,KAAAA,CAAMkB,SAAAA;AAExB,QAAA,KAAA,IAASC,IAAID,SAAAA,CAAUd,MAAAA,GAAS,CAAA,EAAGe,CAAAA,IAAK,GAAGA,CAAAA,EAAAA,EAAK;AAC9C,UAAA,MAAMC,SAAAA,GAAYF,UAAUC,CAAC,CAAA;AAC7B,UAAA,IAAIC,UAAUC,UAAAA,CAAW,UAAU,KAAK,CAACD,SAAAA,CAAUE,SAAS,UAAU,CAAA,IAAK,CAACF,SAAAA,CAAUE,SAAS,QAAQ,CAAA,IAAK,CAACF,SAAAA,CAAUE,QAAAA,CAAS,QAAQ,CAAA,EAAG;AACzI,YAAA,MAAM1F,OAAO2F,QAAAA,CAASH,SAAAA,CAAUI,QAAQ,UAAA,EAAY,EAAE,GAAG,EAAE,CAAA;AAC3D,YAAA,IAAI,CAACC,KAAAA,CAAM7F,IAAI,CAAA,EAAG;AAChBsF,cAAAA,SAAAA,CAAUQ,OAAON,SAAS,CAAA;AAC1B,cAAA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEAF,QAAAA,SAAAA,CAAUS,GAAAA,CAAI,CAAA,QAAA,EAAWV,OAAO,CAAA,CAAE,CAAA;AAAA,MACpC;AAEA,MAAA,OAAO;AAAA,QACLtD,MAAAA,EAAAA,OAAAA;AAAAA,QACAC,UAAAA,EAAAA,WAAAA;AAAAA,QACAC,UAAAA,EAAAA,WAAAA;AAAAA,QACAC,WAAAA,EAAAA,YAAAA;AAAAA,QACAC,QAAAA,EAAAA,SAAAA;AAAAA,QACAC,gBAAAA,EAAAA,iBAAAA;AAAAA,QACAC,QAAAA,EAAAA;AAAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAO,MAAAY,gBAAA,KAAA,EAAA;AAAA,MAAA,SAAA,EACSpB;AAAAA,KAAO,EAAA,CAAAoB,eAAAA,CAAA+C,iBAAAA,EAAA;AAAA,MAAA,KAAA,EAEZtE,OAAAA;AAAAA,MAAO,OAAA,EACL,KAAA;AAAA,MAAK,UAAA,EACF;AAAA,QAAEqD,KAAAA,EAAO;AAAA,UAAEkB,OAAOxF,KAAAA,CAAMO;AAAAA;AAAW,OAAE;AAAA,MAAC,SACzCS,UAAAA,CAAWkB;AAAAA,KAAK,EAAA;AAAA,MAAA7B,OAAAA,EAAAA,MAAA,CAAAmC,eAAAA,CAAAiD,gBAAAA,EAAA;AAAA,QAAA,KAAA,EAEbnE;AAAAA,OAAM,EAAA;AAAA,QAAAjB,SAAAA,MAAA;AAzW1B,UAAA,IAAA,EAAA;AAyW0B,UAAA,OAAA,CAAA,CACbS,EAAAA,GAAAA,KAAAA,CAAMT,OAAAA,KAANS,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,EAAiB0B,eAAAA,CAAAkD,gBAAAA,EAAA;AAAA,YAAA,QAEVnE,UAAAA,CAAWW,KAAAA;AAAAA,YAAK,QAChBV,UAAAA,CAAWU,KAAAA;AAAAA,YAAK,OAAA,EACf;AAAA,cACLqC,OAAAA,EAAS,MAAA;AAAA,cACToB,cAAAA,EAAgB,UAAA;AAAA,cAChBC,UAAAA,EAAY;AAAA;AACd,WAAC,EAAA;AAAA,YAAAvF,OAAAA,EAAAA,MAAA,CAAAmC,eAAAA,CAAAqD,uBAAA,IAAA,EAAA;AAAA,cAAAxF,OAAAA,EAAAA,MAAA,CAGES,KAAAA,CAAMgF,SACHhF,KAAAA,CAAMgF,MAAAA,EAAO,GACbhE,YAAAA,EAAc;AAAA,aAAA,CAAA;AAAA,WAAA,CAAA,CAAA;AAAA,QAAA;AAAA,OAAA,CAAA;AAAA,KAAA,CAAA,CAAA,CAAA;AAAA,EAOhC;AACF,CAAC,CAAA;;;;"}