st-comp 0.0.277 → 0.0.279

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 (319) hide show
  1. package/README.md +19 -19
  2. package/es/ChartLayout.cjs +1 -1
  3. package/es/ChartLayout.js +1 -1
  4. package/es/ConfigProvider.cjs +1 -1
  5. package/es/ConfigProvider.js +3 -3
  6. package/es/Contextmenu.cjs +1 -1
  7. package/es/Contextmenu.js +7 -7
  8. package/es/CustomFunction.cjs +2 -2
  9. package/es/CustomFunction.js +514 -308
  10. package/es/FactorWarning.cjs +1 -1
  11. package/es/FactorWarning.js +37 -37
  12. package/es/HeatMap.cjs +1 -1
  13. package/es/HeatMap.js +7 -7
  14. package/es/Kline.cjs +1 -1
  15. package/es/Kline.js +18 -18
  16. package/es/KlineBasic.cjs +1 -1
  17. package/es/KlineBasic.js +93 -93
  18. package/es/KlineConfig.cjs +1 -1
  19. package/es/KlineConfig.js +17 -17
  20. package/es/KlineNew.cjs +1 -1
  21. package/es/KlineNew.js +14 -14
  22. package/es/KlinePlus.cjs +4 -4
  23. package/es/KlinePlus.js +760 -656
  24. package/es/LinearLegend.cjs +1 -1
  25. package/es/LinearLegend.js +1 -1
  26. package/es/Map.cjs +1 -1
  27. package/es/Map.js +1 -1
  28. package/es/MonacoEditor.cjs +1 -1
  29. package/es/MonacoEditor.js +18 -18
  30. package/es/Pagination.cjs +1 -1
  31. package/es/Pagination.js +76 -76
  32. package/es/PasswordPrompt.cjs +1 -1
  33. package/es/PasswordPrompt.js +2 -2
  34. package/es/Pie.cjs +2 -2
  35. package/es/Pie.js +14 -14
  36. package/es/Table.cjs +1 -1
  37. package/es/Table.js +22 -22
  38. package/es/TreeMap.cjs +1 -1
  39. package/es/TreeMap.js +4 -4
  40. package/es/User.cjs +1 -1
  41. package/es/User.js +73 -73
  42. package/es/VarSelectDialog.cjs +2 -2
  43. package/es/VarSelectDialog.js +21 -21
  44. package/es/VarietyAiHelper.cjs +4 -4
  45. package/es/VarietyAiHelper.js +139 -138
  46. package/es/VarietyAutoComplete.cjs +1 -1
  47. package/es/VarietyAutoComplete.js +16 -16
  48. package/es/VarietySearch.cjs +4 -4
  49. package/es/VarietySearch.js +861 -857
  50. package/es/{VarietySelect-6a166293.js → VarietySelect-41daac7b.js} +10 -10
  51. package/es/{VarietySelect-610903f0.cjs → VarietySelect-d58eee29.cjs} +1 -1
  52. package/es/VarietyTextCopy.cjs +2 -2
  53. package/es/VarietyTextCopy.js +25 -25
  54. package/es/VirtualTable.cjs +1 -1
  55. package/es/VirtualTable.js +6 -6
  56. package/es/{_initCloneObject-152b4f4e.js → _initCloneObject-5e73c9c8.js} +2 -2
  57. package/es/{_initCloneObject-76e116d0.cjs → _initCloneObject-a5832933.cjs} +1 -1
  58. package/es/aiTools-229609fb.cjs +2 -0
  59. package/es/aiTools-ce2f9281.js +115 -0
  60. package/es/aiTools.js +179 -176
  61. package/es/{config-provider-4c784baf.cjs → config-provider-06ea6b42.cjs} +1 -1
  62. package/es/{config-provider-7a3aca55.js → config-provider-88b637a8.js} +3 -3
  63. package/es/{dropdown-987c47fb.cjs → dropdown-4ce4c3e2.cjs} +1 -1
  64. package/es/{dropdown-01e09205.js → dropdown-72fbc15d.js} +2 -2
  65. package/es/{el-autocomplete-342ae823.js → el-autocomplete-6cafcdf1.js} +5 -5
  66. package/es/{el-autocomplete-16f66b34.cjs → el-autocomplete-e0857c5b.cjs} +1 -1
  67. package/es/{el-button-13dc915f.cjs → el-button-613e0bb2.cjs} +1 -1
  68. package/es/{el-button-314171a0.js → el-button-94d3de38.js} +3 -3
  69. package/es/{el-checkbox-5899681f.js → el-checkbox-6d4cb393.js} +3 -3
  70. package/es/{el-checkbox-bdf64663.cjs → el-checkbox-e90762df.cjs} +1 -1
  71. package/es/{el-dialog-0ef95df6.cjs → el-dialog-02942e22.cjs} +1 -1
  72. package/es/{el-dialog-86a3eec2.js → el-dialog-5e30161f.js} +4 -4
  73. package/es/{el-form-item-77ef6784.cjs → el-form-item-44f060d8.cjs} +1 -1
  74. package/es/{el-form-item-cda4d93c.js → el-form-item-9e8969ea.js} +5 -5
  75. package/es/{el-input-fa1445ad.js → el-input-342b2def.js} +13 -13
  76. package/es/{el-input-89222943.cjs → el-input-9a9a7f7f.cjs} +1 -1
  77. package/es/{el-input-number-d3338e5e.cjs → el-input-number-65c847d6.cjs} +1 -1
  78. package/es/{el-input-number-8f6dbf74.js → el-input-number-c22b803a.js} +35 -35
  79. package/es/{el-loading-84dde1a8.cjs → el-loading-8179b497.cjs} +1 -1
  80. package/es/{el-loading-9b671203.js → el-loading-bcc51e3d.js} +1 -1
  81. package/es/{el-menu-item-535fef90.js → el-menu-item-339baf6d.js} +21 -21
  82. package/es/{el-menu-item-4531fd0e.cjs → el-menu-item-83186444.cjs} +1 -1
  83. package/es/{el-message-box-621ed2f1.js → el-message-box-035b699c.js} +9 -9
  84. package/es/{el-message-box-f5717070.cjs → el-message-box-c62d3217.cjs} +1 -1
  85. package/es/{el-overlay-23de4324.js → el-overlay-3e17604b.js} +3 -3
  86. package/es/{el-overlay-151708cb.cjs → el-overlay-8f1da9e8.cjs} +1 -1
  87. package/es/{el-popconfirm-b8aa490e.cjs → el-popconfirm-4e32ec1b.cjs} +1 -1
  88. package/es/{el-popconfirm-bcff0aa5.js → el-popconfirm-f8a86e2c.js} +4 -4
  89. package/es/{el-popper-43ec37f4.cjs → el-popper-a4f3ae4d.cjs} +1 -1
  90. package/es/{el-popper-03988662.js → el-popper-fbd0dcea.js} +1 -1
  91. package/es/{el-segmented-db3a86be.js → el-segmented-56bd58a8.js} +2 -2
  92. package/es/{el-segmented-79a1367c.cjs → el-segmented-833ac177.cjs} +1 -1
  93. package/es/{el-select-4bd0010d.js → el-select-44fa547d.js} +8 -8
  94. package/es/{el-select-ec04e7ce.cjs → el-select-70806166.cjs} +1 -1
  95. package/es/{el-table-column-35e47229.cjs → el-table-column-3e2cdfca.cjs} +1 -1
  96. package/es/{el-table-column-7af2bec7.js → el-table-column-b74a857d.js} +9 -9
  97. package/es/{el-tag-bef9e83d.js → el-tag-66c83156.js} +2 -2
  98. package/es/{el-tag-5d5608e0.cjs → el-tag-9c2f329f.cjs} +1 -1
  99. package/es/{el-text-f998902c.js → el-text-034bd3f4.js} +1 -1
  100. package/es/{el-text-abf10fdf.cjs → el-text-6b2374bb.cjs} +1 -1
  101. package/es/index-00f6ca75.cjs +1 -0
  102. package/es/{index-a00e0534.cjs → index-185792a7.cjs} +1 -1
  103. package/es/{index-d1b554ac.js → index-1e2a38ab.js} +2 -2
  104. package/es/{index-0986e373.cjs → index-3153c1db.cjs} +1 -1
  105. package/es/{index-936e7dec.js → index-44a382a5.js} +2 -2
  106. package/es/{index-ce21e2ce.js → index-5216d5f5.js} +5 -5
  107. package/es/{index-7ed0999e.js → index-53cc4e43.js} +720 -716
  108. package/es/{index-cfcd60ca.cjs → index-5c0dd943.cjs} +1 -1
  109. package/es/{index-cfd00899.cjs → index-870b6c9d.cjs} +1 -1
  110. package/es/{index-a83ec4b7.js → index-8c2d7e05.js} +1 -1
  111. package/es/{index-8901a38c.cjs → index-94131fd7.cjs} +30 -30
  112. package/es/{index-db846633.cjs → index-9d16cea8.cjs} +1 -1
  113. package/es/{index-f3f6ee27.js → index-a33b2fb8.js} +178 -178
  114. package/es/{index-2d7ac156.cjs → index-a9246d17.cjs} +17 -17
  115. package/es/{index-60c69dd1.cjs → index-ac8dc53d.cjs} +1 -1
  116. package/es/{index-102edf6c.js → index-c5f2d372.js} +2 -2
  117. package/es/{index-6290ae0f.js → index-c6584658.js} +2 -2
  118. package/es/{index-5c44d71a.js → index-eb96e074.js} +149 -119
  119. package/es/{index-5ed42e9c.js → index-f034b910.js} +2 -2
  120. package/es/{index-c58e90e9.cjs → index-f58b2920.cjs} +1 -1
  121. package/es/{python-6cc6ec1b.js → python-8a1664e6.js} +18 -18
  122. package/es/{python-71f59893.cjs → python-a3db9620.cjs} +1 -1
  123. package/es/style.css +1 -1
  124. package/es/{use-form-common-props-02be4928.cjs → use-form-common-props-ac666630.cjs} +1 -1
  125. package/es/{use-form-common-props-76a09d89.js → use-form-common-props-ed72e914.js} +11 -11
  126. package/es/{use-global-config-31b3ec57.cjs → use-global-config-23472471.cjs} +1 -1
  127. package/es/{use-global-config-0f43458b.js → use-global-config-ee406d58.js} +2 -2
  128. package/es/{validator-ea292506.cjs → validator-366dbf39.cjs} +1 -1
  129. package/es/{validator-0e037618.js → validator-c60a8956.js} +1 -1
  130. package/es/{zh-cn-1227eb8a.js → zh-cn-b59a0910.js} +1 -1
  131. package/es/{zh-cn-0edc7234.cjs → zh-cn-c21d12d8.cjs} +1 -1
  132. package/lib/aiTools.js +179 -176
  133. package/lib/bundle.js +1 -1
  134. package/lib/bundle.umd.cjs +230 -230
  135. package/lib/{index-2a269748.js → index-62fa175a.js} +30149 -29800
  136. package/lib/{python-41da18e5.js → python-4a48fa39.js} +1 -1
  137. package/lib/style.css +1 -1
  138. package/package.json +53 -44
  139. package/auto-imports.d.ts +0 -13
  140. package/components.d.ts +0 -59
  141. package/es/aiTools-a3b095f6.js +0 -113
  142. package/es/aiTools-f36136a4.cjs +0 -2
  143. package/es/index-476c4459.cjs +0 -1
  144. package/index.html +0 -13
  145. package/packages/ChartLayout/index.ts +0 -8
  146. package/packages/ChartLayout/index.vue +0 -63
  147. package/packages/ConfigProvider/index.ts +0 -8
  148. package/packages/ConfigProvider/index.vue +0 -66
  149. package/packages/Contextmenu/index.ts +0 -8
  150. package/packages/Contextmenu/index.vue +0 -134
  151. package/packages/CustomFunction/components/ManageDialog.vue +0 -706
  152. package/packages/CustomFunction/index.ts +0 -8
  153. package/packages/CustomFunction/index.vue +0 -200
  154. package/packages/FactorWarning/index.ts +0 -8
  155. package/packages/FactorWarning/index.vue +0 -754
  156. package/packages/FactorWarning/tools.js +0 -10
  157. package/packages/HeatMap/index.ts +0 -8
  158. package/packages/HeatMap/index.vue +0 -141
  159. package/packages/Kline/components/Contextmenu/index.vue +0 -110
  160. package/packages/Kline/components/Tips/index.vue +0 -40
  161. package/packages/Kline/componentsNew/KlineSlide/index.vue +0 -155
  162. package/packages/Kline/componentsNew/KlineSub/index.vue +0 -297
  163. package/packages/Kline/componentsNew/KlineTips/index.vue +0 -66
  164. package/packages/Kline/componentsNew/KlineUtils/index.vue +0 -84
  165. package/packages/Kline/componentsNew/Tips/index.vue +0 -33
  166. package/packages/Kline/formatKlineData.ts +0 -109
  167. package/packages/Kline/images/buy.svg +0 -1
  168. package/packages/Kline/images/pen.png +0 -0
  169. package/packages/Kline/images/sell.svg +0 -1
  170. package/packages/Kline/images/t.svg +0 -1
  171. package/packages/Kline/index.ts +0 -16
  172. package/packages/Kline/index.vue +0 -891
  173. package/packages/Kline/option.ts +0 -539
  174. package/packages/Kline/type.d.ts +0 -219
  175. package/packages/Kline/utils.ts +0 -682
  176. package/packages/KlineBasic/api.js +0 -58
  177. package/packages/KlineBasic/components/AverageTips/index.vue +0 -33
  178. package/packages/KlineBasic/components/Contextmenu/index.vue +0 -105
  179. package/packages/KlineBasic/components/KlineSub/index.vue +0 -332
  180. package/packages/KlineBasic/components/KlineTips/index.vue +0 -99
  181. package/packages/KlineBasic/components/Tips/index.vue +0 -56
  182. package/packages/KlineBasic/index.ts +0 -8
  183. package/packages/KlineBasic/index.vue +0 -839
  184. package/packages/KlineBasic/utils.js +0 -258
  185. package/packages/KlineConfig/config.js +0 -46
  186. package/packages/KlineConfig/index.ts +0 -8
  187. package/packages/KlineConfig/index.vue +0 -356
  188. package/packages/KlineNew/components/KlineSlide/index.vue +0 -156
  189. package/packages/KlineNew/components/KlineSub/index.vue +0 -335
  190. package/packages/KlineNew/components/KlineTips/index.vue +0 -96
  191. package/packages/KlineNew/components/KlineUtils/index.vue +0 -341
  192. package/packages/KlineNew/components/Tips/index.vue +0 -33
  193. package/packages/KlineNew/index.ts +0 -14
  194. package/packages/KlinePlus/components/SliderChart.vue +0 -208
  195. package/packages/KlinePlus/components/Tips.vue +0 -36
  196. package/packages/KlinePlus/images/buy.svg +0 -1
  197. package/packages/KlinePlus/images/sell.svg +0 -1
  198. package/packages/KlinePlus/images/t.svg +0 -1
  199. package/packages/KlinePlus/index.ts +0 -8
  200. package/packages/KlinePlus/index.vue +0 -1067
  201. package/packages/KlinePlus/utils.js +0 -771
  202. package/packages/LinearLegend/index.ts +0 -8
  203. package/packages/LinearLegend/index.vue +0 -112
  204. package/packages/Map/China.json +0 -1
  205. package/packages/Map/index.ts +0 -8
  206. package/packages/Map/index.vue +0 -147
  207. package/packages/MonacoEditor/index.ts +0 -8
  208. package/packages/MonacoEditor/index.vue +0 -1141
  209. package/packages/MonacoEditor/tools.js +0 -18
  210. package/packages/Pagination/index.ts +0 -8
  211. package/packages/Pagination/index.vue +0 -87
  212. package/packages/PasswordPrompt/index.ts +0 -8
  213. package/packages/PasswordPrompt/index.vue +0 -267
  214. package/packages/Pie/index.ts +0 -8
  215. package/packages/Pie/index.vue +0 -148
  216. package/packages/Table/components/Button/index.vue +0 -61
  217. package/packages/Table/components/Formatter/index.vue +0 -26
  218. package/packages/Table/index.d.ts +0 -0
  219. package/packages/Table/index.ts +0 -8
  220. package/packages/Table/index.vue +0 -133
  221. package/packages/TreeMap/index.ts +0 -8
  222. package/packages/TreeMap/index.vue +0 -186
  223. package/packages/User/components/EditInfoDialog/Mobile.vue +0 -214
  224. package/packages/User/components/EditInfoDialog/index.vue +0 -161
  225. package/packages/User/components/EditPasswordDialog.vue +0 -168
  226. package/packages/User/components/SetPasswordDialog.vue +0 -160
  227. package/packages/User/index.ts +0 -8
  228. package/packages/User/index.vue +0 -117
  229. package/packages/VarSelectDialog/Mock.js +0 -495
  230. package/packages/VarSelectDialog/VarietySelect.vue +0 -78
  231. package/packages/VarSelectDialog/index.ts +0 -8
  232. package/packages/VarSelectDialog/index.vue +0 -323
  233. package/packages/VarietyAiHelper/images/like.png +0 -0
  234. package/packages/VarietyAiHelper/images/like_no.png +0 -0
  235. package/packages/VarietyAiHelper/index.ts +0 -8
  236. package/packages/VarietyAiHelper/index.vue +0 -910
  237. package/packages/VarietyAutoComplete/index.ts +0 -8
  238. package/packages/VarietyAutoComplete/index.vue +0 -89
  239. package/packages/VarietySearch/components/AddTag/index.vue +0 -268
  240. package/packages/VarietySearch/components/CommonIndicator/IndicatorTags.vue +0 -52
  241. package/packages/VarietySearch/components/CommonIndicator/index.vue +0 -697
  242. package/packages/VarietySearch/components/CommonIndicator/tools.js +0 -260
  243. package/packages/VarietySearch/components/CompositeOrder/index.vue +0 -260
  244. package/packages/VarietySearch/components/FactorScreen/FactorDescription.vue +0 -70
  245. package/packages/VarietySearch/components/FactorScreen/index.vue +0 -1158
  246. package/packages/VarietySearch/components/FactorScreen/tools.js +0 -34
  247. package/packages/VarietySearch/config.js +0 -539
  248. package/packages/VarietySearch/index.ts +0 -8
  249. package/packages/VarietySearch/index.vue +0 -688
  250. package/packages/VarietyTextCopy/index.ts +0 -8
  251. package/packages/VarietyTextCopy/index.vue +0 -136
  252. package/packages/VirtualTable/index.ts +0 -8
  253. package/packages/VirtualTable/index.vue +0 -241
  254. package/packages/index.ts +0 -59
  255. package/public/aiTools.js +0 -176
  256. package/public/talib.wasm +0 -0
  257. package/public/vite.svg +0 -1
  258. package/src/App.vue +0 -140
  259. package/src/assets/vue.svg +0 -1
  260. package/src/components/Dialog/index.vue +0 -16
  261. package/src/components/Kline/index.vue +0 -21
  262. package/src/components/Table/index.vue +0 -27
  263. package/src/main.ts +0 -17
  264. package/src/pages/ChartLayout/index.vue +0 -22
  265. package/src/pages/ConfigProvider/index.vue +0 -9
  266. package/src/pages/Contextmenu/index.vue +0 -46
  267. package/src/pages/CustomFunction/index.vue +0 -13
  268. package/src/pages/FactorWarning/index.vue +0 -203
  269. package/src/pages/HeatMap/index.vue +0 -128
  270. package/src/pages/Kline/index.vue +0 -12
  271. package/src/pages/KlineBasic/api.js +0 -48
  272. package/src/pages/KlineBasic/index.vue +0 -366
  273. package/src/pages/KlineBasic/indicator.js +0 -114
  274. package/src/pages/KlineConfig/index.vue +0 -20
  275. package/src/pages/KlineNew/components/KlineAction/components/ContextMenu/index.vue +0 -91
  276. package/src/pages/KlineNew/components/KlineAction/components/YearChart/index.vue +0 -532
  277. package/src/pages/KlineNew/components/KlineAction/images/pen.png +0 -0
  278. package/src/pages/KlineNew/components/KlineAction/index.vue +0 -716
  279. package/src/pages/KlineNew/components/KlineAction/mockApi/index.js +0 -13
  280. package/src/pages/KlineNew/components/KlineAction/utils.js +0 -571
  281. package/src/pages/KlineNew/components/KlineBasic/index.vue +0 -336
  282. package/src/pages/KlineNew/components/KlineBasic/utils.js +0 -46
  283. package/src/pages/KlineNew/components/KlineNew/index.vue +0 -316
  284. package/src/pages/KlineNew/components/KlineNew/utils.js +0 -31
  285. package/src/pages/KlineNew/components/KlineSlide/index.vue +0 -448
  286. package/src/pages/KlineNew/components/KlineSlide/utils.js +0 -78
  287. package/src/pages/KlineNew/components/KlineSlideNew/index.vue +0 -430
  288. package/src/pages/KlineNew/components/KlineSlideNew/utils.js +0 -78
  289. package/src/pages/KlineNew/index.vue +0 -92
  290. package/src/pages/KlinePlus/KlineDialog/MultiCycle.vue +0 -312
  291. package/src/pages/KlinePlus/KlineDialog/api.js +0 -108
  292. package/src/pages/KlinePlus/KlineDialog/index.vue +0 -582
  293. package/src/pages/KlinePlus/KlineDialog/indicator.js +0 -109
  294. package/src/pages/KlinePlus/KlineDialog/tools.js +0 -86
  295. package/src/pages/KlinePlus/index.vue +0 -30
  296. package/src/pages/KlinePlus/tradeLogMock.js +0 -1927
  297. package/src/pages/LinearLegend/index.vue +0 -92
  298. package/src/pages/Map/index.vue +0 -62
  299. package/src/pages/MonacoEditor/index.vue +0 -63
  300. package/src/pages/Pagination/index.vue +0 -24
  301. package/src/pages/PasswordPrompt/index.vue +0 -12
  302. package/src/pages/Pie/index.vue +0 -36
  303. package/src/pages/Table/index.vue +0 -117
  304. package/src/pages/TreeMap/index.vue +0 -542
  305. package/src/pages/User/index.vue +0 -24
  306. package/src/pages/VarSelectDialog/index.vue +0 -16
  307. package/src/pages/VarietyAiHelper/index.vue +0 -20
  308. package/src/pages/VarietyAutoComplete/index.vue +0 -19
  309. package/src/pages/VarietySearch/api.js +0 -70
  310. package/src/pages/VarietySearch/index.vue +0 -467
  311. package/src/pages/VarietyTextCopy/index.vue +0 -24
  312. package/src/pages/VirtualTable/demo.json +0 -6377
  313. package/src/pages/VirtualTable/index.vue +0 -79
  314. package/src/router/index.ts +0 -9
  315. package/src/router/routes.ts +0 -132
  316. package/src/style.css +0 -79
  317. package/src/vite-env.d.ts +0 -9
  318. package/tsconfig.json +0 -30
  319. package/tsconfig.node.json +0 -10
