hy-dispatch-ui-v3 0.1.0

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 (232) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/tailwind.css +1083 -0
  4. package/es/bussiness/index.mjs +2 -0
  5. package/es/bussiness/index.mjs.map +1 -0
  6. package/es/components/appConfirmDialog/appConfirmDialog.vue.mjs +204 -0
  7. package/es/components/appConfirmDialog/appConfirmDialog.vue.mjs.map +1 -0
  8. package/es/components/appConfirmDialog/appConfirmMethod.mjs +73 -0
  9. package/es/components/appConfirmDialog/appConfirmMethod.mjs.map +1 -0
  10. package/es/components/appConfirmDialog/index.mjs +8 -0
  11. package/es/components/appConfirmDialog/index.mjs.map +1 -0
  12. package/es/components/appConfirmDialog/style/appConfirmDialog.scss +5 -0
  13. package/es/components/appDatePicker/appDatePicker.vue.mjs +99 -0
  14. package/es/components/appDatePicker/appDatePicker.vue.mjs.map +1 -0
  15. package/es/components/appDatePicker/index.mjs +7 -0
  16. package/es/components/appDatePicker/index.mjs.map +1 -0
  17. package/es/components/appDatePicker/style/appDatePicker.scss +0 -0
  18. package/es/components/appForm/appForm.vue.mjs +331 -0
  19. package/es/components/appForm/appForm.vue.mjs.map +1 -0
  20. package/es/components/appForm/index.mjs +8 -0
  21. package/es/components/appForm/index.mjs.map +1 -0
  22. package/es/components/appForm/js/index.mjs +87 -0
  23. package/es/components/appForm/js/index.mjs.map +1 -0
  24. package/es/components/appForm/js/useAppForm.mjs +149 -0
  25. package/es/components/appForm/js/useAppForm.mjs.map +1 -0
  26. package/es/components/appForm/style/appForm.scss +16 -0
  27. package/es/components/appOrgCascader/appOrgCascader.vue.mjs +229 -0
  28. package/es/components/appOrgCascader/appOrgCascader.vue.mjs.map +1 -0
  29. package/es/components/appOrgCascader/index.mjs +7 -0
  30. package/es/components/appOrgCascader/index.mjs.map +1 -0
  31. package/es/components/appOrgCascader/style/appOrgCascader.scss +0 -0
  32. package/es/components/appSearch/appSearch.vue.mjs +408 -0
  33. package/es/components/appSearch/appSearch.vue.mjs.map +1 -0
  34. package/es/components/appSearch/index.mjs +8 -0
  35. package/es/components/appSearch/index.mjs.map +1 -0
  36. package/es/components/appSearch/js/index.mjs +114 -0
  37. package/es/components/appSearch/js/index.mjs.map +1 -0
  38. package/es/components/appSearch/js/useAppSearch.mjs +178 -0
  39. package/es/components/appSearch/js/useAppSearch.mjs.map +1 -0
  40. package/es/components/appSearch/style/appSearch.scss +53 -0
  41. package/es/components/appTable/appTable.vue.mjs +578 -0
  42. package/es/components/appTable/appTable.vue.mjs.map +1 -0
  43. package/es/components/appTable/cpns/columnSelect.vue.mjs +414 -0
  44. package/es/components/appTable/cpns/columnSelect.vue.mjs.map +1 -0
  45. package/es/components/appTable/index.mjs +8 -0
  46. package/es/components/appTable/index.mjs.map +1 -0
  47. package/es/components/appTable/js/index.mjs +304 -0
  48. package/es/components/appTable/js/index.mjs.map +1 -0
  49. package/es/components/appTable/js/search.mjs +129 -0
  50. package/es/components/appTable/js/search.mjs.map +1 -0
  51. package/es/components/appTable/js/useAppTable.mjs +63 -0
  52. package/es/components/appTable/js/useAppTable.mjs.map +1 -0
  53. package/es/components/appTable/style/appTable.scss +15 -0
  54. package/es/components/appTooltip/appTooltip.vue.mjs +94 -0
  55. package/es/components/appTooltip/appTooltip.vue.mjs.map +1 -0
  56. package/es/components/appTooltip/index.mjs +7 -0
  57. package/es/components/appTooltip/index.mjs.map +1 -0
  58. package/es/components/appTooltip/style/appTooltip.scss +0 -0
  59. package/es/components/index.mjs +12 -0
  60. package/es/components/index.mjs.map +1 -0
  61. package/es/components/svgIcon/iconBox.vue.mjs +99 -0
  62. package/es/components/svgIcon/iconBox.vue.mjs.map +1 -0
  63. package/es/components/svgIcon/index.mjs +9 -0
  64. package/es/components/svgIcon/index.mjs.map +1 -0
  65. package/es/components/svgIcon/style/iconBox.scss +13 -0
  66. package/es/components/svgIcon/style/svgIcon.scss +12 -0
  67. package/es/components/svgIcon/svgIcon.vue.mjs +47 -0
  68. package/es/components/svgIcon/svgIcon.vue.mjs.map +1 -0
  69. package/es/config/index.mjs +2 -0
  70. package/es/config/index.mjs.map +1 -0
  71. package/es/constants/index.mjs +4 -0
  72. package/es/constants/index.mjs.map +1 -0
  73. package/es/constants/keys.mjs +2 -0
  74. package/es/constants/keys.mjs.map +1 -0
  75. package/es/hooks/index.mjs +5 -0
  76. package/es/hooks/index.mjs.map +1 -0
  77. package/es/hooks/useApi.mjs +10 -0
  78. package/es/hooks/useApi.mjs.map +1 -0
  79. package/es/hooks/useGlobalConfig.mjs +56 -0
  80. package/es/hooks/useGlobalConfig.mjs.map +1 -0
  81. package/es/hooks/useLocale.mjs +34 -0
  82. package/es/hooks/useLocale.mjs.map +1 -0
  83. package/es/hooks/useMixins.mjs +19 -0
  84. package/es/hooks/useMixins.mjs.map +1 -0
  85. package/es/index.mjs +30 -0
  86. package/es/index.mjs.map +1 -0
  87. package/es/locale/en_US.mjs +67 -0
  88. package/es/locale/en_US.mjs.map +1 -0
  89. package/es/locale/index.mjs +3 -0
  90. package/es/locale/index.mjs.map +1 -0
  91. package/es/locale/zh_CN.mjs +67 -0
  92. package/es/locale/zh_CN.mjs.map +1 -0
  93. package/es/make-installer.mjs +29 -0
  94. package/es/make-installer.mjs.map +1 -0
  95. package/es/store/index.mjs +7 -0
  96. package/es/store/index.mjs.map +1 -0
  97. package/es/store/maintain.mjs +90 -0
  98. package/es/store/maintain.mjs.map +1 -0
  99. package/es/style/index.scss +46 -0
  100. package/es/style/tailwind.scss +3 -0
  101. package/es/style/theme.scss +123 -0
  102. package/es/utils/adaptive.mjs +30 -0
  103. package/es/utils/adaptive.mjs.map +1 -0
  104. package/es/utils/bus.mjs +6 -0
  105. package/es/utils/bus.mjs.map +1 -0
  106. package/es/utils/crypto.mjs +21 -0
  107. package/es/utils/crypto.mjs.map +1 -0
  108. package/es/utils/date.mjs +25 -0
  109. package/es/utils/date.mjs.map +1 -0
  110. package/es/utils/handler.mjs +83 -0
  111. package/es/utils/handler.mjs.map +1 -0
  112. package/es/utils/index.mjs +7 -0
  113. package/es/utils/index.mjs.map +1 -0
  114. package/es/utils/is.mjs +19 -0
  115. package/es/utils/is.mjs.map +1 -0
  116. package/es/version.mjs +4 -0
  117. package/es/version.mjs.map +1 -0
  118. package/lib/bussiness/index.js +3 -0
  119. package/lib/bussiness/index.js.map +1 -0
  120. package/lib/components/appConfirmDialog/appConfirmDialog.vue.js +208 -0
  121. package/lib/components/appConfirmDialog/appConfirmDialog.vue.js.map +1 -0
  122. package/lib/components/appConfirmDialog/appConfirmMethod.js +77 -0
  123. package/lib/components/appConfirmDialog/appConfirmMethod.js.map +1 -0
  124. package/lib/components/appConfirmDialog/index.js +13 -0
  125. package/lib/components/appConfirmDialog/index.js.map +1 -0
  126. package/lib/components/appConfirmDialog/style/appConfirmDialog.scss +5 -0
  127. package/lib/components/appDatePicker/appDatePicker.vue.js +103 -0
  128. package/lib/components/appDatePicker/appDatePicker.vue.js.map +1 -0
  129. package/lib/components/appDatePicker/index.js +12 -0
  130. package/lib/components/appDatePicker/index.js.map +1 -0
  131. package/lib/components/appDatePicker/style/appDatePicker.scss +0 -0
  132. package/lib/components/appForm/appForm.vue.js +335 -0
  133. package/lib/components/appForm/appForm.vue.js.map +1 -0
  134. package/lib/components/appForm/index.js +14 -0
  135. package/lib/components/appForm/index.js.map +1 -0
  136. package/lib/components/appForm/js/index.js +93 -0
  137. package/lib/components/appForm/js/index.js.map +1 -0
  138. package/lib/components/appForm/js/useAppForm.js +152 -0
  139. package/lib/components/appForm/js/useAppForm.js.map +1 -0
  140. package/lib/components/appForm/style/appForm.scss +16 -0
  141. package/lib/components/appOrgCascader/appOrgCascader.vue.js +233 -0
  142. package/lib/components/appOrgCascader/appOrgCascader.vue.js.map +1 -0
  143. package/lib/components/appOrgCascader/index.js +12 -0
  144. package/lib/components/appOrgCascader/index.js.map +1 -0
  145. package/lib/components/appOrgCascader/style/appOrgCascader.scss +0 -0
  146. package/lib/components/appSearch/appSearch.vue.js +412 -0
  147. package/lib/components/appSearch/appSearch.vue.js.map +1 -0
  148. package/lib/components/appSearch/index.js +14 -0
  149. package/lib/components/appSearch/index.js.map +1 -0
  150. package/lib/components/appSearch/js/index.js +122 -0
  151. package/lib/components/appSearch/js/index.js.map +1 -0
  152. package/lib/components/appSearch/js/useAppSearch.js +181 -0
  153. package/lib/components/appSearch/js/useAppSearch.js.map +1 -0
  154. package/lib/components/appSearch/style/appSearch.scss +53 -0
  155. package/lib/components/appTable/appTable.vue.js +582 -0
  156. package/lib/components/appTable/appTable.vue.js.map +1 -0
  157. package/lib/components/appTable/cpns/columnSelect.vue.js +418 -0
  158. package/lib/components/appTable/cpns/columnSelect.vue.js.map +1 -0
  159. package/lib/components/appTable/index.js +14 -0
  160. package/lib/components/appTable/index.js.map +1 -0
  161. package/lib/components/appTable/js/index.js +311 -0
  162. package/lib/components/appTable/js/index.js.map +1 -0
  163. package/lib/components/appTable/js/search.js +131 -0
  164. package/lib/components/appTable/js/search.js.map +1 -0
  165. package/lib/components/appTable/js/useAppTable.js +65 -0
  166. package/lib/components/appTable/js/useAppTable.js.map +1 -0
  167. package/lib/components/appTable/style/appTable.scss +15 -0
  168. package/lib/components/appTooltip/appTooltip.vue.js +98 -0
  169. package/lib/components/appTooltip/appTooltip.vue.js.map +1 -0
  170. package/lib/components/appTooltip/index.js +12 -0
  171. package/lib/components/appTooltip/index.js.map +1 -0
  172. package/lib/components/appTooltip/style/appTooltip.scss +0 -0
  173. package/lib/components/index.js +29 -0
  174. package/lib/components/index.js.map +1 -0
  175. package/lib/components/svgIcon/iconBox.vue.js +103 -0
  176. package/lib/components/svgIcon/iconBox.vue.js.map +1 -0
  177. package/lib/components/svgIcon/index.js +15 -0
  178. package/lib/components/svgIcon/index.js.map +1 -0
  179. package/lib/components/svgIcon/style/iconBox.scss +13 -0
  180. package/lib/components/svgIcon/style/svgIcon.scss +12 -0
  181. package/lib/components/svgIcon/svgIcon.vue.js +51 -0
  182. package/lib/components/svgIcon/svgIcon.vue.js.map +1 -0
  183. package/lib/config/index.js +3 -0
  184. package/lib/config/index.js.map +1 -0
  185. package/lib/constants/index.js +6 -0
  186. package/lib/constants/index.js.map +1 -0
  187. package/lib/constants/keys.js +3 -0
  188. package/lib/constants/keys.js.map +1 -0
  189. package/lib/hooks/index.js +21 -0
  190. package/lib/hooks/index.js.map +1 -0
  191. package/lib/hooks/useApi.js +13 -0
  192. package/lib/hooks/useApi.js.map +1 -0
  193. package/lib/hooks/useGlobalConfig.js +59 -0
  194. package/lib/hooks/useGlobalConfig.js.map +1 -0
  195. package/lib/hooks/useLocale.js +41 -0
  196. package/lib/hooks/useLocale.js.map +1 -0
  197. package/lib/hooks/useMixins.js +21 -0
  198. package/lib/hooks/useMixins.js.map +1 -0
  199. package/lib/index.js +85 -0
  200. package/lib/index.js.map +1 -0
  201. package/lib/locale/en_US.js +71 -0
  202. package/lib/locale/en_US.js.map +1 -0
  203. package/lib/locale/index.js +10 -0
  204. package/lib/locale/index.js.map +1 -0
  205. package/lib/locale/zh_CN.js +71 -0
  206. package/lib/locale/zh_CN.js.map +1 -0
  207. package/lib/make-installer.js +33 -0
  208. package/lib/make-installer.js.map +1 -0
  209. package/lib/store/index.js +10 -0
  210. package/lib/store/index.js.map +1 -0
  211. package/lib/store/maintain.js +92 -0
  212. package/lib/store/maintain.js.map +1 -0
  213. package/lib/style/index.scss +46 -0
  214. package/lib/style/tailwind.scss +3 -0
  215. package/lib/style/theme.scss +123 -0
  216. package/lib/utils/adaptive.js +35 -0
  217. package/lib/utils/adaptive.js.map +1 -0
  218. package/lib/utils/bus.js +8 -0
  219. package/lib/utils/bus.js.map +1 -0
  220. package/lib/utils/crypto.js +25 -0
  221. package/lib/utils/crypto.js.map +1 -0
  222. package/lib/utils/date.js +27 -0
  223. package/lib/utils/date.js.map +1 -0
  224. package/lib/utils/handler.js +89 -0
  225. package/lib/utils/handler.js.map +1 -0
  226. package/lib/utils/index.js +38 -0
  227. package/lib/utils/index.js.map +1 -0
  228. package/lib/utils/is.js +32 -0
  229. package/lib/utils/is.js.map +1 -0
  230. package/lib/version.js +6 -0
  231. package/lib/version.js.map +1 -0
  232. package/package.json +102 -0
