@robot-admin/naive-ui-components 0.11.8 → 0.13.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 (310) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +172 -29
  3. package/README_EN.md +171 -28
  4. package/SECURITY.md +1 -0
  5. package/dist/C_ActionBar.cjs +1 -1
  6. package/dist/C_ActionBar.css +67 -67
  7. package/dist/C_ActionBar.d.cts +2 -2
  8. package/dist/C_ActionBar.d.ts +2 -2
  9. package/dist/C_ActionBar.js +1 -1
  10. package/dist/C_ActionBar2.cjs +1 -1
  11. package/dist/C_ActionBar2.js +1 -1
  12. package/dist/C_AntV.css +70 -70
  13. package/dist/C_AntV2.cjs +3 -3
  14. package/dist/C_AntV2.js +3 -3
  15. package/dist/C_AudioPlayer.css +81 -66
  16. package/dist/C_AudioPlayer.d.cts +1 -1
  17. package/dist/C_AudioPlayer.d.ts +1 -1
  18. package/dist/C_AudioPlayer2.cjs +1 -1
  19. package/dist/C_AudioPlayer2.js +1 -1
  20. package/dist/C_AvatarGroup.css +40 -25
  21. package/dist/C_AvatarGroup.d.cts +1 -1
  22. package/dist/C_AvatarGroup.d.ts +1 -1
  23. package/dist/C_AvatarGroup2.cjs +1 -1
  24. package/dist/C_AvatarGroup2.js +1 -1
  25. package/dist/C_Barcode.css +6 -6
  26. package/dist/C_Barcode.d.cts +1 -1
  27. package/dist/C_Barcode.d.ts +1 -1
  28. package/dist/C_Barcode2.cjs +1 -1
  29. package/dist/C_Barcode2.js +1 -1
  30. package/dist/C_Breadcrumb.css +14 -14
  31. package/dist/C_Breadcrumb.d.cts +1 -1
  32. package/dist/C_Breadcrumb.d.ts +1 -1
  33. package/dist/C_Breadcrumb2.cjs +1 -1
  34. package/dist/C_Breadcrumb2.js +1 -1
  35. package/dist/C_Captcha.cjs +1 -1
  36. package/dist/C_Captcha.css +193 -51
  37. package/dist/C_Captcha.d.cts +2 -3
  38. package/dist/C_Captcha.d.ts +2 -3
  39. package/dist/C_Captcha.js +1 -1
  40. package/dist/C_Captcha2.cjs +1 -1
  41. package/dist/C_Captcha2.js +1 -1
  42. package/dist/C_Cascade.css +2 -2
  43. package/dist/C_Cascade.d.cts +1 -1
  44. package/dist/C_Cascade.d.ts +1 -1
  45. package/dist/C_Cascade2.cjs +1 -1
  46. package/dist/C_Cascade2.js +1 -1
  47. package/dist/C_Chat.css +96 -78
  48. package/dist/C_Chat.d.cts +1 -1
  49. package/dist/C_Chat.d.ts +1 -1
  50. package/dist/C_Chat2.cjs +1 -1
  51. package/dist/C_Chat2.js +1 -1
  52. package/dist/C_City.css +52 -28
  53. package/dist/C_City.d.cts +1 -1
  54. package/dist/C_City.d.ts +1 -1
  55. package/dist/C_City2.cjs +1 -1
  56. package/dist/C_City2.js +1 -1
  57. package/dist/C_Code.css +48 -42
  58. package/dist/C_Code.d.cts +1 -1
  59. package/dist/C_Code.d.ts +1 -1
  60. package/dist/C_Code2.cjs +1 -1
  61. package/dist/C_Code2.js +1 -1
  62. package/dist/C_CollapsePanel.css +14 -14
  63. package/dist/C_CollapsePanel2.cjs +1 -1
  64. package/dist/C_CollapsePanel2.js +1 -1
  65. package/dist/C_ContextMenu.css +14 -14
  66. package/dist/C_ContextMenu.d.cts +1 -1
  67. package/dist/C_ContextMenu.d.ts +1 -1
  68. package/dist/C_ContextMenu2.cjs +1 -1
  69. package/dist/C_ContextMenu2.js +1 -1
  70. package/dist/C_Cron.css +94 -55
  71. package/dist/C_Cron2.cjs +1 -1
  72. package/dist/C_Cron2.js +1 -1
  73. package/dist/C_Date.d.cts +1 -1
  74. package/dist/C_Date.d.ts +1 -1
  75. package/dist/C_Date2.cjs +1 -1
  76. package/dist/C_Date2.js +1 -1
  77. package/dist/C_Draggable.css +48 -48
  78. package/dist/C_Draggable2.cjs +1 -1
  79. package/dist/C_Draggable2.js +1 -1
  80. package/dist/C_Editor.css +13 -14
  81. package/dist/C_Editor.d.cts +1 -1
  82. package/dist/C_Editor.d.ts +1 -1
  83. package/dist/C_Editor2.cjs +1 -1
  84. package/dist/C_Editor2.js +1 -1
  85. package/dist/C_FilePreview.css +18 -18
  86. package/dist/C_FilePreview2.cjs +1 -1
  87. package/dist/C_FilePreview2.js +1 -1
  88. package/dist/C_Form.base.css +36 -36
  89. package/dist/C_Form.css +49 -50
  90. package/dist/C_Form2.cjs +1 -1
  91. package/dist/C_Form2.js +1 -1
  92. package/dist/C_FormModal.cjs +1 -0
  93. package/dist/C_FormModal.css +41 -0
  94. package/dist/C_FormModal.d.cts +2 -0
  95. package/dist/C_FormModal.d.ts +3 -0
  96. package/dist/C_FormModal.js +1 -0
  97. package/dist/C_FormModal2.cjs +1 -0
  98. package/dist/C_FormModal2.js +1 -0
  99. package/dist/C_FormSearch.css +45 -45
  100. package/dist/C_FormSearch2.cjs +1 -1
  101. package/dist/C_FormSearch2.js +1 -1
  102. package/dist/C_FormulaEditor.css +94 -55
  103. package/dist/C_FormulaEditor2.cjs +2 -2
  104. package/dist/C_FormulaEditor2.js +2 -2
  105. package/dist/C_FullCalendar.css +8 -1
  106. package/dist/C_FullCalendar2.cjs +1 -1
  107. package/dist/C_FullCalendar2.js +1 -1
  108. package/dist/C_GlobalSearch2.cjs +1 -1
  109. package/dist/C_GlobalSearch2.js +1 -1
  110. package/dist/C_Guide.css +14 -14
  111. package/dist/C_Guide2.cjs +1 -1
  112. package/dist/C_Guide2.js +1 -1
  113. package/dist/C_Icon.css +14 -14
  114. package/dist/C_Icon2.cjs +1 -1
  115. package/dist/C_Icon2.js +1 -1
  116. package/dist/C_ImageCropper.css +22 -22
  117. package/dist/C_ImageCropper2.cjs +1 -1
  118. package/dist/C_ImageCropper2.js +1 -1
  119. package/dist/C_Language.css +14 -14
  120. package/dist/C_Language2.cjs +1 -1
  121. package/dist/C_Language2.js +1 -1
  122. package/dist/C_Login.css +232 -149
  123. package/dist/C_Login2.cjs +1 -1
  124. package/dist/C_Login2.js +1 -1
  125. package/dist/C_Map.css +3 -3
  126. package/dist/C_Map2.cjs +1 -1
  127. package/dist/C_Map2.js +1 -1
  128. package/dist/C_Markdown.css +35 -35
  129. package/dist/C_Markdown2.cjs +1 -1
  130. package/dist/C_Markdown2.js +1 -1
  131. package/dist/C_Menu.d.cts +1 -1
  132. package/dist/C_Menu2.cjs +1 -1
  133. package/dist/C_Menu2.js +1 -1
  134. package/dist/C_NotificationCenter.css +30 -30
  135. package/dist/C_NotificationCenter2.cjs +1 -1
  136. package/dist/C_NotificationCenter2.js +1 -1
  137. package/dist/C_OrgChart.css +4 -0
  138. package/dist/C_OrgChart2.cjs +1 -1
  139. package/dist/C_OrgChart2.js +1 -1
  140. package/dist/C_Progress2.cjs +1 -1
  141. package/dist/C_Progress2.js +1 -1
  142. package/dist/C_QRCode.css +8 -8
  143. package/dist/C_QRCode2.cjs +1 -1
  144. package/dist/C_QRCode2.js +1 -1
  145. package/dist/C_Signature.css +14 -14
  146. package/dist/C_Signature2.cjs +1 -1
  147. package/dist/C_Signature2.js +1 -1
  148. package/dist/C_Skeleton2.cjs +1 -1
  149. package/dist/C_Skeleton2.js +1 -1
  150. package/dist/C_SplitPane.css +39 -39
  151. package/dist/C_SplitPane2.cjs +1 -1
  152. package/dist/C_SplitPane2.js +1 -1
  153. package/dist/C_Steps.css +48 -38
  154. package/dist/C_Steps2.cjs +1 -1
  155. package/dist/C_Steps2.js +1 -1
  156. package/dist/C_Table.base.css +160 -160
  157. package/dist/C_Table.cjs +1 -1
  158. package/dist/C_Table.css +173 -174
  159. package/dist/C_Table.d.ts +4 -3
  160. package/dist/C_Table.js +1 -1
  161. package/dist/C_Tabs.cjs +1 -0
  162. package/dist/C_Tabs.css +1 -0
  163. package/dist/C_Tabs.d.cts +2 -0
  164. package/dist/C_Tabs.d.ts +2 -0
  165. package/dist/C_Tabs.js +1 -0
  166. package/dist/C_TagsView.css +52 -52
  167. package/dist/C_TagsView2.cjs +1 -1
  168. package/dist/C_TagsView2.js +1 -1
  169. package/dist/C_Theme.css +14 -14
  170. package/dist/C_Theme2.cjs +1 -1
  171. package/dist/C_Theme2.js +1 -1
  172. package/dist/C_Time.css +4 -4
  173. package/dist/C_Time2.cjs +1 -1
  174. package/dist/C_Time2.js +1 -1
  175. package/dist/C_Timeline.css +76 -58
  176. package/dist/C_Timeline2.cjs +1 -1
  177. package/dist/C_Timeline2.js +1 -1
  178. package/dist/C_Transfer.css +51 -51
  179. package/dist/C_Transfer2.cjs +1 -1
  180. package/dist/C_Transfer2.js +1 -1
  181. package/dist/C_Tree.css +35 -32
  182. package/dist/C_Tree2.cjs +1 -1
  183. package/dist/C_Tree2.js +1 -1
  184. package/dist/C_Upload.css +53 -50
  185. package/dist/C_Upload2.cjs +1 -1
  186. package/dist/C_Upload2.js +1 -1
  187. package/dist/C_VideoPlayer.css +17 -13
  188. package/dist/C_VideoPlayer2.cjs +2 -2
  189. package/dist/C_VideoPlayer2.js +2 -2
  190. package/dist/C_VtableGantt.css +19 -19
  191. package/dist/C_VtableGantt2.cjs +1 -1
  192. package/dist/C_VtableGantt2.js +1 -1
  193. package/dist/C_WaterFall.css +19 -15
  194. package/dist/C_WaterFall2.cjs +1 -1
  195. package/dist/C_WaterFall2.js +1 -1
  196. package/dist/C_WorkFlow.css +123 -123
  197. package/dist/C_WorkFlow2.cjs +1 -1
  198. package/dist/C_WorkFlow2.js +1 -1
  199. package/dist/constants.d.cts +2 -2
  200. package/dist/constants.d.ts +2 -2
  201. package/dist/constants2.d.cts +3 -3
  202. package/dist/constants2.d.ts +3 -3
  203. package/dist/constants3.d.cts +8 -4
  204. package/dist/constants3.d.ts +8 -4
  205. package/dist/constants4.d.cts +6 -6
  206. package/dist/constants4.d.ts +6 -6
  207. package/dist/constants5.d.cts +2 -2
  208. package/dist/constants5.d.ts +2 -2
  209. package/dist/data.d.cts +108 -0
  210. package/dist/data.d.ts +108 -0
  211. package/dist/data2.cjs +1 -0
  212. package/dist/data2.js +1 -0
  213. package/dist/index.cjs +1 -1
  214. package/dist/index.d.cts +49 -49
  215. package/dist/index.d.ts +51 -49
  216. package/dist/index.js +1 -1
  217. package/dist/index.vue.d.cts +74 -69
  218. package/dist/index.vue.d.ts +74 -69
  219. package/dist/index10.vue.d.cts +80 -39
  220. package/dist/index10.vue.d.ts +68 -77
  221. package/dist/index11.vue.d.cts +68 -77
  222. package/dist/index11.vue.d.ts +54 -69
  223. package/dist/index12.vue.d.cts +54 -69
  224. package/dist/index12.vue.d.ts +52 -58
  225. package/dist/index13.vue.d.cts +52 -58
  226. package/dist/index13.vue.d.ts +1 -1
  227. package/dist/index14.vue.d.cts +1 -1
  228. package/dist/index14.vue.d.ts +14 -47
  229. package/dist/index15.vue.d.cts +14 -47
  230. package/dist/index16.vue.d.ts +15 -12
  231. package/dist/index17.vue.d.cts +15 -12
  232. package/dist/index17.vue.d.ts +4 -4
  233. package/dist/index18.vue.d.cts +4 -4
  234. package/dist/index18.vue.d.ts +2 -2
  235. package/dist/index19.vue.d.cts +1 -1
  236. package/dist/index19.vue.d.ts +1 -1
  237. package/dist/index2.vue.d.cts +70 -65
  238. package/dist/index2.vue.d.ts +70 -65
  239. package/dist/index20.vue.d.cts +1 -1
  240. package/dist/index20.vue.d.ts +1 -1
  241. package/dist/index24.vue.d.cts +3 -3
  242. package/dist/index24.vue.d.ts +3 -3
  243. package/dist/index25.vue.d.cts +1 -1
  244. package/dist/index25.vue.d.ts +1 -1
  245. package/dist/index26.vue.d.cts +5 -5
  246. package/dist/index26.vue.d.ts +5 -5
  247. package/dist/index27.vue.d.cts +1 -1
  248. package/dist/index27.vue.d.ts +1 -1
  249. package/dist/index3.vue.d.cts +30 -80
  250. package/dist/index3.vue.d.ts +30 -80
  251. package/dist/index4.vue.d.cts +130 -30
  252. package/dist/index4.vue.d.ts +22 -30
  253. package/dist/index5.vue.d.cts +18 -126
  254. package/dist/index5.vue.d.ts +22 -19
  255. package/dist/index6.vue.d.cts +22 -19
  256. package/dist/index6.vue.d.ts +117 -22
  257. package/dist/index7.vue.d.cts +117 -22
  258. package/dist/index7.vue.d.ts +17 -110
  259. package/dist/index8.vue.d.cts +17 -110
  260. package/dist/index8.vue.d.ts +37 -24
  261. package/dist/index9.vue.d.cts +37 -24
  262. package/dist/index9.vue.d.ts +80 -39
  263. package/dist/mapUtils.d.cts +2 -2
  264. package/dist/mapUtils.d.ts +2 -2
  265. package/dist/presets.d.cts +96 -0
  266. package/dist/presets.d.ts +96 -0
  267. package/dist/resolver.cjs +1 -1
  268. package/dist/resolver.d.cts +1 -1
  269. package/dist/resolver.d.ts +1 -1
  270. package/dist/resolver.js +1 -1
  271. package/dist/style.css +1735 -1400
  272. package/dist/useCalendarEvents.d.cts +23 -18
  273. package/dist/useCalendarEvents.d.ts +23 -18
  274. package/dist/useCollapsePanel.d.cts +4 -3
  275. package/dist/useCollapsePanel.d.ts +4 -3
  276. package/dist/useCropperCore.d.cts +32 -17
  277. package/dist/useCropperCore.d.ts +32 -17
  278. package/dist/useDraggableLayout.d.cts +2 -2
  279. package/dist/useDraggableLayout.d.ts +2 -2
  280. package/dist/useDynamicFormState.d.cts +7 -2
  281. package/dist/useDynamicFormState.d.ts +7 -2
  282. package/dist/useEdgeInteraction.d.cts +20 -19
  283. package/dist/useEdgeInteraction.d.ts +20 -19
  284. package/dist/useFullscreen.d.cts +6 -6
  285. package/dist/useFullscreen.d.ts +6 -6
  286. package/dist/useInfiniteScroll.d.cts +1 -1
  287. package/dist/useInfiniteScroll.d.ts +1 -1
  288. package/dist/useQRCode.d.cts +5 -4
  289. package/dist/useQRCode.d.ts +5 -4
  290. package/dist/useSearchState.d.cts +9 -9
  291. package/dist/useSearchState.d.ts +9 -9
  292. package/dist/useSignatureHistory.d.cts +18 -10
  293. package/dist/useSignatureHistory.d.ts +18 -10
  294. package/dist/useSplitResize.d.cts +7 -7
  295. package/dist/useSplitResize.d.ts +7 -7
  296. package/dist/useTableQuery.cjs +3 -3
  297. package/dist/useTableQuery.d.cts +12 -5
  298. package/dist/useTableQuery.d.ts +12 -5
  299. package/dist/useTableQuery.js +3 -3
  300. package/dist/useTimeSelection.d.cts +6 -3
  301. package/dist/useTimeSelection.d.ts +6 -3
  302. package/dist/useTreeOperations.d.cts +8 -8
  303. package/dist/useTreeOperations.d.ts +8 -8
  304. package/dist/useWorkflowValidation.d.cts +6 -4
  305. package/dist/useWorkflowValidation.d.ts +6 -4
  306. package/dist/verification.d.cts +71 -6
  307. package/dist/verification.d.ts +71 -6
  308. package/package.json +5 -3
  309. package/dist/types.d.ts +0 -58
  310. package/dist/types2.d.cts +0 -58