package/es/KlinePlus.js CHANGED
@@ -1,29 +1,29 @@
1
1
  import "./base-a5af3db3.js";
2
- import { v as ke } from "./el-loading-9b671203.js";
3
- import { E as ve } from "./el-empty-33cb66f1.js";
4
- import "./el-tag-bef9e83d.js";
5
- import { E as Ee, a as Se } from "./el-select-4bd0010d.js";
2
+ import { v as Ve } from "./el-loading-bcc51e3d.js";
3
+ import { E as _e } from "./el-empty-33cb66f1.js";
4
+ import "./el-tag-66c83156.js";
5
+ import { E as $e, a as He } from "./el-select-44fa547d.js";
6
6
  import "./el-scrollbar-323542e7.js";
7
- import "./el-popper-03988662.js";
8
- import { openBlock as _, createElementBlock as G, Fragment as fe, renderList as we, normalizeStyle as Qe, toDisplayString as oe, inject as xe, ref as U, onMounted as Oe, nextTick as Pe, watch as ne, onUnmounted as Ce, computed as ue, withDirectives as Re, createElementVNode as K, createVNode as ie, createCommentVNode as ce, withCtx as Fe, createBlock as me } from "vue";
9
- import { d as g } from "./dayjs.min-8313b006.js";
10
- import * as Ne from "echarts";
11
- import { x as be, G as re, D as Ue } from "./index-7ed0999e.js";
12
- import { _ as De } from "./_plugin-vue_export-helper-dad06003.js";
13
- import "./use-global-config-0f43458b.js";
14
- import "./use-form-common-props-76a09d89.js";
7
+ import "./el-popper-fbd0dcea.js";
8
+ import { openBlock as H, createElementBlock as G, Fragment as Ee, renderList as ve, normalizeStyle as Ze, toDisplayString as se, inject as Se, ref as V, onMounted as Qe, nextTick as Be, watch as re, onUnmounted as Pe, computed as ze, withDirectives as Ge, createElementVNode as q, createVNode as oe, createCommentVNode as Ne, withCtx as We, createBlock as we } from "vue";
9
+ import { d as f } from "./dayjs.min-8313b006.js";
10
+ import * as ue from "echarts";
11
+ import { x as Re, j as ce, D as Ke } from "./index-53cc4e43.js";
12
+ import { _ as Ie } from "./_plugin-vue_export-helper-dad06003.js";
13
+ import "./use-global-config-ee406d58.js";
14
+ import "./use-form-common-props-ed72e914.js";
15
15
  import "./index-960806da.js";
16
- import "./index-5c44d71a.js";
16
+ import "./index-eb96e074.js";
17
17
  import "./index-d77a7336.js";
18
- import "./index-a83ec4b7.js";
19
- import "./index-102edf6c.js";
20
- import "./index-d1b554ac.js";
18
+ import "./index-8c2d7e05.js";
19
+ import "./index-c5f2d372.js";
20
+ import "./index-1e2a38ab.js";
21
21
  import "./castArray-7741a212.js";
22
- import "./index-5ed42e9c.js";
22
+ import "./index-f034b910.js";
23
23
  import "./scroll-679bd6bf.js";
24
24
  import "./debounce-8d53f4dd.js";
25
25
  import "./vnode-5ddb7ed1.js";
26
- const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjM4NzI1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI2MjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNGRjAwMDAiIHAtaWQ9IjI2MjYiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjcwOTMzMyAxNjcuNzIyNjY3YzAuMTI4LTIxLjc2IDkuOTg0LTQyLjY2NjY2NyAyNy4zOTItNTcuOTQxMzM0YTkzLjMxMiA5My4zMTIgMCAwIDEgNjQuNDY5MzM0LTIzLjg5MzMzM0w3NjEuNiA4NS4zMzMzMzNjMjUuNiAwLjU1NDY2NyA0Ny4zNiA4Ljc4OTMzMyA2NC45Mzg2NjcgMjQuNDA1MzM0IDE3LjkyIDE2IDI2Ljg4IDM1LjIgMjYuODggNTcuNDcybC0wLjU1NDY2NyA0MTkuODRjMC4yOTg2NjcgMjIuNjk4NjY3LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuOTIyNjY2LTEyLjYyOTMzMyAyNy4zMDY2NjctMjcuOTQ2NjY3IDQ4Ljg5Ni00NS44MjQgNjQuODk2bC0yMTEuMjQyNjY3IDE4OC4yMDI2NjdjLTE3LjU3ODY2NyAxNS43MDEzMzMtMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45Mzg2NjcgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0Ljk4MTMzMy0yMy41OTQ2NjdsLTIxMS4xNTczMzMtMTg4LjE2Yy0xNy45Mi0xNi4wNDI2NjctMzMuMjgtMzcuNzE3MzMzLTQ1LjkwOTMzNC02NC45ODEzMzMtMTIuNjcyLTI3LjMwNjY2Ny0xOS4wMjkzMzMtNTIuMzk0NjY3LTE5LjAyOTMzMy03NS4zMDY2NjdMMTcwLjY2NjY2NyAxNjcuNzIyNjY3eiBtNDIuNjY2NjY3IDAuMjU2bDAuNTU0NjY3IDQxOC42ODhjMCAxNi4yMTMzMzMgNC44MjEzMzMgMzUuMzI4IDE1LjAxODY2NiA1Ny4zNDQgMTAuMzY4IDIyLjI3MiAyMi4zNTczMzMgMzkuMjEwNjY3IDM1LjYyNjY2NyA1MS4wNzJsMjExLjQxMzMzMyAxODguNDE2YzguOTYgOC4xMDY2NjcgMjEuODg4IDEyLjggMzYuMjI0IDEyLjU0NCAxNS41MzA2NjctMC4wNDI2NjcgMjcuMDkzMzMzLTQuMjY2NjY3IDM2LjY5MzMzNC0xMi44bDIxMS4xNTczMzMtMTg4LjExNzMzNGMxMy4zMTItMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNTg0LTUxLjA3MiAxMC4xMTItMjEuODQ1MzMzIDE0Ljc2MjY2Ny00MC41NzYgMTQuNTA2NjY3LTU3LjA0NTMzM2wwLjU1NDY2Ni00MTkuNzU0NjY3YzAtOS44OTg2NjctMy41ODQtMTcuNjIxMzMzLTEyLjQ1ODY2Ni0yNS42YTU0LjY5ODY2NyA1NC42OTg2NjcgMCAwIDAtMzYuNjA4LTEzLjYxMDY2NmwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NyAxMy4zMTIgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzMgMjEuNDYxMzMzbC0wLjQyNjY2NyA0LjY5MzMzNHoiIGZpbGw9IiNBRTAwMDAiIHAtaWQ9IjI2MjciPjwvcGF0aD48cGF0aCBkPSJNMzg0IDY1NC4xMjI2NjdoMTUzLjUxNDY2N2M5Ni43NjggMCAxNDIuNzYyNjY3LTQ4Ljk4MTMzMyAxNDIuNzYyNjY2LTExNy4wNzczMzQgMC01OS43MzMzMzMtMzMuNDUwNjY3LTg4LjQwNTMzMy04NC44MjEzMzMtOTcuOTYyNjY2di0xLjc5MmM0OC45ODEzMzMtMTUuNTMwNjY3IDY2LjkwMTMzMy00Ni41OTIgNjYuOTAxMzMzLTg5LjYgMC02NS4xMDkzMzMtNDAuNjE4NjY3LTEwMy4zMzg2NjctMTM0Ljk5NzMzMy0xMDMuMzM4NjY3SDM4NHY0MDkuNzcwNjY3eiBtNzIuODc0NjY3LTU0Ljk1NDY2N3YtMTMxLjQxMzMzM2g2Ni4zMDRjNTEuOTY4IDAgODAuMDQyNjY3IDE3LjkyIDgwLjA0MjY2NiA2NS4xMDkzMzMgMCA0NC44LTI2LjI4MjY2NyA2Ni4zMDQtNzUuODYxMzMzIDY2LjMwNGgtNzAuNDg1MzMzeiBtMC0xODAuMzk0NjY3VjI5OC43MDkzMzNoNjAuMzMwNjY2YzQ3LjE4OTMzMyAwIDcyLjI3NzMzMyAxNC45MzMzMzMgNzIuMjc3MzM0IDU5LjEzNiAwIDQ2LjU5Mi0zMi4yNTYgNjAuOTI4LTc1LjI2NCA2MC45MjhoLTU3LjM0NHoiIGZpbGw9IiNGRkZGRkYiIHAtaWQ9IjI2MjgiPjwvcGF0aD48L3N2Zz4=", He = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjQxNjY0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI3NzciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiM1NEFCMzAiIHAtaWQ9IjI3NzgiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiMzODhEMTQiIHAtaWQ9IjI3NzkiPjwvcGF0aD48cGF0aCBkPSJNNTA2LjQ1MzMzMyA2NzQuNzMwNjY3Yzk5LjE1NzMzMyAwIDE0Ni4zNDY2NjctNDguMzg0IDE0Ni4zNDY2NjctMTI2LjAzNzMzNCAwLTcyLjg3NDY2Ny0zOC44MjY2NjctOTkuNzU0NjY3LTEwMy4zMzg2NjctMTE4LjI3MmwtMzguMjI5MzMzLTExLjk0NjY2NmMtNDAuNjE4NjY3LTExLjM0OTMzMy01Mi41NjUzMzMtMjUuMDg4LTUyLjU2NTMzMy01Ny4zNDQgMC0zMi44NTMzMzMgMjMuODkzMzMzLTUwLjc3MzMzMyA2Ni45MDEzMzMtNTAuNzczMzM0IDQ1LjM5NzMzMyAwIDc4Ljg0OCA5LjU1NzMzMyAxMDQuNTMzMzMzIDIwLjMwOTMzNFYyNzMuMzIyNjY3Yy0yMi42OTg2NjctMTEuOTQ2NjY3LTUxLjk2OC0yMi4xMDEzMzMtMTA1LjcyOC0yMi4xMDEzMzQtOTIuNTg2NjY3IDAtMTM3LjM4NjY2NyA0Ny4xODkzMzMtMTM3LjM4NjY2NiAxMTYuNDggMCA2OS4yOTA2NjcgMzUuMjQyNjY3IDEwMC4zNTIgOTMuMTg0IDExNi40OGwzOC44MjY2NjYgMTAuNzUyYzQ0LjggMTMuNzM4NjY3IDU5LjczMzMzMyAyNi44OCA1OS43MzMzMzQgNjAuOTI4IDAgMzcuMDM0NjY3LTIzLjI5NiA1OS43MzMzMzMtNzguMjUwNjY3IDU5LjczMzMzNC00NC44IDAtODMuNjI2NjY3LTEwLjc1Mi0xMTYuNDgtMjUuMDg4djU3Ljk0MTMzM2MyOC4wNzQ2NjcgMTQuOTMzMzMzIDY4LjY5MzMzMyAyNi4yODI2NjcgMTIyLjQ1MzMzMyAyNi4yODI2Njd6IiBmaWxsPSIjRkZGRkZGIiBwLWlkPSIyNzgwIj48L3BhdGg+PC9zdmc+", _e = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==", { round: Be } = be, q = {
26
+ const Je = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjM4NzI1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI2MjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNGRjAwMDAiIHAtaWQ9IjI2MjYiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjcwOTMzMyAxNjcuNzIyNjY3YzAuMTI4LTIxLjc2IDkuOTg0LTQyLjY2NjY2NyAyNy4zOTItNTcuOTQxMzM0YTkzLjMxMiA5My4zMTIgMCAwIDEgNjQuNDY5MzM0LTIzLjg5MzMzM0w3NjEuNiA4NS4zMzMzMzNjMjUuNiAwLjU1NDY2NyA0Ny4zNiA4Ljc4OTMzMyA2NC45Mzg2NjcgMjQuNDA1MzM0IDE3LjkyIDE2IDI2Ljg4IDM1LjIgMjYuODggNTcuNDcybC0wLjU1NDY2NyA0MTkuODRjMC4yOTg2NjcgMjIuNjk4NjY3LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuOTIyNjY2LTEyLjYyOTMzMyAyNy4zMDY2NjctMjcuOTQ2NjY3IDQ4Ljg5Ni00NS44MjQgNjQuODk2bC0yMTEuMjQyNjY3IDE4OC4yMDI2NjdjLTE3LjU3ODY2NyAxNS43MDEzMzMtMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45Mzg2NjcgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0Ljk4MTMzMy0yMy41OTQ2NjdsLTIxMS4xNTczMzMtMTg4LjE2Yy0xNy45Mi0xNi4wNDI2NjctMzMuMjgtMzcuNzE3MzMzLTQ1LjkwOTMzNC02NC45ODEzMzMtMTIuNjcyLTI3LjMwNjY2Ny0xOS4wMjkzMzMtNTIuMzk0NjY3LTE5LjAyOTMzMy03NS4zMDY2NjdMMTcwLjY2NjY2NyAxNjcuNzIyNjY3eiBtNDIuNjY2NjY3IDAuMjU2bDAuNTU0NjY3IDQxOC42ODhjMCAxNi4yMTMzMzMgNC44MjEzMzMgMzUuMzI4IDE1LjAxODY2NiA1Ny4zNDQgMTAuMzY4IDIyLjI3MiAyMi4zNTczMzMgMzkuMjEwNjY3IDM1LjYyNjY2NyA1MS4wNzJsMjExLjQxMzMzMyAxODguNDE2YzguOTYgOC4xMDY2NjcgMjEuODg4IDEyLjggMzYuMjI0IDEyLjU0NCAxNS41MzA2NjctMC4wNDI2NjcgMjcuMDkzMzMzLTQuMjY2NjY3IDM2LjY5MzMzNC0xMi44bDIxMS4xNTczMzMtMTg4LjExNzMzNGMxMy4zMTItMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNTg0LTUxLjA3MiAxMC4xMTItMjEuODQ1MzMzIDE0Ljc2MjY2Ny00MC41NzYgMTQuNTA2NjY3LTU3LjA0NTMzM2wwLjU1NDY2Ni00MTkuNzU0NjY3YzAtOS44OTg2NjctMy41ODQtMTcuNjIxMzMzLTEyLjQ1ODY2Ni0yNS42YTU0LjY5ODY2NyA1NC42OTg2NjcgMCAwIDAtMzYuNjA4LTEzLjYxMDY2NmwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NyAxMy4zMTIgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzMgMjEuNDYxMzMzbC0wLjQyNjY2NyA0LjY5MzMzNHoiIGZpbGw9IiNBRTAwMDAiIHAtaWQ9IjI2MjciPjwvcGF0aD48cGF0aCBkPSJNMzg0IDY1NC4xMjI2NjdoMTUzLjUxNDY2N2M5Ni43NjggMCAxNDIuNzYyNjY3LTQ4Ljk4MTMzMyAxNDIuNzYyNjY2LTExNy4wNzczMzQgMC01OS43MzMzMzMtMzMuNDUwNjY3LTg4LjQwNTMzMy04NC44MjEzMzMtOTcuOTYyNjY2di0xLjc5MmM0OC45ODEzMzMtMTUuNTMwNjY3IDY2LjkwMTMzMy00Ni41OTIgNjYuOTAxMzMzLTg5LjYgMC02NS4xMDkzMzMtNDAuNjE4NjY3LTEwMy4zMzg2NjctMTM0Ljk5NzMzMy0xMDMuMzM4NjY3SDM4NHY0MDkuNzcwNjY3eiBtNzIuODc0NjY3LTU0Ljk1NDY2N3YtMTMxLjQxMzMzM2g2Ni4zMDRjNTEuOTY4IDAgODAuMDQyNjY3IDE3LjkyIDgwLjA0MjY2NiA2NS4xMDkzMzMgMCA0NC44LTI2LjI4MjY2NyA2Ni4zMDQtNzUuODYxMzMzIDY2LjMwNGgtNzAuNDg1MzMzeiBtMC0xODAuMzk0NjY3VjI5OC43MDkzMzNoNjAuMzMwNjY2YzQ3LjE4OTMzMyAwIDcyLjI3NzMzMyAxNC45MzMzMzMgNzIuMjc3MzM0IDU5LjEzNiAwIDQ2LjU5Mi0zMi4yNTYgNjAuOTI4LTc1LjI2NCA2MC45MjhoLTU3LjM0NHoiIGZpbGw9IiNGRkZGRkYiIHAtaWQ9IjI2MjgiPjwvcGF0aD48L3N2Zz4=", qe = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjQxNjY0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI3NzciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiM1NEFCMzAiIHAtaWQ9IjI3NzgiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiMzODhEMTQiIHAtaWQ9IjI3NzkiPjwvcGF0aD48cGF0aCBkPSJNNTA2LjQ1MzMzMyA2NzQuNzMwNjY3Yzk5LjE1NzMzMyAwIDE0Ni4zNDY2NjctNDguMzg0IDE0Ni4zNDY2NjctMTI2LjAzNzMzNCAwLTcyLjg3NDY2Ny0zOC44MjY2NjctOTkuNzU0NjY3LTEwMy4zMzg2NjctMTE4LjI3MmwtMzguMjI5MzMzLTExLjk0NjY2NmMtNDAuNjE4NjY3LTExLjM0OTMzMy01Mi41NjUzMzMtMjUuMDg4LTUyLjU2NTMzMy01Ny4zNDQgMC0zMi44NTMzMzMgMjMuODkzMzMzLTUwLjc3MzMzMyA2Ni45MDEzMzMtNTAuNzczMzM0IDQ1LjM5NzMzMyAwIDc4Ljg0OCA5LjU1NzMzMyAxMDQuNTMzMzMzIDIwLjMwOTMzNFYyNzMuMzIyNjY3Yy0yMi42OTg2NjctMTEuOTQ2NjY3LTUxLjk2OC0yMi4xMDEzMzMtMTA1LjcyOC0yMi4xMDEzMzQtOTIuNTg2NjY3IDAtMTM3LjM4NjY2NyA0Ny4xODkzMzMtMTM3LjM4NjY2NiAxMTYuNDggMCA2OS4yOTA2NjcgMzUuMjQyNjY3IDEwMC4zNTIgOTMuMTg0IDExNi40OGwzOC44MjY2NjYgMTAuNzUyYzQ0LjggMTMuNzM4NjY3IDU5LjczMzMzMyAyNi44OCA1OS43MzMzMzQgNjAuOTI4IDAgMzcuMDM0NjY3LTIzLjI5NiA1OS43MzMzMzMtNzguMjUwNjY3IDU5LjczMzMzNC00NC44IDAtODMuNjI2NjY3LTEwLjc1Mi0xMTYuNDgtMjUuMDg4djU3Ljk0MTMzM2MyOC4wNzQ2NjcgMTQuOTMzMzMzIDY4LjY5MzMzMyAyNi4yODI2NjcgMTIyLjQ1MzMzMyAyNi4yODI2Njd6IiBmaWxsPSIjRkZGRkZGIiBwLWlkPSIyNzgwIj48L3BhdGg+PC9zdmc+", Xe = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==", { round: et } = Re, U = {
27
27
  // 单屏展示条目上限