@@ -0,0 +1,408 @@
1
+ import { defineComponent, useTemplateRef, computed, unref, onUnmounted, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, withCtx, toDisplayString, Fragment, createCommentVNode, normalizeStyle, mergeProps, renderList, createBlock, renderSlot, withKeys } from 'vue';
2
+ import { ElIcon, ElForm, ElFormItem, ElInput, ElSelect } from 'element-plus';
3
+ import { Filter, ArrowDown } from '@element-plus/icons-vue';
4
+ import _sfc_main$1 from '../appDatePicker/appDatePicker.vue.mjs';
5
+ import { useShrink, isEmptyValue, columnShowHandler, columnItemStyle, columnItemInputStyle, isDisabled, timeRangeHandler } from './js/index.mjs';
6
+ import { resetAppSearchValue } from './js/useAppSearch.mjs';
7
+ import { useLocale } from '../../hooks/useLocale.mjs';
8
+ import { isArray } from '../../utils/is.mjs';
9
+
10
+ import "./style/appSearch.scss";
11
+
12
+ const __default__ = defineComponent({
13
+ name: "AppSearch"
14
+ });
15
+ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
16
+ props: {
17
+ model: {
18
+ type: Object,
19
+ default: () => ({})
20
+ },
21
+ columns: {
22
+ type: Array,
23
+ default: () => []
24
+ },
25
+ loading: {
26
+ type: Boolean,
27
+ default: false
28
+ },
29
+ size: {
30
+ type: String,
31
+ default: "default"
32
+ // '' | 'large' | 'default' | 'small'
33
+ },
34
+ hidden: {
35
+ type: Boolean,
36
+ default: false
37
+ },
38
+ class: {
39
+ type: [String, Array, Object]
40
+ }
41
+ },
42
+ emits: ["search"],
43
+ setup(__props, { expose: __expose, emit: __emit }) {
44
+ const props = __props;
45
+ const emits = __emit;
46
+ const { t } = useLocale();
47
+ const formItemWrapper = useTemplateRef("formItemWrapper");
48
+ const { isExpand, containerHeight, switchShrink, shrinkDestroy } = useShrink(
49
+ props,
50
+ formItemWrapper
51
+ );
52
+ const formColumnMap = computed(() => {
53
+ return (props.columns || []).reduce((map, column) => {
54
+ if (isArray(column.field)) {
55
+ column.field.forEach((key) => map.set(key, column));
56
+ } else {
57
+ map.set(column.field, column);
58
+ }
59
+ return map;
60
+ }, /* @__PURE__ */ new Map());
61
+ });
62
+ const filterCount = computed(() => {
63
+ const defaultValue = resetAppSearchValue(props.columns);
64
+ const keys = Object.keys(defaultValue);
65
+ if (!(keys == null ? void 0 : keys.length)) return 0;
66
+ const keySet = keys.reduce((keySet2, key) => {
67
+ if (isEmptyValue(defaultValue[key]) ? !isEmptyValue(props.model[key]) : defaultValue[key] !== props.model[key]) {
68
+ if (unref(formColumnMap).has(key)) {
69
+ keySet2.add(unref(formColumnMap).get(key).key);
70
+ }
71
+ }
72
+ return keySet2;
73
+ }, /* @__PURE__ */ new Set());
74
+ return keySet.size;
75
+ });
76
+ const appClass = computed(() => {
77
+ return [
78
+ props.class,
79
+ { "app-search-hidden": props.hidden }
80
+ ].filter(Boolean);
81
+ });
82
+ const containerStyle = computed(() => {
83
+ const style = {};
84
+ if (props.hidden) {
85
+ style.height = `0px`;
86
+ } else if (unref(containerHeight)) {
87
+ style.height = `${unref(containerHeight)}px`;
88
+ }
89
+ return style;
90
+ });
91
+ onUnmounted(() => {
92
+ shrinkDestroy();
93
+ });
94
+ function onChangeHandler(value, column) {
95
+ var _a;
96
+ if ((_a = column.attrs) == null ? void 0 : _a.onChange) {
97
+ column.attrs.onChange(value);
98
+ }
99
+ emits("search");
100
+ }
101
+ function onKeydownEnterHander(e) {
102
+ emits("search");
103
+ }
104
+ function resetFields(fields) {
105
+ let columns = props.columns || [];
106
+ if (fields && (fields == null ? void 0 : fields.length)) {
107
+ columns = fields.map((key) => formColumnMap.get(key)).filter(Boolean);
108
+ }
109
+ resetAppSearchValue(columns, props.model);
110
+ }
111
+ function onResetHandler() {
112
+ resetFields();
113
+ emits("search");
114
+ }
115
+ function onTimeRangeClickHandler(column, options) {
116
+ const { field } = column;
117
+ const dateValue = timeRangeHandler(column, options);
118
+ if (isArray(field)) {
119
+ props.model[field[0]] = dateValue[0];
120
+ props.model[field[1]] = dateValue[1];
121
+ } else {
122
+ props.model[field] = dateValue;
123
+ }
124
+ emits("search");
125
+ }
126
+ __expose({
127
+ resetFields
128
+ });
129
+ return (_ctx, _cache) => {
130
+ return openBlock(), createElementBlock(
131
+ "div",
132
+ {
133
+ class: normalizeClass(["app-search", appClass.value])
134
+ },
135
+ [
136
+ createElementVNode(
137
+ "div",
138
+ {
139
+ class: normalizeClass(["app-search-header", { "app-search-header-hidden": __props.hidden }])
140
+ },
141
+ [
142
+ createElementVNode("div", { class: "flex items-center gap-2" }, [
143
+ createVNode(unref(ElIcon), { size: "12" }, {
144
+ default: withCtx(() => [
145
+ createVNode(unref(Filter))
146
+ ]),
147
+ _: 1
148
+ /* STABLE */
149
+ }),
150
+ createElementVNode(
151
+ "span",
152
+ null,
153
+ toDisplayString(unref(t)("hy.filter")),
154
+ 1
155
+ /* TEXT */
156
+ ),
157
+ filterCount.value > 0 ? (openBlock(), createElementBlock(
158
+ Fragment,
159
+ { key: 0 },
160
+ [
161
+ createElementVNode(
162
+ "span",
163
+ { class: "bg-theme02 text-theme font-bold leading-4 px-[6px]" },
164
+ toDisplayString(filterCount.value),
165
+ 1
166
+ /* TEXT */
167
+ ),
168
+ createElementVNode(
169
+ "span",
170
+ {
171
+ class: "text-auxiliary cursor-pointer",
172
+ onClick: onResetHandler
173
+ },
174
+ toDisplayString(unref(t)("hy.reset")),
175
+ 1
176
+ /* TEXT */
177
+ )
178
+ ],
179
+ 64
180
+ /* STABLE_FRAGMENT */
181
+ )) : createCommentVNode("v-if", true)
182
+ ]),
183
+ createElementVNode("div", {
184
+ class: "ml-auto flex items-center gap-4 cursor-pointer select-none",
185
+ onClick: unref(switchShrink)
186
+ }, [
187
+ createElementVNode(
188
+ "span",
189
+ { class: "text-auxiliary" },
190
+ toDisplayString(unref(isExpand) ? unref(t)("hy.packUp") : unref(t)("hy.expand")),
191
+ 1
192
+ /* TEXT */
193
+ ),
194
+ createVNode(unref(ElIcon), {
195
+ size: "12",
196
+ class: "transition-all duration-300",
197
+ style: normalizeStyle({ transform: `rotateX(${unref(isExpand) ? -180 : 0}deg)` })
198
+ }, {
199
+ default: withCtx(() => [
200
+ createVNode(unref(ArrowDown))
201
+ ]),
202
+ _: 1
203
+ /* STABLE */
204
+ }, 8, ["style"])
205
+ ], 8, ["onClick"])
206
+ ],
207
+ 2
208
+ /* CLASS */
209
+ ),
210
+ createVNode(unref(ElForm), mergeProps({
211
+ model: __props.model,
212
+ "label-position": "top",
213
+ size: __props.size,
214
+ class: "app-search-form"
215
+ }, _ctx.$attrs, { style: containerStyle.value }), {
216
+ default: withCtx(() => [
217
+ createElementVNode(
218
+ "div",
219
+ {
220
+ ref_key: "formItemWrapper",
221
+ ref: formItemWrapper,
222
+ class: "app-search-container"
223
+ },
224
+ [
225
+ createCommentVNode(" \u8868\u5355\u9879 "),
226
+ (openBlock(true), createElementBlock(
227
+ Fragment,
228
+ null,
229
+ renderList(__props.columns, (column) => {
230
+ return openBlock(), createElementBlock(
231
+ Fragment,
232
+ {
233
+ key: column.key
234
+ },
235
+ [
236
+ unref(columnShowHandler)(props, column) ? (openBlock(), createBlock(unref(ElFormItem), {
237
+ key: 0,
238
+ prop: unref(isArray)(column.field) ? column.field[0] : column.field
239
+ }, {
240
+ default: withCtx(() => {
241
+ var _a, _b, _c;
242
+ return [
243
+ createElementVNode("div", { class: "flex bg-backgroundv2 rounded" }, [
244
+ createElementVNode(
245
+ "div",
246
+ {
247
+ class: "flex",
248
+ style: normalizeStyle(unref(columnItemStyle)(props, column))
249
+ },
250
+ [
251
+ createCommentVNode(" \u8868\u5355label "),
252
+ createElementVNode("div", { class: "flex items-center text-auxiliary text-xs px-3 whitespace-nowrap border-r border-border" }, [
253
+ column.labelSlot && _ctx.$slots[column.labelSlot] ? renderSlot(_ctx.$slots, column.labelSlot, {
254
+ key: 0,
255
+ column
256
+ }) : (openBlock(), createElementBlock(
257
+ "span",
258
+ { key: 1 },
259
+ toDisplayString(column.label),
260
+ 1
261
+ /* TEXT */
262
+ ))
263
+ ]),
264
+ createCommentVNode(" \u8868\u5355\u7EC4\u4EF6 "),
265
+ createElementVNode(
266
+ "div",
267
+ {
268
+ style: normalizeStyle(unref(columnItemInputStyle)(props, column))
269
+ },
270
+ [
271
+ createCommentVNode(" \u81EA\u5B9A\u4E49\u5177\u540D\u63D2\u69FD "),
272
+ column.slot ? renderSlot(_ctx.$slots, column.slot, {
273
+ key: 0,
274
+ column
275
+ }) : column.type === "input" ? (openBlock(), createElementBlock(
276
+ Fragment,
277
+ { key: 1 },
278
+ [
279
+ createCommentVNode(" \u8F93\u5165\u6846 "),
280
+ createVNode(unref(ElInput), mergeProps({
281
+ modelValue: __props.model[column.field],
282
+ "onUpdate:modelValue": ($event) => __props.model[column.field] = $event
283
+ }, { ref_for: true }, column.attrs, {
284
+ disabled: unref(isDisabled)(props, column),
285
+ onKeydown: withKeys(($event) => onKeydownEnterHander(), ["enter"]),
286
+ onChange: ($event) => onChangeHandler($event, column)
287
+ }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled", "onKeydown", "onChange"])
288
+ ],
289
+ 2112
290
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
291
+ )) : column.type === "select" ? (openBlock(), createElementBlock(
292
+ Fragment,
293
+ { key: 2 },
294
+ [
295
+ createCommentVNode(" \u9009\u62E9\u6846 "),
296
+ createVNode(unref(ElSelect), mergeProps({
297
+ modelValue: __props.model[column.field],
298
+ "onUpdate:modelValue": ($event) => __props.model[column.field] = $event
299
+ }, { ref_for: true }, column.attrs, {
300
+ disabled: unref(isDisabled)(props, column),
301
+ onChange: ($event) => onChangeHandler($event, column)
302
+ }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled", "onChange"])
303
+ ],
304
+ 2112
305
+ /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
306
+ )) : column.type === "date-picker" ? (openBlock(), createElementBlock(
307
+ Fragment,
308
+ { key: 3 },
309
+ [
310
+ createCommentVNode(" \u65E5\u671F\u9009\u62E9\u6846 "),
311
+ [
312
+ "datetimerange",
313
+ "daterange",
314
+ "monthrange",
315
+ "yearrange"
316
+ ].includes((_a = column.attrs) == null ? void 0 : _a.type) && unref(isArray)(column.field) ? (openBlock(), createBlock(_sfc_main$1, mergeProps({
317
+ key: 0,
318
+ start: __props.model[column.field[0]],
319
+ "onUpdate:start": ($event) => __props.model[column.field[0]] = $event,
320
+ end: __props.model[column.field[1]],
321
+ "onUpdate:end": ($event) => __props.model[column.field[1]] = $event,
322
+ "is-range": true,
323
+ style: { "width": "100%" }
324
+ }, { ref_for: true }, column.attrs, {
325
+ disabled: unref(isDisabled)(props, column),
326
+ timeRangeFill: column.timeRangeFill,
327
+ onChange: ($event) => onChangeHandler($event, column)
328
+ }), null, 16, ["start", "onUpdate:start", "end", "onUpdate:end", "disabled", "timeRangeFill", "onChange"])) : (openBlock(), createBlock(_sfc_main$1, mergeProps({
329
+ key: 1,
330
+ modelValue: __props.model[column.field],
331
+ "onUpdate:modelValue": ($event) => __props.model[column.field] = $event,
332
+ "is-range": false,
333
+ style: { "width": "100%" }
334
+ }, { ref_for: true }, column.attrs, {
335
+ disabled: unref(isDisabled)(props, column),
336
+ timeRangeFill: column.timeRangeFill,
337
+ onChange: ($event) => onChangeHandler($event, column)
338
+ }), null, 16, ["modelValue", "onUpdate:modelValue", "disabled", "timeRangeFill", "onChange"]))
339
+ ],
340
+ 64
341
+ /* STABLE_FRAGMENT */
342
+ )) : createCommentVNode("v-if", true)
343
+ ],
344
+ 4
345
+ /* STYLE */
346
+ )
347
+ ],
348
+ 4
349
+ /* STYLE */
350
+ ),
351
+ column.type === "date-picker" && ["daterange", "datetimerange"].includes((_b = column.attrs) == null ? void 0 : _b.type) && ((_c = column.timeRangeOptions) == null ? void 0 : _c.length) ? (openBlock(), createElementBlock("div", {
352
+ key: 0,
353
+ class: "flex text-main"
354
+ }, [
355
+ (openBlock(true), createElementBlock(
356
+ Fragment,
357
+ null,
358
+ renderList(column.timeRangeOptions, (item, index) => {
359
+ return openBlock(), createElementBlock("div", {
360
+ key: index,
361
+ class: "border-l border-border px-[10px] cursor-pointer",
362
+ onClick: ($event) => onTimeRangeClickHandler(column, item)
363
+ }, [
364
+ createElementVNode(
365
+ "span",
366
+ null,
367
+ toDisplayString(item.label),
368
+ 1
369
+ /* TEXT */
370
+ )
371
+ ], 8, ["onClick"]);
372
+ }),
373
+ 128
374
+ /* KEYED_FRAGMENT */
375
+ ))
376
+ ])) : createCommentVNode("v-if", true)
377
+ ])
378
+ ];
379
+ }),
380
+ _: 2
381
+ /* DYNAMIC */
382
+ }, 1032, ["prop"])) : createCommentVNode("v-if", true)
383
+ ],
384
+ 64
385
+ /* STABLE_FRAGMENT */
386
+ );
387
+ }),
388
+ 128
389
+ /* KEYED_FRAGMENT */
390
+ ))
391
+ ],
392
+ 512
393
+ /* NEED_PATCH */
394
+ )
395
+ ]),
396
+ _: 3
397
+ /* FORWARDED */
398
+ }, 16, ["model", "size", "style"])
399
+ ],
400
+ 2
401
+ /* CLASS */
402
+ );
403
+ };
404
+ }
405
+ });
406
+
407
+ export { _sfc_main as default };
408
+ //# sourceMappingURL=appSearch.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appSearch.vue.mjs","sources":["../../../packages/components/appSearch/appSearch.vue"],"sourcesContent":["<script setup>\nimport { computed, onUnmounted, unref, useTemplateRef } from 'vue'\nimport {\n ElForm,\n ElFormItem,\n ElInput,\n ElSelect,\n ElIcon,\n} from 'element-plus'\nimport { ArrowDown, Filter } from '@element-plus/icons-vue'\n// import SvgIcon from '../svgIcon'\nimport { useLocale } from '@hy-dispatch-ui-v3/hooks'\nimport { isArray } from '@hy-dispatch-ui-v3/utils'\nimport appDatePicker from '../appDatePicker/appDatePicker.vue'\nimport {\n useShrink,\n columnItemStyle,\n columnItemInputStyle,\n columnShowHandler,\n isDisabled,\n isEmptyValue,\n timeRangeHandler,\n} from './js/index.js'\nimport { resetAppSearchValue } from './js/useAppSearch.js'\nimport './style/appSearch.scss'\n\ndefineOptions({\n name: 'AppSearch',\n})\n\nconst props = defineProps({\n model: {\n type: Object,\n default: () => ({}),\n },\n columns: {\n type: Array,\n default: () => [],\n },\n loading: {\n type: Boolean,\n default: false,\n },\n size: {\n type: String,\n default: 'default', // '' | 'large' | 'default' | 'small'\n },\n hidden: {\n type: Boolean,\n default: false\n },\n class: {\n type: [String, Array, Object],\n },\n})\nconst emits = defineEmits(['search'])\n\nconst { t } = useLocale()\nconst formItemWrapper = useTemplateRef('formItemWrapper')\nconst { isExpand, containerHeight, switchShrink, shrinkDestroy } = useShrink(\n props,\n formItemWrapper\n)\nconst formColumnMap = computed(() => {\n return (props.columns || []).reduce((map, column) => {\n if (isArray(column.field)) {\n column.field.forEach((key) => map.set(key, column))\n } else {\n map.set(column.field, column)\n }\n return map\n }, new Map())\n})\nconst filterCount = computed(() => {\n const defaultValue = resetAppSearchValue(props.columns)\n const keys = Object.keys(defaultValue)\n if (!keys?.length) return 0\n const keySet = keys.reduce((keySet, key) => {\n if (\n isEmptyValue(defaultValue[key])\n ? !isEmptyValue(props.model[key])\n : defaultValue[key] !== props.model[key]\n ) {\n if (unref(formColumnMap).has(key)) {\n keySet.add(unref(formColumnMap).get(key).key)\n }\n }\n return keySet\n }, new Set())\n return keySet.size\n})\nconst appClass = computed(() => {\n return [\n props.class,\n { 'app-search-hidden': props.hidden },\n ].filter(Boolean)\n})\nconst containerStyle = computed(() => {\n const style = {}\n if (props.hidden) {\n style.height = `0px`\n } else if (unref(containerHeight)) {\n style.height = `${unref(containerHeight)}px`\n }\n return style\n})\n\nonUnmounted(() => {\n shrinkDestroy()\n})\n\nfunction onChangeHandler(value, column) {\n if (column.attrs?.onChange) {\n column.attrs.onChange(value)\n }\n emits('search')\n}\nfunction onKeydownEnterHander(e) {\n emits('search')\n}\nfunction resetFields(fields) {\n let columns = props.columns || []\n if (fields && fields?.length) {\n columns = fields.map((key) => formColumnMap.get(key)).filter(Boolean)\n }\n resetAppSearchValue(columns, props.model)\n}\nfunction onResetHandler() {\n resetFields()\n emits('search')\n}\nfunction onTimeRangeClickHandler(column, options) {\n const { field } = column\n const dateValue = timeRangeHandler(column, options)\n if (isArray(field)) {\n props.model[field[0]] = dateValue[0]\n props.model[field[1]] = dateValue[1]\n } else {\n props.model[field] = dateValue\n }\n emits('search')\n}\n\ndefineExpose({\n resetFields,\n})\n</script>\n\n<template>\n <div class=\"app-search\" :class=\"appClass\">\n <div\n class=\"app-search-header\"\n :class=\"{ 'app-search-header-hidden': hidden }\"\n >\n <div class=\"flex items-center gap-2\">\n <el-icon size=\"12\"><Filter /></el-icon>\n <span>{{ t('hy.filter') }}</span>\n <template v-if=\"filterCount > 0\">\n <span class=\"bg-theme02 text-theme font-bold leading-4 px-[6px]\">{{\n filterCount\n }}</span>\n <span class=\"text-auxiliary cursor-pointer\" @click=\"onResetHandler\">{{\n t('hy.reset')\n }}</span>\n </template>\n </div>\n <div\n class=\"ml-auto flex items-center gap-4 cursor-pointer select-none\"\n @click=\"switchShrink\"\n >\n <span class=\"text-auxiliary\">{{\n isExpand ? t('hy.packUp') : t('hy.expand')\n }}</span>\n <el-icon\n size=\"12\"\n class=\"transition-all duration-300\"\n :style=\"{ transform: `rotateX(${isExpand ? -180 : 0}deg)` }\"\n ><ArrowDown\n /></el-icon>\n </div>\n </div>\n <el-form\n :model=\"model\"\n label-position=\"top\"\n :size=\"size\"\n class=\"app-search-form\"\n v-bind=\"$attrs\"\n :style=\"containerStyle\"\n >\n <div ref=\"formItemWrapper\" class=\"app-search-container\">\n <!-- 表单项 -->\n <template v-for=\"column in columns\" :key=\"column.key\">\n <el-form-item\n v-if=\"columnShowHandler(props, column)\"\n :prop=\"isArray(column.field) ? column.field[0] : column.field\"\n >\n <div class=\"flex bg-backgroundv2 rounded\">\n <div class=\"flex\" :style=\"columnItemStyle(props, column)\">\n <!-- 表单label -->\n <div\n class=\"flex items-center text-auxiliary text-xs px-3 whitespace-nowrap border-r border-border\"\n >\n <slot\n v-if=\"column.labelSlot && $slots[column.labelSlot]\"\n :name=\"column.labelSlot\"\n :column=\"column\"\n ></slot>\n <span v-else>{{ column.label }}</span>\n </div>\n <!-- 表单组件 -->\n <div :style=\"columnItemInputStyle(props, column)\">\n <!-- 自定义具名插槽 -->\n <slot\n v-if=\"column.slot\"\n :name=\"column.slot\"\n :column=\"column\"\n />\n <!-- 输入框 -->\n <el-input\n v-else-if=\"column.type === 'input'\"\n v-model=\"model[column.field]\"\n v-bind=\"column.attrs\"\n :disabled=\"isDisabled(props, column)\"\n @keydown.enter=\"onKeydownEnterHander($event, column)\"\n @change=\"onChangeHandler($event, column)\"\n ></el-input>\n <!-- 选择框 -->\n <el-select\n v-else-if=\"column.type === 'select'\"\n v-model=\"model[column.field]\"\n v-bind=\"column.attrs\"\n :disabled=\"isDisabled(props, column)\"\n @change=\"onChangeHandler($event, column)\"\n ></el-select>\n <!-- 日期选择框 -->\n <template v-else-if=\"column.type === 'date-picker'\">\n <app-date-picker\n v-if=\"\n [\n 'datetimerange',\n 'daterange',\n 'monthrange',\n 'yearrange',\n ].includes(column.attrs?.type) && isArray(column.field)\n \"\n v-model:start=\"model[column.field[0]]\"\n v-model:end=\"model[column.field[1]]\"\n :is-range=\"true\"\n style=\"width: 100%\"\n v-bind=\"column.attrs\"\n :disabled=\"isDisabled(props, column)\"\n :timeRangeFill=\"column.timeRangeFill\"\n @change=\"onChangeHandler($event, column)\"\n ></app-date-picker>\n <app-date-picker\n v-else\n v-model=\"model[column.field]\"\n :is-range=\"false\"\n style=\"width: 100%\"\n v-bind=\"column.attrs\"\n :disabled=\"isDisabled(props, column)\"\n :timeRangeFill=\"column.timeRangeFill\"\n @change=\"onChangeHandler($event, column)\"\n ></app-date-picker>\n </template>\n </div>\n </div>\n <div\n v-if=\"\n column.type === 'date-picker' &&\n ['daterange', 'datetimerange'].includes(column.attrs?.type) &&\n column.timeRangeOptions?.length\n \"\n class=\"flex text-main\"\n >\n <div\n v-for=\"(item, index) in column.timeRangeOptions\"\n :key=\"index\"\n class=\"border-l border-border px-[10px] cursor-pointer\"\n @click=\"onTimeRangeClickHandler(column, item)\"\n >\n <span>{{ item.label }}</span>\n </div>\n </div>\n </div>\n </el-form-item>\n </template>\n </div>\n </el-form>\n </div>\n</template>\n"],"names":["__MACROS_defineComponent","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import _sfc_main from './appSearch.vue.mjs';
2
+ export { useAppSearch } from './js/useAppSearch.mjs';
3
+ import { withInstall } from '../../utils/handler.mjs';
4
+
5
+ const AppSearch = withInstall(_sfc_main);
6
+
7
+ export { AppSearch, AppSearch as default };
8
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../packages/components/appSearch/index.js"],"sourcesContent":["import componnet from './appSearch.vue'\nimport { withInstall } from '@hy-dispatch-ui-v3/utils'\n\nconst AppSearch = withInstall(componnet)\n\nexport { AppSearch }\n\nexport { useAppSearch } from './js/useAppSearch.js'\n\nexport default AppSearch\n"],"names":["componnet"],"mappings":";;;;AAEK,MAAC,SAAS,GAAG,WAAW,CAACA,SAAS;;;;"}
@@ -0,0 +1,114 @@
1
+ import dayjs from 'dayjs';
2
+ import { ref, watch, nextTick, unref } from 'vue';
3
+ import { useMaintainStore } from '../../../store/maintain.mjs';
4
+ import { isEmpty, isArray, isBoolean, isFunction, isNumber, isString } from '../../../utils/is.mjs';
5
+
6
+ function columnItemStyle(props, column) {
7
+ const { width } = column;
8
+ const style = {};
9
+ if (isNumber(width)) {
10
+ style.width = `${width}px`;
11
+ } else if (isString(width)) {
12
+ style.width = /(px|em|rem|vw|vh)$/.test(width) ? width : `${width}px`;
13
+ }
14
+ return style;
15
+ }
16
+ function columnItemInputStyle(props, column) {
17
+ const { width, inputWidth } = column;
18
+ const style = {};
19
+ if (!width && inputWidth) {
20
+ if (isNumber(inputWidth)) {
21
+ style.width = `${inputWidth}px`;
22
+ } else if (isString(inputWidth)) {
23
+ style.width = /(px|em|rem|vw|vh)$/.test(inputWidth) ? inputWidth : `${inputWidth}px`;
24
+ }
25
+ } else {
26
+ style.width = "0px";
27
+ style.flex = "1 1 0%";
28
+ }
29
+ return style;
30
+ }
31
+ function columnShowHandler(props, column) {
32
+ const show = unref(column.show);
33
+ if (isBoolean(show)) return show;
34
+ if (isFunction(show)) return show(column, props.model);
35
+ return true;
36
+ }
37
+ function isDisabled(props, column) {
38
+ var _a;
39
+ return !!(props.loading || ((_a = column.attrs) == null ? void 0 : _a.disabled));
40
+ }
41
+ function isEmptyValue(e) {
42
+ return isEmpty(e) || isArray(e) && !e.length;
43
+ }
44
+ function useShrink(props, templateRef) {
45
+ const isExpand = ref(false);
46
+ const containerHeight = ref(getContainerPickUpHeight());
47
+ const maintainStore = useMaintainStore();
48
+ const resizeExpandKey = /* @__PURE__ */ Symbol("appSearchExpand");
49
+ function getContainerPickUpHeight() {
50
+ switch (props.size) {
51
+ case "large":
52
+ return 41;
53
+ case "small":
54
+ return 25;
55
+ case "":
56
+ case "default":
57
+ default:
58
+ return 33;
59
+ }
60
+ }
61
+ function switchShrink() {
62
+ isExpand.value = !isExpand.value;
63
+ shrinkResizeHandler();
64
+ }
65
+ async function shrinkResizeHandler() {
66
+ const container = unref(templateRef);
67
+ containerHeight.value = unref(isExpand) ? container.clientHeight : getContainerPickUpHeight();
68
+ }
69
+ watch(
70
+ () => [props.size, props.model],
71
+ () => {
72
+ nextTick(() => {
73
+ shrinkResizeHandler();
74
+ maintainStore.addResize(shrinkResizeHandler, resizeExpandKey);
75
+ });
76
+ },
77
+ { immediate: true, deep: true }
78
+ );
79
+ return {
80
+ isExpand,
81
+ containerHeight,
82
+ switchShrink,
83
+ shrinkResizeHandler,
84
+ shrinkDestroy() {
85
+ maintainStore.removeResize(resizeExpandKey);
86
+ }
87
+ };
88
+ }
89
+ function timeRangeHandler(column, options) {
90
+ const { value, unit } = options;
91
+ const { timeRangeFill, attrs } = column;
92
+ const format = attrs.valueFormat || "YYYY-MM-DD";
93
+ const date = dayjs(Date.now());
94
+ switch (unit) {
95
+ case "year":
96
+ case "month":
97
+ return [
98
+ date.subtract(value, unit).format(`${format}${timeRangeFill ? " 00:00:00" : ""}`),
99
+ current
100
+ ];
101
+ case "day":
102
+ default:
103
+ return value === 1 ? [
104
+ date.format(`${format}${timeRangeFill ? " 00:00:00" : ""}`),
105
+ date.format(`${format}${timeRangeFill ? " 23:59:59" : ""}`)
106
+ ] : [
107
+ date.subtract(value, unit).format(`${format}${timeRangeFill ? " 00:00:00" : ""}`),
108
+ date.format(`${format}${timeRangeFill ? " 23:59:59" : ""}`)
109
+ ];
110
+ }
111
+ }
112
+
113
+ export { columnItemInputStyle, columnItemStyle, columnShowHandler, isDisabled, isEmptyValue, timeRangeHandler, useShrink };
114
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../packages/components/appSearch/js/index.js"],"sourcesContent":["import dayjs from 'dayjs'\nimport { ref, unref, nextTick, watch } from 'vue'\nimport {\n isArray,\n isBoolean,\n isEmpty,\n isFunction,\n isNumber,\n isString,\n funRunHandler,\n} from '@hy-dispatch-ui-v3/utils'\nimport { useMaintainStore } from '@hy-dispatch-ui-v3/store'\n\n// 列样式\nexport function columnItemStyle(props, column) {\n const { width } = column\n const style = {}\n if (isNumber(width)) {\n style.width = `${width}px`\n } else if (isString(width)) {\n style.width = /(px|em|rem|vw|vh)$/.test(width) ? width : `${width}px`\n }\n return style\n}\n\nexport function columnItemInputStyle(props, column) {\n const { width, inputWidth } = column\n const style = {}\n if (!width && inputWidth) {\n if (isNumber(inputWidth)) {\n style.width = `${inputWidth}px`\n } else if (isString(inputWidth)) {\n style.width = /(px|em|rem|vw|vh)$/.test(inputWidth)\n ? inputWidth\n : `${inputWidth}px`\n }\n } else {\n style.width = '0px'\n style.flex = '1 1 0%'\n }\n return style\n}\n\nexport function columnShowHandler(props, column) {\n const show = unref(column.show)\n if (isBoolean(show)) return show\n if (isFunction(show)) return show(column, props.model)\n return true\n}\n\n// 是否禁用\nexport function isDisabled(props, column) {\n return !!(props.loading || column.attrs?.disabled)\n}\n\n// 是否为空值\nexport function isEmptyValue(e) {\n return isEmpty(e) || (isArray(e) && !e.length)\n}\n\n// 展开/收起 hook\nexport function useShrink(props, templateRef) {\n const isExpand = ref(false)\n const containerHeight = ref(getContainerPickUpHeight())\n const maintainStore = useMaintainStore()\n const resizeExpandKey = Symbol('appSearchExpand')\n function getContainerPickUpHeight() {\n switch (props.size) {\n case 'large':\n return 41\n case 'small':\n return 25\n case '':\n case 'default':\n default:\n return 33\n }\n }\n function switchShrink() {\n isExpand.value = !isExpand.value\n shrinkResizeHandler()\n }\n async function shrinkResizeHandler() {\n const container = unref(templateRef)\n containerHeight.value = unref(isExpand)\n ? container.clientHeight\n : getContainerPickUpHeight()\n }\n watch(\n () => [props.size, props.model],\n () => {\n nextTick(() => {\n shrinkResizeHandler()\n maintainStore.addResize(shrinkResizeHandler, resizeExpandKey)\n })\n },\n { immediate: true, deep: true }\n )\n return {\n isExpand,\n containerHeight,\n switchShrink,\n shrinkResizeHandler,\n shrinkDestroy() {\n maintainStore.removeResize(resizeExpandKey)\n },\n }\n}\n\n// 时间范围控件处理\nexport function timeRangeHandler(column, options) {\n const { value, unit } = options\n const { timeRangeFill, attrs } = column\n const format = attrs.valueFormat || 'YYYY-MM-DD'\n const date = dayjs(Date.now())\n switch (unit) {\n case 'year':\n case 'month':\n return [\n date\n .subtract(value, unit)\n .format(`${format}${timeRangeFill ? ' 00:00:00' : ''}`),\n current,\n ]\n case 'day':\n default:\n return value === 1\n ? [\n date.format(`${format}${timeRangeFill ? ' 00:00:00' : ''}`),\n date.format(`${format}${timeRangeFill ? ' 23:59:59' : ''}`),\n ]\n : [\n date\n .subtract(value, unit)\n .format(`${format}${timeRangeFill ? ' 00:00:00' : ''}`),\n date.format(`${format}${timeRangeFill ? ' 23:59:59' : ''}`),\n ]\n }\n}\n"],"names":[],"mappings":"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"}