package/dist/C_Cron.css CHANGED
@@ -1,9 +1,13 @@
1
- /* unplugin-vue-components disabled */.cron-field-editor__grid[data-v-e6fa8e5b] {
1
+ /* unplugin-vue-components disabled */.cron-field-editor__grid[data-v-60c57fc6] {
2
2
  display: grid;
3
3
  grid-template-columns: repeat(var(--cols, 10), 1fr);
4
4
  gap: 4px;
5
5
  }
6
- .cron-field-editor__cell[data-v-e6fa8e5b] {
6
+ .cron-field-editor__cell[data-v-60c57fc6] {
7
+ appearance: none;
8
+ border: 0;
9
+ background: transparent;
10
+ font: inherit;
7
11
  display: flex;
8
12
  align-items: center;
9
13
  justify-content: center;
@@ -14,22 +18,28 @@
14
18
  transition: all var(--c-transition, 0.2s ease);
15
19
  user-select: none;
16
20
  color: var(--c-text-2);
21
+ }
22
+ .cron-field-editor__cell[data-v-60c57fc6]:focus-visible {
23
+ outline: 2px solid var(--c-primary);
24
+ outline-offset: 1px;
25
+ }
26
+ .cron-field-editor__cell[data-v-60c57fc6] {
17
27
  /* 非交互高亮(every / range / step 的视觉反馈) */
18
28
  }
19
- .cron-field-editor__cell--on[data-v-e6fa8e5b]:not(.cron-field-editor__cell--pick) {
29
+ .cron-field-editor__cell--on[data-v-60c57fc6]:not(.cron-field-editor__cell--pick) {
20
30
  background: color-mix(in srgb, var(--c-primary) 12%, transparent);
21
31
  color: var(--c-primary);
22
32
  }
23
- .cron-field-editor__cell[data-v-e6fa8e5b] {
33
+ .cron-field-editor__cell[data-v-60c57fc6] {
24
34
  /* 可交互模式(specific) */
25
35
  }
26
- .cron-field-editor__cell--pick[data-v-e6fa8e5b] {
36
+ .cron-field-editor__cell--pick[data-v-60c57fc6] {
27
37
  cursor: pointer;
28
38
  }
29
- .cron-field-editor__cell--pick[data-v-e6fa8e5b]:hover:not(.cron-field-editor__cell--on) {
39
+ .cron-field-editor__cell--pick[data-v-60c57fc6]:hover:not(.cron-field-editor__cell--on) {
30
40
  background: var(--c-bg-card);
31
41
  }
32
- .cron-field-editor__cell--pick.cron-field-editor__cell--on[data-v-e6fa8e5b] {
42
+ .cron-field-editor__cell--pick.cron-field-editor__cell--on[data-v-60c57fc6] {
33
43
  background: var(--c-primary);
34
44
  color: #fff;
35
45
  font-weight: 600;
@@ -77,7 +87,7 @@
77
87
  font-size: 12px;
78
88
  flex-shrink: 0;
79
89
  }
80
- /* unplugin-vue-components disabled */.cron-templates__header[data-v-fe320f38] {
90
+ /* unplugin-vue-components disabled */.cron-templates__header[data-v-241e79f6] {
81
91
  display: flex;
82
92
  align-items: center;
83
93
  gap: 6px;
@@ -86,46 +96,57 @@
86
96
  margin-bottom: 10px;
87
97
  color: var(--c-text-1);
88
98
  }
89
- .cron-templates__cards[data-v-fe320f38] {
99
+ .cron-templates__cards[data-v-241e79f6] {
90
100
  display: grid;
91
101
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
92
102
  gap: 8px;
93
103
  }
94
- .cron-templates__card[data-v-fe320f38] {
104
+ .cron-templates__card[data-v-241e79f6] {
105
+ appearance: none;
106
+ font: inherit;
107
+ text-align: left;
95
108
  padding: 10px 12px;
96
109
  border-radius: 8px;
97
110
  border: 1px solid var(--c-border);
98
111
  cursor: pointer;
99
112
  transition: all var(--c-transition, 0.2s ease);
100
113
  }
101
- .cron-templates__card[data-v-fe320f38]:hover {
114
+ .cron-templates__card[data-v-241e79f6]:focus-visible {
115
+ outline: 2px solid var(--c-primary);
116
+ outline-offset: 2px;
117
+ }
118
+ .cron-templates__card[data-v-241e79f6]:disabled {
119
+ cursor: not-allowed;
120
+ opacity: 0.6;
121
+ }
122
+ .cron-templates__card[data-v-241e79f6]:hover {
102
123
  border-color: var(--c-primary);
103
124
  background: color-mix(in srgb, var(--c-primary) 4%, transparent);
104
125
  }
105
- .cron-templates__card--active[data-v-fe320f38] {
126
+ .cron-templates__card--active[data-v-241e79f6] {
106
127
  border-color: var(--c-primary);
107
128
  background: color-mix(in srgb, var(--c-primary) 8%, transparent);
108
129
  }
109
- .cron-templates__card-name[data-v-fe320f38] {
130
+ .cron-templates__card-name[data-v-241e79f6] {
110
131
  font-size: 13px;
111
132
  font-weight: 500;
112
133
  line-height: 1.4;
113
134
  }
114
- .cron-templates__card-expr[data-v-fe320f38] {
135
+ .cron-templates__card-expr[data-v-241e79f6] {
115
136
  font-family: "Courier New", Courier, monospace;
116
137
  font-size: 11px;
117
138
  color: var(--c-text-4);
118
139
  margin-top: 2px;
119
140
  }
120
141
  /* unplugin-vue-components disabled *//* Cron 表达式编辑器 - 组件级全局样式 */
121
- .c-cron[data-v-06e7be26] {
142
+ .c-cron[data-v-2594f81f] {
122
143
  padding: 20px;
123
144
  border-radius: 10px;
124
145
  border: 1px solid var(--c-border);
125
146
  background: var(--c-bg-card);
126
147
  /* ═══════ 顶部 ═══════ */
127
148
  }
128
- .c-cron__header[data-v-06e7be26] {
149
+ .c-cron__header[data-v-2594f81f] {
129
150
  display: flex;
130
151
  flex-direction: column;
131
152
  gap: 12px;
@@ -133,29 +154,34 @@
133
154
  border-bottom: 1px solid var(--c-border);
134
155
  margin-bottom: 16px;
135
156
  }
136
- .c-cron__title-row[data-v-06e7be26] {
157
+ .c-cron__title-row[data-v-2594f81f] {
137
158
  display: flex;
138
159
  align-items: center;
139
160
  justify-content: space-between;
140
161
  }
141
- .c-cron__title[data-v-06e7be26] {
162
+ .c-cron__title[data-v-2594f81f] {
142
163
  display: flex;
143
164
  align-items: center;
144
165
  gap: 6px;
145
166
  font-weight: 600;
146
167
  font-size: 15px;
147
168
  }
148
- .c-cron[data-v-06e7be26] {
169
+ .c-cron[data-v-2594f81f] {
149
170
  /* ─── 分段式字段选择器 ──────────────────── */
150
171
  }
151
- .c-cron__segments[data-v-06e7be26] {
172
+ .c-cron__segments[data-v-2594f81f] {
152
173
  display: flex;
153
174
  gap: 2px;
154
175
  padding: 3px;
155
176
  border-radius: 10px;
156
177
  background: var(--c-bg);
157
178
  }
158
- .c-cron__segment[data-v-06e7be26] {
179
+ .c-cron__segment[data-v-2594f81f] {
180
+ appearance: none;
181
+ border: 0;
182
+ background: transparent;
183
+ color: inherit;
184
+ font: inherit;
159
185
  flex: 1;
160
186
  display: flex;
161
187
  flex-direction: column;
@@ -167,20 +193,24 @@
167
193
  user-select: none;
168
194
  min-width: 0;
169
195
  }
170
- .c-cron__segment[data-v-06e7be26]:not(.c-cron__segment--active):hover {
196
+ .c-cron__segment[data-v-2594f81f]:focus-visible {
197
+ outline: 2px solid var(--c-primary);
198
+ outline-offset: 1px;
199
+ }
200
+ .c-cron__segment[data-v-2594f81f]:not(.c-cron__segment--active):hover {
171
201
  background: color-mix(in srgb, var(--c-bg-card) 60%, transparent);
172
202
  }
173
- .c-cron__segment--active[data-v-06e7be26] {
203
+ .c-cron__segment--active[data-v-2594f81f] {
174
204
  background: var(--c-bg-card);
175
205
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
176
206
  }
177
- .c-cron__segment--active .c-cron__segment-value[data-v-06e7be26] {
207
+ .c-cron__segment--active .c-cron__segment-value[data-v-2594f81f] {
178
208
  color: var(--c-primary);
179
209
  }
180
- .c-cron__segment--wildcard:not(.c-cron__segment--active) .c-cron__segment-value[data-v-06e7be26] {
210
+ .c-cron__segment--wildcard:not(.c-cron__segment--active) .c-cron__segment-value[data-v-2594f81f] {
181
211
  opacity: 0.35;
182
212
  }
183
- .c-cron__segment-value[data-v-06e7be26] {
213
+ .c-cron__segment-value[data-v-2594f81f] {
184
214
  font-family: "Courier New", Courier, monospace;
185
215
  font-size: 15px;
186
216
  font-weight: 700;
@@ -191,24 +221,24 @@
191
221
  white-space: nowrap;
192
222
  text-align: center;
193
223
  }
194
- .c-cron__segment-label[data-v-06e7be26] {
224
+ .c-cron__segment-label[data-v-2594f81f] {
195
225
  font-size: 11px;
196
226
  color: var(--c-text-4);
197
227
  margin-top: 2px;
198
228
  }
199
- .c-cron[data-v-06e7be26] {
229
+ .c-cron[data-v-2594f81f] {
200
230
  /* ─── 表达式行 ─────────────────────────── */
201
231
  }
202
- .c-cron__expr-row[data-v-06e7be26] {
232
+ .c-cron__expr-row[data-v-2594f81f] {
203
233
  display: flex;
204
234
  align-items: center;
205
235
  gap: 8px;
206
236
  }
207
- .c-cron__expr-input[data-v-06e7be26] {
237
+ .c-cron__expr-input[data-v-2594f81f] {
208
238
  width: 240px;
209
239
  flex-shrink: 0;
210
240
  }
211
- .c-cron__expr-desc[data-v-06e7be26] {
241
+ .c-cron__expr-desc[data-v-2594f81f] {
212
242
  flex: 1;
213
243
  font-size: 13px;
214
244
  min-width: 0;
@@ -216,39 +246,39 @@
216
246
  text-overflow: ellipsis;
217
247
  white-space: nowrap;
218
248
  }
219
- .c-cron__description[data-v-06e7be26] {
249
+ .c-cron__description[data-v-2594f81f] {
220
250
  color: var(--c-text-2);
221
251
  }
222
- .c-cron__error[data-v-06e7be26] {
252
+ .c-cron__error[data-v-2594f81f] {
223
253
  color: var(--error-color);
224
254
  }
225
- .c-cron[data-v-06e7be26] {
255
+ .c-cron[data-v-2594f81f] {
226
256
  /* ═══════ 主内容 ═══════ */
227
257
  }
228
- .c-cron__body[data-v-06e7be26] {
258
+ .c-cron__body[data-v-2594f81f] {
229
259
  display: flex;
230
260
  gap: 24px;
231
261
  }
232
- .c-cron__main[data-v-06e7be26] {
262
+ .c-cron__main[data-v-2594f81f] {
233
263
  flex: 1;
234
264
  min-width: 0;
235
265
  }
236
- .c-cron[data-v-06e7be26] {
266
+ .c-cron[data-v-2594f81f] {
237
267
  /* ─── 右侧控制面板 ────────────────────── */
238
268
  }
239
- .c-cron__panel[data-v-06e7be26] {
269
+ .c-cron__panel[data-v-2594f81f] {
240
270
  width: 260px;
241
271
  flex-shrink: 0;
242
272
  display: flex;
243
273
  flex-direction: column;
244
274
  gap: 12px;
245
275
  }
246
- .c-cron__config[data-v-06e7be26] {
276
+ .c-cron__config[data-v-2594f81f] {
247
277
  display: flex;
248
278
  flex-direction: column;
249
279
  gap: 8px;
250
280
  }
251
- .c-cron__config-row[data-v-06e7be26] {
281
+ .c-cron__config-row[data-v-2594f81f] {
252
282
  display: flex;
253
283
  align-items: center;
254
284
  gap: 6px;
@@ -256,39 +286,48 @@
256
286
  color: var(--c-text-2);
257
287
  flex-wrap: wrap;
258
288
  }
259
- .c-cron__config-num[data-v-06e7be26] {
289
+ .c-cron__config-num[data-v-2594f81f] {
260
290
  width: 68px;
261
291
  }
262
- .c-cron__quick[data-v-06e7be26] {
292
+ .c-cron__quick[data-v-2594f81f] {
263
293
  display: flex;
264
294
  align-items: center;
265
295
  gap: 4px;
266
296
  font-size: 13px;
267
297
  }
268
- .c-cron__quick a[data-v-06e7be26] {
298
+ .c-cron__quick button[data-v-2594f81f] {
299
+ appearance: none;
300
+ border: 0;
301
+ background: transparent;
302
+ padding: 0;
303
+ font: inherit;
269
304
  color: var(--c-primary);
270
305
  cursor: pointer;
271
306
  user-select: none;
272
307
  }
273
- .c-cron__quick a[data-v-06e7be26]:hover {
308
+ .c-cron__quick button[data-v-2594f81f]:hover {
274
309
  text-decoration: underline;
275
310
  }
276
- .c-cron__quick-sep[data-v-06e7be26] {
311
+ .c-cron__quick button[data-v-2594f81f]:disabled {
312
+ cursor: not-allowed;
313
+ opacity: 0.6;
314
+ }
315
+ .c-cron__quick-sep[data-v-2594f81f] {
277
316
  color: var(--c-text-4);
278
317
  }
279
- .c-cron__quick-count[data-v-06e7be26] {
318
+ .c-cron__quick-count[data-v-2594f81f] {
280
319
  margin-left: 4px;
281
320
  font-size: 12px;
282
321
  color: var(--c-text-4);
283
322
  }
284
- .c-cron__panel-line[data-v-06e7be26] {
323
+ .c-cron__panel-line[data-v-2594f81f] {
285
324
  height: 1px;
286
325
  background: var(--c-border);
287
326
  }
288
- .c-cron[data-v-06e7be26] {
327
+ .c-cron[data-v-2594f81f] {
289
328
  /* ═══════ 底部模板 ═══════ */
290
329
  }
291
- .c-cron__footer[data-v-06e7be26] {
330
+ .c-cron__footer[data-v-2594f81f] {
292
331
  margin-top: 16px;
293
332
  padding-top: 16px;
294
333
  border-top: 1px solid var(--c-border);
@@ -296,22 +335,22 @@
296
335
 
297
336
  /* ─── 响应式 ────────────────────────────────── */
298
337
  @media (max-width: 768px) {
299
- .c-cron__body[data-v-06e7be26] {
338
+ .c-cron__body[data-v-2594f81f] {
300
339
  flex-direction: column;
301
340
  }
302
- .c-cron__panel[data-v-06e7be26] {
341
+ .c-cron__panel[data-v-2594f81f] {
303
342
  width: 100%;
304
343
  }
305
- .c-cron__segments[data-v-06e7be26] {
344
+ .c-cron__segments[data-v-2594f81f] {
306
345
  flex-wrap: wrap;
307
346
  }
308
- .c-cron__segment[data-v-06e7be26] {
347
+ .c-cron__segment[data-v-2594f81f] {
309
348
  min-width: calc(33% - 4px);
310
349
  }
311
- .c-cron__expr-row[data-v-06e7be26] {
350
+ .c-cron__expr-row[data-v-2594f81f] {
312
351
  flex-wrap: wrap;
313
352
  }
314
- .c-cron__expr-input[data-v-06e7be26] {
353
+ .c-cron__expr-input[data-v-2594f81f] {
315
354
  width: 100%;
316
355
  }
317
356
  }
package/dist/C_Cron2.cjs CHANGED
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],a={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},o={second:{...a,rangeEnd:59},minute:{...a,rangeEnd:59},hour:{...a,rangeEnd:23},day:{...a,rangeStart:1,rangeEnd:31},month:{...a,rangeStart:1,rangeEnd:12},week:{...a,mode:`none`,rangeStart:1,rangeEnd:7}},s=`0 0 0 * * ?`,c=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],l={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},u={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},d=[`second`,`minute`,`hour`,`day`,`month`,`week`];function f(){let e=(0,n.ref)(structuredClone(o));function t(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?e.specificValues.sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function r(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function a(e,t){let[n,i]=e.split(`/`).map(Number);return r(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(i)?1:i})}function s(e,t){let[n,i]=e.split(`-`).map(Number);return r(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(i)?t.max:i})}function c(e,t){let n=i.find(e=>e.type===t);if(e===`?`)return r(n,`none`);if(e===`*`)return r(n,`every`);if(e.includes(`/`))return a(e,n);if(e.includes(`-`)&&!e.includes(`,`))return s(e,n);let o=e.split(`,`).map(Number).filter(e=>!isNaN(e));return o.length>0?r(n,`specific`,{specificValues:o}):r(n,`every`)}function l(){return d.map(n=>t(e.value[n])).join(` `)}function u(t){let n=t.trim().split(/\s+/);n.length<6||d.forEach((t,r)=>{e.value[t]=c(n[r],t)})}function f(t){t===`day`?e.value.day.mode!==`none`&&(e.value.week={...e.value.week,mode:`none`}):e.value.week.mode!==`none`&&(e.value.day={...e.value.day,mode:`none`})}function p(e){let t=(e??l()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<d.length;e++){let n=d[e],r=t[e],a=_(r,i.find(e=>e.type===n));if(!a.valid)return{...a,field:n}}return{valid:!0,message:`表达式合法`}}function m(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return isNaN(i)||isNaN(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function h(e,t){let[n,r]=e.split(`-`).map(Number);return isNaN(n)||isNaN(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function g(e,t){let n=e.split(`,`).map(Number);return n.some(isNaN)?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function _(e,t){return e===`*`||e===`?`?{valid:!0,message:``}:e.includes(`/`)?m(e,t):e.includes(`-`)&&!e.includes(`,`)?h(e,t):g(e,t)}return{cronValue:e,expression:(0,n.computed)(()=>l()),validation:(0,n.computed)(()=>p()),parse:u,generate:l,validate:p,handleDayWeekExclusion:f}}function p(e,t,r){let i=(0,n.ref)([]),a=(0,n.ref)(!1),o=0,s=null;function c(e,t){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[n,r]=t.split(`/`),i=n===`*`?0:Number(n),a=Number(r);return e-i>=0&&(e-i)%a===0}if(t.includes(`-`)&&!t.includes(`,`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).map(Number).includes(e)}function l(e,t){if(t.length!==6)return!1;let[n,r,i,a,o,s]=t;return!(!c(e.getMonth()+1,o)||a!==`?`&&!c(e.getDate(),a)||s!==`?`&&!c(e.getDay()+1,s)||!c(e.getHours(),i)||!c(e.getMinutes(),r)||!c(e.getSeconds(),n))}async function u(n){let i=e.value;if(!i||!t.value.valid)return[];let a=i.trim().split(/\s+/);if(a.length!==6)return[];let s=[],c=new Date,u=new Date(c.getTime()+1e3);u.setMilliseconds(0);let d=/^\d{1,2}$/.test(a[0])?Number(a[0]):null,f=d===null,p=f?1e3:6e4;f||(u.setSeconds(d??0),u.getTime()<=c.getTime()&&u.setTime(u.getTime()+6e4));let m=Math.min(100,Math.max(1,Math.trunc(r.value)));for(let e=0;e<525600&&s.length<m;e++){if(n!==o)return[];l(u,a)&&s.push(new Date(u)),u.setTime(u.getTime()+p),e>0&&e%1e4==0&&await new Promise(e=>setTimeout(e,0))}return s}(0,n.watch)([e,r,t],()=>{o+=1;let e=o;if(s&&clearTimeout(s),!t.value.valid){i.value=[],a.value=!1,s=null;return}a.value=!0,s=setTimeout(async()=>{let t=await u(e);e===o&&(i.value=t,a.value=!1,s=null)},0)},{immediate:!0}),(0,n.onScopeDispose)(()=>{o+=1,s&&clearTimeout(s)});function d(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function f(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:i,computing:a,formatDate:d,formatWeekDay:f}}function m(e){return u[Number(e)]||`周${e}`}function h(e,t){let r=(0,n.computed)(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,l,f,p]=t,m=[];return m.push(u(f)),p===`?`?m.push(c(l)):m.push(d(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:f(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:f(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:f(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function u(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return l[t]?`${l[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>l[Number(e)]||`${e}月`).join(`、`):``}function d(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${m(e)}`:e.includes(`/`)?`从${m(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${m(e.split(`-`)[0])}到${m(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(m).join(`、`)}`:``}function f(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:r}}const g={class:`cron-field-editor`},_=[`onClick`],v=(0,n.defineComponent)({__name:`CronFieldEditor`,props:{modelValue:{},meta:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=e,i=t,a=(0,n.computed)(()=>{switch(r.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),o=(0,n.computed)(()=>{let e=[];for(let t=r.meta.min;t<=r.meta.max;t++)e.push({value:t,label:r.meta.valueLabels?.[t]??String(t)});return e}),s=(0,n.computed)(()=>{let{modelValue:e,meta:t}=r,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=e.stepInterval)n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function c(e){if(r.modelValue.mode!==`specific`)return;let t=[...r.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),i(`update:modelValue`,{...r.modelValue,specificValues:t})}return(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,g,[(0,n.createElementVNode)(`div`,{class:`cron-field-editor__grid`,style:(0,n.normalizeStyle)({"--cols":a.value})},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(o.value,t=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:t.value,class:(0,n.normalizeClass)([`cron-field-editor__cell`,{"cron-field-editor__cell--on":s.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),onClick:e=>c(t.value)},(0,n.toDisplayString)(t.label),11,_))),128))],4)]))}});var ee=t.t(v,[[`__scopeId`,`data-v-e6fa8e5b`]]);const y={class:`cron-preview`},b={class:`cron-preview__header`},x={key:0,class:`cron-preview__list`},S={class:`cron-preview__idx`},C={class:`cron-preview__date`},w={class:`cron-preview__week`},T=(0,n.defineComponent)({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(i,a)=>{let o=r.NSpin,s=r.NEmpty,c=r.NScrollbar;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,y,[(0,n.createElementVNode)(`div`,b,[(0,n.createVNode)(e.t,{name:`mdi:calendar-clock`,size:15}),a[0]||=(0,n.createElementVNode)(`span`,null,`未来执行`,-1),t.computing?((0,n.openBlock)(),(0,n.createBlock)(o,{key:0,size:14})):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createVNode)(c,{style:{"max-height":`220px`}},{default:(0,n.withCtx)(()=>[t.nextExecutions.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,x,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.nextExecutions,(e,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:r,class:`cron-preview__item`},[(0,n.createElementVNode)(`span`,S,(0,n.toDisplayString)(r+1),1),(0,n.createElementVNode)(`span`,C,(0,n.toDisplayString)(t.formatDate(e)),1),(0,n.createElementVNode)(`span`,w,(0,n.toDisplayString)(t.formatWeekDay(e)),1)]))),128))])):((0,n.openBlock)(),(0,n.createBlock)(s,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}});var te=t.t(T,[[`__scopeId`,`data-v-a695bb32`]]);const E={class:`cron-templates`},D={class:`cron-templates__header`},O={class:`cron-templates__cards`},k=[`onClick`],A={class:`cron-templates__card-name`},j={class:`cron-templates__card-expr`},M=(0,n.defineComponent)({__name:`CronTemplates`,props:{templates:{},currentValue:{}},emits:[`select`],setup(t){return(r,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,E,[(0,n.createElementVNode)(`div`,D,[(0,n.createVNode)(e.t,{name:`mdi:lightning-bolt`,size:15}),i[0]||=(0,n.createElementVNode)(`span`,null,`常用模板`,-1)]),(0,n.createElementVNode)(`div`,O,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.templates,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:e.value,class:(0,n.normalizeClass)([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[(0,n.createElementVNode)(`div`,A,(0,n.toDisplayString)(e.label),1),(0,n.createElementVNode)(`div`,j,(0,n.toDisplayString)(e.value),1)],10,k))),128))])]))}});var ne=t.t(M,[[`__scopeId`,`data-v-fe320f38`]]);const re={class:`c-cron__header`},ie={class:`c-cron__title-row`},ae={class:`c-cron__title`},N={class:`c-cron__segments`},P=[`onClick`],F={class:`c-cron__segment-value`},I={class:`c-cron__segment-label`},L={class:`c-cron__expr-row`},R={class:`c-cron__expr-desc`},z={key:0,class:`c-cron__description`},B={key:1,class:`c-cron__error`},V={class:`c-cron__body`},H={class:`c-cron__main`},U={class:`c-cron__panel`},W={key:0,class:`c-cron__config`},G={class:`c-cron__config-row`},K={key:1,class:`c-cron__config`},q={class:`c-cron__config-row`},oe={key:2,class:`c-cron__quick`},se={key:0,class:`c-cron__quick-count`},ce={key:0,class:`c-cron__footer`},J=(0,n.defineComponent)({name:`C_Cron`,__name:`index`,props:{modelValue:{default:s},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:a,emit:o}){let l=t,u=o,{cronValue:d,expression:m,validation:g,parse:_,validate:v,handleDayWeekExclusion:y}=f(),{nextExecutions:b,computing:x,formatDate:S,formatWeekDay:C}=p(m,g,(0,n.computed)(()=>l.previewCount??10)),{description:w}=h(m,g),T=(0,n.ref)(l.modelValue||s),E=(0,n.ref)(l.showSecond?`second`:`minute`),D=(0,n.computed)(()=>typeof l.height==`number`?`${l.height}px`:l.height),O=(0,n.computed)(()=>l.showSecond?i:i.filter(e=>e.type!==`second`)),k=(0,n.computed)(()=>i.find(e=>e.type===E.value)),A=(0,n.computed)(()=>d.value[E.value]);function j(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let M=(0,n.computed)(()=>{let e={};for(let t of i)e[t.type]=j(d.value[t.type]);return e});(0,n.onMounted)(()=>{let e=l.modelValue||s;_(e),T.value=e}),(0,n.watch)(()=>l.modelValue,e=>{e&&e!==m.value&&(_(e),T.value=e)}),(0,n.watch)(()=>l.showSecond,e=>{!e&&E.value===`second`&&(E.value=`minute`)}),(0,n.watch)(m,e=>{T.value=e,u(`update:modelValue`,e),u(`change`,e)}),(0,n.watch)(g,e=>{u(`validation-change`,e)});function J(e,t){d.value[e]=t,(e===`day`||e===`week`)&&y(e)}function Y(e){J(E.value,{...A.value,mode:e})}function X(e){J(E.value,{...A.value,...e})}function Z(){let{min:e,max:t}=k.value,n=Array.from({length:t-e+1},(t,n)=>e+n);J(E.value,{...A.value,specificValues:n})}function le(){J(E.value,{...A.value,specificValues:[]})}function ue(e){T.value=e}function Q(){let e=T.value.trim();e&&e!==m.value&&_(e)}function de(e){_(e),T.value=e}function $(){let e=l.modelValue||s;_(e),T.value=e}return a({getValue:()=>m.value,setValue:e=>{_(e),T.value=e},reset:$,validate:()=>v()}),(t,i)=>{let a=r.NTag,o=r.NInput,s=r.NButton,u=r.NRadioButton,f=r.NRadioGroup,p=r.NInputNumber;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`c-cron`,style:(0,n.normalizeStyle)({height:D.value})},[(0,n.createCommentVNode)(` ═══════ 顶部 ═══════ `),(0,n.createElementVNode)(`div`,re,[(0,n.createCommentVNode)(` 标题行 `),(0,n.createElementVNode)(`div`,ie,[(0,n.createElementVNode)(`div`,ae,[(0,n.createVNode)(e.t,{name:`mdi:clock-edit-outline`,size:18}),i[4]||=(0,n.createElementVNode)(`span`,null,`Cron 表达式`,-1)]),(0,n.createVNode)(a,{type:(0,n.unref)(g).valid?`success`:`error`,size:`small`,round:``},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:(0,n.unref)(g).valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(g).valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),(0,n.createCommentVNode)(` 分段式字段选择器 `),(0,n.createElementVNode)(`div`,N,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(O.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:e.type,class:(0,n.normalizeClass)([`c-cron__segment`,{"c-cron__segment--active":E.value===e.type,"c-cron__segment--wildcard":M.value[e.type]===`*`||M.value[e.type]===`?`}]),onClick:t=>E.value=e.type},[(0,n.createElementVNode)(`div`,F,(0,n.toDisplayString)(M.value[e.type]),1),(0,n.createElementVNode)(`div`,I,(0,n.toDisplayString)(e.label),1)],10,P))),128))]),(0,n.createCommentVNode)(` 表达式行:输入 + 重置 + 描述 `),(0,n.createElementVNode)(`div`,L,[(0,n.createVNode)(o,{value:T.value,status:(0,n.unref)(g).valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:l.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":ue,onBlur:Q,onKeydown:(0,n.withKeys)(Q,[`enter`])},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),(0,n.createVNode)(s,{size:`small`,quaternary:``,disabled:l.disabled,onClick:$},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),(0,n.createElementVNode)(`div`,R,[(0,n.unref)(g).valid?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,z,(0,n.toDisplayString)((0,n.unref)(w)),1)):((0,n.openBlock)(),(0,n.createElementBlock)(`span`,B,(0,n.toDisplayString)((0,n.unref)(g).message),1))])])]),(0,n.createCommentVNode)(` ═══════ 主内容 ═══════ `),(0,n.createElementVNode)(`div`,V,[(0,n.createCommentVNode)(` 左侧:值网格 `),(0,n.createElementVNode)(`div`,H,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(O.value,e=>(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createBlock)(ee,{key:e.type,"model-value":(0,n.unref)(d)[e.type],meta:e,"onUpdate:modelValue":t=>J(e.type,t)},null,8,[`model-value`,`meta`,`onUpdate:modelValue`])),[[n.vShow,E.value===e.type]])),128))]),(0,n.createCommentVNode)(` 右侧:控制面板 `),(0,n.createElementVNode)(`div`,U,[(0,n.createVNode)(f,{value:A.value.mode,size:`small`,"onUpdate:value":Y},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(u,{value:`every`},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` 每`+(0,n.toDisplayString)(k.value.label),1)]),_:1}),E.value===`day`||E.value===`week`?((0,n.openBlock)(),(0,n.createBlock)(u,{key:0,value:`none`},{default:(0,n.withCtx)(()=>[...i[5]||=[(0,n.createTextVNode)(` 不指定 `,-1)]]),_:1})):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createVNode)(u,{value:`range`},{default:(0,n.withCtx)(()=>[...i[6]||=[(0,n.createTextVNode)(`范围`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`step`},{default:(0,n.withCtx)(()=>[...i[7]||=[(0,n.createTextVNode)(`步进`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`specific`},{default:(0,n.withCtx)(()=>[...i[8]||=[(0,n.createTextVNode)(`指定`,-1)]]),_:1})]),_:1},8,[`value`]),(0,n.createCommentVNode)(` 范围配置 `),A.value.mode===`range`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,W,[(0,n.createElementVNode)(`div`,G,[i[9]||=(0,n.createElementVNode)(`span`,null,`从`,-1),(0,n.createVNode)(p,{value:A.value.rangeStart,min:k.value.min,max:k.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":i[0]||=e=>X({rangeStart:e??k.value.min})},null,8,[`value`,`min`,`max`]),i[10]||=(0,n.createElementVNode)(`span`,null,`到`,-1),(0,n.createVNode)(p,{value:A.value.rangeEnd,min:k.value.min,max:k.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":i[1]||=e=>X({rangeEnd:e??k.value.max})},null,8,[`value`,`min`,`max`])])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 步进配置 `),A.value.mode===`step`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,K,[(0,n.createElementVNode)(`div`,q,[i[11]||=(0,n.createElementVNode)(`span`,null,`从第`,-1),(0,n.createVNode)(p,{value:A.value.stepStart,min:k.value.min,max:k.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":i[2]||=e=>X({stepStart:e??k.value.min})},null,8,[`value`,`min`,`max`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(k.value.label)+`起,每`,1),(0,n.createVNode)(p,{value:A.value.stepInterval,min:1,max:k.value.max-k.value.min+1,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":i[3]||=e=>X({stepInterval:e??1})},null,8,[`value`,`max`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(k.value.label)+`执行`,1)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 指定快捷操作 `),A.value.mode===`specific`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,oe,[(0,n.createElementVNode)(`a`,{onClick:Z},`全选`),i[12]||=(0,n.createElementVNode)(`span`,{class:`c-cron__quick-sep`},`·`,-1),(0,n.createElementVNode)(`a`,{onClick:le},`清空`),A.value.specificValues.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,se,` 已选 `+(0,n.toDisplayString)(A.value.specificValues.length),1)):(0,n.createCommentVNode)(`v-if`,!0)])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 执行预览 `),l.showPreview?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:3},[i[13]||=(0,n.createElementVNode)(`div`,{class:`c-cron__panel-line`},null,-1),(0,n.createVNode)(te,{"next-executions":(0,n.unref)(b),computing:(0,n.unref)(x),count:l.previewCount??5,"format-date":(0,n.unref)(S),"format-week-day":(0,n.unref)(C)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])],64)):(0,n.createCommentVNode)(`v-if`,!0)])]),(0,n.createCommentVNode)(` ═══════ 底部模板 ═══════ `),l.showTemplates?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ce,[(0,n.createVNode)(ne,{templates:(0,n.unref)(c),"current-value":(0,n.unref)(m),onSelect:de},null,8,[`templates`,`current-value`])])):(0,n.createCommentVNode)(`v-if`,!0)],4)}}});var Y=t.t(J,[[`__scopeId`,`data-v-06e7be26`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}});
1
+ require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],a={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},o={second:{...a,rangeEnd:59},minute:{...a,rangeEnd:59},hour:{...a,rangeEnd:23},day:{...a,rangeStart:1,rangeEnd:31},month:{...a,rangeStart:1,rangeEnd:12},week:{...a,mode:`none`,rangeStart:1,rangeEnd:7}},s=`0 0 0 * * ?`,c=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],l={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},u={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},d=[`second`,`minute`,`hour`,`day`,`month`,`week`];function f(){let e=structuredClone(o);for(let t of d)e[t].specificValues=[];let t=(0,n.ref)(e);function r(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function a(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function s(e,t){let[n,r]=e.split(`/`).map(Number);return a(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(r)?1:r})}function c(e,t){let[n,r]=e.split(`-`).map(Number);return a(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(r)?t.max:r})}function l(e,t){let n=i.find(e=>e.type===t);if(e===`?`)return a(n,`none`);if(e===`*`)return a(n,`every`);if(e.includes(`/`))return s(e,n);if(e.includes(`-`)&&!e.includes(`,`))return c(e,n);let r=e.split(`,`).map(Number).filter(e=>!isNaN(e));return r.length>0?a(n,`specific`,{specificValues:r}):a(n,`every`)}function u(){return d.map(e=>r(t.value[e])).join(` `)}function f(e){if(!m(e).valid)return!1;let n=e.trim().split(/\s+/);return d.forEach((e,r)=>{t.value[e]=l(n[r],e)}),!0}function p(e){e===`day`?t.value.day.mode!==`none`&&(t.value.week={...t.value.week,mode:`none`}):t.value.week.mode!==`none`&&(t.value.day={...t.value.day,mode:`none`})}function m(e){let t=(e??u()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<d.length;e++){let n=d[e],r=t[e],a=v(r,i.find(e=>e.type===n));if(!a.valid)return{...a,field:n}}return{valid:!0,message:`表达式合法`}}function h(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return!Number.isInteger(i)||!Number.isInteger(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function g(e,t){let[n,r]=e.split(`-`).map(Number);return!Number.isInteger(n)||!Number.isInteger(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function _(e,t){let n=e.split(`,`).map(Number);return n.some(e=>!Number.isInteger(e))?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function v(e,t){return e===`*`?{valid:!0,message:``}:e===`?`?t.type===`day`||t.type===`week`?{valid:!0,message:``}:{valid:!1,message:`${t.label}字段不能使用 ?`}:/^(\*|\d+)\/\d+$/.test(e)?h(e,t):/^\d+-\d+$/.test(e)?g(e,t):/^\d+(,\d+)*$/.test(e)?_(e,t):{valid:!1,message:`${t.label}字段格式错误`}}return{cronValue:t,expression:(0,n.computed)(()=>u()),validation:(0,n.computed)(()=>m()),parse:f,generate:u,validate:m,handleDayWeekExclusion:p}}function p(e,t,n){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[r,i]=t.split(`/`),a=r===`*`?n:Number(r),o=Number(i);return o>0&&e>=a&&(e-a)%o===0}if(t.includes(`-`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).some(t=>Number(t)===e)}function m(e,t){let[,n,r,i,a,o]=t;return p(e.getMinutes(),n,0)&&p(e.getHours(),r,0)&&p(e.getDate(),i,1)&&p(e.getMonth()+1,a,1)&&p(e.getDay()+1,o,1)}function h(e,t,n,r,i){for(let a of n){let n=new Date(t.getTime()+a*1e3);if(!(n.getTime()<=r.getTime())&&(e.push(n),e.length>=i))return!0}return!1}function g(e){return Number.isFinite(e)?Math.min(100,Math.max(1,Math.trunc(e))):10}function _(e){return e>0&&e%1e4==0}async function v(e,t,n=new Date,r=()=>!1){let i=e.trim().split(/\s+/);if(i.length!==6)return[];let a=Array.from({length:60},(e,t)=>t).filter(e=>p(e,i[0],0));if(a.length===0)return[];let o=g(t),s=[],c=new Date(n);c.setSeconds(0,0);for(let e=0;e<527040;e++){if(r())return[];if(m(c,i)&&h(s,c,a,n,o))return s;c.setTime(c.getTime()+6e4),_(e)&&await new Promise(e=>setTimeout(e,0))}return s}function y(e,t,r){let i=(0,n.ref)([]),a=(0,n.ref)(!1),o=0,s=null;(0,n.watch)([e,r,t],()=>{o+=1;let n=o;if(s&&clearTimeout(s),!t.value.valid){i.value=[],a.value=!1,s=null;return}a.value=!0,s=setTimeout(async()=>{let t=await v(e.value,r.value,new Date,()=>n!==o);n===o&&(i.value=t,a.value=!1,s=null)},0)},{immediate:!0}),(0,n.onScopeDispose)(()=>{o+=1,s&&clearTimeout(s)});function c(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function l(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:i,computing:a,formatDate:c,formatWeekDay:l}}function b(e){return u[Number(e)]||`周${e}`}function x(e,t){let r=(0,n.computed)(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,l,f,p]=t,m=[];return m.push(u(f)),p===`?`?m.push(c(l)):m.push(d(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:f(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:f(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:f(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function u(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return l[t]?`${l[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>l[Number(e)]||`${e}月`).join(`、`):``}function d(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${b(e)}`:e.includes(`/`)?`从${b(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${b(e.split(`-`)[0])}到${b(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(b).join(`、`)}`:``}function f(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:r}}const S={class:`cron-field-editor`},C=[`disabled`,`aria-pressed`,`onClick`],w=(0,n.defineComponent)({__name:`CronFieldEditor`,props:{modelValue:{},meta:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=e,i=t,a=(0,n.computed)(()=>{switch(r.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),o=(0,n.computed)(()=>{let e=[];for(let t=r.meta.min;t<=r.meta.max;t++)e.push({value:t,label:r.meta.valueLabels?.[t]??String(t)});return e}),s=(0,n.computed)(()=>{let{modelValue:e,meta:t}=r,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=Math.max(1,e.stepInterval))n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function c(e){if(r.disabled||r.modelValue.mode!==`specific`)return;let t=[...r.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),i(`update:modelValue`,{...r.modelValue,specificValues:t})}return(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,S,[(0,n.createElementVNode)(`div`,{class:`cron-field-editor__grid`,style:(0,n.normalizeStyle)({"--cols":a.value})},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(o.value,t=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:t.value,type:`button`,class:(0,n.normalizeClass)([`cron-field-editor__cell`,{"cron-field-editor__cell--on":s.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),disabled:e.disabled||e.modelValue.mode!==`specific`,"aria-pressed":e.modelValue.mode===`specific`?s.value.has(t.value):void 0,onClick:e=>c(t.value)},(0,n.toDisplayString)(t.label),11,C))),128))],4)]))}});var T=t.t(w,[[`__scopeId`,`data-v-60c57fc6`]]);const E={class:`cron-preview`},D={class:`cron-preview__header`},O={key:0,class:`cron-preview__list`},k={class:`cron-preview__idx`},A={class:`cron-preview__date`},j={class:`cron-preview__week`},M=(0,n.defineComponent)({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(i,a)=>{let o=r.NSpin,s=r.NEmpty,c=r.NScrollbar;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,E,[(0,n.createElementVNode)(`div`,D,[(0,n.createVNode)(e.t,{name:`mdi:calendar-clock`,size:15}),a[0]||=(0,n.createElementVNode)(`span`,null,`未来执行`,-1),t.computing?((0,n.openBlock)(),(0,n.createBlock)(o,{key:0,size:14})):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createVNode)(c,{style:{"max-height":`220px`}},{default:(0,n.withCtx)(()=>[t.nextExecutions.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,O,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.nextExecutions,(e,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:r,class:`cron-preview__item`},[(0,n.createElementVNode)(`span`,k,(0,n.toDisplayString)(r+1),1),(0,n.createElementVNode)(`span`,A,(0,n.toDisplayString)(t.formatDate(e)),1),(0,n.createElementVNode)(`span`,j,(0,n.toDisplayString)(t.formatWeekDay(e)),1)]))),128))])):((0,n.openBlock)(),(0,n.createBlock)(s,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}});var N=t.t(M,[[`__scopeId`,`data-v-a695bb32`]]);const P={class:`cron-templates`},F={class:`cron-templates__header`},I={class:`cron-templates__cards`},L=[`disabled`,`aria-pressed`,`onClick`],R={class:`cron-templates__card-name`},z={class:`cron-templates__card-expr`},B=(0,n.defineComponent)({__name:`CronTemplates`,props:{templates:{},currentValue:{},disabled:{type:Boolean}},emits:[`select`],setup(t){return(r,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,P,[(0,n.createElementVNode)(`div`,F,[(0,n.createVNode)(e.t,{name:`mdi:lightning-bolt`,size:15}),i[0]||=(0,n.createElementVNode)(`span`,null,`常用模板`,-1)]),(0,n.createElementVNode)(`div`,I,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.templates,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.value,type:`button`,disabled:t.disabled,"aria-pressed":e.value===t.currentValue,class:(0,n.normalizeClass)([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[(0,n.createElementVNode)(`div`,R,(0,n.toDisplayString)(e.label),1),(0,n.createElementVNode)(`div`,z,(0,n.toDisplayString)(e.value),1)],10,L))),128))])]))}});var ee=t.t(B,[[`__scopeId`,`data-v-241e79f6`]]);const te={class:`c-cron__header`},ne={class:`c-cron__title-row`},re={class:`c-cron__title`},ie={class:`c-cron__segments`},V=[`aria-pressed`,`onClick`],H={class:`c-cron__segment-value`},U={class:`c-cron__segment-label`},W={class:`c-cron__expr-row`},G={class:`c-cron__expr-desc`},K={key:0,class:`c-cron__description`},q={key:1,class:`c-cron__error`},J={class:`c-cron__body`},ae={class:`c-cron__main`},oe={class:`c-cron__panel`},se={key:0,class:`c-cron__config`},ce={class:`c-cron__config-row`},le={key:1,class:`c-cron__config`},ue={class:`c-cron__config-row`},de={key:2,class:`c-cron__quick`},fe=[`disabled`],pe=[`disabled`],me={key:0,class:`c-cron__quick-count`},he={key:1,class:`c-cron__error`},ge={key:0,class:`c-cron__footer`},Y=(0,n.defineComponent)({name:`C_Cron`,__name:`index`,props:{modelValue:{default:s},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:a,emit:o}){let l=t,u=o,{cronValue:d,expression:p,validation:m,parse:h,validate:g,handleDayWeekExclusion:_}=f(),{nextExecutions:v,computing:b,formatDate:S,formatWeekDay:C}=y(p,m,(0,n.computed)(()=>l.previewCount??10)),{description:w}=x(p,m),E=(0,n.ref)(l.modelValue||s),D=(0,n.ref)(null),O=(0,n.computed)(()=>D.value??m.value),k=(0,n.ref)(l.showSecond?`second`:`minute`),A=(0,n.computed)(()=>typeof l.height==`number`?`${l.height}px`:l.height),j=(0,n.computed)(()=>l.showSecond?i:i.filter(e=>e.type!==`second`)),M=(0,n.computed)(()=>i.find(e=>e.type===k.value)),P=(0,n.computed)(()=>d.value[k.value]);function F(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let I=(0,n.computed)(()=>{let e={};for(let t of i)e[t.type]=F(d.value[t.type]);return e});(0,n.onMounted)(()=>{Q(l.modelValue||s)}),(0,n.watch)(()=>l.modelValue,e=>{e!==p.value&&Q(e||s)}),(0,n.watch)(()=>l.showSecond,e=>{!e&&k.value===`second`&&(k.value=`minute`)}),(0,n.watch)(p,e=>{E.value=e,D.value=null,u(`update:modelValue`,e),u(`change`,e)}),(0,n.watch)(O,e=>{u(`validation-change`,e)});function L(e,t){l.disabled||(D.value=null,d.value[e]=t,(e===`day`||e===`week`)&&_(e))}function R(e){L(k.value,{...P.value,mode:e})}function z(e){L(k.value,{...P.value,...e})}function B(){let{min:e,max:t}=M.value,n=Array.from({length:t-e+1},(t,n)=>e+n);L(k.value,{...P.value,specificValues:n})}function Y(){L(k.value,{...P.value,specificValues:[]})}function X(e){E.value=e,D.value=g(e)}function Z(){l.disabled||Q(E.value.trim())}function Q(e){E.value=e;let t=g(e);D.value=t.valid?null:t,t.valid&&h(e)}function _e(e){l.disabled||Q(e)}function $(){Q(l.modelValue||s)}return a({getValue:()=>p.value,setValue:e=>{Q(e)},reset:$,validate:()=>O.value}),(t,i)=>{let a=r.NTag,o=r.NInput,s=r.NButton,u=r.NRadioButton,f=r.NRadioGroup,m=r.NInputNumber;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`c-cron`,style:(0,n.normalizeStyle)({height:A.value})},[(0,n.createCommentVNode)(` ═══════ 顶部 ═══════ `),(0,n.createElementVNode)(`div`,te,[(0,n.createCommentVNode)(` 标题行 `),(0,n.createElementVNode)(`div`,ne,[(0,n.createElementVNode)(`div`,re,[(0,n.createVNode)(e.t,{name:`mdi:clock-edit-outline`,size:18}),i[4]||=(0,n.createElementVNode)(`span`,null,`Cron 表达式`,-1)]),(0,n.createVNode)(a,{type:O.value.valid?`success`:`error`,size:`small`,round:``},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:O.value.valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)(O.value.valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),(0,n.createCommentVNode)(` 分段式字段选择器 `),(0,n.createElementVNode)(`div`,ie,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(j.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.type,type:`button`,class:(0,n.normalizeClass)([`c-cron__segment`,{"c-cron__segment--active":k.value===e.type,"c-cron__segment--wildcard":I.value[e.type]===`*`||I.value[e.type]===`?`}]),"aria-pressed":k.value===e.type,onClick:t=>k.value=e.type},[(0,n.createElementVNode)(`div`,H,(0,n.toDisplayString)(I.value[e.type]),1),(0,n.createElementVNode)(`div`,U,(0,n.toDisplayString)(e.label),1)],10,V))),128))]),(0,n.createCommentVNode)(` 表达式行:输入 + 重置 + 描述 `),(0,n.createElementVNode)(`div`,W,[(0,n.createVNode)(o,{value:E.value,status:O.value.valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:l.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":X,onBlur:Z,onKeydown:(0,n.withKeys)(Z,[`enter`])},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),(0,n.createVNode)(s,{size:`small`,quaternary:``,disabled:l.disabled,onClick:$},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),(0,n.createElementVNode)(`div`,G,[O.value.valid?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,K,(0,n.toDisplayString)((0,n.unref)(w)),1)):((0,n.openBlock)(),(0,n.createElementBlock)(`span`,q,(0,n.toDisplayString)(O.value.message),1))])])]),(0,n.createCommentVNode)(` ═══════ 主内容 ═══════ `),(0,n.createElementVNode)(`div`,J,[(0,n.createCommentVNode)(` 左侧:值网格 `),(0,n.createElementVNode)(`div`,ae,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(j.value,e=>(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createBlock)(T,{key:e.type,"model-value":(0,n.unref)(d)[e.type],meta:e,disabled:l.disabled,"onUpdate:modelValue":t=>L(e.type,t)},null,8,[`model-value`,`meta`,`disabled`,`onUpdate:modelValue`])),[[n.vShow,k.value===e.type]])),128))]),(0,n.createCommentVNode)(` 右侧:控制面板 `),(0,n.createElementVNode)(`div`,oe,[(0,n.createVNode)(f,{value:P.value.mode,disabled:l.disabled,size:`small`,"onUpdate:value":R},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(u,{value:`every`},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` 每`+(0,n.toDisplayString)(M.value.label),1)]),_:1}),k.value===`day`||k.value===`week`?((0,n.openBlock)(),(0,n.createBlock)(u,{key:0,value:`none`},{default:(0,n.withCtx)(()=>[...i[5]||=[(0,n.createTextVNode)(` 不指定 `,-1)]]),_:1})):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createVNode)(u,{value:`range`},{default:(0,n.withCtx)(()=>[...i[6]||=[(0,n.createTextVNode)(`范围`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`step`},{default:(0,n.withCtx)(()=>[...i[7]||=[(0,n.createTextVNode)(`步进`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`specific`},{default:(0,n.withCtx)(()=>[...i[8]||=[(0,n.createTextVNode)(`指定`,-1)]]),_:1})]),_:1},8,[`value`,`disabled`]),(0,n.createCommentVNode)(` 范围配置 `),P.value.mode===`range`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,se,[(0,n.createElementVNode)(`div`,ce,[i[9]||=(0,n.createElementVNode)(`span`,null,`从`,-1),(0,n.createVNode)(m,{value:P.value.rangeStart,min:M.value.min,max:M.value.max,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[0]||=e=>z({rangeStart:e??M.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),i[10]||=(0,n.createElementVNode)(`span`,null,`到`,-1),(0,n.createVNode)(m,{value:P.value.rangeEnd,min:M.value.min,max:M.value.max,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[1]||=e=>z({rangeEnd:e??M.value.max})},null,8,[`value`,`min`,`max`,`disabled`])])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 步进配置 `),P.value.mode===`step`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,le,[(0,n.createElementVNode)(`div`,ue,[i[11]||=(0,n.createElementVNode)(`span`,null,`从第`,-1),(0,n.createVNode)(m,{value:P.value.stepStart,min:M.value.min,max:M.value.max,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[2]||=e=>z({stepStart:e??M.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(M.value.label)+`起,每`,1),(0,n.createVNode)(m,{value:P.value.stepInterval,min:1,max:M.value.max-M.value.min+1,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[3]||=e=>z({stepInterval:e??1})},null,8,[`value`,`max`,`disabled`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(M.value.label)+`执行`,1)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 指定快捷操作 `),P.value.mode===`specific`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,de,[(0,n.createElementVNode)(`button`,{type:`button`,disabled:l.disabled,onClick:B},`全选`,8,fe),i[12]||=(0,n.createElementVNode)(`span`,{class:`c-cron__quick-sep`},`·`,-1),(0,n.createElementVNode)(`button`,{type:`button`,disabled:l.disabled,onClick:Y},`清空`,8,pe),P.value.specificValues.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,me,` 已选 `+(0,n.toDisplayString)(P.value.specificValues.length),1)):(0,n.createCommentVNode)(`v-if`,!0)])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 执行预览 `),l.showPreview?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:3},[i[13]||=(0,n.createElementVNode)(`div`,{class:`c-cron__panel-line`},null,-1),O.value.valid?((0,n.openBlock)(),(0,n.createBlock)(N,{key:0,"next-executions":(0,n.unref)(v),computing:(0,n.unref)(b),count:l.previewCount??5,"format-date":(0,n.unref)(S),"format-week-day":(0,n.unref)(C)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,he,`请先修正表达式`))],64)):(0,n.createCommentVNode)(`v-if`,!0)])]),(0,n.createCommentVNode)(` ═══════ 底部模板 ═══════ `),l.showTemplates?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ge,[(0,n.createVNode)(ee,{templates:(0,n.unref)(c),"current-value":(0,n.unref)(p),disabled:l.disabled,onSelect:_e},null,8,[`templates`,`current-value`,`disabled`])])):(0,n.createCommentVNode)(`v-if`,!0)],4)}}});var X=t.t(Y,[[`__scopeId`,`data-v-2594f81f`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}});
package/dist/C_Cron2.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,normalizeStyle as f,onMounted as p,onScopeDispose as m,openBlock as h,ref as g,renderList as _,resolveComponent as v,toDisplayString as y,unref as b,vShow as ee,watch as x,withCtx as S,withDirectives as te,withKeys as ne}from"vue";import{NButton as re,NEmpty as C,NInput as ie,NInputNumber as ae,NRadioButton as oe,NRadioGroup as se,NScrollbar as w,NSpin as T,NTag as ce}from"naive-ui";const E=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],D={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},O={second:{...D,rangeEnd:59},minute:{...D,rangeEnd:59},hour:{...D,rangeEnd:23},day:{...D,rangeStart:1,rangeEnd:31},month:{...D,rangeStart:1,rangeEnd:12},week:{...D,mode:`none`,rangeStart:1,rangeEnd:7}},k=`0 0 0 * * ?`,A=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],j={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},M={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},N=[`second`,`minute`,`hour`,`day`,`month`,`week`];function le(){let e=g(structuredClone(O));function t(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?e.specificValues.sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function n(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function i(e,t){let[r,i]=e.split(`/`).map(Number);return n(t,`step`,{stepStart:isNaN(r)?t.min:r,stepInterval:isNaN(i)?1:i})}function a(e,t){let[r,i]=e.split(`-`).map(Number);return n(t,`range`,{rangeStart:isNaN(r)?t.min:r,rangeEnd:isNaN(i)?t.max:i})}function o(e,t){let r=E.find(e=>e.type===t);if(e===`?`)return n(r,`none`);if(e===`*`)return n(r,`every`);if(e.includes(`/`))return i(e,r);if(e.includes(`-`)&&!e.includes(`,`))return a(e,r);let o=e.split(`,`).map(Number).filter(e=>!isNaN(e));return o.length>0?n(r,`specific`,{specificValues:o}):n(r,`every`)}function s(){return N.map(n=>t(e.value[n])).join(` `)}function c(t){let n=t.trim().split(/\s+/);n.length<6||N.forEach((t,r)=>{e.value[t]=o(n[r],t)})}function l(t){t===`day`?e.value.day.mode!==`none`&&(e.value.week={...e.value.week,mode:`none`}):e.value.week.mode!==`none`&&(e.value.day={...e.value.day,mode:`none`})}function u(e){let t=(e??s()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<N.length;e++){let n=N[e],r=t[e],i=m(r,E.find(e=>e.type===n));if(!i.valid)return{...i,field:n}}return{valid:!0,message:`表达式合法`}}function d(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return isNaN(i)||isNaN(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function f(e,t){let[n,r]=e.split(`-`).map(Number);return isNaN(n)||isNaN(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function p(e,t){let n=e.split(`,`).map(Number);return n.some(isNaN)?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function m(e,t){return e===`*`||e===`?`?{valid:!0,message:``}:e.includes(`/`)?d(e,t):e.includes(`-`)&&!e.includes(`,`)?f(e,t):p(e,t)}return{cronValue:e,expression:r(()=>s()),validation:r(()=>u()),parse:c,generate:s,validate:u,handleDayWeekExclusion:l}}function P(e,t,n){let r=g([]),i=g(!1),a=0,o=null;function s(e,t){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[n,r]=t.split(`/`),i=n===`*`?0:Number(n),a=Number(r);return e-i>=0&&(e-i)%a===0}if(t.includes(`-`)&&!t.includes(`,`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).map(Number).includes(e)}function c(e,t){if(t.length!==6)return!1;let[n,r,i,a,o,c]=t;return!(!s(e.getMonth()+1,o)||a!==`?`&&!s(e.getDate(),a)||c!==`?`&&!s(e.getDay()+1,c)||!s(e.getHours(),i)||!s(e.getMinutes(),r)||!s(e.getSeconds(),n))}async function l(r){let i=e.value;if(!i||!t.value.valid)return[];let o=i.trim().split(/\s+/);if(o.length!==6)return[];let s=[],l=new Date,u=new Date(l.getTime()+1e3);u.setMilliseconds(0);let d=/^\d{1,2}$/.test(o[0])?Number(o[0]):null,f=d===null,p=f?1e3:6e4;f||(u.setSeconds(d??0),u.getTime()<=l.getTime()&&u.setTime(u.getTime()+6e4));let m=Math.min(100,Math.max(1,Math.trunc(n.value)));for(let e=0;e<525600&&s.length<m;e++){if(r!==a)return[];c(u,o)&&s.push(new Date(u)),u.setTime(u.getTime()+p),e>0&&e%1e4==0&&await new Promise(e=>setTimeout(e,0))}return s}x([e,n,t],()=>{a+=1;let e=a;if(o&&clearTimeout(o),!t.value.valid){r.value=[],i.value=!1,o=null;return}i.value=!0,o=setTimeout(async()=>{let t=await l(e);e===a&&(r.value=t,i.value=!1,o=null)},0)},{immediate:!0}),m(()=>{a+=1,o&&clearTimeout(o)});function u(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function d(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:r,computing:i,formatDate:u,formatWeekDay:d}}function F(e){return M[Number(e)]||`周${e}`}function I(e,t){let n=r(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,d,f,p]=t,m=[];return m.push(l(f)),p===`?`?m.push(c(d)):m.push(u(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:d(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:d(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:d(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function l(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return j[t]?`${j[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>j[Number(e)]||`${e}月`).join(`、`):``}function u(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${F(e)}`:e.includes(`/`)?`从${F(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${F(e.split(`-`)[0])}到${F(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(F).join(`、`)}`:``}function d(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:n}}const L={class:`cron-field-editor`},R=[`onClick`];var ue=t(u({__name:`CronFieldEditor`,props:{modelValue:{},meta:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let i=e,a=t,c=r(()=>{switch(i.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),l=r(()=>{let e=[];for(let t=i.meta.min;t<=i.meta.max;t++)e.push({value:t,label:i.meta.valueLabels?.[t]??String(t)});return e}),u=r(()=>{let{modelValue:e,meta:t}=i,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=e.stepInterval)n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function p(e){if(i.modelValue.mode!==`specific`)return;let t=[...i.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),a(`update:modelValue`,{...i.modelValue,specificValues:t})}return(t,r)=>(h(),o(`div`,L,[s(`div`,{class:`cron-field-editor__grid`,style:f({"--cols":c.value})},[(h(!0),o(n,null,_(l.value,t=>(h(),o(`div`,{key:t.value,class:d([`cron-field-editor__cell`,{"cron-field-editor__cell--on":u.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),onClick:e=>p(t.value)},y(t.label),11,R))),128))],4)]))}}),[[`__scopeId`,`data-v-e6fa8e5b`]]);const z={class:`cron-preview`},B={class:`cron-preview__header`},V={key:0,class:`cron-preview__list`},H={class:`cron-preview__idx`},U={class:`cron-preview__date`},W={class:`cron-preview__week`};var de=t(u({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(r,c)=>{let u=T,d=C,f=w;return h(),o(`div`,z,[s(`div`,B,[l(e,{name:`mdi:calendar-clock`,size:15}),c[0]||=s(`span`,null,`未来执行`,-1),t.computing?(h(),i(u,{key:0,size:14})):a(`v-if`,!0)]),l(f,{style:{"max-height":`220px`}},{default:S(()=>[t.nextExecutions.length>0?(h(),o(`div`,V,[(h(!0),o(n,null,_(t.nextExecutions,(e,n)=>(h(),o(`div`,{key:n,class:`cron-preview__item`},[s(`span`,H,y(n+1),1),s(`span`,U,y(t.formatDate(e)),1),s(`span`,W,y(t.formatWeekDay(e)),1)]))),128))])):(h(),i(d,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}}),[[`__scopeId`,`data-v-a695bb32`]]);const G={class:`cron-templates`},K={class:`cron-templates__header`},q={class:`cron-templates__cards`},J=[`onClick`],Y={class:`cron-templates__card-name`},X={class:`cron-templates__card-expr`};var fe=t(u({__name:`CronTemplates`,props:{templates:{},currentValue:{}},emits:[`select`],setup(t){return(r,i)=>(h(),o(`div`,G,[s(`div`,K,[l(e,{name:`mdi:lightning-bolt`,size:15}),i[0]||=s(`span`,null,`常用模板`,-1)]),s(`div`,q,[(h(!0),o(n,null,_(t.templates,e=>(h(),o(`div`,{key:e.value,class:d([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[s(`div`,Y,y(e.label),1),s(`div`,X,y(e.value),1)],10,J))),128))])]))}}),[[`__scopeId`,`data-v-fe320f38`]]);const pe={class:`c-cron__header`},me={class:`c-cron__title-row`},he={class:`c-cron__title`},ge={class:`c-cron__segments`},_e=[`onClick`],ve={class:`c-cron__segment-value`},ye={class:`c-cron__segment-label`},be={class:`c-cron__expr-row`},xe={class:`c-cron__expr-desc`},Se={key:0,class:`c-cron__description`},Ce={key:1,class:`c-cron__error`},we={class:`c-cron__body`},Te={class:`c-cron__main`},Ee={class:`c-cron__panel`},De={key:0,class:`c-cron__config`},Oe={class:`c-cron__config-row`},ke={key:1,class:`c-cron__config`},Ae={class:`c-cron__config-row`},je={key:2,class:`c-cron__quick`},Me={key:0,class:`c-cron__quick-count`},Ne={key:0,class:`c-cron__footer`};var Z=t(u({name:`C_Cron`,__name:`index`,props:{modelValue:{default:k},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:u,emit:m}){let v=t,C=m,{cronValue:w,expression:T,validation:D,parse:O,validate:j,handleDayWeekExclusion:M}=le(),{nextExecutions:N,computing:F,formatDate:L,formatWeekDay:R}=P(T,D,r(()=>v.previewCount??10)),{description:z}=I(T,D),B=g(v.modelValue||k),V=g(v.showSecond?`second`:`minute`),H=r(()=>typeof v.height==`number`?`${v.height}px`:v.height),U=r(()=>v.showSecond?E:E.filter(e=>e.type!==`second`)),W=r(()=>E.find(e=>e.type===V.value)),G=r(()=>w.value[V.value]);function K(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let q=r(()=>{let e={};for(let t of E)e[t.type]=K(w.value[t.type]);return e});p(()=>{let e=v.modelValue||k;O(e),B.value=e}),x(()=>v.modelValue,e=>{e&&e!==T.value&&(O(e),B.value=e)}),x(()=>v.showSecond,e=>{!e&&V.value===`second`&&(V.value=`minute`)}),x(T,e=>{B.value=e,C(`update:modelValue`,e),C(`change`,e)}),x(D,e=>{C(`validation-change`,e)});function J(e,t){w.value[e]=t,(e===`day`||e===`week`)&&M(e)}function Y(e){J(V.value,{...G.value,mode:e})}function X(e){J(V.value,{...G.value,...e})}function Z(){let{min:e,max:t}=W.value,n=Array.from({length:t-e+1},(t,n)=>e+n);J(V.value,{...G.value,specificValues:n})}function Pe(){J(V.value,{...G.value,specificValues:[]})}function Fe(e){B.value=e}function Q(){let e=B.value.trim();e&&e!==T.value&&O(e)}function Ie(e){O(e),B.value=e}function $(){let e=v.modelValue||k;O(e),B.value=e}return u({getValue:()=>T.value,setValue:e=>{O(e),B.value=e},reset:$,validate:()=>j()}),(t,r)=>{let u=ce,p=ie,m=re,g=oe,x=se,C=ae;return h(),o(`div`,{class:`c-cron`,style:f({height:H.value})},[a(` ═══════ 顶部 ═══════ `),s(`div`,pe,[a(` 标题行 `),s(`div`,me,[s(`div`,he,[l(e,{name:`mdi:clock-edit-outline`,size:18}),r[4]||=s(`span`,null,`Cron 表达式`,-1)]),l(u,{type:b(D).valid?`success`:`error`,size:`small`,round:``},{icon:S(()=>[l(e,{name:b(D).valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:S(()=>[c(` `+y(b(D).valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),a(` 分段式字段选择器 `),s(`div`,ge,[(h(!0),o(n,null,_(U.value,e=>(h(),o(`div`,{key:e.type,class:d([`c-cron__segment`,{"c-cron__segment--active":V.value===e.type,"c-cron__segment--wildcard":q.value[e.type]===`*`||q.value[e.type]===`?`}]),onClick:t=>V.value=e.type},[s(`div`,ve,y(q.value[e.type]),1),s(`div`,ye,y(e.label),1)],10,_e))),128))]),a(` 表达式行:输入 + 重置 + 描述 `),s(`div`,be,[l(p,{value:B.value,status:b(D).valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:v.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":Fe,onBlur:Q,onKeydown:ne(Q,[`enter`])},{prefix:S(()=>[l(e,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),l(m,{size:`small`,quaternary:``,disabled:v.disabled,onClick:$},{icon:S(()=>[l(e,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),s(`div`,xe,[b(D).valid?(h(),o(`span`,Se,y(b(z)),1)):(h(),o(`span`,Ce,y(b(D).message),1))])])]),a(` ═══════ 主内容 ═══════ `),s(`div`,we,[a(` 左侧:值网格 `),s(`div`,Te,[(h(!0),o(n,null,_(U.value,e=>te((h(),i(ue,{key:e.type,"model-value":b(w)[e.type],meta:e,"onUpdate:modelValue":t=>J(e.type,t)},null,8,[`model-value`,`meta`,`onUpdate:modelValue`])),[[ee,V.value===e.type]])),128))]),a(` 右侧:控制面板 `),s(`div`,Ee,[l(x,{value:G.value.mode,size:`small`,"onUpdate:value":Y},{default:S(()=>[l(g,{value:`every`},{default:S(()=>[c(` 每`+y(W.value.label),1)]),_:1}),V.value===`day`||V.value===`week`?(h(),i(g,{key:0,value:`none`},{default:S(()=>[...r[5]||=[c(` 不指定 `,-1)]]),_:1})):a(`v-if`,!0),l(g,{value:`range`},{default:S(()=>[...r[6]||=[c(`范围`,-1)]]),_:1}),l(g,{value:`step`},{default:S(()=>[...r[7]||=[c(`步进`,-1)]]),_:1}),l(g,{value:`specific`},{default:S(()=>[...r[8]||=[c(`指定`,-1)]]),_:1})]),_:1},8,[`value`]),a(` 范围配置 `),G.value.mode===`range`?(h(),o(`div`,De,[s(`div`,Oe,[r[9]||=s(`span`,null,`从`,-1),l(C,{value:G.value.rangeStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":r[0]||=e=>X({rangeStart:e??W.value.min})},null,8,[`value`,`min`,`max`]),r[10]||=s(`span`,null,`到`,-1),l(C,{value:G.value.rangeEnd,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":r[1]||=e=>X({rangeEnd:e??W.value.max})},null,8,[`value`,`min`,`max`])])])):a(`v-if`,!0),a(` 步进配置 `),G.value.mode===`step`?(h(),o(`div`,ke,[s(`div`,Ae,[r[11]||=s(`span`,null,`从第`,-1),l(C,{value:G.value.stepStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":r[2]||=e=>X({stepStart:e??W.value.min})},null,8,[`value`,`min`,`max`]),s(`span`,null,y(W.value.label)+`起,每`,1),l(C,{value:G.value.stepInterval,min:1,max:W.value.max-W.value.min+1,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":r[3]||=e=>X({stepInterval:e??1})},null,8,[`value`,`max`]),s(`span`,null,y(W.value.label)+`执行`,1)])])):a(`v-if`,!0),a(` 指定快捷操作 `),G.value.mode===`specific`?(h(),o(`div`,je,[s(`a`,{onClick:Z},`全选`),r[12]||=s(`span`,{class:`c-cron__quick-sep`},`·`,-1),s(`a`,{onClick:Pe},`清空`),G.value.specificValues.length>0?(h(),o(`span`,Me,` 已选 `+y(G.value.specificValues.length),1)):a(`v-if`,!0)])):a(`v-if`,!0),a(` 执行预览 `),v.showPreview?(h(),o(n,{key:3},[r[13]||=s(`div`,{class:`c-cron__panel-line`},null,-1),l(de,{"next-executions":b(N),computing:b(F),count:v.previewCount??5,"format-date":b(L),"format-week-day":b(R)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])],64)):a(`v-if`,!0)])]),a(` ═══════ 底部模板 ═══════ `),v.showTemplates?(h(),o(`div`,Ne,[l(fe,{templates:b(A),"current-value":b(T),onSelect:Ie},null,8,[`templates`,`current-value`])])):a(`v-if`,!0)],4)}}}),[[`__scopeId`,`data-v-06e7be26`]]);export{E as a,O as c,M as d,le as i,D as l,I as n,A as o,P as r,k as s,Z as t,j as u};
1
+ import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,normalizeStyle as f,onMounted as p,onScopeDispose as m,openBlock as h,ref as g,renderList as _,resolveComponent as v,toDisplayString as y,unref as b,vShow as ee,watch as x,withCtx as S,withDirectives as te,withKeys as ne}from"vue";import{NButton as re,NEmpty as C,NInput as ie,NInputNumber as ae,NRadioButton as oe,NRadioGroup as se,NScrollbar as w,NSpin as T,NTag as ce}from"naive-ui";const E=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],D={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},O={second:{...D,rangeEnd:59},minute:{...D,rangeEnd:59},hour:{...D,rangeEnd:23},day:{...D,rangeStart:1,rangeEnd:31},month:{...D,rangeStart:1,rangeEnd:12},week:{...D,mode:`none`,rangeStart:1,rangeEnd:7}},k=`0 0 0 * * ?`,A=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],j={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},M={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},N=[`second`,`minute`,`hour`,`day`,`month`,`week`];function P(){let e=structuredClone(O);for(let t of N)e[t].specificValues=[];let t=g(e);function n(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function i(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function a(e,t){let[n,r]=e.split(`/`).map(Number);return i(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(r)?1:r})}function o(e,t){let[n,r]=e.split(`-`).map(Number);return i(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(r)?t.max:r})}function s(e,t){let n=E.find(e=>e.type===t);if(e===`?`)return i(n,`none`);if(e===`*`)return i(n,`every`);if(e.includes(`/`))return a(e,n);if(e.includes(`-`)&&!e.includes(`,`))return o(e,n);let r=e.split(`,`).map(Number).filter(e=>!isNaN(e));return r.length>0?i(n,`specific`,{specificValues:r}):i(n,`every`)}function c(){return N.map(e=>n(t.value[e])).join(` `)}function l(e){if(!d(e).valid)return!1;let n=e.trim().split(/\s+/);return N.forEach((e,r)=>{t.value[e]=s(n[r],e)}),!0}function u(e){e===`day`?t.value.day.mode!==`none`&&(t.value.week={...t.value.week,mode:`none`}):t.value.week.mode!==`none`&&(t.value.day={...t.value.day,mode:`none`})}function d(e){let t=(e??c()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<N.length;e++){let n=N[e],r=t[e],i=h(r,E.find(e=>e.type===n));if(!i.valid)return{...i,field:n}}return{valid:!0,message:`表达式合法`}}function f(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return!Number.isInteger(i)||!Number.isInteger(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function p(e,t){let[n,r]=e.split(`-`).map(Number);return!Number.isInteger(n)||!Number.isInteger(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function m(e,t){let n=e.split(`,`).map(Number);return n.some(e=>!Number.isInteger(e))?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function h(e,t){return e===`*`?{valid:!0,message:``}:e===`?`?t.type===`day`||t.type===`week`?{valid:!0,message:``}:{valid:!1,message:`${t.label}字段不能使用 ?`}:/^(\*|\d+)\/\d+$/.test(e)?f(e,t):/^\d+-\d+$/.test(e)?p(e,t):/^\d+(,\d+)*$/.test(e)?m(e,t):{valid:!1,message:`${t.label}字段格式错误`}}return{cronValue:t,expression:r(()=>c()),validation:r(()=>d()),parse:l,generate:c,validate:d,handleDayWeekExclusion:u}}function F(e,t,n){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[r,i]=t.split(`/`),a=r===`*`?n:Number(r),o=Number(i);return o>0&&e>=a&&(e-a)%o===0}if(t.includes(`-`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).some(t=>Number(t)===e)}function le(e,t){let[,n,r,i,a,o]=t;return F(e.getMinutes(),n,0)&&F(e.getHours(),r,0)&&F(e.getDate(),i,1)&&F(e.getMonth()+1,a,1)&&F(e.getDay()+1,o,1)}function ue(e,t,n,r,i){for(let a of n){let n=new Date(t.getTime()+a*1e3);if(!(n.getTime()<=r.getTime())&&(e.push(n),e.length>=i))return!0}return!1}function de(e){return Number.isFinite(e)?Math.min(100,Math.max(1,Math.trunc(e))):10}function I(e){return e>0&&e%1e4==0}async function L(e,t,n=new Date,r=()=>!1){let i=e.trim().split(/\s+/);if(i.length!==6)return[];let a=Array.from({length:60},(e,t)=>t).filter(e=>F(e,i[0],0));if(a.length===0)return[];let o=de(t),s=[],c=new Date(n);c.setSeconds(0,0);for(let e=0;e<527040;e++){if(r())return[];if(le(c,i)&&ue(s,c,a,n,o))return s;c.setTime(c.getTime()+6e4),I(e)&&await new Promise(e=>setTimeout(e,0))}return s}function R(e,t,n){let r=g([]),i=g(!1),a=0,o=null;x([e,n,t],()=>{a+=1;let s=a;if(o&&clearTimeout(o),!t.value.valid){r.value=[],i.value=!1,o=null;return}i.value=!0,o=setTimeout(async()=>{let t=await L(e.value,n.value,new Date,()=>s!==a);s===a&&(r.value=t,i.value=!1,o=null)},0)},{immediate:!0}),m(()=>{a+=1,o&&clearTimeout(o)});function s(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function c(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:r,computing:i,formatDate:s,formatWeekDay:c}}function z(e){return M[Number(e)]||`周${e}`}function B(e,t){let n=r(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,d,f,p]=t,m=[];return m.push(l(f)),p===`?`?m.push(c(d)):m.push(u(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:d(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:d(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:d(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function l(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return j[t]?`${j[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>j[Number(e)]||`${e}月`).join(`、`):``}function u(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${z(e)}`:e.includes(`/`)?`从${z(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${z(e.split(`-`)[0])}到${z(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(z).join(`、`)}`:``}function d(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:n}}const V={class:`cron-field-editor`},H=[`disabled`,`aria-pressed`,`onClick`];var fe=t(u({__name:`CronFieldEditor`,props:{modelValue:{},meta:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let i=e,a=t,c=r(()=>{switch(i.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),l=r(()=>{let e=[];for(let t=i.meta.min;t<=i.meta.max;t++)e.push({value:t,label:i.meta.valueLabels?.[t]??String(t)});return e}),u=r(()=>{let{modelValue:e,meta:t}=i,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=Math.max(1,e.stepInterval))n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function p(e){if(i.disabled||i.modelValue.mode!==`specific`)return;let t=[...i.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),a(`update:modelValue`,{...i.modelValue,specificValues:t})}return(t,r)=>(h(),o(`div`,V,[s(`div`,{class:`cron-field-editor__grid`,style:f({"--cols":c.value})},[(h(!0),o(n,null,_(l.value,t=>(h(),o(`button`,{key:t.value,type:`button`,class:d([`cron-field-editor__cell`,{"cron-field-editor__cell--on":u.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),disabled:e.disabled||e.modelValue.mode!==`specific`,"aria-pressed":e.modelValue.mode===`specific`?u.value.has(t.value):void 0,onClick:e=>p(t.value)},y(t.label),11,H))),128))],4)]))}}),[[`__scopeId`,`data-v-60c57fc6`]]);const U={class:`cron-preview`},W={class:`cron-preview__header`},G={key:0,class:`cron-preview__list`},K={class:`cron-preview__idx`},q={class:`cron-preview__date`},J={class:`cron-preview__week`};var pe=t(u({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(r,c)=>{let u=T,d=C,f=w;return h(),o(`div`,U,[s(`div`,W,[l(e,{name:`mdi:calendar-clock`,size:15}),c[0]||=s(`span`,null,`未来执行`,-1),t.computing?(h(),i(u,{key:0,size:14})):a(`v-if`,!0)]),l(f,{style:{"max-height":`220px`}},{default:S(()=>[t.nextExecutions.length>0?(h(),o(`div`,G,[(h(!0),o(n,null,_(t.nextExecutions,(e,n)=>(h(),o(`div`,{key:n,class:`cron-preview__item`},[s(`span`,K,y(n+1),1),s(`span`,q,y(t.formatDate(e)),1),s(`span`,J,y(t.formatWeekDay(e)),1)]))),128))])):(h(),i(d,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}}),[[`__scopeId`,`data-v-a695bb32`]]);const Y={class:`cron-templates`},X={class:`cron-templates__header`},me={class:`cron-templates__cards`},he=[`disabled`,`aria-pressed`,`onClick`],ge={class:`cron-templates__card-name`},Z={class:`cron-templates__card-expr`};var _e=t(u({__name:`CronTemplates`,props:{templates:{},currentValue:{},disabled:{type:Boolean}},emits:[`select`],setup(t){return(r,i)=>(h(),o(`div`,Y,[s(`div`,X,[l(e,{name:`mdi:lightning-bolt`,size:15}),i[0]||=s(`span`,null,`常用模板`,-1)]),s(`div`,me,[(h(!0),o(n,null,_(t.templates,e=>(h(),o(`button`,{key:e.value,type:`button`,disabled:t.disabled,"aria-pressed":e.value===t.currentValue,class:d([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[s(`div`,ge,y(e.label),1),s(`div`,Z,y(e.value),1)],10,he))),128))])]))}}),[[`__scopeId`,`data-v-241e79f6`]]);const ve={class:`c-cron__header`},ye={class:`c-cron__title-row`},be={class:`c-cron__title`},xe={class:`c-cron__segments`},Se=[`aria-pressed`,`onClick`],Ce={class:`c-cron__segment-value`},we={class:`c-cron__segment-label`},Te={class:`c-cron__expr-row`},Ee={class:`c-cron__expr-desc`},De={key:0,class:`c-cron__description`},Oe={key:1,class:`c-cron__error`},ke={class:`c-cron__body`},Ae={class:`c-cron__main`},je={class:`c-cron__panel`},Me={key:0,class:`c-cron__config`},Ne={class:`c-cron__config-row`},Pe={key:1,class:`c-cron__config`},Fe={class:`c-cron__config-row`},Ie={key:2,class:`c-cron__quick`},Le=[`disabled`],Re=[`disabled`],ze={key:0,class:`c-cron__quick-count`},Be={key:1,class:`c-cron__error`},Ve={key:0,class:`c-cron__footer`};var Q=t(u({name:`C_Cron`,__name:`index`,props:{modelValue:{default:k},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:u,emit:m}){let v=t,C=m,{cronValue:w,expression:T,validation:D,parse:O,validate:j,handleDayWeekExclusion:M}=P(),{nextExecutions:N,computing:F,formatDate:le,formatWeekDay:ue}=R(T,D,r(()=>v.previewCount??10)),{description:de}=B(T,D),I=g(v.modelValue||k),L=g(null),z=r(()=>L.value??D.value),V=g(v.showSecond?`second`:`minute`),H=r(()=>typeof v.height==`number`?`${v.height}px`:v.height),U=r(()=>v.showSecond?E:E.filter(e=>e.type!==`second`)),W=r(()=>E.find(e=>e.type===V.value)),G=r(()=>w.value[V.value]);function K(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let q=r(()=>{let e={};for(let t of E)e[t.type]=K(w.value[t.type]);return e});p(()=>{Q(v.modelValue||k)}),x(()=>v.modelValue,e=>{e!==T.value&&Q(e||k)}),x(()=>v.showSecond,e=>{!e&&V.value===`second`&&(V.value=`minute`)}),x(T,e=>{I.value=e,L.value=null,C(`update:modelValue`,e),C(`change`,e)}),x(z,e=>{C(`validation-change`,e)});function J(e,t){v.disabled||(L.value=null,w.value[e]=t,(e===`day`||e===`week`)&&M(e))}function Y(e){J(V.value,{...G.value,mode:e})}function X(e){J(V.value,{...G.value,...e})}function me(){let{min:e,max:t}=W.value,n=Array.from({length:t-e+1},(t,n)=>e+n);J(V.value,{...G.value,specificValues:n})}function he(){J(V.value,{...G.value,specificValues:[]})}function ge(e){I.value=e,L.value=j(e)}function Z(){v.disabled||Q(I.value.trim())}function Q(e){I.value=e;let t=j(e);L.value=t.valid?null:t,t.valid&&O(e)}function He(e){v.disabled||Q(e)}function $(){Q(v.modelValue||k)}return u({getValue:()=>T.value,setValue:e=>{Q(e)},reset:$,validate:()=>z.value}),(t,r)=>{let u=ce,p=ie,m=re,g=oe,x=se,C=ae;return h(),o(`div`,{class:`c-cron`,style:f({height:H.value})},[a(` ═══════ 顶部 ═══════ `),s(`div`,ve,[a(` 标题行 `),s(`div`,ye,[s(`div`,be,[l(e,{name:`mdi:clock-edit-outline`,size:18}),r[4]||=s(`span`,null,`Cron 表达式`,-1)]),l(u,{type:z.value.valid?`success`:`error`,size:`small`,round:``},{icon:S(()=>[l(e,{name:z.value.valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:S(()=>[c(` `+y(z.value.valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),a(` 分段式字段选择器 `),s(`div`,xe,[(h(!0),o(n,null,_(U.value,e=>(h(),o(`button`,{key:e.type,type:`button`,class:d([`c-cron__segment`,{"c-cron__segment--active":V.value===e.type,"c-cron__segment--wildcard":q.value[e.type]===`*`||q.value[e.type]===`?`}]),"aria-pressed":V.value===e.type,onClick:t=>V.value=e.type},[s(`div`,Ce,y(q.value[e.type]),1),s(`div`,we,y(e.label),1)],10,Se))),128))]),a(` 表达式行:输入 + 重置 + 描述 `),s(`div`,Te,[l(p,{value:I.value,status:z.value.valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:v.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":ge,onBlur:Z,onKeydown:ne(Z,[`enter`])},{prefix:S(()=>[l(e,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),l(m,{size:`small`,quaternary:``,disabled:v.disabled,onClick:$},{icon:S(()=>[l(e,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),s(`div`,Ee,[z.value.valid?(h(),o(`span`,De,y(b(de)),1)):(h(),o(`span`,Oe,y(z.value.message),1))])])]),a(` ═══════ 主内容 ═══════ `),s(`div`,ke,[a(` 左侧:值网格 `),s(`div`,Ae,[(h(!0),o(n,null,_(U.value,e=>te((h(),i(fe,{key:e.type,"model-value":b(w)[e.type],meta:e,disabled:v.disabled,"onUpdate:modelValue":t=>J(e.type,t)},null,8,[`model-value`,`meta`,`disabled`,`onUpdate:modelValue`])),[[ee,V.value===e.type]])),128))]),a(` 右侧:控制面板 `),s(`div`,je,[l(x,{value:G.value.mode,disabled:v.disabled,size:`small`,"onUpdate:value":Y},{default:S(()=>[l(g,{value:`every`},{default:S(()=>[c(` 每`+y(W.value.label),1)]),_:1}),V.value===`day`||V.value===`week`?(h(),i(g,{key:0,value:`none`},{default:S(()=>[...r[5]||=[c(` 不指定 `,-1)]]),_:1})):a(`v-if`,!0),l(g,{value:`range`},{default:S(()=>[...r[6]||=[c(`范围`,-1)]]),_:1}),l(g,{value:`step`},{default:S(()=>[...r[7]||=[c(`步进`,-1)]]),_:1}),l(g,{value:`specific`},{default:S(()=>[...r[8]||=[c(`指定`,-1)]]),_:1})]),_:1},8,[`value`,`disabled`]),a(` 范围配置 `),G.value.mode===`range`?(h(),o(`div`,Me,[s(`div`,Ne,[r[9]||=s(`span`,null,`从`,-1),l(C,{value:G.value.rangeStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[0]||=e=>X({rangeStart:e??W.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),r[10]||=s(`span`,null,`到`,-1),l(C,{value:G.value.rangeEnd,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[1]||=e=>X({rangeEnd:e??W.value.max})},null,8,[`value`,`min`,`max`,`disabled`])])])):a(`v-if`,!0),a(` 步进配置 `),G.value.mode===`step`?(h(),o(`div`,Pe,[s(`div`,Fe,[r[11]||=s(`span`,null,`从第`,-1),l(C,{value:G.value.stepStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[2]||=e=>X({stepStart:e??W.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),s(`span`,null,y(W.value.label)+`起,每`,1),l(C,{value:G.value.stepInterval,min:1,max:W.value.max-W.value.min+1,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[3]||=e=>X({stepInterval:e??1})},null,8,[`value`,`max`,`disabled`]),s(`span`,null,y(W.value.label)+`执行`,1)])])):a(`v-if`,!0),a(` 指定快捷操作 `),G.value.mode===`specific`?(h(),o(`div`,Ie,[s(`button`,{type:`button`,disabled:v.disabled,onClick:me},`全选`,8,Le),r[12]||=s(`span`,{class:`c-cron__quick-sep`},`·`,-1),s(`button`,{type:`button`,disabled:v.disabled,onClick:he},`清空`,8,Re),G.value.specificValues.length>0?(h(),o(`span`,ze,` 已选 `+y(G.value.specificValues.length),1)):a(`v-if`,!0)])):a(`v-if`,!0),a(` 执行预览 `),v.showPreview?(h(),o(n,{key:3},[r[13]||=s(`div`,{class:`c-cron__panel-line`},null,-1),z.value.valid?(h(),i(pe,{key:0,"next-executions":b(N),computing:b(F),count:v.previewCount??5,"format-date":b(le),"format-week-day":b(ue)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])):(h(),o(`div`,Be,`请先修正表达式`))],64)):a(`v-if`,!0)])]),a(` ═══════ 底部模板 ═══════ `),v.showTemplates?(h(),o(`div`,Ve,[l(_e,{templates:b(A),"current-value":b(T),disabled:v.disabled,onSelect:He},null,8,[`templates`,`current-value`,`disabled`])])):a(`v-if`,!0)],4)}}}),[[`__scopeId`,`data-v-2594f81f`]]);export{E as a,O as c,M as d,P as i,D as l,B as n,A as o,R as r,k as s,Q as t,j as u};
package/dist/C_Date.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as DatePickerMode, c as DateValue, i as DateModelValue, n as DateEmits, o as DateProps, r as DateExpose, s as DateRangeValue, t as _default } from "./index12.vue.cjs";
1
+ import { a as DatePickerMode, c as DateValue, i as DateModelValue, n as DateEmits, o as DateProps, r as DateExpose, s as DateRangeValue, t as _default } from "./index11.vue.cjs";
2
2
  export { _default as C_Date, type DateEmits, type DateExpose, type DateModelValue, type DatePickerMode, type DateProps, type DateRangeValue, type DateValue };
package/dist/C_Date.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as DatePickerMode, c as DateValue, i as DateModelValue, n as DateEmits, o as DateProps, r as DateExpose, s as DateRangeValue, t as _default } from "./index11.vue.js";
1
+ import { a as DatePickerMode, c as DateValue, i as DateModelValue, n as DateEmits, o as DateProps, r as DateExpose, s as DateRangeValue, t as _default } from "./index10.vue.js";
2
2
  export { _default as C_Date, type DateEmits, type DateExpose, type DateModelValue, type DatePickerMode, type DateProps, type DateRangeValue, type DateValue };
package/dist/C_Date2.cjs CHANGED
@@ -1 +1 @@
1
- require(`./chunk.cjs`);let e=require(`vue`),t=require(`naive-ui`);const n={class:`inline-block`},r={key:4,class:`inline-block`},i={class:`flex gap-2.5 items-center`},a=(0,e.defineComponent)({name:`C_Date`,__name:`index`,props:{modelValue:{},mode:{default:`date`},placeholder:{default:``},startPlaceholder:{default:``},endPlaceholder:{default:``},disabled:{type:Boolean,default:!1},disabledBeforeToday:{type:Boolean,default:!1},disabledAfterToday:{type:Boolean,default:!1},valueFormat:{},startDateProps:{default:()=>({})},endDateProps:{default:()=>({})},singleDate:{default:null},singleDateTime:{default:null},dateRange:{default:null},dateTimeRange:{default:null},smartRange:{default:null}},emits:[`update:modelValue`,`update:singleDate`,`update:singleDateTime`,`update:dateRange`,`update:dateTimeRange`,`update:smartRange`,`change`],setup(a,{expose:o,emit:s}){let c=a,l=s,u=()=>{let e=new Date;return e.setHours(0,0,0,0),e.getTime()},d=(0,e.computed)(()=>c.valueFormat?c.valueFormat:c.mode.includes(`datetime`)?`yyyy-MM-dd HH:mm:ss`:`yyyy-MM-dd`),f=(0,e.computed)({get:()=>c.modelValue===void 0?c.singleDate??null:c.modelValue,set:e=>{l(`update:modelValue`,e),l(`update:singleDate`,e),l(`change`,e)}}),p=(0,e.computed)({get:()=>c.modelValue===void 0?c.singleDateTime??null:c.modelValue,set:e=>{l(`update:modelValue`,e),l(`update:singleDateTime`,e),l(`change`,e)}}),m=(0,e.computed)({get:()=>c.modelValue===void 0?c.dateRange??null:c.modelValue,set:e=>{l(`update:modelValue`,e),l(`update:dateRange`,e),l(`change`,e)}}),h=(0,e.computed)({get:()=>c.modelValue===void 0?c.dateTimeRange??null:c.modelValue,set:e=>{l(`update:modelValue`,e),l(`update:dateTimeRange`,e),l(`change`,e)}}),g=(0,e.ref)(null),_=(0,e.ref)(null),v=(0,e.computed)(()=>c.disabled||g.value===null),y=!1;(0,e.watch)(()=>[c.modelValue,c.smartRange,c.mode],([e,t,n])=>{let r=n===`smart-range`&&e!==void 0?e:t,i=r?.[0]??null,a=r?.[1]??null;i===g.value&&a===_.value||(y=!0,g.value=i,_.value=a,y=!1)},{immediate:!0,deep:!0}),(0,e.watch)(()=>[g.value,_.value],([e,t])=>{if(y)return;if(e===null&&t!==null){_.value=null;return}if(e!==null&&t!==null&&new Date(t).getTime()<new Date(e).getTime()){_.value=null;return}let n=e!==null&&t!==null?[e,t]:null;l(`update:modelValue`,n),l(`update:smartRange`,n),l(`change`,n)},{deep:!0,flush:`sync`});let b=e=>{let t=u();return!!(c.disabledBeforeToday&&e<t||c.disabledAfterToday&&e>t)},x=e=>g.value===null||e<new Date(g.value).getTime()?!0:b(e);return o({clearAll:()=>{y=!0,g.value=null,_.value=null,y=!1,l(`update:modelValue`,null),l(`update:singleDate`,null),l(`update:singleDateTime`,null),l(`update:dateRange`,null),l(`update:dateTimeRange`,null),l(`update:smartRange`,null)}}),(o,s)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,n,[a.mode===`date`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:0,"formatted-value":f.value,"onUpdate:formattedValue":s[0]||=e=>f.value=e,type:`date`,placeholder:a.placeholder||`请选择日期`,disabled:a.disabled,"is-date-disabled":b,"value-format":d.value,clearable:``},o.$attrs),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`])):a.mode===`datetime`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:1,"formatted-value":p.value,"onUpdate:formattedValue":s[1]||=e=>p.value=e,type:`datetime`,placeholder:a.placeholder||`请选择日期时间`,disabled:a.disabled,"is-date-disabled":b,"value-format":d.value,clearable:``},o.$attrs),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`])):a.mode===`daterange`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:2,"formatted-value":m.value,"onUpdate:formattedValue":s[2]||=e=>m.value=e,type:`daterange`,"start-placeholder":a.startPlaceholder||`开始日期`,"end-placeholder":a.endPlaceholder||`结束日期`,disabled:a.disabled,"is-date-disabled":b,"value-format":d.value,clearable:``},o.$attrs),null,16,[`formatted-value`,`start-placeholder`,`end-placeholder`,`disabled`,`value-format`])):a.mode===`datetimerange`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:3,"formatted-value":h.value,"onUpdate:formattedValue":s[3]||=e=>h.value=e,type:`datetimerange`,"start-placeholder":a.startPlaceholder||`开始日期时间`,"end-placeholder":a.endPlaceholder||`结束日期时间`,disabled:a.disabled,"is-date-disabled":b,"value-format":d.value,clearable:``},o.$attrs),null,16,[`formatted-value`,`start-placeholder`,`end-placeholder`,`disabled`,`value-format`])):a.mode===`smart-range`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,r,[(0,e.createElementVNode)(`div`,i,[(0,e.createVNode)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({class:`flex-1`,"formatted-value":g.value,"onUpdate:formattedValue":s[4]||=e=>g.value=e,type:`date`,placeholder:a.startPlaceholder||`请选择开始日期`,disabled:a.disabled,"is-date-disabled":b,"value-format":d.value,clearable:``},a.startDateProps),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`]),(0,e.createVNode)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({class:`flex-1`,"formatted-value":_.value,"onUpdate:formattedValue":s[5]||=e=>_.value=e,type:`date`,placeholder:a.endPlaceholder||`请选择结束日期`,disabled:v.value,"is-date-disabled":x,"value-format":d.value,clearable:``},a.endDateProps),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`])])])):(0,e.createCommentVNode)(`v-if`,!0)]))}});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
1
+ require(`./chunk.cjs`);let e=require(`vue`),t=require(`naive-ui`);function n(e){let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3])).getTime();let n=new Date(e);return new Date(n.getFullYear(),n.getMonth(),n.getDate()).getTime()}const r={class:`inline-block`},i={key:4,class:`inline-block`},a={class:`flex gap-2.5 items-center`},o=(0,e.defineComponent)({name:`C_Date`,__name:`index`,props:{modelValue:{},mode:{default:`date`},placeholder:{default:``},startPlaceholder:{default:``},endPlaceholder:{default:``},disabled:{type:Boolean,default:!1},disabledBeforeToday:{type:Boolean,default:!1},disabledAfterToday:{type:Boolean,default:!1},valueFormat:{},startDateProps:{default:()=>({})},endDateProps:{default:()=>({})},singleDate:{default:null},singleDateTime:{default:null},dateRange:{default:null},dateTimeRange:{default:null},smartRange:{default:null}},emits:[`update:modelValue`,`update:singleDate`,`update:singleDateTime`,`update:dateRange`,`update:dateTimeRange`,`update:smartRange`,`change`],setup(o,{expose:s,emit:c}){let l=o,u=c,d=()=>{let e=new Date;return e.setHours(0,0,0,0),e.getTime()},f=(0,e.computed)(()=>l.valueFormat?l.valueFormat:l.mode.includes(`datetime`)?`yyyy-MM-dd HH:mm:ss`:`yyyy-MM-dd`),p=(0,e.computed)({get:()=>l.modelValue===void 0?l.singleDate??null:l.modelValue,set:e=>{u(`update:modelValue`,e),u(`update:singleDate`,e),u(`change`,e)}}),m=(0,e.computed)({get:()=>l.modelValue===void 0?l.singleDateTime??null:l.modelValue,set:e=>{u(`update:modelValue`,e),u(`update:singleDateTime`,e),u(`change`,e)}}),h=(0,e.computed)({get:()=>l.modelValue===void 0?l.dateRange??null:l.modelValue,set:e=>{u(`update:modelValue`,e),u(`update:dateRange`,e),u(`change`,e)}}),g=(0,e.computed)({get:()=>l.modelValue===void 0?l.dateTimeRange??null:l.modelValue,set:e=>{u(`update:modelValue`,e),u(`update:dateTimeRange`,e),u(`change`,e)}}),_=(0,e.ref)(null),v=(0,e.ref)(null),y=(0,e.computed)(()=>l.disabled||_.value===null),b=!1;(0,e.watch)(()=>[l.modelValue,l.smartRange,l.mode],([e,t,n])=>{let r=n===`smart-range`&&e!==void 0?e:t,i=r?.[0]??null,a=r?.[1]??null;i===_.value&&a===v.value||(b=!0,_.value=i,v.value=a,b=!1)},{immediate:!0,deep:!0}),(0,e.watch)(()=>[_.value,v.value],([e,t])=>{if(b)return;if(e===null&&t!==null){v.value=null;return}if(e!==null&&t!==null&&n(t)<n(e)){v.value=null;return}let r=e!==null&&t!==null?[e,t]:null;u(`update:modelValue`,r),u(`update:smartRange`,r),u(`change`,r)},{deep:!0,flush:`sync`});let x=e=>{let t=d();return!!(l.disabledBeforeToday&&e<t||l.disabledAfterToday&&e>t)},S=e=>_.value===null||e<n(_.value)?!0:x(e);return s({clearAll:()=>{b=!0,_.value=null,v.value=null,b=!1,u(`update:modelValue`,null),u(`update:singleDate`,null),u(`update:singleDateTime`,null),u(`update:dateRange`,null),u(`update:dateTimeRange`,null),u(`update:smartRange`,null),u(`change`,null)}}),(n,s)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,r,[o.mode===`date`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:0,"formatted-value":p.value,"onUpdate:formattedValue":s[0]||=e=>p.value=e,type:`date`,placeholder:o.placeholder||`请选择日期`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},n.$attrs),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`])):o.mode===`datetime`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:1,"formatted-value":m.value,"onUpdate:formattedValue":s[1]||=e=>m.value=e,type:`datetime`,placeholder:o.placeholder||`请选择日期时间`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},n.$attrs),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`])):o.mode===`daterange`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:2,"formatted-value":h.value,"onUpdate:formattedValue":s[2]||=e=>h.value=e,type:`daterange`,"start-placeholder":o.startPlaceholder||`开始日期`,"end-placeholder":o.endPlaceholder||`结束日期`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},n.$attrs),null,16,[`formatted-value`,`start-placeholder`,`end-placeholder`,`disabled`,`value-format`])):o.mode===`datetimerange`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:3,"formatted-value":g.value,"onUpdate:formattedValue":s[3]||=e=>g.value=e,type:`datetimerange`,"start-placeholder":o.startPlaceholder||`开始日期时间`,"end-placeholder":o.endPlaceholder||`结束日期时间`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},n.$attrs),null,16,[`formatted-value`,`start-placeholder`,`end-placeholder`,`disabled`,`value-format`])):o.mode===`smart-range`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,i,[(0,e.createElementVNode)(`div`,a,[(0,e.createVNode)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({class:`flex-1`,"formatted-value":_.value,"onUpdate:formattedValue":s[4]||=e=>_.value=e,type:`date`,placeholder:o.startPlaceholder||`请选择开始日期`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},o.startDateProps),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`]),(0,e.createVNode)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({class:`flex-1`,"formatted-value":v.value,"onUpdate:formattedValue":s[5]||=e=>v.value=e,type:`date`,placeholder:o.endPlaceholder||`请选择结束日期`,disabled:y.value,"is-date-disabled":S,"value-format":f.value,clearable:``},o.endDateProps),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`])])])):(0,e.createCommentVNode)(`v-if`,!0)]))}});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});