28
28
  minValueSpan: 5,
29
29
  maxValueSpan: 2e3,
@@ -31,7 +31,7 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
31
31
  loadCheckCount: 500,
32
32
  // 加载更多: 载入条目
33
33
  loadAddCount: 2e3
34
- }, Ze = {
34
+ }, Fe = {
35
35
  1: 240,
36
36
  // 每天240根(4小时×60分钟)
37
37
  2: 48,
@@ -48,36 +48,91 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
48
48
  // 每周1根(按5个交易日算)
49
49
  8: 0.033
50
50
  // 每月1根(按21个交易日算)
51
- }, Ae = ({ startTime: i, endTime: N, cycle: l, type: s = "end" }) => {
52
- const { maxValueSpan: c } = q, m = Math.ceil((c + 1e3) / Ze[l]), y = g(i);
53
- if (g(N).diff(y, "day") <= m)
54
- return [i, N];
51
+ }, tt = (t, n = 0) => {
52
+ const r = Fe[t];
53
+ if (!r)
54
+ throw new Error(`[K线] 不支持的周期:${String(t)}`);
55
+ if (!Number.isInteger(n) || n < 0 || n > U.maxValueSpan)
56
+ throw new RangeError(`[K线] initialVisibleBars 必须是 0-${U.maxValueSpan} 的整数`);
57
+ if (t === "8") {
58
+ const z = n ? Math.ceil(n / r / 30) : 0;
59
+ return { amount: Math.max(10, z), unit: "month" };
60
+ }
61
+ const s = ["6", "7"].includes(t) ? 50 : 1, M = n ? Math.ceil(n / r) : 0;
62
+ return { amount: Math.max(s, M), unit: "day" };
63
+ }, xe = (t, n) => {
64
+ let r = 0, s = t.length;
65
+ for (; r < s; ) {
66
+ const M = Math.floor((r + s) / 2);
67
+ t[M] < n ? r = M + 1 : s = M;
68
+ }
69
+ return r;
70
+ }, Mt = (t, n) => {
71
+ let r = 0, s = t.length;
72
+ for (; r < s; ) {
73
+ const M = Math.floor((r + s) / 2);
74
+ t[M] <= n ? r = M + 1 : s = M;
75
+ }
76
+ return r;
77
+ }, it = ({ time: t, startTime: n, endTime: r, initialVisibleBars: s = 0 }) => {
78
+ if (!Array.isArray(t) || t.length === 0)
79
+ throw new TypeError("[K线] 无法定位首屏:行情时间序列为空");
80
+ if (!Number.isInteger(s) || s < 0 || s > U.maxValueSpan)
81
+ throw new RangeError(`[K线] initialVisibleBars 必须是 0-${U.maxValueSpan} 的整数`);
82
+ const M = f(n).valueOf(), z = f(r).valueOf();
83
+ if (!Number.isFinite(M) || !Number.isFinite(z) || z < M)
84
+ throw new RangeError("[K线] 无法定位首屏:开始或结束时间无效");
85
+ const N = t.map((T, Y) => {
86
+ const y = f(T).valueOf();
87
+ if (!Number.isFinite(y))
88
+ throw new RangeError(`[K线] 行情时间[${Y}]无效`);
89
+ if (Y > 0 && y < f(t[Y - 1]).valueOf())
90
+ throw new Error(`[K线] 行情时间序列未按升序排列,位置 ${Y}`);
91
+ return y;
92
+ });
93
+ let e = Math.min(xe(N, M), N.length - 1), l = Math.max(Mt(N, z) - 1, 0);
94
+ if (e > l) {
95
+ const T = Math.min(xe(N, M), N.length - 1);
96
+ e = T, l = T;
97
+ }
98
+ let x = Math.min(s || l - e + 1, N.length, U.maxValueSpan) - (l - e + 1);
99
+ if (x > 0) {
100
+ const T = Math.min(e, Math.ceil(x / 2));
101
+ e -= T, x -= T;
102
+ const Y = Math.min(N.length - 1 - l, x);
103
+ l += Y, x -= Y, x > 0 && (e -= Math.min(e, x));
104
+ }
105
+ return { startValue: e, endValue: l };
106
+ }, Oe = ({ startTime: t, endTime: n, cycle: r, type: s = "end" }) => {
107
+ const { maxValueSpan: M } = U, z = Math.ceil((M + 1e3) / Fe[r]), N = f(t);
108
+ if (f(n).diff(N, "day") <= z)
109
+ return [t, n];
55
110
  if (s === "end")
56
- return [g(N).subtract(m, "day").format("YYYY-MM-DD HH:mm:ss"), N];
111
+ return [f(n).subtract(z, "day").format("YYYY-MM-DD HH:mm:ss"), n];
57
112
  if (s === "middle") {
58
- const k = g((g(i).valueOf() + g(N).valueOf()) / 2).format("YYYY-MM-DD HH:mm:ss");
59
- return console.log("超过一屏数量上限, 进行中间时间计算", k, m / 2), [
60
- g(k).subtract(m / 2, "day").format("YYYY-MM-DD HH:mm:ss"),
61
- g(k).add(m / 2, "day").format("YYYY-MM-DD HH:mm:ss")
113
+ const A = f((f(t).valueOf() + f(n).valueOf()) / 2).format("YYYY-MM-DD HH:mm:ss");
114
+ return console.log("超过一屏数量上限, 进行中间时间计算", A, z / 2), [
115
+ f(A).subtract(z / 2, "day").format("YYYY-MM-DD HH:mm:ss"),
116
+ f(A).add(z / 2, "day").format("YYYY-MM-DD HH:mm:ss")
62
117
  ];
63
118
  }
64
- }, $e = (i, N) => {
65
- const l = i[N], s = N === 0 ? i[N] : i[N - 1];
66
- return l[0] === l[1] ? l[0] >= s[1] ? {
119
+ }, at = (t, n) => {
120
+ const r = t[n], s = n === 0 ? t[n] : t[n - 1];
121
+ return r[0] === r[1] ? r[0] >= s[1] ? {
67
122
  color: "transparent",
68
123
  borderColor: "#FF0000"
69
124
  } : {
70
125
  color: "#00FFFF"
71
- } : l[1] > l[0] ? {
126
+ } : r[1] > r[0] ? {
72
127
  color: "transparent",
73
128
  borderColor: "#FF0000"
74
129
  } : {
75
130
  color: "#00FFFF"
76
131
  };
77
- }, Ge = (i, N, l) => {
78
- var c, m, y, e;
79
- const s = i.subIndicator.map((d) => {
80
- if (d.series === "bar")
132
+ }, nt = (t, n, r) => {
133
+ var M, z, N, e;
134
+ const s = t.subIndicator.map((l) => {
135
+ if (l.series === "bar")
81
136
  return {
82
137
  name: "subMain",
83
138
  xAxisIndex: 0,
@@ -85,35 +140,35 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
85
140
  type: "bar",
86
141
  silent: !0,
87
142
  symbol: "none",
88
- data: d.data.map((k, Q) => d.seriesColor === "kline" ? {
89
- value: k,
90
- itemStyle: $e(i.data, Q)
91
- } : d.seriesColor === "value" ? {
92
- value: k,
143
+ data: l.data.map((A, x) => l.seriesColor === "kline" ? {
144
+ value: A,
145
+ itemStyle: at(t.data, x)
146
+ } : l.seriesColor === "value" ? {
147
+ value: A,
93
148
  itemStyle: {
94
- color: k >= 0 ? "#FF0000" : "#00FFFF"
149
+ color: A >= 0 ? "#FF0000" : "#00FFFF"
95
150
  }
96
151
  } : {
97
- value: k,
152
+ value: A,
98
153
  itemStyle: {
99
- color: d.seriesColor
154
+ color: l.seriesColor
100
155
  }
101
156
  })
102
157
  };
103
- if (d.series === "line")
158
+ if (l.series === "line")
104
159
  return {
105
160
  xAxisIndex: 0,
106
- yAxisIndex: d.yAxis === "right" ? 2 : 1,
107
- name: d.key,
161
+ yAxisIndex: l.yAxis === "right" ? 2 : 1,
162
+ name: l.key,
108
163
  type: "line",
109
164
  silent: !0,
110
165
  symbol: "none",
111
- data: d.data,
166
+ data: l.data,
112
167
  lineStyle: {
113
168
  width: 1
114
169
  },
115
170
  itemStyle: {
116
- color: d.color
171
+ color: l.color
117
172
  }
118
173
  };
119
174
  });
@@ -128,9 +183,9 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
128
183
  dataZoom: [
129
184
  {
130
185
  type: "inside",
131
- startValue: N,
132
- endValue: l,
133
- maxValueSpan: q.maxValueSpan
186
+ startValue: n,
187
+ endValue: r,
188
+ maxValueSpan: U.maxValueSpan
134
189
  }
135
190
  ],
136
191
  tooltip: {
@@ -141,18 +196,18 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
141
196
  triggerTooltip: !1,
142
197
  label: {
143
198
  rich: {},
144
- formatter: (d) => {
145
- const { axisDimension: k, value: Q } = d;
146
- if (k === "x")
199
+ formatter: (l) => {
200
+ const { axisDimension: A, value: x } = l;
201
+ if (A === "x")
147
202
  return null;
148
- if (d.axisIndex === 1)
149
- return String(Be(Q));
203
+ if (l.axisIndex === 1)
204
+ return String(et(x));
150
205
  }
151
206
  }
152
207
  },
153
208
  xAxis: {
154
209
  type: "category",
155
- data: i.time,
210
+ data: t.time,
156
211
  axisLine: {
157
212
  show: !0
158
213
  },
@@ -169,8 +224,8 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
169
224
  },
170
225
  {
171
226
  position: "left",
172
- min: ((c = i.subIndicator[0]) == null ? void 0 : c.leftYAxisRange) === "cover" ? (d) => d.min : null,
173
- max: ((m = i.subIndicator[0]) == null ? void 0 : m.leftYAxisRange) === "cover" ? (d) => d.max : null,
227
+ min: ((M = t.subIndicator[0]) == null ? void 0 : M.leftYAxisRange) === "cover" ? (l) => l.min : null,
228
+ max: ((z = t.subIndicator[0]) == null ? void 0 : z.leftYAxisRange) === "cover" ? (l) => l.max : null,
174
229
  splitNumber: 1,
175
230
  axisLine: {
176
231
  show: !0
@@ -185,8 +240,8 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
185
240
  },
186
241
  {
187
242
  position: "right",
188
- min: ((y = i.subIndicator[0]) == null ? void 0 : y.rightYAxisRange) === "cover" ? (d) => d.min : null,
189
- max: ((e = i.subIndicator[0]) == null ? void 0 : e.rightYAxisRange) === "cover" ? (d) => d.max : null,
243
+ min: ((N = t.subIndicator[0]) == null ? void 0 : N.rightYAxisRange) === "cover" ? (l) => l.min : null,
244
+ max: ((e = t.subIndicator[0]) == null ? void 0 : e.rightYAxisRange) === "cover" ? (l) => l.max : null,
190
245
  splitNumber: 1,
191
246
  axisLine: {
192
247
  show: !1
@@ -201,163 +256,163 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
201
256
  ],
202
257
  series: s
203
258
  };
204
- }, ye = (i, N, l = "strict") => {
205
- let s = 0, c = i.length - 1, m = -1;
206
- for (; s <= c; ) {
207
- let y = Math.floor((s + c) / 2);
208
- if (l === "strict") {
209
- if (i[y] === N)
210
- return y;
211
- i[y] < N ? s = y + 1 : c = y - 1;
259
+ }, ge = (t, n, r = "strict") => {
260
+ let s = 0, M = t.length - 1, z = -1;
261
+ for (; s <= M; ) {
262
+ let N = Math.floor((s + M) / 2);
263
+ if (r === "strict") {
264
+ if (t[N] === n)
265
+ return N;
266
+ t[N] < n ? s = N + 1 : M = N - 1;
212
267
  } else
213
- l === "gte" && (i[y] >= N ? (m = y, c = y - 1) : s = y + 1);
268
+ r === "gte" && (t[N] >= n ? (z = N, M = N - 1) : s = N + 1);
214
269
  }
215
- return l === "strict" ? -1 : m;
216
- }, We = (i) => {
217
- const N = [];
218
- return i.reduce((l, s) => {
219
- const c = `${s.coord[0]}+${s.label.position}`, m = s.label.position === "top" ? -16 : 16, y = l.get(c);
220
- return y ? (l.set(c, y + 1), s.symbolOffset[1] = m * (y + 1)) : (l.set(c, 1), s.symbolOffset[1] = s.label.position === "top" ? -7 : 7), N.push(s), l;
221
- }, /* @__PURE__ */ new Map()), N;
222
- }, pe = (i, N) => ({
223
- data: [...i.data, ...N.data.slice(1)],
224
- mainIndicator: i.mainIndicator.map((l, s) => ({
225
- ...l,
226
- data: [...l.data, ...N.mainIndicator[s].data.slice(1)]
270
+ return r === "strict" ? -1 : z;
271
+ }, ot = (t) => {
272
+ const n = [];
273
+ return t.reduce((r, s) => {
274
+ const M = `${s.coord[0]}+${s.label.position}`, z = s.label.position === "top" ? -16 : 16, N = r.get(M);
275
+ return N ? (r.set(M, N + 1), s.symbolOffset[1] = z * (N + 1)) : (r.set(M, 1), s.symbolOffset[1] = s.label.position === "top" ? -7 : 7), n.push(s), r;
276
+ }, /* @__PURE__ */ new Map()), n;
277
+ }, he = (t, n) => ({
278
+ data: [...t.data, ...n.data.slice(1)],
279
+ mainIndicator: t.mainIndicator.map((r, s) => ({
280
+ ...r,
281
+ data: [...r.data, ...n.mainIndicator[s].data.slice(1)]
227
282
  })),
228
- subIndicator: i.subIndicator.map((l, s) => ({
229
- ...l,
230
- data: [...l.data, ...N.subIndicator[s].data.slice(1)]
283
+ subIndicator: t.subIndicator.map((r, s) => ({
284
+ ...r,
285
+ data: [...r.data, ...n.subIndicator[s].data.slice(1)]
231
286
  })),
232
- time: [...i.time, ...N.time.slice(1)]
233
- }), de = (i, N, l) => {
234
- switch (l) {
287
+ time: [...t.time, ...n.time.slice(1)]
288
+ }), Te = (t, n, r) => {
289
+ switch (r) {
235
290
  case "5": {
236
- let I = [
291
+ let T = [
237
292
  ...new Set(
238
- i.slice(-20).map((u) => {
239
- const n = new Date(u), T = String(n.getHours()).padStart(2, "0"), j = String(n.getMinutes()).padStart(2, "0"), x = String(n.getSeconds()).padStart(2, "0");
240
- return `${T}:${j}:${x}`;
293
+ t.slice(-20).map((w) => {
294
+ const i = new Date(w), u = String(i.getHours()).padStart(2, "0"), c = String(i.getMinutes()).padStart(2, "0"), L = String(i.getSeconds()).padStart(2, "0");
295
+ return `${u}:${c}:${L}`;
241
296
  })
242
297
  )
243
298
  ];
244
- I.includes("00:00:00") && (I.splice(I.indexOf("00:00:00"), 1), I.push("24:00:00")), I = I.sort((u, n) => (/* @__PURE__ */ new Date(`2000-01-30 ${u}`)).getTime() - (/* @__PURE__ */ new Date(`2000-01-30 ${n}`)).getTime());
245
- const A = new Date(N), r = A.getFullYear(), t = String(A.getMonth() + 1).padStart(2, "0"), D = String(A.getDate()).padStart(2, "0"), w = String(A.getHours()).padStart(2, "0"), p = String(A.getMinutes()).padStart(2, "0"), a = String(A.getSeconds()).padStart(2, "0");
246
- if (`${w}:${p}:${a}` == "00:00:00")
247
- return `${r}-${t}-${D} 01:00:00`;
299
+ T.includes("00:00:00") && (T.splice(T.indexOf("00:00:00"), 1), T.push("24:00:00")), T = T.sort((w, i) => (/* @__PURE__ */ new Date(`2000-01-30 ${w}`)).getTime() - (/* @__PURE__ */ new Date(`2000-01-30 ${i}`)).getTime());
300
+ const Y = new Date(n), y = Y.getFullYear(), a = String(Y.getMonth() + 1).padStart(2, "0"), g = String(Y.getDate()).padStart(2, "0"), D = String(Y.getHours()).padStart(2, "0"), I = String(Y.getMinutes()).padStart(2, "0"), m = String(Y.getSeconds()).padStart(2, "0");
301
+ if (`${D}:${I}:${m}` == "00:00:00")
302
+ return `${y}-${a}-${g} 01:00:00`;
248
303
  {
249
- let u = null;
250
- for (let n = 0; n < I.length; n++) {
251
- const T = I[n].split(":");
252
- if (+`${T[0]}${T[1]}${T[2]}` >= +`${w}${p}${a}`) {
253
- u = I[n];
304
+ let w = null;
305
+ for (let i = 0; i < T.length; i++) {
306
+ const u = T[i].split(":");
307
+ if (+`${u[0]}${u[1]}${u[2]}` >= +`${D}${I}${m}`) {
308
+ w = T[i];
254
309
  break;
255
310
  }
256
311
  }
257
- if (u === "24:00:00") {
258
- const n = new Date(N);
259
- n.setDate(n.getDate() + 1);
260
- const T = n.getFullYear(), j = String(n.getMonth() + 1).padStart(2, "0"), x = String(n.getDate()).padStart(2, "0");
261
- return `${T}-${j}-${x} 00:00:00`;
312
+ if (w === "24:00:00") {
313
+ const i = new Date(n);
314
+ i.setDate(i.getDate() + 1);
315
+ const u = i.getFullYear(), c = String(i.getMonth() + 1).padStart(2, "0"), L = String(i.getDate()).padStart(2, "0");
316
+ return `${u}-${c}-${L} 00:00:00`;
262
317
  }
263
- return `${r}-${t}-${D} ${u}`;
318
+ return `${y}-${a}-${g} ${w}`;
264
319
  }
265
320
  }
266
321
  case "6": {
267
- const I = new Date(N), A = I.getHours();
268
- if (A >= 4 && A < 21) {
269
- const r = I.getFullYear(), t = String(I.getMonth() + 1).padStart(2, "0"), D = String(I.getDate()).padStart(2, "0");
270
- return `${r}-${t}-${D} 09:00:00`;
322
+ const T = new Date(n), Y = T.getHours();
323
+ if (Y >= 4 && Y < 21) {
324
+ const y = T.getFullYear(), a = String(T.getMonth() + 1).padStart(2, "0"), g = String(T.getDate()).padStart(2, "0");
325
+ return `${y}-${a}-${g} 09:00:00`;
271
326
  } else {
272
- const r = new Date(N);
273
- r.getHours() >= 21 && r.setDate(r.getDate() + 1);
274
- const t = r.getFullYear(), D = String(r.getMonth() + 1).padStart(2, "0"), w = String(r.getDate()).padStart(2, "0"), p = `${t}-${D}-${w} 09:00:00`, a = ye(i, p, "gte");
275
- return a === -1 ? p : i[a];
327
+ const y = new Date(n);
328
+ y.getHours() >= 21 && y.setDate(y.getDate() + 1);
329
+ const a = y.getFullYear(), g = String(y.getMonth() + 1).padStart(2, "0"), D = String(y.getDate()).padStart(2, "0"), I = `${a}-${g}-${D} 09:00:00`, m = ge(t, I, "gte");
330
+ return m === -1 ? I : t[m];
276
331
  }
277
332
  }
278
333
  case "7": {
279
- const I = new Date(N), A = new Date(I);
280
- A.setDate(I.getDate() - I.getDay()), A.setHours(0, 0, 0, 0);
281
- const r = new Date(A);
282
- r.setDate(A.getDate() + 5), r.setHours(23, 59, 59, 0);
283
- const t = new Date(A);
284
- t.setDate(A.getDate() + 12), t.setHours(9, 0, 0, 0);
285
- const D = I <= r ? r : t, w = D.getFullYear(), p = String(D.getMonth() + 1).padStart(2, "0"), a = String(D.getDate()).padStart(2, "0");
286
- return `${w}-${p}-${a} 09:00:00`;
334
+ const T = new Date(n), Y = new Date(T);
335
+ Y.setDate(T.getDate() - T.getDay()), Y.setHours(0, 0, 0, 0);
336
+ const y = new Date(Y);
337
+ y.setDate(Y.getDate() + 5), y.setHours(23, 59, 59, 0);
338
+ const a = new Date(Y);
339
+ a.setDate(Y.getDate() + 12), a.setHours(9, 0, 0, 0);
340
+ const g = T <= y ? y : a, D = g.getFullYear(), I = String(g.getMonth() + 1).padStart(2, "0"), m = String(g.getDate()).padStart(2, "0");
341
+ return `${D}-${I}-${m} 09:00:00`;
287
342
  }
288
343
  case "8": {
289
- const I = new Date(N), A = new Date(I.getFullYear(), I.getMonth() + 1, 1), r = new Date(A);
290
- r.setDate(A.getDate() - 1), r.setHours(9, 0, 0, 0);
291
- const t = r.getFullYear(), D = String(r.getMonth() + 1).padStart(2, "0"), w = String(r.getDate()).padStart(2, "0");
292
- return `${t}-${D}-${w} 09:00:00`;
344
+ const T = new Date(n), Y = new Date(T.getFullYear(), T.getMonth() + 1, 1), y = new Date(Y);
345
+ y.setDate(Y.getDate() - 1), y.setHours(9, 0, 0, 0);
346
+ const a = y.getFullYear(), g = String(y.getMonth() + 1).padStart(2, "0"), D = String(y.getDate()).padStart(2, "0");
347
+ return `${a}-${g}-${D} 09:00:00`;
293
348
  }
294
349
  }
295
- const s = new Date(N), c = s.getFullYear(), m = s.getMonth(), y = s.getDate(), e = s.getHours(), d = s.getMinutes(), k = s.getSeconds(), Q = (I) => {
296
- let A = null;
297
- const r = Math.floor(d / I);
298
- d % I === 0 && k === 0 ? A = d : A = (r + 1) * I;
299
- const t = Math.floor(A / 60), D = e + t, w = A % 60, p = new Date(c, m, y, D, w, 0), a = (S) => String(S).padStart(2, "0"), u = p.getFullYear(), n = a(p.getMonth() + 1), T = a(p.getDate()), j = a(p.getHours()), x = a(p.getMinutes());
300
- return `${u}-${n}-${T} ${j}:${x}:00`;
350
+ const s = new Date(n), M = s.getFullYear(), z = s.getMonth(), N = s.getDate(), e = s.getHours(), l = s.getMinutes(), A = s.getSeconds(), x = (T) => {
351
+ let Y = null;
352
+ const y = Math.floor(l / T);
353
+ l % T === 0 && A === 0 ? Y = l : Y = (y + 1) * T;
354
+ const a = Math.floor(Y / 60), g = e + a, D = Y % 60, I = new Date(M, z, N, g, D, 0), m = (C) => String(C).padStart(2, "0"), w = I.getFullYear(), i = m(I.getMonth() + 1), u = m(I.getDate()), c = m(I.getHours()), L = m(I.getMinutes());
355
+ return `${w}-${i}-${u} ${c}:${L}:00`;
301
356
  };
302
- switch (l) {
357
+ switch (r) {
303
358
  case "1":
304
- return Q(1);
359
+ return x(1);
305
360
  case "2":
306
- return Q(5);
361
+ return x(5);
307
362
  case "3":
308
- return Q(15);
363
+ return x(15);
309
364
  case "4":
310
- return Q(30);
365
+ return x(30);
311
366
  default:
312
- throw new Error(`Unsupported cycle: ${N} ${l}`);
367
+ throw new Error(`Unsupported cycle: ${n} ${r}`);
313
368
  }
314
- }, je = (i, N, l) => {
315
- let s = null, c = null;
316
- const [m, y] = N;
317
- switch (l) {
369
+ }, ye = (t, n, r) => {
370
+ let s = null, M = null;
371
+ const [z, N] = n;
372
+ switch (r) {
318
373
  case "6": {
319
- s = i.find((e) => new Date(g(e).format("YYYY-MM-DD 23:59:59")).getTime() >= new Date(m).getTime()), c = i.findLast((e) => new Date(g(e).format("YYYY-MM-DD 00:00:00")).getTime() <= new Date(y).getTime());
374
+ s = t.find((e) => new Date(f(e).format("YYYY-MM-DD 23:59:59")).getTime() >= new Date(z).getTime()), M = t.findLast((e) => new Date(f(e).format("YYYY-MM-DD 00:00:00")).getTime() <= new Date(N).getTime());
320
375
  break;
321
376
  }
322
377
  case "7": {
323
- const e = g(y).endOf("week").add(1, "day").format("YYYY-MM-DD 23:59:59");
324
- s = i.find((d) => g(d).endOf("week").add(1, "day").format("YYYY-MM-DD") === g(m).endOf("week").add(1, "day").format("YYYY-MM-DD")), c = i.findLast((d) => new Date(d).getTime() <= new Date(e).getTime());
378
+ const e = f(N).endOf("week").add(1, "day").format("YYYY-MM-DD 23:59:59");
379
+ s = t.find((l) => f(l).endOf("week").add(1, "day").format("YYYY-MM-DD") === f(z).endOf("week").add(1, "day").format("YYYY-MM-DD")), M = t.findLast((l) => new Date(l).getTime() <= new Date(e).getTime());
325
380
  break;
326
381
  }
327
382
  case "8": {
328
- s = i.find((e) => g(e).format("YYYY-MM") === g(m).format("YYYY-MM")), c = i.findLast((e) => g(e).format("YYYY-MM") === g(y).format("YYYY-MM"));
383
+ s = t.find((e) => f(e).format("YYYY-MM") === f(z).format("YYYY-MM")), M = t.findLast((e) => f(e).format("YYYY-MM") === f(N).format("YYYY-MM"));
329
384
  break;
330
385
  }
331
386
  default:
332
- s = i.find((e) => new Date(e).getTime() >= new Date(m).getTime()), c = i.findLast((e) => new Date(e).getTime() <= new Date(y).getTime());
387
+ s = t.find((e) => new Date(e).getTime() >= new Date(z).getTime()), M = t.findLast((e) => new Date(e).getTime() <= new Date(N).getTime());
333
388
  }
334
- return [s, c];
335
- }, Je = (i, N, l, s, c, m) => {
336
- const y = (r, t) => {
337
- const { direction: D = "", tradeAction: w = "", tradeType: p = "" } = r, a = p ?? D + w;
338
- switch (t) {
389
+ return [s, M];
390
+ }, rt = (t, n, r, s, M, z) => {
391
+ const N = (y, a) => {
392
+ const { direction: g = "", tradeAction: D = "", tradeType: I = "" } = y, m = I ?? g + D;
393
+ switch (a) {
339
394
  case 0:
340
395
  return (/* @__PURE__ */ new Map([
341
396
  ["开多", "买"],
342
397
  ["平多", "卖"],
343
398
  ["开空", "卖"],
344
399
  ["平空", "买"]
345
- ])).get(a);
400
+ ])).get(m);
346
401
  case 1:
347
- return p ?? D + w;
402
+ return I ?? g + D;
348
403
  }
349
- }, e = (r, t, D, w) => r.reduce((p, a) => {
350
- var P;
351
- const u = y(a, 0), n = r.filter((V) => V.klineTime === a.klineTime), T = [...new Set(n.map((V) => y(V, 0)))];
352
- let j = null;
353
- T.length > 1 ? j = "image://" + new URL("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==", self.location).href : j = "image://" + new URL((/* @__PURE__ */ Object.assign({ "./images/buy.svg": Ve, "./images/sell.svg": He, "./images/t.svg": _e }))[`./images/${u === "买" ? "buy" : "sell"}.svg`], self.location).href;
354
- const x = ye(D, a.klineTime), S = (P = w[x]) == null ? void 0 : P[3];
355
- return t.forEach((V) => {
356
- var X;
357
- const R = u === "买" ? 0 : 1;
358
- V.range[R] === a.klineTime && (V.rangeValue[R] = (X = w[x]) == null ? void 0 : X[u === "买" ? 2 : 3]);
359
- }), p.push({
360
- symbol: j,
404
+ }, e = (y, a, g, D) => y.reduce((I, m) => {
405
+ var Q;
406
+ const w = N(m, 0), i = y.filter((_) => _.klineTime === m.klineTime), u = [...new Set(i.map((_) => N(_, 0)))];
407
+ let c = null;
408
+ u.length > 1 ? c = "image://" + new URL("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==", self.location).href : c = "image://" + new URL((/* @__PURE__ */ Object.assign({ "./images/buy.svg": Je, "./images/sell.svg": qe, "./images/t.svg": Xe }))[`./images/${w === "买" ? "buy" : "sell"}.svg`], self.location).href;
409
+ const L = ge(g, m.klineTime), C = (Q = D[L]) == null ? void 0 : Q[3];
410
+ return a.forEach((_) => {
411
+ var te;
412
+ const $ = w === "买" ? 0 : 1;
413
+ _.range[$] === m.klineTime && (_.rangeValue[$] = (te = D[L]) == null ? void 0 : te[w === "买" ? 2 : 3]);
414
+ }), I.push({
415
+ symbol: c,
361
416
  symbolSize: 25,
362
417
  symbolRotate: 0,
363
418
  symbolOffset: [0, 0],
@@ -365,116 +420,116 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
365
420
  show: !1,
366
421
  position: "top"
367
422
  },
368
- coord: [a.klineTime, S],
423
+ coord: [m.klineTime, C],
369
424
  silent: !0,
370
425
  animation: !1,
371
426
  customData: {
372
- tradeType: u,
373
- amount: a.amount,
427
+ tradeType: w,
428
+ amount: m.amount,
374
429
  // 手数
375
- part: a.part,
430
+ part: m.part,
376
431
  // 份数
377
- profitAndLoss: a.profitAndLoss,
432
+ profitAndLoss: m.profitAndLoss,
378
433
  // 盈亏
379
- openPriceAll: a.openPriceAll,
434
+ openPriceAll: m.openPriceAll,
380
435
  // 开仓价
381
- closePriceAll: a.closePriceAll
436
+ closePriceAll: m.closePriceAll
382
437
  // 收仓价
383
438
  }
384
- }), p;
385
- }, []), d = (r, t, D, w) => {
386
- const { sellBuyByPrice: p } = m, a = r.reduce((u, n, T) => {
387
- var P, V;
388
- const j = y(n, 1), x = ["开多", "开空"].includes(j) ? "top" : "bottom";
389
- let S = null;
390
- if (p)
391
- S = x === "top" ? (n.openPriceAll / n.amount).toFixed(2) : (n.closePriceAll / n.amount).toFixed(2);
439
+ }), I;
440
+ }, []), l = (y, a, g, D) => {
441
+ const { sellBuyByPrice: I } = z, m = y.reduce((w, i, u) => {
442
+ var Q, _;
443
+ const c = N(i, 1), L = ["开多", "开空"].includes(c) ? "top" : "bottom";
444
+ let C = null;
445
+ if (I)
446
+ C = L === "top" ? (i.openPriceAll / i.amount).toFixed(2) : (i.closePriceAll / i.amount).toFixed(2);
392
447
  else {
393
- const R = ye(D, n.klineTime);
394
- S = x === "top" ? (P = w[R]) == null ? void 0 : P[3] : (V = w[R]) == null ? void 0 : V[2];
448
+ const $ = ge(g, i.klineTime);
449
+ C = L === "top" ? (Q = D[$]) == null ? void 0 : Q[3] : (_ = D[$]) == null ? void 0 : _[2];
395
450
  }
396
- return t.forEach((R) => {
397
- (x === "top" ? R.range[0] : R.range[1]) === n.klineTime && (R.rangeValue[x === "top" ? 0 : 1] = S);
398
- }), u.push({
451
+ return a.forEach(($) => {
452
+ (L === "top" ? $.range[0] : $.range[1]) === i.klineTime && ($.rangeValue[L === "top" ? 0 : 1] = C);
453
+ }), w.push({
399
454
  symbol: "triangle",
400
455
  symbolSize: [10, 12],
401
- symbolRotate: x === "top" ? 180 : 0,
456
+ symbolRotate: L === "top" ? 180 : 0,
402
457
  symbolOffset: [0, 0],
403
458
  label: {
404
459
  show: !0,
405
- position: x,
460
+ position: L,
406
461
  color: "#fff",
407
- formatter: `${j} ${x === "top" ? "+" : "-"} ${n.amount}手 ${n.part ? `(${n.part}份)` : ""}`
462
+ formatter: `${c} ${L === "top" ? "+" : "-"} ${i.amount}手 ${i.part ? `(${i.part}份)` : ""}`
408
463
  },
409
- itemStyle: { color: x === "top" ? "#FF0000" : "#389e0d" },
410
- coord: [n.klineTime, S],
464
+ itemStyle: { color: L === "top" ? "#FF0000" : "#389e0d" },
465
+ coord: [i.klineTime, C],
411
466
  silent: !0,
412
467
  animation: !1,
413
468
  customData: {
414
- tradeType: j,
415
- amount: n.amount,
469
+ tradeType: c,
470
+ amount: i.amount,
416
471
  // 手数
417
- part: n.part,
472
+ part: i.part,
418
473
  // 份数
419
- profitAndLoss: n.profitAndLoss,
474
+ profitAndLoss: i.profitAndLoss,
420
475
  // 盈亏
421
- openPriceAll: n.openPriceAll,
476
+ openPriceAll: i.openPriceAll,
422
477
  // 开仓价
423
- closePriceAll: n.closePriceAll
478
+ closePriceAll: i.closePriceAll
424
479
  // 收仓价
425
480
  }
426
- }), u;
481
+ }), w;
427
482
  }, []);
428
- return p ? a : We(a);
429
- }, k = (r, t, D) => {
430
- const { basePointData: w, baseLineData: p } = r.reduce(
431
- (T, j) => {
432
- const x = {
433
- pointTime: j.openTime,
483
+ return I ? m : ot(m);
484
+ }, A = (y, a, g) => {
485
+ const { basePointData: D, baseLineData: I } = y.reduce(
486
+ (u, c) => {
487
+ const L = {
488
+ pointTime: c.openTime,
434
489
  // 交易时间
435
490
  tradeAction: "开",
436
491
  // 交易行为
437
- tradeDirection: j.tradeDirection ? "空" : "多",
492
+ tradeDirection: c.tradeDirection ? "空" : "多",
438
493
  // 交易方向 1:空, 0:多
439
- tradeType: `开${j.tradeDirection ? "空" : "多"}`,
494
+ tradeType: `开${c.tradeDirection ? "空" : "多"}`,
440
495
  part: null,
441
496
  // 份数,
442
- amount: j.tradeVolume,
497
+ amount: c.tradeVolume,
443
498
  // 手数
444
- profitAndLoss: j.profitAndLoss,
499
+ profitAndLoss: c.profitAndLoss,
445
500
  // 盈亏
446
- openPriceAll: j.openPrice * j.tradeVolume,
501
+ openPriceAll: c.openPrice * c.tradeVolume,
447
502
  // 开仓总价
448
- closePriceAll: j.closePrice * j.tradeVolume,
503
+ closePriceAll: c.closePrice * c.tradeVolume,
449
504
  // 平仓总价
450
- klineTime: de(D, j.openTime, t)
505
+ klineTime: Te(g, c.openTime, a)
451
506
  // K线时间
452
- }, S = {
453
- pointTime: j.closeTime,
507
+ }, C = {
508
+ pointTime: c.closeTime,
454
509
  // 交易时间
455
510
  tradeAction: "平",
456
511
  // 交易行为
457
- tradeDirection: j.tradeDirection ? "空" : "多",
512
+ tradeDirection: c.tradeDirection ? "空" : "多",
458
513
  // 交易方向 1:空, 0:多
459
- tradeType: `平${j.tradeDirection ? "空" : "多"}`,
514
+ tradeType: `平${c.tradeDirection ? "空" : "多"}`,
460
515
  part: null,
461
516
  // 份数,
462
- amount: j.tradeVolume,
517
+ amount: c.tradeVolume,
463
518
  // 手数
464
- profitAndLoss: j.profitAndLoss,
519
+ profitAndLoss: c.profitAndLoss,
465
520
  // 盈亏
466
- openPriceAll: j.openPrice * j.tradeVolume,
521
+ openPriceAll: c.openPrice * c.tradeVolume,
467
522
  // 开仓总价
468
- closePriceAll: j.closePrice * j.tradeVolume,
523
+ closePriceAll: c.closePrice * c.tradeVolume,
469
524
  // 平仓总价
470
- klineTime: de(D, j.closeTime, t)
525
+ klineTime: Te(g, c.closeTime, a)
471
526
  // K线时间
472
- }, P = {
473
- range: [x.klineTime, S.klineTime],
527
+ }, Q = {
528
+ range: [L.klineTime, C.klineTime],
474
529
  rangeValue: [null, null],
475
- color: S.profitAndLoss > 0 ? "#FF0000" : "#389e0d"
530
+ color: C.profitAndLoss > 0 ? "#FF0000" : "#389e0d"
476
531
  };
477
- return T.basePointData.push(x, S), T.baseLineData.push(P), T;
532
+ return u.basePointData.push(L, C), u.baseLineData.push(Q), u;
478
533
  },
479
534
  {
480
535
  basePointData: [],
@@ -482,60 +537,91 @@ const Ve = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPS
482
537
  baseLineData: []
483
538
  // 连线数据
484
539
  }
485
- ), u = [...w.reduce((T, j) => {
486
- const x = JSON.parse(JSON.stringify(j)), S = x.klineTime + x.tradeType;
487
- if (T.has(S)) {
488
- const P = T.get(S);
489
- x.amount += P.amount, x.part += P.part, x.profitAndLoss += P.profitAndLoss, x.openPriceAll += P.openPriceAll, x.closePriceAll += P.closePriceAll;
540
+ ), w = [...D.reduce((u, c) => {
541
+ const L = JSON.parse(JSON.stringify(c)), C = L.klineTime + L.tradeType;
542
+ if (u.has(C)) {
543
+ const Q = u.get(C);
544
+ L.amount += Q.amount, L.part += Q.part, L.profitAndLoss += Q.profitAndLoss, L.openPriceAll += Q.openPriceAll, L.closePriceAll += Q.closePriceAll;
490
545
  }
491
- return T.set(S, x), T;
492
- }, /* @__PURE__ */ new Map([])).values()].sort((T, j) => new Date(T.klineTime) - new Date(j.klineTime)), n = p.filter(({ range: T }) => T[0] !== T[1]);
493
- return { pointData: u, lineData: n };
494
- }, { pointData: Q, lineData: I } = k(i, N, s);
546
+ return u.set(C, L), u;
547
+ }, /* @__PURE__ */ new Map([])).values()].sort((u, c) => new Date(u.klineTime) - new Date(c.klineTime)), i = I.filter(({ range: u }) => u[0] !== u[1]);
548
+ return { pointData: w, lineData: i };
549
+ }, { pointData: x, lineData: T } = A(t, n, s);
495
550
  return {
496
- tradePointData: (l === 0 ? e : d)(Q, I, s, c),
497
- tradeLineData: I.map(({ range: r, rangeValue: t, color: D }) => [
551
+ tradePointData: (r === 0 ? e : l)(x, T, s, M),
552
+ tradeLineData: T.map(({ range: y, rangeValue: a, color: g }) => [
498
553
  {
499
554
  symbol: "none",
500
- coord: [r[0], t[0]],
501
- lineStyle: { color: D, width: 2, type: "solid" },
555
+ coord: [y[0], a[0]],
556
+ lineStyle: { color: g, width: 2, type: "solid" },
502
557
  silent: !0,
503
558
  animation: !1
504
559
  },
505
560
  {
506
561
  symbol: "none",
507
- coord: [r[1], t[1]],
562
+ coord: [y[1], a[1]],
508
563
  silent: !0,
509
564
  animation: !1
510
565
  }
511
566
  ])
512
567
  };
513
- }, Ke = (i, N) => {
514
- let l = [];
515
- if (Number(N) <= 5)
516
- l = i.map(({ tradeDate: s, netPositionValue: c }) => [g(s).format("YYYY-MM-DD HH:mm:ss"), c]);
517
- else if (Number(N) === 6) {
518
- const s = i.reduce((c, m) => {
519
- const { tradeDate: y, netPositionValue: e } = m;
520
- return c.set(g(y).format("YYYY-MM-DD 09:00:00"), e), c;
568
+ }, st = (t, n) => {
569
+ let r = [];
570
+ if (Number(n) <= 5)
571
+ r = t.map(({ tradeDate: s, netPositionValue: M }) => [f(s).format("YYYY-MM-DD HH:mm:ss"), M]);
572
+ else if (Number(n) === 6) {
573
+ const s = t.reduce((M, z) => {
574
+ const { tradeDate: N, netPositionValue: e } = z;
575
+ return M.set(f(N).format("YYYY-MM-DD 09:00:00"), e), M;
521
576
  }, /* @__PURE__ */ new Map());
522
- l = Array.from(s, ([c, m]) => [c, m]);
577
+ r = Array.from(s, ([M, z]) => [M, z]);
523
578
  } else
524
- l = [];
525
- return { netPositionLineData: l };
526
- }, qe = (i, N, l, s) => {
527
- let c = [];
528
- if (["6", "7", "8"].includes(N)) {
529
- const m = i.reduce((y, e) => {
530
- const d = de(s, e.date, N), k = e[l === 0 ? "simple" : "compound"];
531
- return y.set(d, k), y;
579
+ r = [];
580
+ return { netPositionLineData: r };
581
+ }, ct = (t, n, r, s) => {
582
+ let M = [];
583
+ if (["6", "7", "8"].includes(n)) {
584
+ const z = t.reduce((N, e) => {
585
+ const l = Te(s, e.date, n), A = e[r === 0 ? "simple" : "compound"];
586
+ return N.set(l, A), N;
532
587
  }, /* @__PURE__ */ new Map());
533
- c = Array.from(m, ([y, e]) => [y, e]);
588
+ M = Array.from(z, ([N, e]) => [N, e]);
534
589
  } else
535
- c = [];
536
- return { tradeIncomeRateLineData: c };
590
+ M = [];
591
+ return { tradeIncomeRateLineData: M };
592
+ }, be = "/middleLayer/kline/getKline", lt = 15e3, Nt = 64, Ce = /* @__PURE__ */ new WeakMap(), ut = /* @__PURE__ */ new Map(), jt = (t) => typeof t == "object" && t !== null || typeof t == "function", De = (t) => t instanceof Date ? t.toISOString() : Array.isArray(t) ? t.map(De) : t && typeof t == "object" ? Object.keys(t).sort().reduce((n, r) => (t[r] !== void 0 && (n[r] = De(t[r])), n), {}) : t, zt = (t) => {
593
+ if (jt(t)) {
594
+ let n = Ce.get(t);
595
+ return n || (n = /* @__PURE__ */ new Map(), Ce.set(t, n)), n;
596
+ }
597
+ return ut;
598
+ }, ke = (t) => {
599
+ for (; t.size > Nt; ) {
600
+ const n = t.keys().next().value;
601
+ if (n === void 0)
602
+ break;
603
+ t.delete(n);
604
+ }
605
+ }, je = (t, n, r = {}) => {
606
+ if (!t || typeof t.post != "function")
607
+ throw new TypeError("[K线] request.post 未配置,无法获取行情数据");
608
+ const s = Number.isFinite(r.ttlMs) ? Math.max(0, r.ttlMs) : lt, M = zt(t), z = `${be}:${JSON.stringify(De(n))}`, N = Date.now(), e = M.get(z);
609
+ if (e && (e.pending || e.expiresAt > N))
610
+ return e.promise;
611
+ e && M.delete(z);
612
+ const l = {
613
+ pending: !0,
614
+ expiresAt: 0,
615
+ promise: null
616
+ };
617
+ return l.promise = Promise.resolve().then(() => t.post(be, n)).then(
618
+ (A) => (M.get(z) === l && (l.pending = !1, l.expiresAt = Date.now() + s, ke(M)), A),
619
+ (A) => {
620
+ throw M.get(z) === l && M.delete(z), A;
621
+ }
622
+ ), M.set(z, l), ke(M), l.promise;
537
623
  };
538
- const Xe = { class: "tips" }, et = {
624
+ const yt = { class: "tips" }, dt = {
539
625
  __name: "Tips",
540
626
  props: {
541
627
  data: {
@@ -543,17 +629,17 @@ const Xe = { class: "tips" }, et = {
543
629
  default: () => []
544
630
  }
545
631
  },
546
- setup(i) {
547
- return (N, l) => (_(), G("div", Xe, [
548
- (_(!0), G(fe, null, we(i.data, (s, c) => (_(), G("span", {
549
- key: c,
632
+ setup(t) {
633
+ return (n, r) => (H(), G("div", yt, [
634
+ (H(!0), G(Ee, null, ve(t.data, (s, M) => (H(), G("span", {
635
+ key: M,
550
636
  class: "item",
551
- style: Qe({ color: s.color })
552
- }, oe(s.label) + " " + oe(s.value), 5))), 128))
637
+ style: Ze({ color: s.color })
638
+ }, se(s.label) + " " + se(s.value), 5))), 128))
553
639
  ]));
554
640
  }
555
- }, ze = /* @__PURE__ */ De(et, [["__scopeId", "data-v-df1caefe"]]);
556
- const tt = {
641
+ }, de = /* @__PURE__ */ Ie(dt, [["__scopeId", "data-v-ab0b040e"]]);
642
+ const gt = {
557
643
  __name: "SliderChart",
558
644
  props: {
559
645
  // K线当屏时间范围
@@ -573,137 +659,143 @@ const tt = {
573
659
  // 三方标记(不需要token授权)
574
660
  },
575
661
  emits: ["change"],
576
- setup(i, { expose: N, emit: l }) {
577
- const { request: s } = xe("stConfig");
578
- let c = null;
579
- const m = U(null), y = l, e = i, d = U({
662
+ setup(t, { expose: n, emit: r }) {
663
+ const { request: s } = Se("stConfig");
664
+ let M = null, z = !1, N = 0;
665
+ const e = V(null), l = r, A = t, x = V({
580
666
  data: [],
581
667
  // <[开 收 低 高 成交额 涨跌值 涨跌百分比]>
582
668
  mainIndicator: [],
583
669
  subIndicator: [],
584
670
  time: []
585
- }), k = async () => {
586
- const r = {
587
- varietyCode: e.varietyCode,
671
+ }), T = async () => {
672
+ const g = ++N, D = {
673
+ varietyCode: A.varietyCode,
588
674
  cycle: "6",
589
- right: e.varietyStock === 1 ? e.rightType : 0,
675
+ right: A.varietyStock === 1 ? A.rightType : 0,
590
676
  // 复权方式
591
- contractType: e.varietyStock ? null : e.klineType,
677
+ contractType: A.varietyStock ? null : A.klineType,
592
678
  // 合约类型
593
679
  startTime: "1999-01-01 00:00:00",
594
- endTime: g().format("YYYY-MM-DD 23:59:59"),
595
- deleteFirstNumber: e.deleteFirstNumber,
596
- withoutPermission: e.withoutPermission
597
- }, { body: t } = await s.post("/middleLayer/kline/getKline", r);
598
- t ? d.value = t : d.value = { data: [], mainIndicator: [], subIndicator: [], time: [] }, A("init");
599
- }, Q = re((r) => {
600
- if (!r.dataZoomId)
680
+ endTime: f().format("YYYY-MM-DD 23:59:59"),
681
+ deleteFirstNumber: A.deleteFirstNumber,
682
+ withoutPermission: A.withoutPermission
683
+ };
684
+ if (z)
601
685
  return;
602
- const t = c.getOption();
603
- if (t != null && t.dataZoom[0]) {
604
- const { startValue: D, endValue: w } = c.getOption().dataZoom[0], { time: p } = d.value, a = `${p[D].split(" ")[0]} 00:00:00`, u = `${p[w].split(" ")[0]} 23:59:59`;
605
- console.log(`检测到拖拽轴被拖动, 时间区间: ${a} - ${u}`), y("change", { startTime: a, endTime: u });
686
+ const { body: I } = await je(s, D);
687
+ z || g !== N || (I ? x.value = I : x.value = { data: [], mainIndicator: [], subIndicator: [], time: [] }, a("init"));
688
+ }, Y = ce((g) => {
689
+ if (!(g != null && g.dataZoomId) || z || !M)
690
+ return;
691
+ const D = M.getOption();
692
+ if (D != null && D.dataZoom[0]) {
693
+ const { startValue: I, endValue: m } = M.getOption().dataZoom[0], { time: w } = x.value, i = `${w[I].split(" ")[0]} 00:00:00`, u = `${w[m].split(" ")[0]} 23:59:59`;
694
+ console.log(`检测到拖拽轴被拖动, 时间区间: ${i} - ${u}`), l("change", { startTime: i, endTime: u });
606
695
  }
607
- }, 200), I = re(({ startTime: r, endTime: t }) => {
608
- A("reset", { startTime: r, endTime: t });
609
- }, 100), A = (r, t) => {
610
- switch (r) {
611
- case "init": {
612
- const { data: D, time: w } = d.value, { xAxisData: p, lineData: a } = D.reduce(
613
- (n, T, j) => (n.xAxisData.push(w[j].split(" ")[0]), n.lineData.push(T[1]), n),
614
- { xAxisData: [], lineData: [] }
615
- ), u = {
616
- grid: {
617
- height: 0,
618
- left: "100px",
619
- right: "80px"
620
- },
621
- xAxis: {
622
- type: "category",
623
- data: p,
624
- show: !1
625
- },
626
- yAxis: {
627
- type: "value"
628
- },
629
- dataZoom: [
630
- {
631
- show: !0,
632
- startValue: 0,
633
- endValue: 0,
634
- textStyle: {
635
- color: "#ccc"
636
- }
696
+ }, 200), y = ce(({ startTime: g, endTime: D }) => {
697
+ a("reset", { startTime: g, endTime: D });
698
+ }, 100), a = (g, D) => {
699
+ if (!(z || !M))
700
+ switch (g) {
701
+ case "init": {
702
+ const { data: I, time: m } = x.value, { xAxisData: w, lineData: i } = I.reduce(
703
+ (c, L, C) => (c.xAxisData.push(m[C].split(" ")[0]), c.lineData.push(L[1]), c),
704
+ { xAxisData: [], lineData: [] }
705
+ ), u = {
706
+ grid: {
707
+ height: 0,
708
+ left: "100px",
709
+ right: "80px"
637
710
  },
638
- {
639
- type: "inside",
640
- startValue: 0,
641
- endValue: 0
642
- }
643
- ],
644
- series: [
645
- {
646
- data: a,
647
- type: "line"
648
- }
649
- ]
650
- };
651
- if (c.setOption(u, !0), e.screenTimeRange.length) {
652
- const [n, T] = e.screenTimeRange;
653
- I({ startTime: n, endTime: T });
711
+ xAxis: {
712
+ type: "category",
713
+ data: w,
714
+ show: !1
715
+ },
716
+ yAxis: {
717
+ type: "value"
718
+ },
719
+ dataZoom: [
720
+ {
721
+ show: !0,
722
+ startValue: 0,
723
+ endValue: 0,
724
+ textStyle: {
725
+ color: "#ccc"
726
+ }
727
+ },
728
+ {
729
+ type: "inside",
730
+ startValue: 0,
731
+ endValue: 0
732
+ }
733
+ ],
734
+ series: [
735
+ {
736
+ data: i,
737
+ type: "line"
738
+ }
739
+ ]
740
+ };
741
+ if (M.setOption(u, !0), A.screenTimeRange.length) {
742
+ const [c, L] = A.screenTimeRange;
743
+ y({ startTime: c, endTime: L });
744
+ }
745
+ break;
654
746
  }
655
- break;
656
- }
657
- case "reset": {
658
- const { time: D } = d.value, w = g(t.startTime).format("YYYY-MM-DD"), p = g(t.endTime).format("YYYY-MM-DD");
659
- let a = -1, u = -1;
660
- for (let n = 0; n < D.length; n++) {
661
- const T = g(D[n]).format("YYYY-MM-DD");
662
- if (a !== -1 && u !== -1)
663
- break;
664
- a === -1 && (new Date(T) === new Date(w) ? a = n : new Date(T) > new Date(w) && (a = n - 1)), u === -1 && (new Date(T) === new Date(p) ? u = n : new Date(T) > new Date(p) && (u = n - 1));
747
+ case "reset": {
748
+ const { time: I } = x.value, m = f(D.startTime).format("YYYY-MM-DD"), w = f(D.endTime).format("YYYY-MM-DD");
749
+ let i = -1, u = -1;
750
+ for (let c = 0; c < I.length; c++) {
751
+ const L = f(I[c]).format("YYYY-MM-DD");
752
+ if (i !== -1 && u !== -1)
753
+ break;
754
+ i === -1 && (new Date(L) === new Date(m) ? i = c : new Date(L) > new Date(m) && (i = c - 1)), u === -1 && (new Date(L) === new Date(w) ? u = c : new Date(L) > new Date(w) && (u = c - 1));
755
+ }
756
+ u === -1 && (u = I.length - 1), M.dispatchAction({
757
+ type: "dataZoom",
758
+ startValue: i,
759
+ endValue: u
760
+ });
761
+ break;
665
762
  }
666
- u === -1 && (u = D.length - 1), c.dispatchAction({
667
- type: "dataZoom",
668
- startValue: a,
669
- endValue: u
670
- });
671
- break;
672
763
  }
673
- }
674
764
  };
675
- return Oe(() => {
676
- Pe(() => {
677
- c = Ne.init(m.value), c.on("datazoom", Q), k();
765
+ return Qe(() => {
766
+ Be(() => {
767
+ z || (M = ue.init(e.value), M.on("datazoom", Y), T());
678
768
  });
679
- }), ne(
680
- () => e.screenTimeRange,
681
- (r) => {
682
- const [t, D] = r;
683
- I({ startTime: t, endTime: D });
769
+ }), re(
770
+ () => A.screenTimeRange,
771
+ (g) => {
772
+ if (z || !M || g.length < 2)
773
+ return;
774
+ const [D, I] = g;
775
+ y({ startTime: D, endTime: I });
684
776
  },
685
777
  { deep: !0 }
686
- ), Ce(() => {
687
- c.off("datazoom"), c.dispose();
688
- }), N({
689
- resize: re(() => c.resize(), 100)
690
- }), (r, t) => (_(), G("div", {
778
+ ), Pe(() => {
779
+ z = !0, N += 1, M == null || M.off("datazoom"), M == null || M.dispose(), M = null;
780
+ }), n({
781
+ resize: ce(() => M == null ? void 0 : M.resize(), 100)
782
+ }), (g, D) => (H(), G("div", {
691
783
  class: "chart",
692
784
  ref_key: "sliderChartRef",
693
- ref: m
785
+ ref: e
694
786
  }, null, 512));
695
787
  }
696
- }, Mt = /* @__PURE__ */ De(tt, [["__scopeId", "data-v-0c715da1"]]);
697
- const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
788
+ }, Tt = /* @__PURE__ */ Ie(gt, [["__scopeId", "data-v-4a4659da"]]);
789
+ const Dt = { class: "main-chart" }, It = { class: "indicator" }, Yt = {
698
790
  key: 0,
699
791
  class: "screen-time-range"
700
- }, ot = {
792
+ }, Lt = {
701
793
  key: 0,
702
794
  class: "sub-chart"
703
- }, rt = { class: "indicator" }, st = { class: "title" }, lt = {
795
+ }, mt = { class: "indicator" }, At = { class: "title" }, ft = {
704
796
  key: 1,
705
797
  class: "slider-chart"
706
- }, ct = {
798
+ }, pt = {
707
799
  __name: "index",
708
800
  props: {
709
801
  varietyCode: { type: String, required: !0 },
@@ -723,6 +815,11 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
723
815
  incomeType: { type: Number, default: 0 },
724
816
  // 收益计算类型 0-单利, 1-复利
725
817
  initTimeRange: { type: Array, required: !0 },
818
+ initialVisibleBars: {
819
+ type: Number,
820
+ default: 0,
821
+ validator: (t) => Number.isInteger(t) && t >= 0 && t <= U.maxValueSpan
822
+ },
726
823
  mainIndicator: { type: String, required: !0 },
727
824
  // 绘制数据
728
825
  tradeLog: { type: Array, default: () => [] },
@@ -741,17 +838,17 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
741
838
  withoutPermission: { type: Number, default: 0 }
742
839
  // 三方标记(不需要token授权)
743
840
  },
744
- setup(i, { expose: N }) {
745
- const { round: l, formatValue: s } = be, { request: c } = xe("stConfig"), m = U(!1), y = U(!1), e = i;
746
- let d = !1, k = !1, Q = !1, I = !1, A = null, r = null, t = null;
747
- const D = U(null), w = U(null), p = U(null), a = U({
841
+ setup(t, { expose: n }) {
842
+ const { round: r, formatValue: s } = Re, { request: M } = Se("stConfig"), z = V(!1), N = V(!1), e = t;
843
+ let l = !1, A = !1, x = !1, T = !1, Y = null, y = null, a = null, g = !1, D = 0;
844
+ const I = V(null), m = V(null), w = V(null), i = V({
748
845
  data: [],
749
846
  mainIndicator: [],
750
847
  subIndicator: [],
751
848
  time: []
752
- }), u = U(0), n = U([]), T = U(null), j = U("VOL"), x = ue(() => {
753
- const M = a.value.data[u.value];
754
- if (!M)
849
+ }), u = V(0), c = V([]), L = V(null), C = V("VOL"), Q = ze(() => {
850
+ const o = i.value.data[u.value];
851
+ if (!o)
755
852
  return [
756
853
  { label: "开", value: "-" },
757
854
  { label: "高", value: "-" },
@@ -760,62 +857,65 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
760
857
  { label: "额", value: "-" },
761
858
  { label: "涨跌", value: "-" }
762
859
  ];
763
- const o = [
764
- { label: "开", value: M[0] },
765
- { label: "高", value: M[3] },
766
- { label: "低", value: M[2] },
767
- { label: "收", value: M[1] }
860
+ const j = [
861
+ { label: "开", value: o[0] },
862
+ { label: "高", value: o[3] },
863
+ { label: "低", value: o[2] },
864
+ { label: "收", value: o[1] }
768
865
  ];
769
- M[4] !== null && o.push({ label: "额", value: s(M[4]) });
770
- let z;
771
- return M[6] > 0 ? z = "red" : M[6] < 0 && (z = "green"), o.push({ label: "涨跌", value: `${l(M[6])}%`, color: z }), o;
772
- }), S = ue(() => {
773
- var M, o;
774
- return ((o = (M = a.value) == null ? void 0 : M.mainIndicator) == null ? void 0 : o.map((z) => ({ label: z.key, value: l(z.data[u.value]), color: z.color }))) || [];
775
- }), P = ue(() => {
776
- var M, o;
777
- return ((o = (M = a.value) == null ? void 0 : M.subIndicator) == null ? void 0 : o.map((z) => ({ label: z.key, color: z.color, value: z.data[u.value] || "-" }))) || [];
778
- }), V = () => {
779
- if (!D.value)
866
+ o[4] !== null && j.push({ label: "额", value: s(o[4]) });
867
+ let d;
868
+ return o[6] > 0 ? d = "red" : o[6] < 0 && (d = "green"), j.push({ label: "涨跌", value: `${r(o[6])}%`, color: d }), j;
869
+ }), _ = ze(() => {
870
+ var o, j;
871
+ return ((j = (o = i.value) == null ? void 0 : o.mainIndicator) == null ? void 0 : j.map((d) => ({ label: d.key, value: r(d.data[u.value]), color: d.color }))) || [];
872
+ }), $ = ze(() => {
873
+ var o, j;
874
+ return ((j = (o = i.value) == null ? void 0 : o.subIndicator) == null ? void 0 : j.map((d) => ({ label: d.key, color: d.color, value: d.data[u.value] || "-" }))) || [];
875
+ }), te = () => {
876
+ if (!I.value)
780
877
  return console.warn("[K线] 主图DOM元素不存在,取消初始化"), !1;
781
- if (t)
878
+ if (a)
782
879
  return !0;
783
880
  try {
784
- return t = Ne.init(D.value), t.on(
881
+ return a = ue.init(I.value), a.on(
785
882
  "highlight",
786
- re((M) => {
787
- var o;
788
- M.dataIndex ? u.value = M.dataIndex : u.value = ((o = M.batch) == null ? void 0 : o[0].dataIndex) ?? -1;
883
+ ce((o) => {
884
+ var j;
885
+ o.dataIndex ? u.value = o.dataIndex : u.value = ((j = o.batch) == null ? void 0 : j[0].dataIndex) ?? -1;
789
886
  }, 10)
790
- ), t.on(
887
+ ), a.on(
791
888
  "datazoom",
792
- re(async () => {
889
+ ce(async () => {
793
890
  var O;
794
- const { loadCheckCount: M } = q, { startValue: o, endValue: z } = ((O = t.getOption()) == null ? void 0 : O.dataZoom[0]) ?? {};
795
- Q === !1 && I === !1 && o < M && await X("history"), d === !1 && k === !1 && z > a.value.time.length - M && await X("new"), Te(), ge();
891
+ const { loadCheckCount: o } = U, { startValue: j, endValue: d } = ((O = a.getOption()) == null ? void 0 : O.dataZoom[0]) ?? {};
892
+ x === !1 && T === !1 && j < o && await Ye("history"), l === !1 && A === !1 && d > i.value.time.length - o && await Ye("new"), Le(), me();
796
893
  })
797
- ), t.on("globalout", () => {
798
- if (t) {
799
- const M = t.getOption();
800
- u.value = M.dataZoom[0].endValue;
894
+ ), a.on("globalout", () => {
895
+ if (a) {
896
+ const o = a.getOption();
897
+ u.value = o.dataZoom[0].endValue;
801
898
  }
802
- }), t.getZr().on("contextmenu", () => {
803
- var M;
804
- T.value = (M = a.value) == null ? void 0 : M.time[u.value];
805
- }), window.addEventListener("keydown", Ie), e.userKlineConfig.enable_subChart && w.value && (r = Ne.init(w.value), Ne.connect([t, r])), D.value && (A = Ue(D.value), A.listen(() => {
899
+ }), a.getZr().on("contextmenu", () => {
900
+ var o;
901
+ L.value = (o = i.value) == null ? void 0 : o.time[u.value];
902
+ }), window.addEventListener("keydown", Ae), e.userKlineConfig.enable_subChart && m.value && (y = ue.init(m.value), ue.connect([a, y])), I.value && (Y = Ke(I.value), Y.listen(() => {
806
903
  requestAnimationFrame(() => {
807
- var M;
808
- t == null || t.resize(), r == null || r.resize(), (M = p.value) == null || M.resize();
904
+ var o;
905
+ a == null || a.resize(), y == null || y.resize(), (o = w.value) == null || o.resize();
809
906
  });
810
907
  })), !0;
811
- } catch (M) {
812
- return console.error("[st-klinePlus]: 初始化异常:", M), !1;
908
+ } catch (o) {
909
+ return console.error("[st-klinePlus]: 初始化异常:", o), !1;
813
910
  }
814
- }, R = async ({ startTime: M, endTime: o }) => {
815
- Q = !1, I = !1, d = !1, k = !1;
911
+ }, Me = async ({ startTime: o, endTime: j }) => {
912
+ const d = ++D;
913
+ x = !1, T = !1, l = !1, A = !1;
816
914
  try {
817
- m.value = !0;
818
- const z = {
915
+ if (g)
916
+ return;
917
+ z.value = !0;
918
+ const O = {
819
919
  varietyCode: e.varietyCode,
820
920
  cycle: e.cycle,
821
921
  // 周期
@@ -824,60 +924,60 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
824
924
  contractType: e.varietyStock ? null : e.klineType,
825
925
  // 合约类型
826
926
  mainIndicatorList: e.indicatorStore.getIndicatorParams(e.mainIndicator),
827
- subIndicator: j.value,
927
+ subIndicator: C.value,
828
928
  deleteFirstNumber: e.deleteFirstNumber,
829
929
  withoutPermission: e.withoutPermission
830
- };
831
- ["1", "2", "3", "4", "5"].includes(e.cycle) ? Object.assign(z, {
832
- startTime: g(M).subtract(1, "day").format("YYYY-MM-DD HH:mm:ss"),
833
- endTime: g(o).add(1, "day").format("YYYY-MM-DD HH:mm:ss")
834
- }) : ["6", "7"].includes(e.cycle) ? Object.assign(z, {
835
- startTime: g(M).subtract(50, "day").format("YYYY-MM-DD HH:mm:ss"),
836
- endTime: g(o).add(50, "day").format("YYYY-MM-DD HH:mm:ss")
837
- }) : Object.assign(z, {
838
- startTime: g(M).subtract(10, "month").format("YYYY-MM-DD HH:mm:ss"),
839
- endTime: g(o).add(10, "month").format("YYYY-MM-DD HH:mm:ss")
930
+ }, p = tt(e.cycle, e.initialVisibleBars);
931
+ Object.assign(O, {
932
+ startTime: f(o).subtract(p.amount, p.unit).format("YYYY-MM-DD HH:mm:ss"),
933
+ endTime: f(j).add(p.amount, p.unit).format("YYYY-MM-DD HH:mm:ss")
840
934
  });
841
- const { body: O } = await c.post("/middleLayer/kline/getKline", z);
842
- a.value = O ?? { data: [], mainIndicator: [], subIndicator: [], time: [] };
843
- let Y = -1, L = -1;
844
- for (let f = 0; f < a.value.time.length; f++) {
845
- const E = g(a.value.time[f]).format("YYYY-MM-DD");
846
- if (Y !== -1 && L !== -1)
847
- break;
848
- Y === -1 && (new Date(E) === new Date(M) ? Y = f : new Date(E) > new Date(M) && (Y = f - 1)), L === -1 && (new Date(E) === new Date(o) ? L = f : new Date(E) > new Date(o) && (L = f - 1));
935
+ const { body: h } = await je(M, O);
936
+ if (g || d !== D)
937
+ return;
938
+ if (i.value = h ?? { data: [], mainIndicator: [], subIndicator: [], time: [] }, !i.value.time.length) {
939
+ ie({ startValue: 0, endValue: 0 });
940
+ return;
849
941
  }
850
- L === -1 && (L = a.value.time.length - 1), se({
851
- startValue: Y === -1 ? 0 : Y,
852
- endValue: L === -1 ? a.value.time.length - 1 : L
853
- });
942
+ ie(
943
+ it({
944
+ time: i.value.time,
945
+ startTime: o,
946
+ endTime: j,
947
+ initialVisibleBars: e.initialVisibleBars
948
+ })
949
+ );
854
950
  } finally {
855
- m.value = !1;
951
+ d === D && (z.value = !1);
856
952
  }
857
- }, X = async (M) => {
858
- var E, ee;
859
- const { loadAddCount: o } = q;
860
- switch (M) {
953
+ }, Ye = async (o) => {
954
+ var X, W;
955
+ const j = D, { loadAddCount: d } = U;
956
+ switch (o) {
861
957
  case "history": {
862
- Q = !0;
958
+ x = !0;
863
959
  const F = {
864
960
  varietyCode: e.varietyCode,
865
961
  cycle: e.cycle,
866
962
  right: e.varietyStock === 1 ? e.rightType : 0,
867
963
  // 复权方式
868
964
  contractType: e.varietyStock ? null : e.klineType,
869
- endTime: a.value.time[0],
870
- limit: o,
965
+ endTime: i.value.time[0],
966
+ limit: d,
871
967
  mainIndicatorList: e.indicatorStore.getIndicatorParams(e.mainIndicator),
872
- subIndicator: j.value,
968
+ subIndicator: C.value,
873
969
  deleteFirstNumber: e.deleteFirstNumber,
874
970
  withoutPermission: e.withoutPermission
875
- }, { body: H } = await c.post("/middleLayer/kline/getKline", F);
876
- a.value = pe(H, a.value), H.data.length < o && (console.log("[K线] 获取更多数据: 左侧已全部获取完毕, 关闭"), I = !0), Q = !1;
971
+ }, { body: P } = await je(M, F);
972
+ if (g || j !== D) {
973
+ x = !1;
974
+ return;
975
+ }
976
+ i.value = he(P, i.value), P.data.length < d && (console.log("[K线] 获取更多数据: 左侧已全部获取完毕, 关闭"), T = !0), x = !1;
877
977
  break;
878
978
  }
879
979
  case "new": {
880
- d = !0;
980
+ l = !0;
881
981
  const F = {
882
982
  varietyCode: e.varietyCode,
883
983
  cycle: e.cycle,
@@ -886,49 +986,53 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
886
986
  // 复权方式
887
987
  contractType: e.varietyStock ? null : e.klineType,
888
988
  // 合约类型
889
- startTime: a.value.time[a.value.time.length - 1],
989
+ startTime: i.value.time[i.value.time.length - 1],
890
990
  // 开始时间
891
- limit: o,
991
+ limit: d,
892
992
  // 查询K线数量
893
993
  mainIndicatorList: e.indicatorStore.getIndicatorParams(e.mainIndicator),
894
- subIndicator: j.value,
994
+ subIndicator: C.value,
895
995
  deleteFirstNumber: e.deleteFirstNumber,
896
996
  withoutPermission: e.withoutPermission
897
- }, { body: H } = await c.post("/middleLayer/kline/getKline", F);
898
- a.value = pe(a.value, H), H.data.length < o && (console.log("[K线] 获取更多数据: 右侧已全部获取完毕, 关闭"), k = !0), d = !1;
997
+ }, { body: P } = await je(M, F);
998
+ if (g || j !== D) {
999
+ l = !1;
1000
+ return;
1001
+ }
1002
+ i.value = he(i.value, P), P.data.length < d && (console.log("[K线] 获取更多数据: 右侧已全部获取完毕, 关闭"), A = !0), l = !1;
899
1003
  break;
900
1004
  }
901
1005
  }
902
- const { startValue: z, endValue: O } = ((E = t.getOption()) == null ? void 0 : E.dataZoom[0]) ?? {}, Y = (ee = t.getOption()) == null ? void 0 : ee.xAxis[0].data, L = a.value.time.findIndex((F) => new Date(F) >= new Date(Y[z])), f = a.value.time.findIndex((F) => new Date(F) >= new Date(Y[O]));
903
- se({
904
- startValue: L === -1 ? 0 : L,
905
- endValue: f === -1 ? a.value.time.length - 1 : f
1006
+ const { startValue: O, endValue: p } = ((X = a.getOption()) == null ? void 0 : X.dataZoom[0]) ?? {}, h = (W = a.getOption()) == null ? void 0 : W.xAxis[0].data, k = i.value.time.findIndex((F) => new Date(F) >= new Date(h[O])), R = i.value.time.findIndex((F) => new Date(F) >= new Date(h[p]));
1007
+ ie({
1008
+ startValue: k === -1 ? 0 : k,
1009
+ endValue: R === -1 ? i.value.time.length - 1 : R
906
1010
  });
907
- }, Te = () => {
908
- var L;
909
- if (!a.value.time.length)
910
- return n.value = [];
911
- const { time: M } = a.value, { startValue: o, endValue: z } = ((L = t.getOption()) == null ? void 0 : L.dataZoom[0]) ?? {}, O = M[o], Y = M[z];
912
- ["6", "7", "8"].includes(e.cycle) ? n.value = [g(O).format("YYYY-MM-DD"), g(Y).format("YYYY-MM-DD")] : n.value = [O, Y];
913
- }, se = (M = { startValue: 0, endValue: 0 }) => {
914
- if (!V() || !t)
1011
+ }, Le = () => {
1012
+ var h;
1013
+ if (!i.value.time.length)
1014
+ return c.value = [];
1015
+ const { time: o } = i.value, { startValue: j, endValue: d } = ((h = a.getOption()) == null ? void 0 : h.dataZoom[0]) ?? {}, O = o[j], p = o[d];
1016
+ ["6", "7", "8"].includes(e.cycle) ? c.value = [f(O).format("YYYY-MM-DD"), f(p).format("YYYY-MM-DD")] : c.value = [O, p];
1017
+ }, ie = (o = { startValue: 0, endValue: 0 }) => {
1018
+ if (!te() || !a)
915
1019
  return console.warn("[st-klinePlus]: 图表未准备就绪, 跳过绘制");
916
- if (!a.value.time.length)
1020
+ if (!i.value.time.length)
917
1021
  return console.warn("[st-klinePlus]: 图表无数据, 跳过绘制");
918
- const { maxValueSpan: z } = q, { time: O, data: Y, mainIndicator: L } = a.value, f = M.endValue - M.startValue > z ? M.endValue - z : M.startValue, E = M.endValue, ee = L.map((C) => ({
919
- name: C.key,
1022
+ const { maxValueSpan: d } = U, { time: O, data: p, mainIndicator: h } = i.value, k = o.endValue - o.startValue > d ? o.endValue - d : o.startValue, R = o.endValue, X = h.map((b) => ({
1023
+ name: b.key,
920
1024
  type: "line",
921
1025
  silent: !0,
922
1026
  symbol: "none",
923
- data: C.data,
1027
+ data: b.data,
924
1028
  lineStyle: {
925
- width: C.width || 1
1029
+ width: b.width || 1
926
1030
  },
927
1031
  itemStyle: {
928
- color: C.color
1032
+ color: b.color
929
1033
  }
930
- })), { netPositionLineData: F } = Ke(e.netPositionData, e.cycle), { tradeIncomeRateLineData: H } = qe(e.tradeIncomeRateData, e.cycle, e.incomeType, O), { tradePointData: B, tradeLineData: Z } = Je(e.tradeLog, e.cycle, e.sellBuy, O, Y, e.userKlineConfig);
931
- t.setOption(
1034
+ })), { netPositionLineData: W } = st(e.netPositionData, e.cycle), { tradeIncomeRateLineData: F } = ct(e.tradeIncomeRateData, e.cycle, e.incomeType, O), { tradePointData: P, tradeLineData: Z } = rt(e.tradeLog, e.cycle, e.sellBuy, O, p, e.userKlineConfig);
1035
+ a.setOption(
932
1036
  {
933
1037
  animation: !1,
934
1038
  grid: {
@@ -940,10 +1044,10 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
940
1044
  dataZoom: [
941
1045
  {
942
1046
  type: "inside",
943
- startValue: f,
944
- endValue: E,
945
- minValueSpan: q.minValueSpan,
946
- maxValueSpan: q.maxValueSpan
1047
+ startValue: k,
1048
+ endValue: R,
1049
+ minValueSpan: U.minValueSpan,
1050
+ maxValueSpan: U.maxValueSpan
947
1051
  }
948
1052
  ],
949
1053
  tooltip: {
@@ -954,44 +1058,44 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
954
1058
  type: "cross",
955
1059
  label: {
956
1060
  rich: {},
957
- formatter: (C) => {
958
- const { axisDimension: b, value: h } = C;
959
- return b === "x" ? ["6", "7", "8"].includes(e.cycle) ? g(h).format("YYYY-MM-DD") : h : String(l(h));
1061
+ formatter: (b) => {
1062
+ const { axisDimension: E, value: v } = b;
1063
+ return E === "x" ? ["6", "7", "8"].includes(e.cycle) ? f(v).format("YYYY-MM-DD") : v : String(r(v));
960
1064
  }
961
1065
  }
962
1066
  },
963
- formatter: (C) => {
964
- if (!(C != null && C.length))
1067
+ formatter: (b) => {
1068
+ if (!(b != null && b.length))
965
1069
  return null;
966
- let b = "";
967
- if (C.forEach((v) => {
968
- if (v.seriesName === "netPosition" && v.data !== null && (b += `<div>资产持仓净值: ${v.data[1]}</div>`), v.componentSubType === "candlestick")
1070
+ let E = "";
1071
+ if (b.forEach((S) => {
1072
+ if (S.seriesName === "netPosition" && S.data !== null && (E += `<div>资产持仓净值: ${S.data[1]}</div>`), S.componentSubType === "candlestick")
969
1073
  if (e.sellBuy === 0) {
970
- const te = B.filter(($) => ($ == null ? void 0 : $.coord[0]) === v.axisValue);
971
- let J = 0, W = 0;
972
- te.forEach(($) => {
973
- const { tradeType: Me, amount: le } = $.customData;
974
- Me === "买" && (J += le), Me === "卖" && (W += le);
975
- }), J && (b += `<div>买: ${J}</div>`), W && (b += `<div>卖: ${W}</div>`);
1074
+ const ee = P.filter((B) => (B == null ? void 0 : B.coord[0]) === S.axisValue);
1075
+ let J = 0, K = 0;
1076
+ ee.forEach((B) => {
1077
+ const { tradeType: ae, amount: le } = B.customData;
1078
+ ae === "买" && (J += le), ae === "卖" && (K += le);
1079
+ }), J && (E += `<div>买: ${J}</div>`), K && (E += `<div>卖: ${K}</div>`);
976
1080
  } else
977
- B.forEach((te) => {
978
- if ((te == null ? void 0 : te.coord[0]) === v.axisValue) {
979
- const { tradeType: J, amount: W, profitAndLoss: $, openPriceAll: Me, closePriceAll: le } = te.customData;
980
- let ae = `<div>${J}: ${W}手</div>`;
981
- if (J.includes("开") && (ae += `<div>开仓价: ${(Me / W).toFixed(2)}</div>`), J.includes("平")) {
982
- const Ye = (Me / W).toFixed(2), Le = (le / W).toFixed(2);
983
- ae += `<div>平仓价: ${Le}</div>`, ae += `<div>盈亏: ${$ == null ? void 0 : $.toFixed(2)}</div>`, ae += `<div>盈亏比率: ${((Le - Ye) / Ye * 100).toFixed(2)} %</div>`;
1081
+ P.forEach((ee) => {
1082
+ if ((ee == null ? void 0 : ee.coord[0]) === S.axisValue) {
1083
+ const { tradeType: J, amount: K, profitAndLoss: B, openPriceAll: ae, closePriceAll: le } = ee.customData;
1084
+ let ne = `<div>${J}: ${K}手</div>`;
1085
+ if (J.includes("开") && (ne += `<div>开仓价: ${(ae / K).toFixed(2)}</div>`), J.includes("平")) {
1086
+ const fe = (ae / K).toFixed(2), pe = (le / K).toFixed(2);
1087
+ ne += `<div>平仓价: ${pe}</div>`, ne += `<div>盈亏: ${B == null ? void 0 : B.toFixed(2)}</div>`, ne += `<div>盈亏比率: ${((pe - fe) / fe * 100).toFixed(2)} %</div>`;
984
1088
  }
985
- b += ae;
1089
+ E += ne;
986
1090
  }
987
1091
  });
988
- }), !b)
1092
+ }), !E)
989
1093
  return null;
990
- let h = C[0].axisValue;
991
- return ["6", "7", "8"].includes(e.cycle) && (h = g(h).format("YYYY-MM-DD")), `
1094
+ let v = b[0].axisValue;
1095
+ return ["6", "7", "8"].includes(e.cycle) && (v = f(v).format("YYYY-MM-DD")), `
992
1096
  <div>
993
- <span style="font-weight: bold;">${h}</span>
994
- ${b}
1097
+ <span style="font-weight: bold;">${v}</span>
1098
+ ${E}
995
1099
  </div>
996
1100
  `;
997
1101
  }
@@ -1004,7 +1108,7 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1004
1108
  show: !1
1005
1109
  },
1006
1110
  axisLabel: {
1007
- formatter: (C) => ["6", "7", "8"].includes(e.cycle) ? g(C).format("YYYY-MM-DD") : C
1111
+ formatter: (b) => ["6", "7", "8"].includes(e.cycle) ? f(b).format("YYYY-MM-DD") : b
1008
1112
  }
1009
1113
  },
1010
1114
  yAxis: [
@@ -1020,24 +1124,24 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1020
1124
  color: "#333"
1021
1125
  }
1022
1126
  },
1023
- min: (C) => {
1024
- const { min: b, max: h } = C, v = Math.abs((h - b) / 10);
1025
- return l(b - v);
1127
+ min: (b) => {
1128
+ const { min: E, max: v } = b, S = Math.abs((v - E) / 10);
1129
+ return r(E - S);
1026
1130
  },
1027
- max: (C) => {
1028
- const { min: b, max: h } = C, v = Math.abs((h - b) / 10);
1029
- return l(h + v);
1131
+ max: (b) => {
1132
+ const { min: E, max: v } = b, S = Math.abs((v - E) / 10);
1133
+ return r(v + S);
1030
1134
  }
1031
1135
  },
1032
1136
  {
1033
1137
  show: !1,
1034
- min: (C) => {
1035
- const { min: b, max: h } = C, v = Math.abs((h - b) / 10);
1036
- return b - v;
1138
+ min: (b) => {
1139
+ const { min: E, max: v } = b, S = Math.abs((v - E) / 10);
1140
+ return E - S;
1037
1141
  },
1038
- max: (C) => {
1039
- const { min: b, max: h } = C, v = Math.abs((h - b) / 10);
1040
- return h + v;
1142
+ max: (b) => {
1143
+ const { min: E, max: v } = b, S = Math.abs((v - E) / 10);
1144
+ return v + S;
1041
1145
  }
1042
1146
  }
1043
1147
  ],
@@ -1046,8 +1150,8 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1046
1150
  {
1047
1151
  type: "candlestick",
1048
1152
  name: "kLine",
1049
- data: Y,
1050
- markPoint: { data: [...B] },
1153
+ data: p,
1154
+ markPoint: { data: [...P] },
1051
1155
  markLine: { data: [...Z] },
1052
1156
  itemStyle: {
1053
1157
  color: "transparent",
@@ -1061,7 +1165,7 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1061
1165
  {
1062
1166
  type: "line",
1063
1167
  name: "netPosition",
1064
- data: F,
1168
+ data: W,
1065
1169
  symbol: "none",
1066
1170
  yAxisIndex: 1,
1067
1171
  connectNulls: !0,
@@ -1076,7 +1180,7 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1076
1180
  {
1077
1181
  type: "line",
1078
1182
  name: "tradeIncomeRate",
1079
- data: H,
1183
+ data: F,
1080
1184
  symbol: "none",
1081
1185
  yAxisIndex: 1,
1082
1186
  connectNulls: !1,
@@ -1088,7 +1192,7 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1088
1192
  }
1089
1193
  },
1090
1194
  // 指标线
1091
- ...ee
1195
+ ...X
1092
1196
  ],
1093
1197
  toolbox: {
1094
1198
  show: !1
@@ -1107,25 +1211,25 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1107
1211
  }
1108
1212
  },
1109
1213
  !0
1110
- ), e.userKlineConfig.enable_subChart && r.setOption(Ge(a.value, f, E), !0), Te(), ge(), u.value = E;
1214
+ ), e.userKlineConfig.enable_subChart && y.setOption(nt(i.value, k, R), !0), Le(), me(), u.value = R;
1111
1215
  {
1112
- const C = [];
1113
- if (e.userKlineConfig.enable_tradeLogBrush && B.length) {
1114
- const [b, h] = [B[0].coord[0], B.at(-1).coord[0]], v = je(O, [b, h], e.cycle);
1115
- C.push({
1216
+ const b = [];
1217
+ if (e.userKlineConfig.enable_tradeLogBrush && P.length) {
1218
+ const [E, v] = [P[0].coord[0], P.at(-1).coord[0]], S = ye(O, [E, v], e.cycle);
1219
+ b.push({
1116
1220
  brushId: "开平仓范围",
1117
1221
  brushType: "lineX",
1118
1222
  xAxisIndex: 0,
1119
- coordRange: v
1223
+ coordRange: S
1120
1224
  });
1121
1225
  }
1122
1226
  if (e.syncBrushRange.cycleList.includes(e.cycle)) {
1123
- const { startTime: b, endTime: h } = e.syncBrushRange, v = je(O, [b, h], e.cycle);
1124
- C.push({
1227
+ const { startTime: E, endTime: v } = e.syncBrushRange, S = ye(O, [E, v], e.cycle);
1228
+ b.push({
1125
1229
  brushId: "同步刷选范围",
1126
1230
  brushType: "lineX",
1127
1231
  xAxisIndex: 0,
1128
- coordRange: v,
1232
+ coordRange: S,
1129
1233
  brushStyle: {
1130
1234
  fill: "rgba(64, 158, 255, 0.2)",
1131
1235
  stroke: "rgba(64, 158, 255, 0.8)",
@@ -1134,12 +1238,12 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1134
1238
  });
1135
1239
  }
1136
1240
  if (e.positionTime) {
1137
- const [b, h] = [g(e.positionTime).format("YYYY-MM-DD 00:00:00"), g(e.positionTime).format("YYYY-MM-DD 23:59:59")], v = je(O, [b, h], e.cycle);
1138
- C.push({
1241
+ const [E, v] = [f(e.positionTime).format("YYYY-MM-DD 00:00:00"), f(e.positionTime).format("YYYY-MM-DD 23:59:59")], S = ye(O, [E, v], e.cycle);
1242
+ b.push({
1139
1243
  brushId: "强制定位高亮",
1140
1244
  brushType: "lineX",
1141
1245
  xAxisIndex: 0,
1142
- coordRange: v,
1246
+ coordRange: S,
1143
1247
  brushStyle: {
1144
1248
  fill: "rgba(217, 179, 255, 0.2)",
1145
1249
  stroke: "rgba(217, 179, 255, 0.8)",
@@ -1147,25 +1251,25 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1147
1251
  }
1148
1252
  });
1149
1253
  }
1150
- t.dispatchAction({
1254
+ a.dispatchAction({
1151
1255
  type: "brush",
1152
- areas: C
1256
+ areas: b
1153
1257
  });
1154
1258
  }
1155
- }, ge = () => {
1156
- var B;
1157
- if (!e.userKlineConfig.enable_showScreenMaxPrice || !a.value.time.length)
1259
+ }, me = () => {
1260
+ var P;
1261
+ if (!e.userKlineConfig.enable_showScreenMaxPrice || !i.value.time.length)
1158
1262
  return;
1159
- const { data: M } = a.value, o = t.getOption(), { startValue: z, endValue: O } = (o == null ? void 0 : o.dataZoom[0]) ?? {};
1160
- let Y = 0, L = z;
1161
- for (let Z = z; Z <= O; Z++)
1162
- Number(M[Z][3]) >= Y && (Y = Number(M[Z][3]), L = Z);
1163
- const f = ((B = o.series) == null ? void 0 : B.filter((Z) => Z.name !== "maxPrice")) || [], E = O - z, ee = (L - z) / E;
1164
- let F = "right", H = `←${Y}`;
1165
- ee > 0.7 ? (F = "left", H = `${l(Y)}→`) : (F = "right", H = `←${l(Y)}`), t == null || t.setOption(
1263
+ const { data: o } = i.value, j = a.getOption(), { startValue: d, endValue: O } = (j == null ? void 0 : j.dataZoom[0]) ?? {};
1264
+ let p = 0, h = d;
1265
+ for (let Z = d; Z <= O; Z++)
1266
+ Number(o[Z][3]) >= p && (p = Number(o[Z][3]), h = Z);
1267
+ const k = ((P = j.series) == null ? void 0 : P.filter((Z) => Z.name !== "maxPrice")) || [], R = O - d, X = (h - d) / R;
1268
+ let W = "right", F = `←${p}`;
1269
+ X > 0.7 ? (W = "left", F = `${r(p)}→`) : (W = "right", F = `←${r(p)}`), a == null || a.setOption(
1166
1270
  {
1167
1271
  series: [
1168
- ...f,
1272
+ ...k,
1169
1273
  {
1170
1274
  type: "line",
1171
1275
  name: "maxPrice",
@@ -1182,8 +1286,8 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1182
1286
  zlevel: 10,
1183
1287
  label: {
1184
1288
  show: !0,
1185
- position: F,
1186
- formatter: H,
1289
+ position: W,
1290
+ formatter: F,
1187
1291
  color: "#fff",
1188
1292
  fontSize: 12,
1189
1293
  padding: [4, -4]
@@ -1191,7 +1295,7 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1191
1295
  data: [
1192
1296
  {
1193
1297
  name: "最高点",
1194
- coord: [L, Y]
1298
+ coord: [h, p]
1195
1299
  }
1196
1300
  ]
1197
1301
  }
@@ -1205,186 +1309,186 @@ const at = { class: "main-chart" }, it = { class: "indicator" }, nt = {
1205
1309
  // 不替换任何配置
1206
1310
  }
1207
1311
  );
1208
- }, he = (M) => {
1209
- const [o, z] = Ae({
1210
- startTime: M.startTime,
1211
- endTime: M.endTime,
1312
+ }, Ue = (o) => {
1313
+ const [j, d] = Oe({
1314
+ startTime: o.startTime,
1315
+ endTime: o.endTime,
1212
1316
  cycle: e.cycle
1213
1317
  });
1214
- R({ startTime: o, endTime: z });
1215
- }, Ie = ({ code: M, ctrlKey: o }) => {
1216
- if (!t || !(o || y.value))
1318
+ Me({ startTime: j, endTime: d });
1319
+ }, Ae = ({ code: o, ctrlKey: j }) => {
1320
+ if (!a || !(j || N.value))
1217
1321
  return;
1218
- const { xAxis: z, dataZoom: O } = t.getOption(), { data: Y } = (z == null ? void 0 : z[0]) ?? { data: [] };
1219
- let { startValue: L, endValue: f } = (O == null ? void 0 : O[0]) ?? {};
1220
- if (Y != null && Y.length) {
1221
- switch (M) {
1322
+ const { xAxis: d, dataZoom: O } = a.getOption(), { data: p } = (d == null ? void 0 : d[0]) ?? { data: [] };
1323
+ let { startValue: h, endValue: k } = (O == null ? void 0 : O[0]) ?? {};
1324
+ if (p != null && p.length) {
1325
+ switch (o) {
1222
1326
  case "ArrowUp": {
1223
- if (f - L < 5)
1327
+ if (k - h < 5)
1224
1328
  return;
1225
- const E = Math.floor((f - L) / 2) + 1;
1226
- L = L + E, f - L < 5 && (L = f - 4);
1329
+ const R = Math.floor((k - h) / 2) + 1;
1330
+ h = h + R, k - h < 5 && (h = k - 4);
1227
1331
  break;
1228
1332
  }
1229
1333
  case "ArrowDown": {
1230
- const E = Math.min(500, f - L);
1231
- L = L - E - 1;
1334
+ const R = Math.min(500, k - h);
1335
+ h = h - R - 1;
1232
1336
  break;
1233
1337
  }
1234
1338
  case "ArrowLeft": {
1235
- L > 0 && (L -= 1, f -= 1), u.value > 0 && (u.value -= 1);
1339
+ h > 0 && (h -= 1, k -= 1), u.value > 0 && (u.value -= 1);
1236
1340
  break;
1237
1341
  }
1238
1342
  case "ArrowRight": {
1239
- f < Y.length - 1 && (L += 1, f += 1), y.value && u.value < Y.length - 1 && (u.value += 1);
1343
+ k < p.length - 1 && (h += 1, k += 1), N.value && u.value < p.length - 1 && (u.value += 1);
1240
1344
  break;
1241
1345
  }
1242
1346
  }
1243
- t.dispatchAction({
1347
+ a.dispatchAction({
1244
1348
  type: "dataZoom",
1245
- startValue: L,
1246
- endValue: f
1247
- }), t.dispatchAction({
1349
+ startValue: h,
1350
+ endValue: k
1351
+ }), a.dispatchAction({
1248
1352
  type: "updateAxisPointer",
1249
1353
  seriesIndex: 0,
1250
- dataIndex: y.value ? u.value : null
1251
- }), t.dispatchAction({
1354
+ dataIndex: N.value ? u.value : null
1355
+ }), a.dispatchAction({
1252
1356
  type: "highlight",
1253
- dataIndex: y.value ? u.value : f
1357
+ dataIndex: N.value ? u.value : k
1254
1358
  });
1255
1359
  }
1256
1360
  };
1257
- return Oe(() => {
1258
- const [M, o] = e.initTimeRange;
1259
- R({ startTime: M, endTime: o });
1260
- }), ne(
1361
+ return Qe(() => {
1362
+ const [o, j] = e.initTimeRange;
1363
+ Me({ startTime: o, endTime: j });
1364
+ }), re(
1261
1365
  () => [e.varietyCode, e.initTimeRange],
1262
1366
  () => {
1263
- const [M, o] = e.initTimeRange;
1264
- R({ startTime: M, endTime: o });
1367
+ const [o, j] = e.initTimeRange;
1368
+ Me({ startTime: o, endTime: j });
1265
1369
  },
1266
1370
  { deep: !0 }
1267
- ), ne(
1371
+ ), re(
1268
1372
  () => [e.cycle],
1269
1373
  () => {
1270
- var Y;
1271
- const { startValue: M, endValue: o } = ((Y = t.getOption()) == null ? void 0 : Y.dataZoom[0]) ?? {}, [z, O] = Ae({
1272
- startTime: a.value.time[M],
1273
- endTime: a.value.time[o],
1374
+ var p;
1375
+ const { startValue: o, endValue: j } = ((p = a.getOption()) == null ? void 0 : p.dataZoom[0]) ?? {}, [d, O] = Oe({
1376
+ startTime: i.value.time[o],
1377
+ endTime: i.value.time[j],
1274
1378
  cycle: e.cycle,
1275
1379
  type: "middle"
1276
1380
  });
1277
- R({ startTime: z, endTime: O });
1381
+ Me({ startTime: d, endTime: O });
1278
1382
  },
1279
1383
  { deep: !0 }
1280
- ), ne(
1384
+ ), re(
1281
1385
  () => {
1282
- var M, o;
1283
- return [e.mainIndicator, j.value, (M = e.indicatorStore) == null ? void 0 : M.filterIndicator, (o = e.indicatorStore) == null ? void 0 : o.customIndicator, e.rightType, e.klineType];
1386
+ var o, j;
1387
+ return [e.mainIndicator, C.value, (o = e.indicatorStore) == null ? void 0 : o.filterIndicator, (j = e.indicatorStore) == null ? void 0 : j.customIndicator, e.rightType, e.klineType];
1284
1388
  },
1285
1389
  () => {
1286
- var Y;
1287
- const { startValue: M, endValue: o } = ((Y = t.getOption()) == null ? void 0 : Y.dataZoom[0]) ?? {}, [z, O] = [a.value.time[M], a.value.time[o]];
1288
- R({ startTime: z, endTime: O });
1390
+ var p;
1391
+ const { startValue: o, endValue: j } = ((p = a.getOption()) == null ? void 0 : p.dataZoom[0]) ?? {}, [d, O] = [i.value.time[o], i.value.time[j]];
1392
+ Me({ startTime: d, endTime: O });
1289
1393
  },
1290
1394
  { deep: !0 }
1291
- ), ne(
1395
+ ), re(
1292
1396
  () => [e.sellBuy, e.tradeLog, e.netPositionData, e.incomeType, e.tradeIncomeRateData],
1293
1397
  () => {
1294
- var z;
1295
- const { startValue: M, endValue: o } = ((z = t.getOption()) == null ? void 0 : z.dataZoom[0]) ?? {};
1296
- se({ startValue: M, endValue: o });
1398
+ var d;
1399
+ const { startValue: o, endValue: j } = ((d = a.getOption()) == null ? void 0 : d.dataZoom[0]) ?? {};
1400
+ ie({ startValue: o, endValue: j });
1297
1401
  },
1298
1402
  { deep: !0 }
1299
- ), Ce(() => {
1300
- var M;
1301
- t == null || t.off("highlight"), t == null || t.off("globalout"), t == null || t.off("datazoom"), (M = t == null ? void 0 : t.getZr()) == null || M.off("contextmenu"), window.removeEventListener("keydown", Ie), t == null || t.dispose(), r == null || r.dispose(), A == null || A.dispose(), A = null;
1302
- }), N({
1303
- screenTimeRange: n,
1304
- contextmenuKlineTime: T,
1403
+ ), Pe(() => {
1404
+ var o;
1405
+ g = !0, D += 1, a == null || a.off("highlight"), a == null || a.off("globalout"), a == null || a.off("datazoom"), (o = a == null ? void 0 : a.getZr()) == null || o.off("contextmenu"), window.removeEventListener("keydown", Ae), a == null || a.dispose(), y == null || y.dispose(), Y == null || Y.dispose(), Y = null;
1406
+ }), n({
1407
+ screenTimeRange: c,
1408
+ contextmenuKlineTime: L,
1305
1409
  reDraw: () => {
1306
- var z;
1307
- const { startValue: M, endValue: o } = ((z = t.getOption()) == null ? void 0 : z.dataZoom[0]) ?? {};
1308
- se({ startValue: M, endValue: o });
1410
+ var d;
1411
+ const { startValue: o, endValue: j } = ((d = a.getOption()) == null ? void 0 : d.dataZoom[0]) ?? {};
1412
+ ie({ startValue: o, endValue: j });
1309
1413
  }
1310
- }), (M, o) => {
1311
- const z = Ee, O = Se, Y = ve, L = ke;
1312
- return Re((_(), G("div", {
1414
+ }), (o, j) => {
1415
+ const d = $e, O = He, p = _e, h = Ve;
1416
+ return Ge((H(), G("div", {
1313
1417
  class: "kline-plus",
1314
- onMousemove: o[1] || (o[1] = (f) => y.value = !0),
1315
- onMouseout: o[2] || (o[2] = (f) => y.value = !1)
1418
+ onMousemove: j[1] || (j[1] = (k) => N.value = !0),
1419
+ onMouseout: j[2] || (j[2] = (k) => N.value = !1)
1316
1420
  }, [
1317
- K("div", at, [
1318
- K("div", it, [
1319
- ie(ze, { data: x.value }, null, 8, ["data"]),
1320
- ie(ze, { data: S.value }, null, 8, ["data"])
1421
+ q("div", Dt, [
1422
+ q("div", It, [
1423
+ oe(de, { data: Q.value }, null, 8, ["data"]),
1424
+ oe(de, { data: _.value }, null, 8, ["data"])
1321
1425
  ]),
1322
- i.userKlineConfig.enable_showScreenTimeRange ? (_(), G("span", nt, oe(n.value[0]) + " - " + oe(n.value[1]), 1)) : ce("", !0),
1323
- K("div", {
1426
+ t.userKlineConfig.enable_showScreenTimeRange ? (H(), G("span", Yt, se(c.value[0]) + " - " + se(c.value[1]), 1)) : Ne("", !0),
1427
+ q("div", {
1324
1428
  ref_key: "mainChartRef",
1325
- ref: D,
1429
+ ref: I,
1326
1430
  class: "chart"
1327
1431
  }, null, 512)
1328
1432
  ]),
1329
- i.userKlineConfig.enable_subChart ? (_(), G("div", ot, [
1330
- K("div", rt, [
1331
- K("div", st, [
1332
- K("span", null, oe(j.value), 1),
1333
- ie(O, {
1334
- modelValue: j.value,
1335
- "onUpdate:modelValue": o[0] || (o[0] = (f) => j.value = f),
1433
+ t.userKlineConfig.enable_subChart ? (H(), G("div", Lt, [
1434
+ q("div", mt, [
1435
+ q("div", At, [
1436
+ q("span", null, se(C.value), 1),
1437
+ oe(O, {
1438
+ modelValue: C.value,
1439
+ "onUpdate:modelValue": j[0] || (j[0] = (k) => C.value = k),
1336
1440
  style: { width: "100px", "margin-right": "4px", height: "25px" },
1337
1441
  size: "small",
1338
1442
  class: "element-dark",
1339
1443
  "popper-class": "element-dark"
1340
1444
  }, {
1341
- default: Fe(() => [
1342
- (_(!0), G(fe, null, we(i.indicatorStore.subIndicatorList, (f, E) => (_(), me(z, {
1343
- key: E,
1344
- label: f.label,
1345
- value: f.value
1445
+ default: We(() => [
1446
+ (H(!0), G(Ee, null, ve(t.indicatorStore.subIndicatorList, (k, R) => (H(), we(d, {
1447
+ key: R,
1448
+ label: k.label,
1449
+ value: k.value
1346
1450
  }, null, 8, ["label", "value"]))), 128))
1347
1451
  ]),
1348
1452
  _: 1
1349
1453
  }, 8, ["modelValue"])
1350
1454
  ]),
1351
- ie(ze, { data: P.value }, null, 8, ["data"])
1455
+ oe(de, { data: $.value }, null, 8, ["data"])
1352
1456
  ]),
1353
- K("div", {
1457
+ q("div", {
1354
1458
  ref_key: "subChartRef",
1355
- ref: w,
1459
+ ref: m,
1356
1460
  class: "chart"
1357
1461
  }, null, 512)
1358
- ])) : ce("", !0),
1359
- i.userKlineConfig.enable_sliderChart ? (_(), G("div", lt, [
1360
- ie(Mt, {
1462
+ ])) : Ne("", !0),
1463
+ t.userKlineConfig.enable_sliderChart ? (H(), G("div", ft, [
1464
+ oe(Tt, {
1361
1465
  ref_key: "sliderChartRef",
1362
- ref: p,
1363
- screenTimeRange: n.value,
1364
- varietyCode: i.varietyCode,
1365
- varietyStock: i.varietyStock,
1366
- rightType: i.rightType,
1367
- klineType: i.klineType,
1466
+ ref: w,
1467
+ screenTimeRange: c.value,
1468
+ varietyCode: t.varietyCode,
1469
+ varietyStock: t.varietyStock,
1470
+ rightType: t.rightType,
1471
+ klineType: t.klineType,
1368
1472
  deleteFirstNumber: e.deleteFirstNumber,
1369
1473
  withoutPermission: e.withoutPermission,
1370
- onChange: he
1474
+ onChange: Ue
1371
1475
  }, null, 8, ["screenTimeRange", "varietyCode", "varietyStock", "rightType", "klineType", "deleteFirstNumber", "withoutPermission"])
1372
- ])) : ce("", !0),
1373
- a.value.time.length ? ce("", !0) : (_(), me(Y, {
1476
+ ])) : Ne("", !0),
1477
+ i.value.time.length ? Ne("", !0) : (H(), we(p, {
1374
1478
  key: 2,
1375
1479
  class: "empty",
1376
1480
  description: "暂无数据"
1377
1481
  }))
1378
1482
  ], 32)), [
1379
- [L, m.value]
1483
+ [h, z.value]
1380
1484
  ]);
1381
1485
  };
1382
1486
  }
1383
- }, Nt = /* @__PURE__ */ De(ct, [["__scopeId", "data-v-9e2ef99d"]]), St = {
1384
- install(i) {
1385
- i.component("st-klinePlus", Nt);
1487
+ }, wt = /* @__PURE__ */ Ie(pt, [["__scopeId", "data-v-b551c038"]]), qt = {
1488
+ install(t) {
1489
+ t.component("st-klinePlus", wt);
1386
1490
  }
1387
1491
  };
1388
1492
  export {
1389
- St as default
1493
+ qt as default
1390
1494
  };