@hg2/dataview-core 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/dist/ColorList-36f5fb1f.js +195 -0
  2. package/dist/ColorList-36f5fb1f.js.map +1 -0
  3. package/dist/StylesSetting-e13e1698.js +348 -0
  4. package/dist/StylesSetting-e13e1698.js.map +1 -0
  5. package/dist/api/axios.d.ts +2 -0
  6. package/dist/api/http.d.ts +15 -0
  7. package/dist/api/mock/graph.json.d.ts +102 -0
  8. package/dist/api/mock/heatMapData.json.d.ts +202 -0
  9. package/dist/api/mock/index.d.ts +22 -0
  10. package/dist/api/mock/map.json.d.ts +12 -0
  11. package/dist/api/mock/sankey.json.d.ts +89 -0
  12. package/dist/api/mock/scatter.json.d.ts +59 -0
  13. package/dist/api/mock/test.mock.d.ts +226 -0
  14. package/dist/api/mock/treemap.json.d.ts +53 -0
  15. package/dist/api/mock/vchart/bar.json.d.ts +19 -0
  16. package/dist/api/mock/vchart.mock.d.ts +15 -0
  17. package/dist/components/GoAppProvider/index.d.ts +2 -0
  18. package/dist/components/GoAppProvider/index.vue.d.ts +9 -0
  19. package/dist/components/GoIconify/index.d.ts +2 -0
  20. package/dist/components/GoIconify/index.vue.d.ts +46 -0
  21. package/dist/components/GoLangSelect/index.d.ts +2 -0
  22. package/dist/components/GoLangSelect/index.vue.d.ts +2 -0
  23. package/dist/components/GoLoading/LoadingSkeleton.vue.d.ts +2 -0
  24. package/dist/components/GoLoading/index.d.ts +4 -0
  25. package/dist/components/GoLoading/index.vue.d.ts +2 -0
  26. package/dist/components/GoSkeleton/index.d.ts +2 -0
  27. package/dist/components/GoSkeleton/index.vue.d.ts +23 -0
  28. package/dist/components/GoSystemInfo/index.d.ts +2 -0
  29. package/dist/components/GoSystemInfo/index.vue.d.ts +12 -0
  30. package/dist/components/GoSystemSet/index.d.ts +12 -0
  31. package/dist/components/GoSystemSet/index.vue.d.ts +12 -0
  32. package/dist/components/GoThemeSelect/index.d.ts +2 -0
  33. package/dist/components/GoThemeSelect/index.vue.d.ts +2 -0
  34. package/dist/components/I18n/index.d.ts +2 -0
  35. package/dist/components/I18n/index.vue.d.ts +2 -0
  36. package/dist/components/Pages/ChartGlobImage/index.d.ts +2 -0
  37. package/dist/components/Pages/ChartGlobImage/index.vue.d.ts +14 -0
  38. package/dist/components/Pages/ChartItemSetting/CollapseItem.vue.d.ts +32 -0
  39. package/dist/components/Pages/ChartItemSetting/GlobalSettingPosition.vue.d.ts +19 -0
  40. package/dist/components/Pages/ChartItemSetting/NameSetting.vue.d.ts +14 -0
  41. package/dist/components/Pages/ChartItemSetting/PositionSetting.vue.d.ts +38 -0
  42. package/dist/components/Pages/ChartItemSetting/SettingItem.vue.d.ts +27 -0
  43. package/dist/components/Pages/ChartItemSetting/SettingItemBox.vue.d.ts +43 -0
  44. package/dist/components/Pages/ChartItemSetting/SizeSetting.vue.d.ts +39 -0
  45. package/dist/components/Pages/ChartItemSetting/StylesSetting.vue.d.ts +60 -0
  46. package/dist/components/Pages/ChartItemSetting/index.d.ts +9 -0
  47. package/dist/components/Pages/Flipper/index.d.ts +3 -0
  48. package/dist/components/Pages/Flipper/index.vue.d.ts +88 -0
  49. package/dist/components/Pages/MonacoEditor/index.d.ts +3 -0
  50. package/dist/components/Pages/MonacoEditor/index.hook.d.ts +8 -0
  51. package/dist/components/Pages/MonacoEditor/index.vue.d.ts +68 -0
  52. package/dist/components/Pages/ThemeColorSelect/components/ColorList.vue.d.ts +18 -0
  53. package/dist/components/Pages/ThemeColorSelect/index.d.ts +2 -0
  54. package/dist/components/Pages/ThemeColorSelect/index.vue.d.ts +4 -0
  55. package/dist/components/Plugins/DialogContent/index.d.ts +2 -0
  56. package/dist/components/Plugins/DialogContent/index.vue.d.ts +2 -0
  57. package/dist/components/Plugins/LoadingContent/index.d.ts +2 -0
  58. package/dist/components/Plugins/LoadingContent/index.vue.d.ts +2 -0
  59. package/dist/components/Plugins/MessageContent/index.d.ts +2 -0
  60. package/dist/components/Plugins/MessageContent/index.vue.d.ts +2 -0
  61. package/dist/components/Tips/MacOsControlBtn/index.d.ts +2 -0
  62. package/dist/components/Tips/MacOsControlBtn/index.vue.d.ts +59 -0
  63. package/dist/config-135cbd37.js +78 -0
  64. package/dist/config-135cbd37.js.map +1 -0
  65. package/dist/config-2f4d03cf.js +50 -0
  66. package/dist/config-2f4d03cf.js.map +1 -0
  67. package/dist/config-2feff12a.js +51 -0
  68. package/dist/config-2feff12a.js.map +1 -0
  69. package/dist/config-34a249a9.js +50 -0
  70. package/dist/config-34a249a9.js.map +1 -0
  71. package/dist/config-54932c86.js +61 -0
  72. package/dist/config-54932c86.js.map +1 -0
  73. package/dist/config-63dc5f82.js +62 -0
  74. package/dist/config-63dc5f82.js.map +1 -0
  75. package/dist/config-6ff94944.js +58 -0
  76. package/dist/config-6ff94944.js.map +1 -0
  77. package/dist/config-70c69137.js +51 -0
  78. package/dist/config-70c69137.js.map +1 -0
  79. package/dist/config-72cb7427.js +53 -0
  80. package/dist/config-72cb7427.js.map +1 -0
  81. package/dist/config-99706c47.js +58 -0
  82. package/dist/config-99706c47.js.map +1 -0
  83. package/dist/config-a6eb66af.js +51 -0
  84. package/dist/config-a6eb66af.js.map +1 -0
  85. package/dist/config-ac8d451f.js +127 -0
  86. package/dist/config-ac8d451f.js.map +1 -0
  87. package/dist/config-b11b8271.js +53 -0
  88. package/dist/config-b11b8271.js.map +1 -0
  89. package/dist/config-bda687c7.js +52 -0
  90. package/dist/config-bda687c7.js.map +1 -0
  91. package/dist/config-fe590ea6.js +57 -0
  92. package/dist/config-fe590ea6.js.map +1 -0
  93. package/dist/engines/index.d.ts +2 -0
  94. package/dist/engines/registry.d.ts +24 -0
  95. package/dist/enums/editPageEnum.d.ts +55 -0
  96. package/dist/enums/eventEnum.d.ts +32 -0
  97. package/dist/enums/fileTypeEnum.d.ts +7 -0
  98. package/dist/enums/httpEnum.d.ts +96 -0
  99. package/dist/enums/pageEnum.d.ts +0 -0
  100. package/dist/enums/pluginEnum.d.ts +6 -0
  101. package/dist/enums/storageEnum.d.ts +8 -0
  102. package/dist/enums/styleEnum.d.ts +14 -0
  103. package/dist/hooks/index.d.ts +8 -0
  104. package/dist/hooks/useChartDataFetch.hook.d.ts +13 -0
  105. package/dist/hooks/useChartDataPondFetch.hook.d.ts +12 -0
  106. package/dist/hooks/useChartInteract.hook.d.ts +8 -0
  107. package/dist/hooks/useCode.hook.d.ts +2 -0
  108. package/dist/hooks/useLang.hook.d.ts +372 -0
  109. package/dist/hooks/useLifeHandler.hook.d.ts +9 -0
  110. package/dist/hooks/usePreviewScale.hook.d.ts +32 -0
  111. package/dist/hooks/useTheme.hook.d.ts +18 -0
  112. package/dist/i18n/en/index.d.ts +21 -0
  113. package/dist/i18n/index.d.ts +48 -0
  114. package/dist/i18n/zh/index.d.ts +21 -0
  115. package/dist/index-10b2feb6.js +204 -0
  116. package/dist/index-10b2feb6.js.map +1 -0
  117. package/dist/index-148f6c33.js +1183 -0
  118. package/dist/index-148f6c33.js.map +1 -0
  119. package/dist/index-237a6823.js +26562 -0
  120. package/dist/index-237a6823.js.map +1 -0
  121. package/dist/index-3307e922.js +156 -0
  122. package/dist/index-3307e922.js.map +1 -0
  123. package/dist/index-33aae9d2.js +319 -0
  124. package/dist/index-33aae9d2.js.map +1 -0
  125. package/dist/index-556d7d7c.js +228 -0
  126. package/dist/index-556d7d7c.js.map +1 -0
  127. package/dist/index-617f36ae.js +156 -0
  128. package/dist/index-617f36ae.js.map +1 -0
  129. package/dist/index-62e07d83.js +54 -0
  130. package/dist/index-62e07d83.js.map +1 -0
  131. package/dist/index-66f7ab2a.js +590 -0
  132. package/dist/index-66f7ab2a.js.map +1 -0
  133. package/dist/index-6701793b.js +1811 -0
  134. package/dist/index-6701793b.js.map +1 -0
  135. package/dist/index-8d8dc1d2.js +132 -0
  136. package/dist/index-8d8dc1d2.js.map +1 -0
  137. package/dist/index-985f409d.js +461 -0
  138. package/dist/index-985f409d.js.map +1 -0
  139. package/dist/index-b2e0e39b.js +215 -0
  140. package/dist/index-b2e0e39b.js.map +1 -0
  141. package/dist/index-b58bfc89.js +419 -0
  142. package/dist/index-b58bfc89.js.map +1 -0
  143. package/dist/index-b5b7a570.js +103 -0
  144. package/dist/index-b5b7a570.js.map +1 -0
  145. package/dist/index-be12782c.js +1013 -0
  146. package/dist/index-be12782c.js.map +1 -0
  147. package/dist/index-be75d4d8.js +101 -0
  148. package/dist/index-be75d4d8.js.map +1 -0
  149. package/dist/index-c7145ef3.js +137 -0
  150. package/dist/index-c7145ef3.js.map +1 -0
  151. package/dist/index-ca8cd72a.js +74 -0
  152. package/dist/index-ca8cd72a.js.map +1 -0
  153. package/dist/index-cfca17b8.js +138 -0
  154. package/dist/index-cfca17b8.js.map +1 -0
  155. package/dist/index-d3c1c990.js +257 -0
  156. package/dist/index-d3c1c990.js.map +1 -0
  157. package/dist/index-ea4311bb.js +414 -0
  158. package/dist/index-ea4311bb.js.map +1 -0
  159. package/dist/index-ed584e70.js +729 -0
  160. package/dist/index-ed584e70.js.map +1 -0
  161. package/dist/index-f0c7797f.js +385 -0
  162. package/dist/index-f0c7797f.js.map +1 -0
  163. package/dist/index-f43eed8d.js +307 -0
  164. package/dist/index-f43eed8d.js.map +1 -0
  165. package/dist/index.d.ts +5 -0
  166. package/dist/index.js +57 -0
  167. package/dist/index.js.map +1 -0
  168. package/dist/layout/components/LayoutFooter/index.d.ts +2 -0
  169. package/dist/layout/components/LayoutFooter/index.vue.d.ts +9 -0
  170. package/dist/layout/components/LayoutHeader/index.d.ts +2 -0
  171. package/dist/layout/components/LayoutHeader/index.vue.d.ts +12 -0
  172. package/dist/layout/components/LayoutHeaderPro/index.d.ts +2 -0
  173. package/dist/layout/components/LayoutHeaderPro/index.vue.d.ts +12 -0
  174. package/dist/layout/components/LayoutMain/index.d.ts +2 -0
  175. package/dist/layout/components/LayoutMain/index.vue.d.ts +2 -0
  176. package/dist/layout/components/LayoutTransitionMain/index.d.ts +2 -0
  177. package/dist/layout/components/LayoutTransitionMain/index.vue.d.ts +2 -0
  178. package/dist/lib/GoViewEditor.vue.d.ts +48 -0
  179. package/dist/lib/GoViewPreview.vue.d.ts +25 -0
  180. package/dist/lib/index.d.ts +28 -0
  181. package/dist/lib/skills/index.d.ts +2 -0
  182. package/dist/lib/skills/registry.d.ts +2 -0
  183. package/dist/lib/skills/types.d.ts +72 -0
  184. package/dist/logo-9c1d9d16.js +5 -0
  185. package/dist/logo-9c1d9d16.js.map +1 -0
  186. package/dist/noData-63b54dc3.js +5 -0
  187. package/dist/noData-63b54dc3.js.map +1 -0
  188. package/dist/packages/components/Decorates/Borders/Border01/config.d.ts +16 -0
  189. package/dist/packages/components/Decorates/Borders/Border01/index.d.ts +2 -0
  190. package/dist/packages/components/Decorates/Borders/Border02/config.d.ts +14 -0
  191. package/dist/packages/components/Decorates/Borders/Border02/index.d.ts +2 -0
  192. package/dist/packages/components/Decorates/Borders/Border03/config.d.ts +14 -0
  193. package/dist/packages/components/Decorates/Borders/Border03/index.d.ts +2 -0
  194. package/dist/packages/components/Decorates/Borders/Border04/config.d.ts +24 -0
  195. package/dist/packages/components/Decorates/Borders/Border04/index.d.ts +2 -0
  196. package/dist/packages/components/Decorates/Borders/Border05/config.d.ts +14 -0
  197. package/dist/packages/components/Decorates/Borders/Border05/index.d.ts +2 -0
  198. package/dist/packages/components/Decorates/Borders/Border06/config.d.ts +14 -0
  199. package/dist/packages/components/Decorates/Borders/Border06/index.d.ts +2 -0
  200. package/dist/packages/components/Decorates/Borders/Border07/config.d.ts +14 -0
  201. package/dist/packages/components/Decorates/Borders/Border07/index.d.ts +2 -0
  202. package/dist/packages/components/Decorates/Borders/Border08/config.d.ts +18 -0
  203. package/dist/packages/components/Decorates/Borders/Border08/index.d.ts +2 -0
  204. package/dist/packages/components/Decorates/Borders/Border09/config.d.ts +14 -0
  205. package/dist/packages/components/Decorates/Borders/Border09/index.d.ts +2 -0
  206. package/dist/packages/components/Decorates/Borders/Border10/config.d.ts +14 -0
  207. package/dist/packages/components/Decorates/Borders/Border10/index.d.ts +2 -0
  208. package/dist/packages/components/Decorates/Borders/Border11/config.d.ts +14 -0
  209. package/dist/packages/components/Decorates/Borders/Border11/index.d.ts +2 -0
  210. package/dist/packages/components/Decorates/Borders/Border12/config.d.ts +14 -0
  211. package/dist/packages/components/Decorates/Borders/Border12/index.d.ts +2 -0
  212. package/dist/packages/components/Decorates/Borders/Border13/config.d.ts +14 -0
  213. package/dist/packages/components/Decorates/Borders/Border13/index.d.ts +2 -0
  214. package/dist/packages/components/Decorates/Borders/index.d.ts +2 -0
  215. package/dist/packages/components/Decorates/Decorates/Decorates01/config.d.ts +18 -0
  216. package/dist/packages/components/Decorates/Decorates/Decorates01/index.d.ts +2 -0
  217. package/dist/packages/components/Decorates/Decorates/Decorates02/config.d.ts +16 -0
  218. package/dist/packages/components/Decorates/Decorates/Decorates02/index.d.ts +2 -0
  219. package/dist/packages/components/Decorates/Decorates/Decorates03/config.d.ts +27 -0
  220. package/dist/packages/components/Decorates/Decorates/Decorates03/index.d.ts +2 -0
  221. package/dist/packages/components/Decorates/Decorates/Decorates04/config.d.ts +14 -0
  222. package/dist/packages/components/Decorates/Decorates/Decorates04/index.d.ts +2 -0
  223. package/dist/packages/components/Decorates/Decorates/Decorates05/config.d.ts +14 -0
  224. package/dist/packages/components/Decorates/Decorates/Decorates05/index.d.ts +2 -0
  225. package/dist/packages/components/Decorates/Decorates/Decorates06/config.d.ts +27 -0
  226. package/dist/packages/components/Decorates/Decorates/Decorates06/index.d.ts +2 -0
  227. package/dist/packages/components/Decorates/Decorates/index.d.ts +2 -0
  228. package/dist/packages/components/Decorates/FlowChart/FlowChartLine/config.d.ts +22 -0
  229. package/dist/packages/components/Decorates/FlowChart/FlowChartLine/index.d.ts +2 -0
  230. package/dist/packages/components/Decorates/FlowChart/index.d.ts +2 -0
  231. package/dist/packages/components/Decorates/Mores/CirclePoint/config.d.ts +29 -0
  232. package/dist/packages/components/Decorates/Mores/CirclePoint/index.d.ts +2 -0
  233. package/dist/packages/components/Decorates/Mores/Clock/config.d.ts +18 -0
  234. package/dist/packages/components/Decorates/Mores/Clock/index.d.ts +2 -0
  235. package/dist/packages/components/Decorates/Mores/CountDown/config.d.ts +35 -0
  236. package/dist/packages/components/Decorates/Mores/CountDown/index.d.ts +2 -0
  237. package/dist/packages/components/Decorates/Mores/FlipperNumber/config.d.ts +31 -0
  238. package/dist/packages/components/Decorates/Mores/FlipperNumber/index.d.ts +2 -0
  239. package/dist/packages/components/Decorates/Mores/FullScreen/config.d.ts +25 -0
  240. package/dist/packages/components/Decorates/Mores/FullScreen/index.d.ts +2 -0
  241. package/dist/packages/components/Decorates/Mores/Number/config.d.ts +32 -0
  242. package/dist/packages/components/Decorates/Mores/Number/index.d.ts +2 -0
  243. package/dist/packages/components/Decorates/Mores/PipelineH/config.d.ts +27 -0
  244. package/dist/packages/components/Decorates/Mores/PipelineH/index.d.ts +2 -0
  245. package/dist/packages/components/Decorates/Mores/PipelineV/config.d.ts +27 -0
  246. package/dist/packages/components/Decorates/Mores/PipelineV/index.d.ts +2 -0
  247. package/dist/packages/components/Decorates/Mores/TimeCommon/config.d.ts +47 -0
  248. package/dist/packages/components/Decorates/Mores/TimeCommon/index.d.ts +2 -0
  249. package/dist/packages/components/Decorates/Mores/index.d.ts +2 -0
  250. package/dist/packages/components/Decorates/Three/ThreeEarth01/code/Utils/arc.d.ts +11 -0
  251. package/dist/packages/components/Decorates/Three/ThreeEarth01/code/Utils/common.d.ts +34 -0
  252. package/dist/packages/components/Decorates/Three/ThreeEarth01/code/interfaces/IEvents.d.ts +3 -0
  253. package/dist/packages/components/Decorates/Three/ThreeEarth01/code/interfaces/IWord.d.ts +6 -0
  254. package/dist/packages/components/Decorates/Three/ThreeEarth01/code/world/Assets.d.ts +13 -0
  255. package/dist/packages/components/Decorates/Three/ThreeEarth01/code/world/Basic.d.ts +22 -0
  256. package/dist/packages/components/Decorates/Three/ThreeEarth01/code/world/Earth.d.ts +98 -0
  257. package/dist/packages/components/Decorates/Three/ThreeEarth01/code/world/Resources.d.ts +16 -0
  258. package/dist/packages/components/Decorates/Three/ThreeEarth01/code/world/Word.d.ts +25 -0
  259. package/dist/packages/components/Decorates/Three/ThreeEarth01/config.d.ts +43 -0
  260. package/dist/packages/components/Decorates/Three/ThreeEarth01/data.json.d.ts +87 -0
  261. package/dist/packages/components/Decorates/Three/ThreeEarth01/index.d.ts +2 -0
  262. package/dist/packages/components/Decorates/Three/index.d.ts +2 -0
  263. package/dist/packages/components/Decorates/index.d.ts +15 -0
  264. package/dist/packages/components/Icons/Common/index.d.ts +21 -0
  265. package/dist/packages/components/Icons/Default/Icon/config.d.ts +27 -0
  266. package/dist/packages/components/Icons/Default/Icon/index.d.ts +2 -0
  267. package/dist/packages/components/Icons/MaterialLine/index.d.ts +21 -0
  268. package/dist/packages/components/Icons/Weather/index.d.ts +21 -0
  269. package/dist/packages/components/Icons/index.d.ts +13 -0
  270. package/dist/packages/components/Informations/Mores/CardCustom/config.d.ts +42 -0
  271. package/dist/packages/components/Informations/Mores/CardCustom/index.d.ts +2 -0
  272. package/dist/packages/components/Informations/Mores/Iframe/config.d.ts +23 -0
  273. package/dist/packages/components/Informations/Mores/Iframe/index.d.ts +2 -0
  274. package/dist/packages/components/Informations/Mores/Image/config.d.ts +16 -0
  275. package/dist/packages/components/Informations/Mores/Image/index.d.ts +2 -0
  276. package/dist/packages/components/Informations/Mores/ImageCarousel/config.d.ts +36 -0
  277. package/dist/packages/components/Informations/Mores/ImageCarousel/index.d.ts +2 -0
  278. package/dist/packages/components/Informations/Mores/MissingComponent/config.d.ts +20 -0
  279. package/dist/packages/components/Informations/Mores/MissingComponent/index.d.ts +2 -0
  280. package/dist/packages/components/Informations/Mores/Video/config.d.ts +20 -0
  281. package/dist/packages/components/Informations/Mores/Video/index.d.ts +2 -0
  282. package/dist/packages/components/Informations/Mores/index.d.ts +2 -0
  283. package/dist/packages/components/Informations/index.d.ts +1 -0
  284. package/dist/packages/components/Photos/Private/index.d.ts +23 -0
  285. package/dist/packages/components/Photos/Share/index.d.ts +21 -0
  286. package/dist/packages/components/Photos/index.d.ts +9 -0
  287. package/dist/packages/index.d.ts +252 -0
  288. package/dist/packages/public/chart.d.ts +8 -0
  289. package/dist/packages/public/index.d.ts +2 -0
  290. package/dist/packages/public/publicConfig.d.ts +80 -0
  291. package/dist/packages/registry.d.ts +34 -0
  292. package/dist/plugins/customComponents.d.ts +6 -0
  293. package/dist/plugins/directives.d.ts +6 -0
  294. package/dist/plugins/icon.d.ts +110 -0
  295. package/dist/plugins/index.d.ts +4 -0
  296. package/dist/plugins/initFunction.d.ts +4 -0
  297. package/dist/plugins/naive.d.ts +2 -0
  298. package/dist/pondIndex.vue_vue_type_style_index_0_scoped_3ac883be_lang-8afe2387.js +2371 -0
  299. package/dist/pondIndex.vue_vue_type_style_index_0_scoped_3ac883be_lang-8afe2387.js.map +1 -0
  300. package/dist/published/chartItemSetting.d.ts +1 -0
  301. package/dist/published/chartThemes.d.ts +1 -0
  302. package/dist/published/designSetting.d.ts +1 -0
  303. package/dist/published/eventEnums.d.ts +1 -0
  304. package/dist/published/hooks.d.ts +1 -0
  305. package/dist/published/informationTypes.d.ts +1 -0
  306. package/dist/published/plugins.d.ts +1 -0
  307. package/dist/published/public.d.ts +1 -0
  308. package/dist/published/scaleHook.d.ts +1 -0
  309. package/dist/published/store.d.ts +1 -0
  310. package/dist/published/types.d.ts +1 -0
  311. package/dist/published/utils.d.ts +1 -0
  312. package/dist/published/vchartAxisTheme.d.ts +2 -0
  313. package/dist/published/vchartThemes.d.ts +1 -0
  314. package/dist/runtime.d.ts +10 -0
  315. package/dist/settings/animations/index.d.ts +7 -0
  316. package/dist/settings/chartThemes/global.theme.json.d.ts +113 -0
  317. package/dist/settings/chartThemes/index.d.ts +194 -0
  318. package/dist/settings/chartThemes/themes/chalk.json.d.ts +15 -0
  319. package/dist/settings/chartThemes/themes/customed.json.d.ts +16 -0
  320. package/dist/settings/chartThemes/themes/dark.json.d.ts +16 -0
  321. package/dist/settings/chartThemes/themes/essos.json.d.ts +13 -0
  322. package/dist/settings/chartThemes/themes/macarons.json.d.ts +27 -0
  323. package/dist/settings/chartThemes/themes/purple-passion.json.d.ts +13 -0
  324. package/dist/settings/chartThemes/themes/roma.json.d.ts +27 -0
  325. package/dist/settings/chartThemes/themes/shine.json.d.ts +15 -0
  326. package/dist/settings/chartThemes/themes/vintage.json.d.ts +17 -0
  327. package/dist/settings/chartThemes/themes/walden.json.d.ts +13 -0
  328. package/dist/settings/chartThemes/themes/westeros.json.d.ts +13 -0
  329. package/dist/settings/chartThemes/themes/wonderland.json.d.ts +13 -0
  330. package/dist/settings/designColor.json.d.ts +3680 -0
  331. package/dist/settings/designColorRecommend.json.d.ts +33 -0
  332. package/dist/settings/designSetting.d.ts +32 -0
  333. package/dist/settings/pathConst.d.ts +3 -0
  334. package/dist/settings/systemSetting.d.ts +10 -0
  335. package/dist/settings/vchartThemes/index.d.ts +138 -0
  336. package/dist/store/index.d.ts +12 -0
  337. package/dist/store/modules/chartEditStore/chartEditStore.d.ts +213 -0
  338. package/dist/store/modules/chartHistoryStore/chartHistoryDefine.d.ts +20 -0
  339. package/dist/store/modules/chartHistoryStore/chartHistoryStore.d.ts +77 -0
  340. package/dist/store/modules/chartLayoutStore/chartLayoutStore.d.ts +36 -0
  341. package/dist/store/modules/designStore/designStore.d.ts +18 -0
  342. package/dist/store/modules/langStore/langStore.d.ts +5 -0
  343. package/dist/store/modules/packagesStore/packagesStore.d.ts +6 -0
  344. package/dist/store/modules/settingStore/settingStore.d.ts +31 -0
  345. package/dist/style.css +7 -0
  346. package/dist/types/global.d.ts +31 -0
  347. package/dist/types/shims-vue.d.ts +5 -0
  348. package/dist/useSyncUpdate.hook-f291c525.js +43 -0
  349. package/dist/useSyncUpdate.hook-f291c525.js.map +1 -0
  350. package/dist/useTargetData.hook-832cc980.js +13 -0
  351. package/dist/useTargetData.hook-832cc980.js.map +1 -0
  352. package/dist/utils/components.d.ts +12 -0
  353. package/dist/utils/crypto.d.ts +12 -0
  354. package/dist/utils/file.d.ts +19 -0
  355. package/dist/utils/index.d.ts +9 -0
  356. package/dist/utils/plugin.d.ts +29 -0
  357. package/dist/utils/router.d.ts +20 -0
  358. package/dist/utils/storage.d.ts +35 -0
  359. package/dist/utils/style.d.ts +141 -0
  360. package/dist/utils/type.d.ts +8 -0
  361. package/dist/utils/utils.d.ts +127 -0
  362. package/dist/views/chart/ContentBox/index.d.ts +2 -0
  363. package/dist/views/chart/ContentBox/index.vue.d.ts +87 -0
  364. package/dist/views/chart/ContentCharts/components/ChartsItemBox/index.d.ts +2 -0
  365. package/dist/views/chart/ContentCharts/components/ChartsItemBox/index.vue.d.ts +22 -0
  366. package/dist/views/chart/ContentCharts/components/ChartsOptionContent/index.d.ts +2 -0
  367. package/dist/views/chart/ContentCharts/components/ChartsOptionContent/index.vue.d.ts +14 -0
  368. package/dist/views/chart/ContentCharts/components/ChartsSearch/index.d.ts +2 -0
  369. package/dist/views/chart/ContentCharts/components/ChartsSearch/index.vue.d.ts +14 -0
  370. package/dist/views/chart/ContentCharts/hooks/useAside.hook.d.ts +17 -0
  371. package/dist/views/chart/ContentCharts/hooks/useLayout.hook.d.ts +5 -0
  372. package/dist/views/chart/ContentCharts/index.d.ts +2 -0
  373. package/dist/views/chart/ContentCharts/index.vue.d.ts +2 -0
  374. package/dist/views/chart/ContentConfigurations/components/CanvasPage/components/ChartThemeColor/index.vue.d.ts +2 -0
  375. package/dist/views/chart/ContentConfigurations/components/CanvasPage/components/CreateColor/index.vue.d.ts +14 -0
  376. package/dist/views/chart/ContentConfigurations/components/CanvasPage/components/CreateColorRender/index.d.ts +2 -0
  377. package/dist/views/chart/ContentConfigurations/components/CanvasPage/components/CreateColorRender/index.vue.d.ts +16 -0
  378. package/dist/views/chart/ContentConfigurations/components/CanvasPage/components/CreateColorRenderChart/barOptions.d.ts +2 -0
  379. package/dist/views/chart/ContentConfigurations/components/CanvasPage/components/CreateColorRenderChart/index.d.ts +2 -0
  380. package/dist/views/chart/ContentConfigurations/components/CanvasPage/components/CreateColorRenderChart/index.vue.d.ts +16 -0
  381. package/dist/views/chart/ContentConfigurations/components/CanvasPage/components/CreateColorRenderChart/lineOptions.d.ts +2 -0
  382. package/dist/views/chart/ContentConfigurations/components/CanvasPage/components/VChartThemeColor/index.vue.d.ts +2 -0
  383. package/dist/views/chart/ContentConfigurations/components/CanvasPage/index.d.ts +2 -0
  384. package/dist/views/chart/ContentConfigurations/components/CanvasPage/index.vue.d.ts +2 -0
  385. package/dist/views/chart/ContentConfigurations/components/ChartAnimation/index.vue.d.ts +2 -0
  386. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.d.ts +2 -0
  387. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.vue.d.ts +2 -0
  388. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMatchingAndShow/index.d.ts +2 -0
  389. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMatchingAndShow/index.vue.d.ts +22 -0
  390. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMonacoEditor/index.d.ts +2 -0
  391. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMonacoEditor/index.vue.d.ts +2 -0
  392. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataPond/components/ChartDataDisplay/displayTable.vue.d.ts +8 -0
  393. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataPond/components/ChartDataDisplay/index.d.ts +2 -0
  394. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataPond/components/ChartDataDisplay/index.vue.d.ts +10 -0
  395. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataPond/components/ChartDataPondControl/index.d.ts +2 -0
  396. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataPond/components/ChartDataPondControl/index.vue.d.ts +14 -0
  397. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataPond/components/ChartDataPondList/index.d.ts +2 -0
  398. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataPond/components/ChartDataPondList/index.vue.d.ts +8 -0
  399. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataPond/index.d.ts +2 -0
  400. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataPond/index.vue.d.ts +2 -0
  401. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestGlobalConfig/index.d.ts +2 -0
  402. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestGlobalConfig/index.vue.d.ts +2 -0
  403. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestGlobalHeaderTable/index.d.ts +2 -0
  404. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestGlobalHeaderTable/index.vue.d.ts +14 -0
  405. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestHeader/index.d.ts +2 -0
  406. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestHeader/index.vue.d.ts +8 -0
  407. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestHeaderTable/index.d.ts +2 -0
  408. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestHeaderTable/index.vue.d.ts +33 -0
  409. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestTargetConfig/index.d.ts +2 -0
  410. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/components/RequestTargetConfig/index.vue.d.ts +8 -0
  411. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/index.d.ts +3 -0
  412. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/index.vue.d.ts +20 -0
  413. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataRequest/pondIndex.vue.d.ts +20 -0
  414. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataStatic/index.d.ts +2 -0
  415. package/dist/views/chart/ContentConfigurations/components/ChartData/components/ChartDataStatic/index.vue.d.ts +2 -0
  416. package/dist/views/chart/ContentConfigurations/components/ChartData/hooks/useFile.hooks.d.ts +9 -0
  417. package/dist/views/chart/ContentConfigurations/components/ChartData/index.d.ts +104 -0
  418. package/dist/views/chart/ContentConfigurations/components/ChartData/index.vue.d.ts +2 -0
  419. package/dist/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventAdvancedHandle/importTemplate.d.ts +4 -0
  420. package/dist/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventAdvancedHandle/index.d.ts +2 -0
  421. package/dist/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventAdvancedHandle/index.vue.d.ts +2 -0
  422. package/dist/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventBaseHandle/index.d.ts +2 -0
  423. package/dist/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventBaseHandle/index.vue.d.ts +2 -0
  424. package/dist/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventInteraction/index.d.ts +2 -0
  425. package/dist/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventInteraction/index.vue.d.ts +2 -0
  426. package/dist/views/chart/ContentConfigurations/components/ChartEvent/index.vue.d.ts +2 -0
  427. package/dist/views/chart/ContentConfigurations/components/ChartSetting/index.vue.d.ts +2 -0
  428. package/dist/views/chart/ContentConfigurations/components/hooks/useTargetData.hook.d.ts +56 -0
  429. package/dist/views/chart/ContentConfigurations/index.d.ts +2 -0
  430. package/dist/views/chart/ContentConfigurations/index.vue.d.ts +2 -0
  431. package/dist/views/chart/ContentEdit/components/EditAlignLine/index.d.ts +2 -0
  432. package/dist/views/chart/ContentEdit/components/EditAlignLine/index.vue.d.ts +2 -0
  433. package/dist/views/chart/ContentEdit/components/EditBottom/index.d.ts +2 -0
  434. package/dist/views/chart/ContentEdit/components/EditBottom/index.vue.d.ts +4 -0
  435. package/dist/views/chart/ContentEdit/components/EditGroup/index.d.ts +2 -0
  436. package/dist/views/chart/ContentEdit/components/EditGroup/index.vue.d.ts +22 -0
  437. package/dist/views/chart/ContentEdit/components/EditHistory/index.d.ts +2 -0
  438. package/dist/views/chart/ContentEdit/components/EditHistory/index.vue.d.ts +2 -0
  439. package/dist/views/chart/ContentEdit/components/EditRange/index.d.ts +2 -0
  440. package/dist/views/chart/ContentEdit/components/EditRange/index.vue.d.ts +9 -0
  441. package/dist/views/chart/ContentEdit/components/EditRule/index.d.ts +2 -0
  442. package/dist/views/chart/ContentEdit/components/EditRule/index.vue.d.ts +13 -0
  443. package/dist/views/chart/ContentEdit/components/EditSelect/index.d.ts +2 -0
  444. package/dist/views/chart/ContentEdit/components/EditSelect/index.vue.d.ts +2 -0
  445. package/dist/views/chart/ContentEdit/components/EditShapeBox/index.d.ts +2 -0
  446. package/dist/views/chart/ContentEdit/components/EditShapeBox/index.vue.d.ts +31 -0
  447. package/dist/views/chart/ContentEdit/components/EditShortcutKey/ShortcutKeyModal.vue.d.ts +12 -0
  448. package/dist/views/chart/ContentEdit/components/EditShortcutKey/index.d.ts +2 -0
  449. package/dist/views/chart/ContentEdit/components/EditShortcutKey/index.vue.d.ts +2 -0
  450. package/dist/views/chart/ContentEdit/components/EditTools/hooks/useFile.hooks.d.ts +8 -0
  451. package/dist/views/chart/ContentEdit/components/EditTools/hooks/useSyncUpdate.hook.d.ts +3 -0
  452. package/dist/views/chart/ContentEdit/components/EditTools/index.d.ts +12 -0
  453. package/dist/views/chart/ContentEdit/components/EditTools/index.vue.d.ts +2 -0
  454. package/dist/views/chart/ContentEdit/components/EditTools/utils/index.d.ts +1 -0
  455. package/dist/views/chart/ContentEdit/components/EditWatermark/index.d.ts +2 -0
  456. package/dist/views/chart/ContentEdit/components/EditWatermark/index.vue.d.ts +2 -0
  457. package/dist/views/chart/ContentEdit/hooks/useDrag.hook.d.ts +12 -0
  458. package/dist/views/chart/ContentEdit/hooks/useLayout.hook.d.ts +1 -0
  459. package/dist/views/chart/ContentEdit/hooks/useStyle.hook.d.ts +16 -0
  460. package/dist/views/chart/ContentEdit/index.d.ts +2 -0
  461. package/dist/views/chart/ContentEdit/index.vue.d.ts +2 -0
  462. package/dist/views/chart/ContentHeader/headerLeftBtn/index.d.ts +2 -0
  463. package/dist/views/chart/ContentHeader/headerLeftBtn/index.vue.d.ts +2 -0
  464. package/dist/views/chart/ContentHeader/headerRightBtn/index.d.ts +2 -0
  465. package/dist/views/chart/ContentHeader/headerRightBtn/index.vue.d.ts +4 -0
  466. package/dist/views/chart/ContentHeader/headerTitle/index.d.ts +2 -0
  467. package/dist/views/chart/ContentHeader/headerTitle/index.vue.d.ts +4 -0
  468. package/dist/views/chart/ContentLayers/components/LayersGroupListItem/index.d.ts +2 -0
  469. package/dist/views/chart/ContentLayers/components/LayersGroupListItem/index.vue.d.ts +25 -0
  470. package/dist/views/chart/ContentLayers/components/LayersListItem/index.d.ts +2 -0
  471. package/dist/views/chart/ContentLayers/components/LayersListItem/index.vue.d.ts +34 -0
  472. package/dist/views/chart/ContentLayers/components/LayersStatus/index.d.ts +2 -0
  473. package/dist/views/chart/ContentLayers/components/LayersStatus/index.vue.d.ts +40 -0
  474. package/dist/views/chart/ContentLayers/enums.d.ts +0 -0
  475. package/dist/views/chart/ContentLayers/index.d.ts +2 -0
  476. package/dist/views/chart/ContentLayers/index.vue.d.ts +2 -0
  477. package/dist/views/chart/ContentLoad/index.d.ts +2 -0
  478. package/dist/views/chart/ContentLoad/index.vue.d.ts +2 -0
  479. package/dist/views/chart/hooks/useContextMenu.hook.d.ts +10 -0
  480. package/dist/views/chart/hooks/useKeyboard.hook.d.ts +38 -0
  481. package/dist/views/chart/hooks/useScale.hook.d.ts +24 -0
  482. package/dist/views/chart/hooks/useSync.hook.d.ts +4 -0
  483. package/dist/views/chart/index.vue.d.ts +13 -0
  484. package/dist/views/preview/components/PreviewRenderGroup/index.d.ts +2 -0
  485. package/dist/views/preview/components/PreviewRenderGroup/index.vue.d.ts +38 -0
  486. package/dist/views/preview/components/PreviewRenderList/index.d.ts +2 -0
  487. package/dist/views/preview/components/PreviewRenderList/index.vue.d.ts +2 -0
  488. package/dist/views/preview/hooks/useComInstall.hook.d.ts +4 -0
  489. package/dist/views/preview/hooks/useScale.hook.d.ts +16 -0
  490. package/dist/views/preview/hooks/useStore.hook.d.ts +2 -0
  491. package/dist/views/preview/index.d.ts +4 -0
  492. package/dist/views/preview/suspenseIndex.vue.d.ts +5 -0
  493. package/dist/views/preview/utils/drag.d.ts +1 -0
  494. package/dist/views/preview/utils/index.d.ts +4 -0
  495. package/dist/views/preview/utils/keyboard.d.ts +1 -0
  496. package/dist/views/preview/utils/storage.d.ts +5 -0
  497. package/dist/views/preview/utils/style.d.ts +25 -0
  498. package/package.json +136 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-6701793b.js","sources":["../src/views/chart/hooks/useScale.hook.ts","../src/views/chart/ContentEdit/hooks/useLayout.hook.ts","../src/views/chart/hooks/useKeyboard.hook.ts","../src/views/chart/ContentEdit/hooks/useDrag.hook.ts","../src/views/chart/ContentEdit/hooks/useStyle.hook.ts","../src/views/chart/ContentEdit/components/EditShapeBox/index.vue","../src/views/chart/ContentEdit/components/EditGroup/index.vue","../src/views/chart/ContentEdit/components/EditAlignLine/index.vue","../src/views/chart/ContentEdit/components/EditWatermark/index.vue","../src/views/chart/ContentEdit/components/EditSelect/index.vue","../src/views/chart/ContentEdit/components/EditRange/index.vue","../src/views/chart/ContentEdit/components/EditRule/index.vue","../src/store/modules/chartHistoryStore/chartHistoryDefine.ts","../src/views/chart/ContentEdit/components/EditHistory/index.vue","../src/views/chart/ContentEdit/components/EditShortcutKey/ShortcutKeyModal.vue","../src/views/chart/ContentEdit/components/EditShortcutKey/index.vue","../src/views/chart/ContentEdit/components/EditBottom/index.vue","../src/components/GoSystemSet/index.vue","../src/views/chart/ContentEdit/components/EditTools/utils/index.ts","../src/views/chart/ContentEdit/components/EditTools/hooks/useFile.hooks.ts","../src/views/chart/ContentEdit/components/EditTools/index.d.ts","../src/views/chart/ContentEdit/components/EditTools/index.vue","../src/views/chart/ContentEdit/index.vue"],"sourcesContent":["import { ref, type InjectionKey, type Ref } from 'vue'\n\nexport const SCALE_KEY: InjectionKey<Ref<{ width: number; height: number }>> = Symbol('scale')\n\n// 简化的缩放hook(不再用于preview页面)\nexport const useScale = () => {\n const scale = ref({ width: 1, height: 1 })\n \n return {\n scale,\n SCALE_KEY\n }\n}\n","import { onUnmounted, onMounted } from 'vue'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { EditCanvasTypeEnum } from '@core/store/modules/chartEditStore/chartEditStore.d'\n\n// 布局处理\nexport const useLayout = (fn: () => Promise<void>) => {\n let removeScale: Function = () => { }\n \n onMounted(async () => {\n // 在需要时才获取 store 实例\n const chartEditStore = useChartEditStore()\n \n // 设置 Dom 值(ref 不生效先用 document)\n chartEditStore.setEditCanvas(\n EditCanvasTypeEnum.EDIT_LAYOUT_DOM,\n document.getElementById('go-chart-edit-layout')\n )\n chartEditStore.setEditCanvas(\n EditCanvasTypeEnum.EDIT_CONTENT_DOM,\n document.getElementById('go-chart-edit-content')\n )\n\n // 获取数据\n await fn()\n // 监听初始化\n removeScale = chartEditStore.listenerScale()\n\n })\n\n onUnmounted(() => {\n // 在需要时才获取 store 实例\n const chartEditStore = useChartEditStore()\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.EDIT_LAYOUT_DOM, null)\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.EDIT_CONTENT_DOM, null)\n removeScale()\n })\n}","import { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { WinKeyboard, MacKeyboard, MenuEnum } from '@core/enums/editPageEnum'\nimport throttle from 'lodash/throttle'\nimport debounce from 'lodash/debounce'\nimport keymaster from 'keymaster'\nimport { setKeyboardDressShow } from '@core/utils'\n\n// Keymaster可以支持识别以下组合键: ⇧,shift,option,⌥,alt,ctrl,control,command,和⌘\n\nconst winCtrlMerge = (e: string) => `${WinKeyboard.CTRL}+${e}`\nconst winShiftMerge = (e: string) => `${WinKeyboard.SHIFT}+${e}`\nconst winAltMerge = (e: string) => `${WinKeyboard.ALT}+${e}`\n\nexport const winKeyboardValue = {\n [MenuEnum.ARROW_UP]: winCtrlMerge('up'),\n [MenuEnum.ARROW_RIGHT]: winCtrlMerge('right'),\n [MenuEnum.ARROW_DOWN]: winCtrlMerge('down'),\n [MenuEnum.ARROW_LEFT]: winCtrlMerge('left'),\n [MenuEnum.COPY]: winCtrlMerge('c'),\n [MenuEnum.CUT]: winCtrlMerge('x'),\n [MenuEnum.PARSE]: winCtrlMerge('v'),\n [MenuEnum.DELETE]: 'delete',\n [MenuEnum.BACK]: winCtrlMerge('z'),\n [MenuEnum.FORWORD]: winCtrlMerge(winShiftMerge('z')),\n [MenuEnum.GROUP]: winCtrlMerge('g'),\n [MenuEnum.UN_GROUP]: winCtrlMerge(winShiftMerge('g')),\n [MenuEnum.LOCK]: winCtrlMerge('l'),\n [MenuEnum.UNLOCK]: winCtrlMerge(winShiftMerge('l')),\n [MenuEnum.HIDE]: winCtrlMerge('h'),\n [MenuEnum.SHOW]: winCtrlMerge(winShiftMerge('h'))\n}\n\n// 这个 Ctrl 后面还是换成了 ⌘\nconst macCtrlMerge = (e: string) => `${MacKeyboard.CTRL}+${e}`\nconst macShiftMerge = (e: string) => `${MacKeyboard.SHIFT}+${e}`\nconst macAltMerge = (e: string) => `${MacKeyboard.ALT}+${e}`\n\n// 没有测试 macOS 系统,因为我没有😤👻\nexport const macKeyboardValue = {\n [MenuEnum.ARROW_UP]: macCtrlMerge('arrowup'),\n [MenuEnum.ARROW_RIGHT]: macCtrlMerge('arrowright'),\n [MenuEnum.ARROW_DOWN]: macCtrlMerge('arrowdown'),\n [MenuEnum.ARROW_LEFT]: macCtrlMerge('arrowleft'),\n [MenuEnum.COPY]: macCtrlMerge('c'),\n [MenuEnum.CUT]: macCtrlMerge('x'),\n [MenuEnum.PARSE]: macCtrlMerge('v'),\n [MenuEnum.DELETE]: macCtrlMerge('backspace'),\n [MenuEnum.BACK]: macCtrlMerge('z'),\n [MenuEnum.FORWORD]: macCtrlMerge(macShiftMerge('z')),\n [MenuEnum.GROUP]: macCtrlMerge('g'),\n [MenuEnum.UN_GROUP]: macCtrlMerge(macShiftMerge('g')),\n [MenuEnum.LOCK]: macCtrlMerge('l'),\n [MenuEnum.UNLOCK]: macCtrlMerge(macShiftMerge('l')),\n [MenuEnum.HIDE]: macCtrlMerge('h'),\n [MenuEnum.SHOW]: macCtrlMerge(macShiftMerge('h'))\n}\n\n// Win 快捷键列表\nconst winKeyList: Array<string> = [\n winKeyboardValue.up,\n winKeyboardValue.right,\n winKeyboardValue.down,\n winKeyboardValue.left,\n\n winKeyboardValue.delete,\n winKeyboardValue.copy,\n winKeyboardValue.cut,\n winKeyboardValue.parse,\n\n winKeyboardValue.back,\n winKeyboardValue.forward,\n\n winKeyboardValue.group,\n winKeyboardValue.unGroup,\n\n winKeyboardValue.lock,\n winKeyboardValue.unLock,\n\n winKeyboardValue.hide,\n winKeyboardValue.show\n]\n\n// Mac 快捷键列表\nconst macKeyList: Array<string> = [\n macKeyboardValue.up,\n macKeyboardValue.right,\n macKeyboardValue.down,\n macKeyboardValue.left,\n\n macKeyboardValue.delete,\n macKeyboardValue.copy,\n macKeyboardValue.cut,\n macKeyboardValue.parse,\n\n macKeyboardValue.back,\n macKeyboardValue.forward,\n\n macKeyboardValue.group,\n macKeyboardValue.unGroup,\n\n macKeyboardValue.lock,\n macKeyboardValue.unLock,\n\n macKeyboardValue.hide,\n macKeyboardValue.show\n]\n\n// 处理键盘记录\nconst keyRecordHandle = () => {\n // 默认赋值\n window.$KeyboardActive = {\n ctrl: false,\n space: false\n }\n\n document.onkeydown = (e: KeyboardEvent) => {\n const { keyCode } = e\n if (keyCode == 32 && e.target == document.body) e.preventDefault()\n\n if ([17, 32].includes(keyCode) && window.$KeyboardActive) {\n setKeyboardDressShow(e.keyCode)\n switch (keyCode) {\n case 17: window.$KeyboardActive.ctrl = true; break\n case 32: window.$KeyboardActive.space = true; break\n }\n }\n }\n\n document.onkeyup = (e: KeyboardEvent) => {\n const { keyCode } = e\n if (keyCode == 32 && e.target == document.body) e.preventDefault()\n\n if ([17, 32].includes(keyCode) && window.$KeyboardActive) {\n setKeyboardDressShow()\n switch (keyCode) {\n case 17: window.$KeyboardActive.ctrl = false; break\n case 32: window.$KeyboardActive.space = false; break\n }\n }\n }\n}\n\n// 初始化监听事件\nexport const useAddKeyboard = () => {\n const throttleTime = 50\n // 在函数内部获取 store 实例\n const chartEditStore = useChartEditStore()\n \n const switchHandle = (keyboardValue: typeof winKeyboardValue, e: string) => {\n switch (e) {\n // ct+↑\n case keyboardValue.up:\n keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_UP); return false }, throttleTime))\n break;\n // ct+→\n case keyboardValue.right:\n keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_RIGHT); return false }, throttleTime))\n break;\n // ct+↓\n case keyboardValue.down:\n keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_DOWN); return false }, throttleTime))\n break;\n // ct+←\n case keyboardValue.left:\n keymaster(e, throttle(() => { chartEditStore.setMove(MenuEnum.ARROW_LEFT); return false }, throttleTime))\n break;\n\n // 删除 delete\n case keyboardValue.delete:\n keymaster(e, debounce(() => { chartEditStore.removeComponentList(); return false }, throttleTime))\n break;\n // 复制 ct+v\n case keyboardValue.copy:\n keymaster(e, debounce(() => { chartEditStore.setCopy(); return false }, throttleTime))\n break;\n // 剪切 ct+x\n case keyboardValue.cut:\n keymaster(e, debounce(() => { chartEditStore.setCut(); return false }, throttleTime))\n break;\n // 粘贴 ct+v\n case keyboardValue.parse:\n keymaster(e, throttle(() => { chartEditStore.setParse(); return false }, throttleTime))\n break;\n\n // 撤回 ct+z\n case keyboardValue.back:\n keymaster(e, throttle(() => { chartEditStore.setBack(); return false }, throttleTime))\n break;\n // 前进 ct+sh+z\n case keyboardValue.forward:\n keymaster(e, throttle(() => { chartEditStore.setForward(); return false }, throttleTime))\n break;\n \n // 创建分组 ct+g\n case keyboardValue.group:\n keymaster(e, throttle(() => { chartEditStore.setGroup(); return false }, throttleTime))\n break;\n // 解除分组 ct+sh+g\n case keyboardValue.unGroup:\n keymaster(e, throttle(() => { chartEditStore.setUnGroup(); return false }, throttleTime))\n break;\n\n // 锁定 ct+l\n case keyboardValue.lock:\n keymaster(e, throttle(() => { chartEditStore.setLock(); return false }, throttleTime))\n break;\n // 解除锁定 ct+sh+l\n case keyboardValue.unLock:\n keymaster(e, throttle(() => { chartEditStore.setUnLock(); return false }, throttleTime))\n break;\n\n // 隐藏 ct+h\n case keyboardValue.hide:\n keymaster(e, throttle(() => { chartEditStore.setHide(); return false }, throttleTime))\n break;\n // 解除隐藏 ct+sh+h\n case keyboardValue.show:\n keymaster(e, throttle(() => { chartEditStore.setShow(); return false }, throttleTime))\n break;\n }\n }\n winKeyList.forEach((key: string) => {\n switchHandle(winKeyboardValue, key)\n })\n macKeyList.forEach((key: string) => {\n switchHandle(macKeyboardValue, key)\n })\n\n keyRecordHandle()\n}\n\n// 卸载监听事件\nexport const useRemoveKeyboard = () => {\n document.onkeydown = () => {};\n document.onkeyup = () => {};\n\n winKeyList.forEach((key: string) => {\n keymaster.unbind(key)\n })\n macKeyList.forEach((key: string) => {\n keymaster.unbind(key)\n })\n}","import { toRaw } from 'vue'\nimport { DragKeyEnum, MouseEventButton } from '@core/enums/editPageEnum'\nimport { createComponent, ensureRegisteredComponent } from '@core/packages/registry'\nimport { ConfigType } from '@core/packages/index.d'\nimport { CreateComponentType, CreateComponentGroupType, PickCreateComponentType } from '@core/packages/index.d'\nimport { useContextMenu } from '@core/views/chart/hooks/useContextMenu.hook'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { EditCanvasTypeEnum } from '@core/store/modules/chartEditStore/chartEditStore.d'\nimport { loadingStart, loadingFinish, loadingError, setComponentPosition, JSONParse } from '@core/utils'\nimport { throttle, cloneDeep } from 'lodash'\n\n// * 拖拽到编辑区域里\nexport const dragHandle = async (e: DragEvent) => {\n e.preventDefault()\n\n try {\n loadingStart()\n // 在函数内部获取 store 实例\n const chartEditStore = useChartEditStore()\n\n // 获取拖拽数据\n const drayDataString = e!.dataTransfer!.getData(DragKeyEnum.DRAG_KEY)\n if (!drayDataString) {\n loadingFinish()\n return\n }\n\n // 修改状态\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_CREATE, false)\n const dropData: Exclude<ConfigType, ['image']> = JSONParse(drayDataString)\n if (dropData.disabled) return\n ensureRegisteredComponent(dropData as ConfigType)\n\n // 创建新图表组件\n let newComponent: CreateComponentType = await createComponent(dropData)\n if (dropData.redirectComponent) {\n dropData.dataset && (newComponent.option.dataset = dropData.dataset)\n newComponent.chartConfig.title = dropData.title\n newComponent.chartConfig.chartFrame = dropData.chartFrame\n }\n\n setComponentPosition(newComponent, e.offsetX - newComponent.attr.w / 2, e.offsetY - newComponent.attr.h / 2)\n chartEditStore.addComponentList(newComponent, false, true)\n chartEditStore.setTargetSelectChart(newComponent.id)\n loadingFinish()\n } catch (error) {\n console.error('[hgdataview] create component failed', error)\n loadingError()\n window['$message'].warning(`图表正在研发中, 敬请期待...`)\n }\n}\n\n// * 进入拖拽区域\nexport const dragoverHandle = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (e.dataTransfer) e.dataTransfer.dropEffect = 'copy'\n}\n\n// * 不拦截默认行为点击\nexport const mousedownHandleUnStop = (e: MouseEvent, item?: CreateComponentType | CreateComponentGroupType) => {\n const chartEditStore = useChartEditStore()\n if (item) {\n chartEditStore.setTargetSelectChart(item.id)\n return\n }\n chartEditStore.setTargetSelectChart(undefined)\n}\n\n// * 框选\nexport const mousedownBoxSelect = (e: MouseEvent, item?: CreateComponentType | CreateComponentGroupType) => {\n e.stopPropagation()\n e.preventDefault()\n const chartEditStore = useChartEditStore()\n const { onClickOutSide } = useContextMenu()\n\n // 点击空白处\n if (!item) {\n onClickOutSide()\n }\n\n const startScreenX = e.screenX\n const startScreenY = e.screenY\n const startOffsetX = e.offsetX\n const startOffsetY = e.offsetY\n\n // 记录缩放\n const scale = chartEditStore.getEditCanvas.scale\n\n chartEditStore.setMousePosition(undefined, undefined, startOffsetX, startOffsetY)\n\n // 移动框选\n const mousemove = throttle((moveEvent: MouseEvent) => {\n // 取消当前选中\n chartEditStore.setTargetSelectChart()\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_SELECT, true)\n\n // 这里先把相对值算好,不然组件无法获取 startScreenX 和 startScreenY 的值\n const currX = startOffsetX + moveEvent.screenX - startScreenX\n const currY = startOffsetY + moveEvent.screenY - startScreenY\n chartEditStore.setMousePosition(currX, currY)\n\n // 计算框选的左上角和右下角\n const selectAttr = {\n // 左上角\n x1: 0,\n y1: 0,\n // 右下角\n x2: 0,\n y2: 0\n }\n if (currX > startOffsetX && currY > startOffsetY) {\n // 右下方向\n selectAttr.x1 = startOffsetX\n selectAttr.y1 = startOffsetY\n selectAttr.x2 = Math.round(startOffsetX + (moveEvent.screenX - startScreenX) / scale)\n selectAttr.y2 = Math.round(startOffsetY + (moveEvent.screenY - startScreenY) / scale)\n } else if (currX > startOffsetX && currY < startOffsetY) {\n // 右上方向\n selectAttr.x1 = startOffsetX\n selectAttr.y1 = Math.round(startOffsetY - (startScreenY - moveEvent.screenY) / scale)\n selectAttr.x2 = Math.round(startOffsetX + (moveEvent.screenX - startScreenX) / scale)\n selectAttr.y2 = startOffsetY\n } else if (currX < startOffsetX && currY > startOffsetY) {\n selectAttr.x1 = Math.round(startOffsetX - (startScreenX - moveEvent.screenX) / scale)\n selectAttr.y1 = startOffsetY\n selectAttr.x2 = startOffsetX\n selectAttr.y2 = Math.round(startOffsetY + (moveEvent.screenY - startScreenY) / scale)\n // 左下方向\n } else {\n // 左上方向\n selectAttr.x1 = Math.round(startOffsetX - (startScreenX - moveEvent.screenX) / scale)\n selectAttr.y1 = Math.round(startOffsetY - (startScreenY - moveEvent.screenY) / scale)\n selectAttr.x2 = startOffsetX\n selectAttr.y2 = startOffsetY\n }\n\n // 遍历组件\n chartEditStore.getComponentList.forEach(item => {\n if (!chartEditStore.getTargetChart.selectId.includes(item.id)) {\n // 处理左上角\n let isSelect = false\n const { x, y, w, h } = item.attr\n const targetAttr = {\n // 左上角\n x1: x,\n y1: y,\n // 右下角\n x2: x + w,\n y2: y + h\n }\n // 全包含则选中\n if (\n targetAttr.x1 - selectAttr.x1 >= 0 &&\n targetAttr.y1 - selectAttr.y1 >= 0 &&\n targetAttr.x2 - selectAttr.x2 <= 0 &&\n targetAttr.y2 - selectAttr.y2 <= 0 &&\n !item.status.lock &&\n !item.status.hide\n ) {\n isSelect = true\n chartEditStore.setTargetSelectChart(item.id, true)\n }\n }\n })\n }, 30)\n\n // 鼠标抬起\n const mouseup = () => {\n // 鼠标抬起时,结束mousemove的节流函数,避免选框不消失问题\n mousemove.cancel()\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_SELECT, false)\n chartEditStore.setMousePosition(0, 0, 0, 0)\n document.removeEventListener('mousemove', mousemove)\n document.removeEventListener('mouseup', mouseup)\n }\n document.addEventListener('mousemove', mousemove)\n document.addEventListener('mouseup', mouseup)\n}\n\n// * 鼠标事件\nexport const useMouseHandle = () => {\n // 在函数内部获取 store 实例和 context menu\n const chartEditStore = useChartEditStore()\n const { onClickOutSide } = useContextMenu()\n\n // * Click 事件, 松开鼠标触发\n const mouseClickHandle = (e: MouseEvent, item: CreateComponentType | CreateComponentGroupType) => {\n e.preventDefault()\n e.stopPropagation()\n if (item.status.lock) return\n // 若此时按下了 CTRL, 表示多选\n if (window.$KeyboardActive?.ctrl) {\n // 若已选中,则去除\n if (chartEditStore.targetChart.selectId.includes(item.id)) {\n const exList = chartEditStore.targetChart.selectId.filter(e => e !== item.id)\n chartEditStore.setTargetSelectChart(exList)\n } else {\n chartEditStore.setTargetSelectChart(item.id, true)\n }\n }\n }\n\n // * 按下事件(包含移动事件)\n const mousedownHandle = (e: MouseEvent, item: CreateComponentType | CreateComponentGroupType) => {\n e.preventDefault()\n e.stopPropagation()\n if (item.status.lock) return\n onClickOutSide()\n // 按下左键 + CTRL\n if (e.buttons === MouseEventButton.LEFT && window.$KeyboardActive?.ctrl) return\n\n // 按下右键 + 选中多个 + 目标元素是多选子元素\n const selectId = chartEditStore.getTargetChart.selectId\n if (e.buttons === MouseEventButton.RIGHT && selectId.length > 1 && selectId.includes(item.id)) return\n\n // 选中当前目标组件\n chartEditStore.setTargetSelectChart(item.id)\n\n // 按下右键\n if (e.buttons === MouseEventButton.RIGHT) return\n\n const scale = chartEditStore.getEditCanvas.scale\n const canvasWidth = chartEditStore.getEditCanvasConfig.width\n const canvasHeight = chartEditStore.getEditCanvasConfig.height\n\n // 记录图表初始位置和大小\n const targetMap = new Map()\n chartEditStore.getTargetChart.selectId.forEach(id => {\n const index = chartEditStore.fetchTargetIndex(id)\n if (index !== -1) {\n const { x, y, w, h } = toRaw(chartEditStore.getComponentList[index]).attr\n targetMap.set(id, { x, y, w, h })\n }\n })\n\n // 记录点击初始位置\n const startX = e.screenX\n const startY = e.screenY\n\n // 记录历史位置\n let prevComponentInstance: Array<CreateComponentType | CreateComponentGroupType> = []\n chartEditStore.getTargetChart.selectId.forEach(id => {\n if (!targetMap.has(id)) return\n\n const index = chartEditStore.fetchTargetIndex(id)\n // 拿到初始位置数据\n prevComponentInstance.push(cloneDeep(chartEditStore.getComponentList[index]))\n })\n\n // 记录初始位置\n chartEditStore.setMousePosition(undefined, undefined, startX, startY)\n\n // 移动-计算偏移量\n const mousemove = throttle((moveEvent: MouseEvent) => {\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_DRAG, true)\n chartEditStore.setMousePosition(moveEvent.screenX, moveEvent.screenY)\n\n // 当前偏移量,处理 scale 比例问题\n let offsetX = (moveEvent.screenX - startX) / scale\n let offsetY = (moveEvent.screenY - startY) / scale\n\n chartEditStore.getTargetChart.selectId.forEach(id => {\n if (!targetMap.has(id)) return\n\n const index = chartEditStore.fetchTargetIndex(id)\n // 拿到初始位置数据\n const { x, y, w, h } = targetMap.get(id)\n const componentInstance = chartEditStore.getComponentList[index]\n\n let currX = Math.round(x + offsetX)\n let currY = Math.round(y + offsetY)\n\n // 要预留的距离\n const distance = 50\n\n // 基于左上角位置检测\n currX = currX < -w + distance ? -w + distance : currX\n currY = currY < -h + distance ? -h + distance : currY\n\n // 基于右下角位置检测\n currX = currX > canvasWidth - distance ? canvasWidth - distance : currX\n currY = currY > canvasHeight - distance ? canvasHeight - distance : currY\n if (componentInstance) {\n componentInstance.attr = Object.assign(componentInstance.attr, {\n x: currX,\n y: currY\n })\n }\n })\n return\n }, 20)\n\n const mouseup = () => {\n try {\n chartEditStore.setMousePosition(0, 0, 0, 0)\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_DRAG, false)\n // 加入历史栈\n if (prevComponentInstance.length) {\n chartEditStore.getTargetChart.selectId.forEach(id => {\n if (!targetMap.has(id)) return\n const index = chartEditStore.fetchTargetIndex(id)\n const curComponentInstance = chartEditStore.getComponentList[index]\n // 找到记录的所选组件\n prevComponentInstance.forEach(preItem => {\n if (preItem.id === id) {\n preItem.attr = Object.assign(preItem.attr, {\n offsetX: curComponentInstance.attr.x - preItem.attr.x,\n offsetY: curComponentInstance.attr.y - preItem.attr.y\n })\n }\n })\n })\n\n const moveComponentInstance = prevComponentInstance.filter(\n item => item.attr.offsetX !== 0 && item.attr.offsetY !== 0\n )\n moveComponentInstance.length && chartEditStore.moveComponentList(moveComponentInstance)\n }\n document.removeEventListener('mousemove', mousemove)\n document.removeEventListener('mouseup', mouseup)\n } catch (err) {\n console.log(err)\n }\n }\n\n document.addEventListener('mousemove', mousemove)\n document.addEventListener('mouseup', mouseup)\n }\n\n // * 进入事件\n const mouseenterHandle = (e: MouseEvent, item: CreateComponentType | CreateComponentGroupType) => {\n e.preventDefault()\n e.stopPropagation()\n if (!chartEditStore.getEditCanvas.isSelect) {\n chartEditStore.setTargetHoverChart(item.id)\n }\n }\n\n // * 移出事件\n const mouseleaveHandle = (e: MouseEvent, item: CreateComponentType | CreateComponentGroupType) => {\n e.preventDefault()\n e.stopPropagation()\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_DRAG, false)\n chartEditStore.setTargetHoverChart(undefined)\n }\n\n return { mouseClickHandle, mousedownHandle, mouseenterHandle, mouseleaveHandle }\n}\n\n// * 移动锚点\nexport const useMousePointHandle = (\n e: MouseEvent,\n point: string,\n attr: PickCreateComponentType<'attr'>,\n componentId: string\n) => {\n e.stopPropagation()\n e.preventDefault()\n\n // 在函数内部获取 store 实例\n const chartEditStore = useChartEditStore()\n \n chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_DRAG, true)\n chartEditStore.setTargetSelectChart(componentId)\n\n const scale = chartEditStore.getEditCanvas.scale\n\n const itemAttrX = attr.x\n const itemAttrY = attr.y\n const itemAttrW = attr.w\n const itemAttrH = attr.h\n\n // 记录点击初始位置\n const startX = e.screenX\n const startY = e.screenY\n\n // 记录初始位置\n chartEditStore.setMousePosition(startX, startY)\n\n const mousemove = throttle((moveEvent: MouseEvent) => {\n chartEditStore.setMousePosition(moveEvent.screenX, moveEvent.screenY)\n\n let currX = Math.round((moveEvent.screenX - startX) / scale)\n let currY = Math.round((moveEvent.screenY - startY) / scale)\n\n const isTop = /t/.test(point)\n const isBottom = /b/.test(point)\n const isLeft = /l/.test(point)\n const isRight = /r/.test(point)\n\n const newHeight = itemAttrH + (isTop ? -currY : isBottom ? currY : 0)\n const newWidth = itemAttrW + (isLeft ? -currX : isRight ? currX : 0)\n\n attr.h = newHeight > 0 ? newHeight : 0\n attr.w = newWidth > 0 ? newWidth : 0\n attr.x = itemAttrX + (isLeft ? currX : 0)\n attr.y = itemAttrY + (isTop ? currY : 0)\n }, 50)\n\n const mouseup = () => {\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_DRAG, false)\n chartEditStore.setMousePosition(0, 0, 0, 0)\n document.removeEventListener('mousemove', mousemove)\n document.removeEventListener('mouseup', mouseup)\n }\n\n document.addEventListener('mousemove', mousemove)\n document.addEventListener('mouseup', mouseup)\n}\n","import { PickCreateComponentType } from '@core/packages/index.d'\n\ntype AttrType = PickCreateComponentType<'attr'>\n\nexport const useComponentStyle = (attr: AttrType, index: number) => {\n if(!attr) return {}\n const componentStyle = {\n zIndex: index + 1,\n left: `${attr.x}px`,\n top: `${attr.y}px`\n }\n return componentStyle\n}\n\nexport const useSizeStyle = (attr: AttrType, scale?: number) => {\n if(!attr) return {}\n return {\n width: `${scale ? scale * attr.w : attr.w}px`,\n height: `${scale ? scale * attr.h : attr.h}px`\n }\n}\n\n// 锚点位置\nexport const usePointStyle = (\n point: string,\n index: number,\n attr: PickCreateComponentType<'attr'>,\n cursorResize: string[]\n) => {\n const { w: width, h: height } = attr\n\n const isTop = /t/.test(point)\n const isBottom = /b/.test(point)\n const isLeft = /l/.test(point)\n const isRight = /r/.test(point)\n\n let newLeft = 0\n let newTop = 0\n\n // 四个角的点\n if (point.length === 2) {\n newLeft = isLeft ? 0 : width\n newTop = isTop ? 0 : height\n } else {\n // 上下两点的点,宽度居中\n if (isTop || isBottom) {\n newLeft = width / 2\n newTop = isTop ? 0 : height\n }\n\n // 左右两边的点,高度居中\n if (isLeft || isRight) {\n newLeft = isLeft ? 0 : width\n newTop = Math.floor(height / 2)\n }\n }\n\n const style = {\n left: `${newLeft}px`,\n top: `${newTop}px`,\n cursor: cursorResize[index] + '-resize'\n }\n\n return style\n}\n","<template>\n <div class=\"go-shape-box\" :class=\"{ lock, hide }\">\n <slot></slot>\n <!-- 锚点 -->\n <template v-if=\"!hiddenPoint\">\n <div\n :class=\"`shape-point ${point}`\"\n v-for=\"(point, index) in select ? pointList : []\"\n :key=\"index\"\n :style=\"usePointStyle(point, index, item.attr, cursorResize)\"\n @mousedown=\"useMousePointHandle($event, point, item.attr, item.id)\"\n ></div>\n </template>\n\n <!-- 选中 -->\n <div class=\"shape-modal\" :style=\"useSizeStyle(item.attr)\">\n <div class=\"shape-modal-select\" :class=\"{ active: select }\"></div>\n <div class=\"shape-modal-change\" :class=\"{ selectActive: select, hoverActive: hover }\"></div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, PropType } from 'vue'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { EditCanvasTypeEnum } from '@core/store/modules/chartEditStore/chartEditStore.d'\n\nimport { useDesignStore } from '@core/store/modules/designStore/designStore'\nimport { CreateComponentType, CreateComponentGroupType } from '@core/packages/index.d'\nimport { useSizeStyle, usePointStyle } from '../../hooks/useStyle.hook'\nimport { useMousePointHandle } from '../../hooks/useDrag.hook'\n\nconst props = defineProps({\n item: {\n type: Object as PropType<CreateComponentType | CreateComponentGroupType>,\n required: true\n },\n hiddenPoint: {\n type: Boolean,\n required: false\n }\n})\n\nconst designStore = useDesignStore()\nconst chartEditStore = useChartEditStore()\n\n// 锚点\nconst pointList = ['t', 'r', 'b', 'l', 'lt', 'rt', 'lb', 'rb']\n\n// 光标朝向\nconst cursorResize = ['n', 'e', 's', 'w', 'nw', 'ne', 'sw', 'se']\n\n// 颜色\nconst themeColor = computed(() => {\n return designStore.getAppTheme\n})\n\n// 计算当前选中目标\nconst hover = computed(() => {\n const isDrag = chartEditStore.getEditCanvas[EditCanvasTypeEnum.IS_DRAG]\n if (isDrag) return false\n\n if (props.item.status.lock) return false\n return props.item.id === chartEditStore.getTargetChart.hoverId\n})\n\n// 兼容多值场景\nconst select = computed(() => {\n const id = props.item.id\n if (props.item.status.lock) return false\n return chartEditStore.getTargetChart.selectId.find((e: string) => e === id)\n})\n\n// 锁定\nconst lock = computed(() => {\n return props.item.status.lock\n})\n\n// 隐藏\nconst hide = computed(() => {\n return props.item.status.hide\n})\n</script>\n\n<style lang=\"scss\" scoped>\n@include go(shape-box) {\n position: absolute;\n cursor: move;\n\n &.lock {\n cursor: default !important;\n }\n\n &.hide {\n display: none;\n }\n\n /* 锚点 */\n .shape-point {\n z-index: 1;\n position: absolute;\n width: 7px;\n height: 7px;\n border: 3px solid v-bind('themeColor');\n border-radius: 5px;\n background-color: #fff;\n transform: translate(-40%, -30%);\n &.t {\n width: 30px;\n transform: translate(-50%, -50%);\n }\n &.b {\n width: 30px;\n transform: translate(-50%, -30%);\n }\n &.l,\n &.r {\n height: 30px;\n }\n &.r {\n transform: translate(-20%, -50%);\n }\n &.l {\n transform: translate(-45%, -50%);\n }\n &.rt,\n &.rb {\n transform: translate(-30%, -30%);\n }\n }\n /* 选中 */\n .shape-modal {\n position: absolute;\n top: 0;\n left: 0;\n\n .shape-modal-select,\n .shape-modal-change {\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 4px;\n }\n\n .shape-modal-select {\n opacity: 0.1;\n top: 2px;\n left: 2px;\n &.active {\n background-color: v-bind('themeColor');\n }\n }\n .shape-modal-change {\n border: 2px solid rgba(0, 0, 0, 0);\n &.selectActive,\n &.hoverActive {\n border-color: v-bind('themeColor');\n border-width: 2px;\n }\n &.hoverActive {\n border-style: dotted;\n }\n &.selectActive {\n border-style: solid;\n }\n }\n }\n}\n</style>\n","<template>\n <div class=\"go-edit-group-box\">\n <edit-shape-box\n :key=\"groupData.id\"\n :data-id=\"groupData.id\"\n :index=\"groupIndex\"\n :item=\"groupData\"\n :hiddenPoint=\"true\"\n :class=\"animationsClass(groupData.styles.animations)\"\n :style=\"{\n ...useComponentStyle(groupData.attr, groupIndex),\n ...useSizeStyle(groupData.attr),\n ...getFilterStyle(groupData.styles),\n ...getTransformStyle(groupData.styles),\n ...getBlendModeStyle(groupData.styles) as any\n }\"\n @click=\"mouseClickHandle($event, groupData)\"\n @mousedown=\"mousedownHandle($event, groupData)\"\n @mouseenter=\"mouseenterHandle($event, groupData)\"\n @mouseleave=\"mouseleaveHandle($event, groupData)\"\n @contextmenu=\"handleContextMenu($event, groupData, optionsHandle)\"\n >\n <!-- 组合组件 -->\n <edit-shape-box\n v-for=\"item in groupData.groupList\"\n :key=\"item.id\"\n :data-id=\"item.id\"\n :index=\"groupIndex\"\n :item=\"item\"\n :hiddenPoint=\"true\"\n :style=\"{\n ...useComponentStyle(item.attr, groupIndex)\n }\"\n >\n <component\n class=\"edit-content-chart\"\n :class=\"animationsClass(item.styles.animations)\"\n :is=\"item.chartConfig.chartKey\"\n :chartConfig=\"item\"\n :themeSetting=\"themeSetting\"\n :themeColor=\"themeColor\"\n :style=\"{\n ...useSizeStyle(item.attr),\n ...getFilterStyle(item.styles),\n ...getTransformStyle(item.styles)\n }\"\n ></component>\n </edit-shape-box>\n </edit-shape-box>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, PropType } from 'vue'\nimport { MenuEnum } from '@core/enums/editPageEnum'\nimport { chartColors } from '@core/settings/chartThemes/index'\nimport { CreateComponentType, CreateComponentGroupType } from '@core/packages/index.d'\nimport { MenuOptionsItemType } from '@core/views/chart/hooks/useContextMenu.hook.d'\nimport { animationsClass, getFilterStyle, getTransformStyle, getBlendModeStyle, colorCustomMerge } from '@core/utils'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { useContextMenu, divider } from '@core/views/chart/hooks/useContextMenu.hook'\nimport { useMouseHandle } from '../../hooks/useDrag.hook'\nimport { useComponentStyle, useSizeStyle } from '../../hooks/useStyle.hook'\nimport { EditShapeBox } from '../../components/EditShapeBox'\n\nconst props = defineProps({\n groupData: {\n type: Object as PropType<CreateComponentGroupType>,\n required: true\n },\n groupIndex: {\n type: Number,\n required: true\n }\n})\n\nconst chartEditStore = useChartEditStore()\nconst { handleContextMenu } = useContextMenu()\n\n// 点击事件\nconst { mouseenterHandle, mouseleaveHandle, mousedownHandle, mouseClickHandle } = useMouseHandle()\n\n// 右键\nconst optionsHandle = (\n targetList: MenuOptionsItemType[],\n allList: MenuOptionsItemType[],\n targetInstance: CreateComponentType\n) => {\n const filter = (menulist: MenuEnum[]) => {\n return allList.filter(i => menulist.includes(i.key as MenuEnum))\n }\n\n // 多选处理\n if (chartEditStore.getTargetChart.selectId.length > 1) {\n return filter([MenuEnum.GROUP, MenuEnum.DELETE])\n } else {\n const statusMenuEnums: MenuEnum[] = []\n if (targetInstance.status.lock) {\n statusMenuEnums.push(MenuEnum.LOCK)\n } else {\n statusMenuEnums.push(MenuEnum.UNLOCK)\n }\n if (targetInstance.status.hide) {\n statusMenuEnums.push(MenuEnum.HIDE)\n } else {\n statusMenuEnums.push(MenuEnum.SHOW)\n }\n // 单选\n const singleMenuEnums = [MenuEnum.UN_GROUP]\n return [\n ...filter(singleMenuEnums),\n divider(),\n ...targetList.filter(i => !statusMenuEnums.includes(i.key as MenuEnum))\n ]\n }\n}\n\n// 配置项\nconst themeColor = computed(() => {\n const colorCustomMergeData = colorCustomMerge(chartEditStore.getEditCanvasConfig.chartCustomThemeColorInfo)\n return colorCustomMergeData[chartEditStore.getEditCanvasConfig.chartThemeColor]\n})\n\n// 主题色\nconst themeSetting = computed(() => {\n const chartThemeSetting = chartEditStore.getEditCanvasConfig.chartThemeSetting\n return chartThemeSetting\n})\n</script>\n","<template>\n <div class=\"go-edit-align-line\">\n <div\n class=\"line\"\n v-for=\"item in line.lineArr\"\n :key=\"item\"\n :class=\"[item.includes('row') ? 'row' : 'col', line['select'].has(item) && 'visible']\"\n :style=\"useComponentStyle(line['select'].get(item))\"\n ></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { reactive, computed, watch } from 'vue'\nimport { useDesignStore } from '@core/store/modules/designStore/designStore'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { EditCanvasTypeEnum } from '@core/store/modules/chartEditStore/chartEditStore.d'\nimport { useSettingStore } from '@core/store/modules/settingStore/settingStore'\nimport { CreateComponentType, CreateComponentGroupType } from '@core/packages/index.d'\nimport { setComponentPosition } from '@core/utils'\nimport throttle from 'lodash/throttle'\nimport cloneDeep from 'lodash/cloneDeep'\n// 全局颜色\nconst designStore = useDesignStore()\n\nconst chartEditStore = useChartEditStore()\nconst settingStore = useSettingStore()\n\n// * 线条集合\nconst line = reactive({\n // 行横向row(上中下),列竖线col(左中右)\n lineArr: ['rowt', 'rowc', 'rowb', 'coll', 'colc', 'colr'],\n // 展示线\n select: new Map(),\n // 已经吸附\n sorptioned: {\n x: false,\n y: false\n }\n})\n\n// * 位置计算\nconst useComponentStyle = (attr?: Partial<{ x: number; y: number }>) => {\n if (!attr) return {}\n const componentStyle = {\n left: `${attr.x ? attr.x : 0}px`,\n top: `${attr.y ? attr.y : 0}px`\n }\n return componentStyle\n}\n\n// 颜色\nconst themeColor = computed(() => {\n return designStore.getAppTheme\n})\n\n// * 吸附距离\nconst minDistance = computed(() => {\n return settingStore.getChartAlignRange\n})\n\n// * 是否开始计算\nconst isComputedLine = computed(() => {\n // IS_DRAG 移动时为 true,Drag Hook里设置\n const isDrag = chartEditStore.getEditCanvas[EditCanvasTypeEnum.IS_DRAG]\n return isDrag\n})\n\n// * 吸附判定\nconst isSorption = (selectValue: number, componentValue: number) => {\n const isSorption = Math.abs(selectValue - componentValue) <= minDistance.value\n return isSorption\n}\n\n// * 当前目标\nconst selectId = computed(() => chartEditStore.getTargetChart.selectId)\nconst selectTarget = computed(() => chartEditStore.getComponentList[chartEditStore.fetchTargetIndex()])\nconst selectAttr = computed(() => selectTarget.value?.attr || {})\n\n// * 画布坐标\nconst canvasPositionList = computed(() => {\n return {\n id: '0',\n attr: {\n w: cloneDeep(chartEditStore.getEditCanvasConfig.width),\n h: cloneDeep(chartEditStore.getEditCanvasConfig.height),\n x: 0,\n y: 0,\n offsetX: 0,\n offsetY: 0,\n zIndex: 0\n }\n }\n})\n\n// * 监听鼠标移动\nwatch(\n () => chartEditStore.getMousePosition,\n throttle(() => {\n try {\n if (!isComputedLine.value || selectId.value.length !== 1) return\n // 获取目标组件数据\n\n const selectW = selectAttr.value.w\n const selectH = selectAttr.value.h\n\n // 距离左侧\n const selectLeftX = selectAttr.value.x\n const selectHalfX = selectLeftX + selectW / 2\n const selectRightX = selectLeftX + selectW\n const seletX = [selectLeftX, selectHalfX, selectRightX]\n\n // 距离顶部\n const selectTopY = selectAttr.value.y\n const selectHalfY = selectTopY + selectH / 2\n const selectBottomY = selectTopY + selectH\n const selectY = [selectTopY, selectHalfY, selectBottomY]\n\n line.select.clear()\n line.sorptioned.y = false\n // 循环查询所有组件数据\n const componentList = chartEditStore.getComponentList.map((e: CreateComponentType | CreateComponentGroupType) => {\n return {\n id: e.id,\n attr: e.attr\n }\n })\n componentList.push(canvasPositionList.value)\n // 传入画布数据\n line.lineArr.forEach(lineItem => {\n componentList.forEach((component: typeof canvasPositionList.value) => {\n // 排除自身\n if (selectId.value[0] === component.id) return\n const componentW = component.attr.w\n const componentH = component.attr.h\n\n // 距离左侧\n const componentLeftX = component.attr.x\n const componentHalfX = componentLeftX + componentW / 2\n const componentRightX = componentLeftX + componentW\n const componentX = [componentLeftX, componentHalfX, componentRightX]\n\n // 距离顶部\n const componentTopY = component.attr.y\n const componentHalfY = componentTopY + componentH / 2\n const componentBottomY = componentTopY + componentH\n const componentY = [componentTopY, componentHalfY, componentBottomY]\n\n // 横线对比的是 Y\n if (lineItem.includes('rowt')) {\n // 顶部\n if (isSorption(selectTopY, componentTopY)) {\n line.select.set(lineItem, { y: componentTopY })\n setComponentPosition(selectTarget.value, selectLeftX, componentTopY)\n }\n if (isSorption(selectTopY, componentHalfY)) {\n line.select.set(lineItem, { y: componentHalfY })\n setComponentPosition(selectTarget.value, selectLeftX, componentHalfY)\n }\n if (isSorption(selectTopY, componentBottomY)) {\n line.select.set(lineItem, { y: componentBottomY })\n setComponentPosition(selectTarget.value, selectLeftX, componentBottomY)\n }\n }\n if (lineItem.includes('rowc')) {\n // 顶部\n if (isSorption(selectHalfY, componentTopY)) {\n line.select.set(lineItem, { y: componentTopY })\n setComponentPosition(selectTarget.value, selectLeftX, componentTopY - selectH / 2)\n }\n if (isSorption(selectHalfY, componentHalfY)) {\n line.select.set(lineItem, { y: componentHalfY })\n setComponentPosition(selectTarget.value, selectLeftX, componentHalfY - selectH / 2)\n }\n if (isSorption(selectHalfY, componentBottomY)) {\n line.select.set(lineItem, { y: componentBottomY })\n setComponentPosition(selectTarget.value, selectLeftX, componentBottomY - selectH / 2)\n }\n }\n if (lineItem.includes('rowb')) {\n // 顶部\n if (isSorption(selectBottomY, componentTopY)) {\n line.select.set(lineItem, { y: componentTopY })\n setComponentPosition(selectTarget.value, selectLeftX, componentTopY - selectH)\n }\n if (isSorption(selectBottomY, componentHalfY)) {\n line.select.set(lineItem, { y: componentHalfY })\n setComponentPosition(selectTarget.value, selectLeftX, componentHalfY - selectH)\n }\n if (isSorption(selectBottomY, componentBottomY)) {\n line.select.set(lineItem, { y: componentBottomY })\n setComponentPosition(selectTarget.value, selectLeftX, componentBottomY - selectH)\n }\n }\n\n // 纵线对比的是 X\n if (lineItem.includes('coll')) {\n if (isSorption(selectLeftX, componentLeftX)) {\n line.select.set(lineItem, { x: componentLeftX })\n setComponentPosition(selectTarget.value, componentLeftX, selectTopY)\n }\n if (isSorption(selectLeftX, componentHalfX)) {\n line.select.set(lineItem, { x: componentHalfX })\n setComponentPosition(selectTarget.value, componentHalfX, selectTopY)\n }\n if (isSorption(selectLeftX, componentRightX)) {\n line.select.set(lineItem, { x: componentRightX })\n setComponentPosition(selectTarget.value, componentRightX, selectTopY)\n }\n }\n if (lineItem.includes('colc')) {\n if (isSorption(selectHalfX, componentLeftX)) {\n line.select.set(lineItem, { x: componentLeftX })\n setComponentPosition(selectTarget.value, componentLeftX - selectW / 2, selectTopY)\n }\n if (isSorption(selectHalfX, componentHalfX)) {\n line.select.set(lineItem, { x: componentHalfX })\n setComponentPosition(selectTarget.value, componentHalfX - selectW / 2, selectTopY)\n }\n if (isSorption(selectHalfX, componentRightX)) {\n line.select.set(lineItem, { x: componentRightX })\n setComponentPosition(selectTarget.value, componentRightX - selectW / 2, selectTopY)\n }\n }\n if (lineItem.includes('colr')) {\n if (isSorption(selectRightX, componentLeftX)) {\n line.select.set(lineItem, { x: componentLeftX })\n setComponentPosition(selectTarget.value, componentLeftX - selectW, selectTopY)\n }\n if (isSorption(selectRightX, componentHalfX)) {\n line.select.set(lineItem, { x: componentHalfX })\n setComponentPosition(selectTarget.value, componentHalfX - selectW, selectTopY)\n }\n if (isSorption(selectRightX, componentRightX)) {\n line.select.set(lineItem, { x: componentRightX })\n setComponentPosition(selectTarget.value, componentRightX - selectW, selectTopY)\n }\n }\n })\n })\n } catch (err) {\n console.log(err)\n }\n }, 200),\n {\n deep: true\n }\n)\n\n// * 取消对齐线\nwatch(\n () => isComputedLine.value,\n (val: boolean) => {\n if (!val) {\n line.select.clear()\n line.sorptioned.y = false\n }\n }\n)\n</script>\n\n<style lang=\"scss\" scoped>\n@include go(edit-align-line) {\n .line {\n z-index: 1;\n position: absolute;\n top: 0;\n left: 0;\n display: none;\n border-width: 1px;\n border-style: solid;\n border-color: v-bind('themeColor');\n opacity: 0.7;\n &.visible {\n display: block;\n }\n }\n .row {\n width: 100%;\n }\n .col {\n height: 100%;\n }\n}\n</style>\n","<template>\n <el-watermark\n id=\"go-edit-watermark\"\n :content=\"watermarkText\"\n :font=\"{ fontSize: 16 }\"\n :width=\"500\"\n :height=\"150\"\n :offset=\"[12, 80]\"\n :rotate=\"-15\"\n ></el-watermark>\n</template>\n\n<script setup lang=\"ts\">\nimport { watermarkText } from '@core/settings/designSetting'\n</script>\n\n<style lang=\"scss\" scoped>\n#go-edit-watermark {\n display: none;\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n}\n</style>","<template>\n <div class=\"go-edit-select\" v-if=\"isSelect\" :style=\"positionStyle\">\n <div class=\"select-background\"></div>\n <div class=\"select-border\"></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs, watch, computed } from 'vue'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { useDesignStore } from '@core/store/modules/designStore/designStore'\nimport { useSizeStyle, useComponentStyle } from '../../hooks/useStyle.hook'\nimport { selectBoxIndex } from '@core/settings/designSetting'\n\n// 全局颜色\nconst designStore = useDesignStore()\nconst chartEditStore = useChartEditStore()\nconst { isSelect, scale } = toRefs(chartEditStore.getEditCanvas)\n\nconst themeColor = computed(() => {\n return designStore.getAppTheme\n})\n\n// 位置\nconst positionStyle = ref()\n\nwatch(\n () => chartEditStore.getMousePosition,\n positionInfo => {\n if (!isSelect.value) return\n\n // 这里的 x,y 是已经计算过的相对位移值\n const { startX, startY, x, y } = positionInfo\n\n const attr = {\n zIndex: selectBoxIndex,\n // left\n x: 0,\n // top\n y: 0,\n // 宽\n w: 0,\n // 高\n h: 0,\n // 偏移\n offsetX: 0,\n offsetY: 0\n }\n\n // 处理位置\n if (x > startX && y > startY) {\n // 右下方向\n attr.x = startX\n attr.y = startY\n attr.w = Math.round((x - startX) / scale.value)\n attr.h = Math.round((y - startY) / scale.value)\n } else if (x > startX && y < startY) {\n // 右上方向\n attr.x = startX\n attr.w = Math.round((x - startX) / scale.value)\n attr.h = Math.round((startY - y) / scale.value)\n attr.y = startY - attr.h\n } else if (x < startX && y > startY) {\n // 左下方向\n attr.y = startY\n attr.w = Math.round((startX - x) / scale.value)\n attr.h = Math.round((y - startY) / scale.value)\n attr.x = startX - attr.w\n } else {\n // 左上方向\n attr.w = Math.round((startX - x) / scale.value)\n attr.h = Math.round((startY - y) / scale.value)\n attr.x = startX - attr.w\n attr.y = startY - attr.h\n }\n\n positionStyle.value = {\n ...useComponentStyle(attr, selectBoxIndex),\n ...useSizeStyle(attr)\n }\n },\n {\n deep: true\n }\n)\n</script>\n\n<style lang=\"scss\" scoped>\n@include go('edit-select') {\n position: absolute;\n .select-border,\n .select-background {\n position: absolute;\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n .select-border {\n left: 0;\n top: 0;\n opacity: 1;\n border-width: 1px;\n border-style: solid;\n border-color: v-bind('themeColor');\n }\n .select-background {\n top: 2px;\n left: 2px;\n opacity: 0.08;\n background-color: v-bind('themeColor');\n }\n}\n</style>\n","<template>\n <div class=\"go-edit-range go-transition\" :style=\"rangeStyle\" @mousedown=\"mousedownBoxSelect($event, undefined)\">\n <slot></slot>\n <!-- 水印 -->\n <edit-watermark></edit-watermark>\n <!-- 拖拽时的辅助线 -->\n <edit-align-line></edit-align-line>\n <!-- 框选时的样式框 -->\n <edit-select></edit-select>\n <!-- 拖拽时的遮罩 -->\n <div class=\"go-edit-range-model\" :style=\"rangeModelStyle\"></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { toRefs, computed } from 'vue'\nimport { useSizeStyle } from '../../hooks/useStyle.hook'\nimport { canvasModelIndex } from '@core/settings/designSetting'\nimport { mousedownBoxSelect } from '../../hooks/useDrag.hook'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { EditAlignLine } from '../EditAlignLine'\nimport { EditWatermark } from '../EditWatermark'\nimport { EditSelect } from '../EditSelect'\n\nconst chartEditStore = useChartEditStore()\n\nconst { getEditCanvasConfig, getEditCanvas } = toRefs(chartEditStore)\n\nconst size = computed(() => {\n return {\n w: getEditCanvasConfig.value.width,\n h: getEditCanvasConfig.value.height\n }\n})\n\nconst rangeStyle = computed(() => {\n // 缩放\n const scale = {\n transform: `scale(${getEditCanvas.value.scale})`\n }\n // @ts-ignore\n return { ...useSizeStyle(size.value), ...scale }\n})\n\n// 模态层\nconst rangeModelStyle = computed(() => {\n const dragStyle = getEditCanvas.value.isCreate && { 'z-index': 99999 }\n // @ts-ignore\n return { ...useSizeStyle(size.value), ...dragStyle }\n})\n</script>\n\n<style lang=\"scss\" scoped>\n@include go(edit-range) {\n position: relative;\n transform-origin: left top;\n background-size: cover;\n overflow: hidden;\n @include fetch-border-color('hover-border-color');\n @include fetch-bg-color('background-color2');\n @include go(edit-range-model) {\n z-index: -1;\n position: absolute;\n left: 0;\n top: 0;\n }\n}\n</style>\n","<template>\n <div class=\"go-sketch-rule\">\n <sketch-rule\n v-if=\"sketchRuleReDraw\"\n :thick=\"thick\"\n :scale=\"scale\"\n :width=\"canvasBox().width\"\n :height=\"canvasBox().height\"\n :startX=\"startX\"\n :startY=\"startY\"\n :lines=\"lines\"\n :palette=\"paletteStyle\"\n >\n </sketch-rule>\n <div ref=\"$app\" class=\"edit-screens\" @scroll=\"handleScroll\">\n <div ref=\"$container\" class=\"edit-screen-container\" :style=\"{ width: containerWidth }\">\n <div\n ref=\"refSketchRuleBox\"\n class=\"canvas\"\n @mousedown=\"dragCanvas\"\n :style=\"{ marginLeft: '-' + (canvasBox().width / 2 - 25) + 'px' }\"\n >\n <div :style=\"{ pointerEvents: isPressSpace ? 'none' : 'auto' }\">\n <slot></slot>\n </div>\n </div>\n </div>\n </div>\n <!-- 修复右下角白点用的 -->\n <!-- <div v-if=\"designStore.getDarkTheme\" class=\"fix-edit-screens-block\"></div> -->\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { ref, reactive, onMounted, toRefs, watch, onUnmounted, computed } from 'vue'\nimport { useDesignStore } from '@core/store/modules/designStore/designStore'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { useChartLayoutStore } from '@core/store/modules/chartLayoutStore/chartLayoutStore'\nimport { ChartLayoutStoreEnum } from '@core/store/modules/chartLayoutStore/chartLayoutStore.d'\nimport throttle from 'lodash/throttle'\n\nconst chartEditStore = useChartEditStore()\nconst chartLayoutStore = useChartLayoutStore()\nconst designStore = useDesignStore()\n\nconst thick = 20\nlet prevMoveXValue = [0, 0]\nlet prevMoveYValue = [0, 0]\n\nconst $app = ref()\nconst sketchRuleReDraw = ref(true)\nconst refSketchRuleBox = ref()\nconst $container = ref()\nconst isPressSpace = ref(false)\nconst cursorStyle = ref('auto')\nconst { width, height } = toRefs(chartEditStore.getEditCanvasConfig)\nconst startX = ref(0)\nconst startY = ref(0)\nconst lines = reactive({ h: [], v: [] })\n\nconst scale = computed(() => {\n return chartEditStore.getEditCanvas.scale\n})\n\n// 画布尺寸(响应式)\nconst canvasBoxWidth = ref(800)\nconst canvasBoxHeight = ref(600)\n\n// 更新画布尺寸\nconst updateCanvasBoxSize = () => {\n const layoutDom = document.getElementById('go-chart-edit-layout')\n if (layoutDom) {\n const scrollW = 20\n const w = layoutDom.clientWidth - scrollW\n const h = layoutDom.clientHeight - scrollW\n if (w > 0 && h > 0) {\n canvasBoxWidth.value = w\n canvasBoxHeight.value = h\n }\n }\n}\n\n// 滚动条拖动的宽度\nconst containerWidth = computed(() => {\n return `${window.innerWidth * 2}px`\n})\n\n// 滚动条拖动的高度\nconst containerHeight = computed(() => {\n const h = height.value || 600\n return `${Math.max(h * 2, 1200)}px`\n})\n\n// 主题\nconst paletteStyle = computed(() => {\n const isDarkTheme = designStore.getDarkTheme\n return isDarkTheme\n ? {\n bgColor: '#18181c',\n longfgColor: '#4d4d4d',\n shortfgColor: '#4d4d4d',\n fontColor: '#4d4d4d',\n shadowColor: '#18181c',\n borderColor: '#18181c',\n cornerActiveColor: '#18181c'\n }\n : {}\n})\n\n// 颜色\nconst themeColor = computed(() => {\n return designStore.getAppTheme\n})\n\n// 处理鼠标拖动\nconst handleWheel = (e: any) => {\n if (e.ctrlKey || e.metaKey) {\n e.preventDefault()\n let resScale = scale.value\n // 放大(200%)\n if (e.wheelDelta >= 0 && scale.value < 2) {\n resScale = scale.value + 0.05\n chartEditStore.setScale(resScale)\n return\n }\n // 缩小(10%)\n if (e.wheelDelta < 0 && scale.value > 0.1) {\n resScale = scale.value - 0.05\n chartEditStore.setScale(resScale)\n }\n }\n}\n\n// 滚动条处理\nconst handleScroll = () => {\n if (!$app.value) return\n const screensRect = $app.value.getBoundingClientRect()\n const canvasRect = refSketchRuleBox.value.getBoundingClientRect()\n // 标尺开始的刻度\n startX.value = (screensRect.left + thick - canvasRect.left) / scale.value\n startY.value = (screensRect.top + thick - canvasRect.top) / scale.value\n}\n\n// 拖拽处理\nconst dragCanvas = (e: any) => {\n e.preventDefault()\n e.stopPropagation()\n\n if (e.which == 2) isPressSpace.value = true\n else if (!window.$KeyboardActive?.space) return\n // @ts-ignore\n document.activeElement?.blur()\n\n const startX = e.pageX\n const startY = e.pageY\n\n const handleMousemove = (e: MouseEvent) => {\n const nx = e.pageX - startX\n const ny = e.pageY - startY\n\n const [prevMoveX1, prevMoveX2] = prevMoveXValue\n const [prevMoveY1, prevMoveY2] = prevMoveYValue\n\n prevMoveXValue = [prevMoveX2, nx]\n prevMoveYValue = [prevMoveY2, ny]\n\n $app.value.scrollLeft -=\n prevMoveX2 > prevMoveX1 ? Math.abs(prevMoveX2 - prevMoveX1) : -Math.abs(prevMoveX2 - prevMoveX1)\n $app.value.scrollTop -=\n prevMoveY2 > prevMoveY1 ? Math.abs(prevMoveY2 - prevMoveY1) : -Math.abs(prevMoveY2 - prevMoveY1)\n }\n\n const handleMouseup = () => {\n window.removeEventListener('mousemove', handleMousemove)\n window.removeEventListener('mouseup', handleMouseup)\n prevMoveXValue = [0, 0]\n prevMoveYValue = [0, 0]\n isPressSpace.value = false\n }\n\n window.addEventListener('mousemove', handleMousemove)\n window.addEventListener('mouseup', handleMouseup)\n}\n\n// 计算画布大小\nconst canvasBox = () => {\n return {\n width: canvasBoxWidth.value,\n height: canvasBoxHeight.value\n }\n}\n\n// 重绘标尺\nconst reDraw = throttle(() => {\n updateCanvasBoxSize()\n sketchRuleReDraw.value = false\n setTimeout(() => {\n sketchRuleReDraw.value = true\n }, 10)\n},20)\n\n// 滚动居中\nconst canvasPosCenter = () => {\n const { width: containerWidth, height: containerHeight } = $container.value.getBoundingClientRect()\n const { width, height } = canvasBox()\n\n $app.value.scrollLeft = containerWidth / 2 - width / 2\n $app.value.scrollTop = containerHeight / 2 - height / 2\n}\n\n// 处理主题变化\nwatch(\n () => designStore.getDarkTheme,\n () => {\n reDraw()\n }\n)\n\n// // 处理标尺重制大小\nwatch(\n () => scale.value,\n (newValue, oldValue) => {\n if (oldValue !== newValue && chartLayoutStore.getRePositionCanvas) {\n chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.RE_POSITION_CANVAS, false)\n }\n handleScroll()\n setTimeout(() => {\n canvasPosCenter()\n reDraw()\n }, 400)\n }\n)\n\n// 处理鼠标样式\nwatch(\n () => isPressSpace.value,\n newValue => {\n cursorStyle.value = newValue ? 'grab' : 'auto'\n }\n)\n\n// 处理窗口 resize 事件\nconst handleResize = throttle(() => {\n reDraw()\n}, 100)\n\nonMounted(() => {\n if ($app.value) {\n $app.value.addEventListener('wheel', handleWheel, { passive: false })\n // 初始化时先隐藏标尺,等 DOM 渲染完成后再显示\n sketchRuleReDraw.value = false\n // 延迟执行,确保 DOM 完全渲染后再计算尺寸\n setTimeout(() => {\n updateCanvasBoxSize()\n canvasPosCenter()\n sketchRuleReDraw.value = true\n }, 200)\n }\n // 监听窗口 resize 事件,用于作为组件库使用时的尺寸更新\n window.addEventListener('resize', handleResize)\n})\n\nonUnmounted(() => {\n if ($app.value) {\n $app.value.removeEventListener('wheel', handleWheel)\n }\n window.removeEventListener('resize', handleResize)\n})\n\nwindow.onKeySpacePressHold = (isHold: boolean) => {\n isPressSpace.value = isHold\n}\n</script>\n\n<style>\n/* 使用 SCSS 会报错,直接使用最基础的 CSS 进行修改,\n此库有计划 Vue3 版本,但是开发的时候还没发布 */\n#mb-ruler {\n top: 0;\n left: 0;\n}\n\n/* 横线 */\n#mb-ruler .v-container .lines .line {\n /* 最大缩放 200% */\n width: 200vw !important;\n border-top: 1px dashed v-bind('themeColor') !important;\n}\n\n#mb-ruler .v-container .indicator {\n border-bottom: 1px dashed v-bind('themeColor') !important;\n}\n\n/* 竖线 */\n#mb-ruler .h-container .lines .line {\n /* 最大缩放 200% */\n height: 200vh !important;\n border-left: 1px dashed v-bind('themeColor') !important;\n}\n\n#mb-ruler .h-container .indicator {\n border-left: 1px dashed v-bind('themeColor') !important;\n}\n\n/* 坐标数值背景颜色 */\n#mb-ruler .indicator .value {\n background-color: rgba(0, 0, 0, 0);\n}\n\n/* 删除按钮 */\n#mb-ruler .line .del {\n padding: 0;\n color: v-bind('themeColor');\n font-size: 26px;\n font-weight: bolder;\n}\n\n#mb-ruler .corner {\n border-width: 0 !important;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n@include go('sketch-rule') {\n overflow: hidden;\n width: 100%;\n height: 100%;\n\n .edit-screens {\n position: absolute;\n width: 100%;\n height: 100%;\n overflow: auto;\n user-select: none;\n padding-bottom: 0px;\n\n /* firefox */\n scrollbar-color: rgba(144, 146, 152, 0.3) transparent;\n scrollbar-width: thin;\n\n /* chrome */\n &::-webkit-scrollbar,\n &::-webkit-scrollbar-track-piece {\n background-color: transparent;\n }\n\n &::-webkit-scrollbar {\n width: 7px;\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 5px;\n background-color: rgba(144, 146, 152, 0.3);\n }\n // 修复右下角白点用的\n &::-webkit-scrollbar-corner {\n background-color: transparent;\n }\n }\n\n .fix-edit-screens-block {\n position: absolute;\n bottom: 0;\n right: 0;\n width: 10px;\n height: 10px;\n background-color: $--color-dark-bg-1;\n }\n\n .edit-screen-container {\n position: absolute;\n height: v-bind('containerHeight');\n top: 0;\n left: 0;\n }\n\n .canvas {\n position: absolute;\n top:50%;\n left: 50%;\n transform-origin: 50% 0;\n transform: translateY(-50%);\n\n &:hover {\n cursor: v-bind('cursorStyle');\n }\n\n &:active {\n cursor: crosshair;\n }\n }\n}\n</style>\n","import { HistoryTargetTypeEnum, HistoryActionTypeEnum } from './chartHistoryStore.d'\n\nexport const historyActionTypeName = {\n [HistoryActionTypeEnum.ADD]: '新增',\n [HistoryActionTypeEnum.DELETE]: '删除',\n [HistoryActionTypeEnum.UPDATE]: '更新',\n [HistoryActionTypeEnum.MOVE]: '移动',\n [HistoryActionTypeEnum.PASTE]: '粘贴',\n [HistoryActionTypeEnum.COPY]: '复制',\n [HistoryActionTypeEnum.CUT]: '剪切',\n [HistoryActionTypeEnum.TOP]: '置顶',\n [HistoryActionTypeEnum.BOTTOM]: '置底',\n [HistoryActionTypeEnum.UP]: '上移',\n [HistoryActionTypeEnum.DOWN]: '下移',\n [HistoryActionTypeEnum.GROUP]: '成组',\n [HistoryActionTypeEnum.UN_GROUP]: '解组',\n [HistoryActionTypeEnum.LOCK]: '锁定',\n [HistoryActionTypeEnum.UNLOCK]: '解锁',\n [HistoryActionTypeEnum.HIDE]: '隐藏',\n [HistoryActionTypeEnum.SHOW]: '显示',\n\n [HistoryTargetTypeEnum.CANVAS]: '画布初始化'\n}\n","<template>\n <div class=\"go-flex-items-center edit-history-wrapper\">\n <el-popover \n :show-arrow=\"false\" \n trigger=\"click\" \n placement=\"top-start\"\n :width=\"280\"\n :teleported=\"true\"\n popper-class=\"edit-history-popover\"\n >\n <template #reference>\n <el-button class=\"mr-10\" size=\"small\" :disabled=\"options.length === 0\">\n <span class=\"btn-text\">历史记录</span>\n </el-button>\n </template>\n\n <template #default>\n <div class=\"history-list-box\" v-if=\"options.length > 0\">\n <el-scrollbar max-height=\"400px\">\n <div\n class=\"list-item go-flex-items-center\"\n v-for=\"(item, index) in options\"\n :key=\"index\"\n :title=\"item.label\"\n >\n <el-icon class=\"item-icon\" :size=\"16\">\n <component :is=\"item.icon\" />\n </el-icon>\n <span class=\"item-label\">{{ item.label }}</span>\n </div>\n </el-scrollbar>\n </div>\n <div v-else class=\"empty-tip\">暂无历史记录</div>\n </template>\n </el-popover>\n\n <el-tooltip :content=\"`最多只保留${editHistoryMax}条记录`\" placement=\"top\">\n <el-icon :size=\"21\" class=\"help-icon\">\n <help-outline-icon></help-outline-icon>\n </el-icon>\n </el-tooltip>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport { icon } from '@core/plugins'\nimport { useChartHistoryStore } from '@core/store/modules/chartHistoryStore/chartHistoryStore'\nimport { historyActionTypeName } from '@core/store/modules/chartHistoryStore/chartHistoryDefine'\nimport { CreateComponentType } from '@core/packages/index.d'\nimport { editHistoryMax } from '@core/settings/designSetting'\nimport reverse from 'lodash/reverse'\nimport {\n HistoryItemType,\n HistoryTargetTypeEnum,\n HistoryActionTypeEnum\n} from '@core/store/modules/chartHistoryStore/chartHistoryStore.d'\n\nconst {\n DesktopOutlineIcon,\n PencilIcon,\n TrashIcon,\n CopyIcon,\n LayersIcon,\n DuplicateIcon,\n HelpOutlineIcon,\n LockClosedOutlineIcon,\n LockOpenOutlineIcon,\n EyeOffOutlineIcon,\n EyeOutlineIcon\n} = icon.ionicons5\nconst { StackedMoveIcon, Carbon3DCursorIcon, Carbon3DSoftwareIcon } = icon.carbon\n\nconst chartHistoryStoreStore = useChartHistoryStore()\n\n// 设置类型对应图标\nconst iconHandle = (e: HistoryItemType) => {\n // 画布编辑\n if (e.targetType === HistoryTargetTypeEnum.CANVAS) {\n return DesktopOutlineIcon\n }\n switch (e.actionType) {\n case HistoryActionTypeEnum.UPDATE:\n return PencilIcon\n case HistoryActionTypeEnum.DELETE:\n return TrashIcon\n case HistoryActionTypeEnum.PASTE:\n return CopyIcon\n case HistoryActionTypeEnum.TOP:\n return LayersIcon\n case HistoryActionTypeEnum.BOTTOM:\n return LayersIcon\n case HistoryActionTypeEnum.UP:\n return LayersIcon\n case HistoryActionTypeEnum.DOWN:\n return LayersIcon\n case HistoryActionTypeEnum.MOVE:\n return StackedMoveIcon\n case HistoryActionTypeEnum.ADD:\n return DuplicateIcon\n case HistoryActionTypeEnum.GROUP:\n return Carbon3DCursorIcon\n case HistoryActionTypeEnum.UN_GROUP:\n return Carbon3DSoftwareIcon\n case HistoryActionTypeEnum.LOCK:\n return LockClosedOutlineIcon\n case HistoryActionTypeEnum.UNLOCK:\n return LockOpenOutlineIcon\n case HistoryActionTypeEnum.HIDE:\n return EyeOffOutlineIcon\n case HistoryActionTypeEnum.SHOW:\n return EyeOutlineIcon\n default:\n return PencilIcon\n }\n}\n\n// 设置类型对应文本\nconst labelHandle = (e: HistoryItemType) => {\n // 画布编辑\n if (e.targetType === HistoryTargetTypeEnum.CANVAS) {\n return historyActionTypeName[HistoryTargetTypeEnum.CANVAS]\n } else if (e.actionType === HistoryActionTypeEnum.GROUP || e.actionType === HistoryActionTypeEnum.UN_GROUP) {\n return `${historyActionTypeName[e.actionType]}`\n } else if (e.historyData.length) {\n return `${historyActionTypeName[e.actionType]} - ${(e.historyData[0] as CreateComponentType).chartConfig.title}`\n }\n}\n\nconst options = computed(() => {\n const backStack: HistoryItemType[] = chartHistoryStoreStore.getBackStack\n const opts = backStack.map((e: HistoryItemType) => {\n return {\n label: labelHandle(e),\n icon: iconHandle(e)\n }\n })\n\n return reverse(opts.filter(item => item.label))\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.edit-history-wrapper {\n position: relative;\n z-index: 10;\n}\n.mr-10 {\n margin-right: 10px;\n}\n.btn-text {\n font-size: 12px;\n}\n.help-icon {\n color: var(--el-text-color-secondary);\n cursor: help;\n}\n</style>\n\n<style lang=\"scss\">\n.edit-history-popover {\n z-index: 9999 !important;\n \n .history-list-box {\n .list-item {\n padding: 8px 6px;\n border-radius: 4px;\n cursor: default;\n transition: background 0.2s;\n \n &:hover {\n background: var(--el-fill-color-light);\n }\n \n .item-icon {\n margin-right: 10px;\n color: var(--el-text-color-secondary);\n flex-shrink: 0;\n }\n \n .item-label {\n color: var(--el-text-color-regular);\n font-size: 13px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n }\n \n .empty-tip {\n color: var(--el-text-color-secondary);\n text-align: center;\n padding: 20px;\n }\n}\n</style>\n","<template>\n <el-dialog v-model=\"modelShowRef\" :close-on-click-modal=\"true\" :show-close=\"false\" width=\"50vw\" @closed=\"closeHandle\">\n <el-table class=\"model-content\" :data=\"shortcutKeyOptions\" :border=\"false\" stripe>\n <el-table-column prop=\"label\" label=\"功能\" />\n <el-table-column prop=\"win\" label=\"Win 快捷键\" />\n <el-table-column label=\"Mac 快捷键\">\n <template #header>\n <div style=\"display: flex; justify-content: space-between; align-items: center;\">\n <span>Mac 快捷键</span>\n <el-icon :size=\"20\" class=\"go-cursor-pointer\" @click=\"closeHandle\">\n <close-icon></close-icon>\n </el-icon>\n </div>\n </template>\n <template #default=\"{ row }\">\n <span v-if=\"row.macSource\">{{ row.mac }}</span>\n <span v-else>\n <span style=\"font-size: 22px; background: linear-gradient(90deg, var(--el-color-primary), var(--el-color-success)); -webkit-background-clip: text; -webkit-text-fill-color: transparent;\">{{ row.mac.substr(0, 1) }}</span>\n + {{ row.mac.substr(3) }}\n </span>\n </template>\n </el-table-column>\n </el-table>\n </el-dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { watch, ref } from 'vue'\nimport { icon } from '@core/plugins'\nimport { WinKeyboard, MacKeyboard } from '@core/enums/editPageEnum'\n\nconst { CloseIcon } = icon.ionicons5\nconst modelShowRef = ref(false)\n\nconst emit = defineEmits(['update:modelShow'])\n\nconst props = defineProps({\n modelShow: Boolean\n})\n\n\nwatch(() => props.modelShow, (newValue) => {\n modelShowRef.value = newValue\n})\n\n// 快捷键\nconst shortcutKeyOptions = [\n {\n label: '拖拽画布',\n win: `${WinKeyboard.SPACE.toUpperCase()} + 🖱️ `,\n mac: `${MacKeyboard.SPACE.toUpperCase()} + 🖱️ `,\n macSource: true\n },\n {\n label: '向 上/右/下/左 移动',\n win: `${WinKeyboard.CTRL.toUpperCase()} + ↑ 或 → 或 ↓ 或 ←`,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + ↑ `\n },\n {\n label: '锁定',\n win: `${WinKeyboard.CTRL.toUpperCase()} + L `,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + L `\n },\n {\n label: '解锁',\n win: `${WinKeyboard.CTRL.toUpperCase()} + ${WinKeyboard.SHIFT.toUpperCase()}+ L `,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + ${MacKeyboard.SHIFT.toUpperCase()} + L `\n },\n {\n label: '展示',\n win: `${WinKeyboard.CTRL.toUpperCase()} + H `,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + H `\n },\n {\n label: '隐藏',\n win: `${WinKeyboard.CTRL.toUpperCase()} + ${WinKeyboard.SHIFT.toUpperCase()} + H `,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + ${MacKeyboard.SHIFT.toUpperCase()} + H `\n },\n {\n label: '删除',\n win: 'Delete'.toUpperCase(),\n mac: `${MacKeyboard.CTRL.toUpperCase()} + Backspace `\n },\n {\n label: '复制',\n win: `${WinKeyboard.CTRL.toUpperCase()} + C `,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + C `\n },\n {\n label: '剪切',\n win: `${WinKeyboard.CTRL.toUpperCase()} + X `,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + X `\n },\n {\n label: '粘贴',\n win: `${WinKeyboard.CTRL.toUpperCase()} + V `,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + V `\n },\n {\n label: '后退',\n win: `${WinKeyboard.CTRL.toUpperCase()} + Z `,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + Z `\n },\n {\n label: '前进',\n win: `${WinKeyboard.CTRL.toUpperCase()} + ${WinKeyboard.SHIFT.toUpperCase()} + Z `,\n mac: `${MacKeyboard.CTRL.toUpperCase()} + ${MacKeyboard.SHIFT.toUpperCase()} + Z `\n },\n {\n label: '多选',\n win: `${WinKeyboard.CTRL.toUpperCase()} + 🖱️ `,\n mac: `${MacKeyboard.CTRL_SOURCE_KEY.toUpperCase()} + 🖱️ `\n },\n {\n label: '创建分组',\n win: `${WinKeyboard.CTRL.toUpperCase()} + G / 🖱️ `,\n mac: `${MacKeyboard.CTRL_SOURCE_KEY.toUpperCase()} + G / 🖱️`\n },\n {\n label: '解除分组',\n win: `${WinKeyboard.CTRL.toUpperCase()} + ${WinKeyboard.SHIFT.toUpperCase()} + G `,\n mac: `${MacKeyboard.CTRL_SOURCE_KEY.toUpperCase()} + ${WinKeyboard.SHIFT.toUpperCase()} + G `\n }\n]\n\nconst closeHandle = () => {\n emit('update:modelShow', false)\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.model-content {\n width: 50vw;\n padding-bottom: 20px;\n overflow: hidden;\n border-radius: 15px;\n td {\n padding: 5px 10px;\n }\n}\n</style>\n","<template>\n <div class=\"go-edit-shortcut\">\n <shortcut-key-modal v-model:modelShow=\"modelShow\"></shortcut-key-modal>\n <el-tooltip content=\"快捷键\" placement=\"top\">\n <el-button\n class=\"scale-btn\"\n size=\"small\"\n @click=\"modelShow = true\"\n >\n <el-icon :size=\"21\" style=\"color: var(--el-text-color-secondary)\">\n <dicom-overlay-icon></dicom-overlay-icon>\n </el-icon>\n </el-button>\n </el-tooltip>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { icon } from '@core/plugins'\nimport ShortcutKeyModal from './ShortcutKeyModal.vue'\n\nconst { DicomOverlayIcon } = icon.carbon\nconst modelShow = ref<boolean>(false)\n</script>\n\n<style lang=\"scss\" scoped>\n@include go('edit-shortcut') {\n .scale-btn {\n margin: 0 10px 0 0;\n .btn-text {\n font-size: 12px;\n margin-right: 3px;\n }\n }\n}\n</style>\n","<template>\n <div class=\"go-edit-bottom\">\n <div class=\"go-flex-items-center\" style=\"gap: 8px;\">\n <!-- 历史记录 -->\n <edit-history></edit-history>\n <!-- CTRL按键触发展示 -->\n <span id=\"keyboard-dress-show\" style=\"color: var(--el-text-color-secondary)\"></span>\n </div>\n\n <div class=\"bottom-ri go-flex-items-center\" style=\"gap: 8px;\">\n <!-- 快捷键提示 -->\n <edit-shortcut-key />\n\n <!-- 缩放比例 -->\n <el-select\n ref=\"selectInstRef\"\n class=\"scale-btn\"\n v-model=\"filterValue\"\n size=\"small\"\n :disabled=\"lockScale\"\n @change=\"selectHandle\"\n >\n <el-option\n v-for=\"opt in filterOptions\"\n :key=\"opt.value\"\n :label=\"opt.label\"\n :value=\"opt.value\"\n />\n </el-select>\n\n <!-- 锁定缩放 -->\n <el-tooltip :content=\"lockScale ? '解锁当前比例' : '锁定当前比例'\" placement=\"top\">\n <el-button @click=\"lockHandle\" text>\n <el-icon class=\"lock-icon\" :class=\"{ color: lockScale }\" :size=\"18\">\n <lock-closed-outline-icon v-if=\"lockScale\"></lock-closed-outline-icon>\n <lock-open-outline-icon v-else></lock-open-outline-icon>\n </el-icon>\n </el-button>\n </el-tooltip>\n\n <!-- 拖动 -->\n <el-slider\n class=\"scale-slider\"\n v-model=\"sliderValue\"\n :min=\"10\"\n :max=\"200\"\n :step=\"5\"\n :format-tooltip=\"sliderFormatTooltip\"\n :disabled=\"lockScale\"\n :marks=\"sliderMaks\"\n @change=\"sliderHandle\"\n ></el-slider>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { reactive, ref, toRefs, watchEffect } from 'vue'\nimport { icon } from '@core/plugins'\nimport { EditHistory } from '../EditHistory/index'\nimport EditShortcutKey from '../EditShortcutKey/index.vue'\nimport { useDesignStore } from '@core/store/modules/designStore/designStore'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { EditCanvasTypeEnum } from '@core/store/modules/chartEditStore/chartEditStore.d'\nimport { useChartLayoutStore } from '@core/store/modules/chartLayoutStore/chartLayoutStore'\nimport { ChartLayoutStoreEnum } from '@core/store/modules/chartLayoutStore/chartLayoutStore.d'\n\nconst { LockClosedOutlineIcon, LockOpenOutlineIcon } = icon.ionicons5\n\n// 全局颜色\nconst designStore = useDesignStore()\nconst themeColor = ref(designStore.getAppTheme)\nconst chartLayoutStore = useChartLayoutStore()\nconst chartEditStore = useChartEditStore()\nconst { lockScale, scale } = toRefs(chartEditStore.getEditCanvas)\nconst selectInstRef = ref<InstanceType<typeof import('element-plus')['ElSelect']> | null>(null)\n\n// 缩放选项\nlet filterOptions = [\n {\n label: '200%',\n value: 200\n },\n {\n label: '150%',\n value: 150\n },\n {\n label: '100%',\n value: 100\n },\n {\n label: '50%',\n value: 50\n },\n {\n label: '自适应',\n value: 0\n }\n]\n\n// 选择值\nconst filterValue = ref('')\n\n// 用户自选择\nconst selectHandle = (v: number) => {\n selectInstRef.value?.blur()\n if (v === 0) {\n chartLayoutStore.setItemUnHandle(ChartLayoutStoreEnum.RE_POSITION_CANVAS, true)\n chartEditStore.computedScale()\n return\n }\n chartEditStore.setScale(v / 100)\n}\n\n// 点击锁处理\nconst lockHandle = () => {\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.LOCK_SCALE, !lockScale.value)\n}\n\n// 拖动\nconst sliderValue = ref(100)\n\n// 拖动格式化\nconst sliderFormatTooltip = (v: string) => `${v}%`\n\n// 拖动处理\nconst sliderHandle = (v: number) => {\n chartEditStore.setScale(v / 100)\n}\n\nconst sliderMaks = reactive({\n 100: ''\n})\n\n// 监听 scale 变化\nwatchEffect(() => {\n const value = (scale.value * 100).toFixed(0)\n filterValue.value = `${value}%`\n sliderValue.value = parseInt(value)\n})\n</script>\n\n<style lang=\"scss\" scoped>\n$min-width: 500px;\n$max-width: 670px;\n@include go('edit-bottom') {\n width: 100%;\n min-width: $min-width;\n min-width: $max-width;\n padding: 0 10px;\n padding-left: 20px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n .bottom-ri {\n display: flex;\n align-items: center;\n .lock-icon {\n &.color {\n color: v-bind('themeColor');\n }\n }\n .scale-btn {\n width: 90px;\n font-size: 12px;\n :deep(.el-input__inner) {\n padding: 0 8px;\n }\n }\n .scale-slider {\n width: 100px;\n :deep(.el-slider__runway) {\n margin: 0;\n }\n }\n }\n}\n</style>\n","<template>\n <el-dialog \n v-model=\"modelShowRef\" \n :show-close=\"false\" \n width=\"560px\"\n class=\"go-system-setting-dialog\"\n @closed=\"closeHandle\"\n >\n <div class=\"go-system-setting\">\n <div class=\"setting-header\">\n <span class=\"title\">系统设置</span>\n <el-icon :size=\"18\" class=\"close-btn\" @click=\"closeHandle\">\n <close-icon />\n </el-icon>\n </div>\n\n <div class=\"setting-body\">\n <template v-for=\"item in list\" :key=\"item.key\">\n <div v-if=\"item.type === 'divider'\" class=\"setting-divider\"></div>\n <div v-else class=\"setting-row\">\n <div class=\"row-label\">\n <span>{{ item.name }}</span>\n <el-tooltip v-if=\"item.tip\" :content=\"item.tip\" placement=\"top\">\n <el-icon :size=\"14\" class=\"tip-icon\"><help-outline-icon /></el-icon>\n </el-tooltip>\n </div>\n <div class=\"row-control\">\n <el-switch\n v-if=\"item.type === 'switch'\"\n v-model=\"item.value\"\n size=\"small\"\n @change=\"handleChange($event, item)\"\n />\n <template v-else-if=\"item.type === 'number'\">\n <el-input-number\n v-model=\"item.value\"\n size=\"small\"\n :step=\"item.step || 1\"\n :min=\"item.min || 0\"\n controls-position=\"right\"\n @change=\"handleChange($event, item)\"\n />\n <span v-if=\"item.suffix\" class=\"suffix\">{{ item.suffix }}</span>\n </template>\n <el-select\n v-else-if=\"item.type === 'select'\"\n v-model=\"item.value\"\n size=\"small\"\n @change=\"handleChange($event, item)\"\n >\n <el-option\n v-for=\"opt in item.options\"\n :key=\"opt.value\"\n :label=\"opt.label\"\n :value=\"opt.value\"\n />\n </el-select>\n </div>\n <div class=\"row-desc\">{{ item.desc }}</div>\n </div>\n </template>\n </div>\n </div>\n </el-dialog>\n</template>\n\n<script script lang=\"ts\" setup>\nimport { reactive, ref, watch } from 'vue'\nimport { ListType } from './index.d'\nimport { useSettingStore } from '@core/store/modules/settingStore/settingStore'\nimport { SettingStoreEnums, ToolsStatusEnum } from '@core/store/modules/settingStore/settingStore.d'\nimport { icon } from '@core/plugins'\n\nconst props = defineProps({\n modelShow: Boolean\n})\n\nconst emit = defineEmits(['update:modelShow'])\nconst { HelpOutlineIcon, CloseIcon } = icon.ionicons5\nconst settingStore = useSettingStore()\nconst modelShowRef = ref(false)\n\nconst list = reactive<ListType[]>([\n {\n key: SettingStoreEnums.ASIDE_ALL_COLLAPSED,\n value: settingStore.getAsideAllCollapsed,\n type: 'switch',\n name: '菜单折叠',\n desc: '首页菜单折叠时隐藏至界面外'\n },\n {\n key: SettingStoreEnums.HIDE_PACKAGE_ONE_CATEGORY,\n value: settingStore.getHidePackageOneCategory,\n type: 'switch',\n name: '隐藏分类',\n desc: '工作空间表单分类只有单项时隐藏'\n },\n {\n key: SettingStoreEnums.CHANGE_LANG_RELOAD,\n value: settingStore.getChangeLangReload,\n type: 'switch',\n name: '切换语言',\n desc: '切换语言重新加载页面',\n tip: '若遇到部分区域语言切换失败,则建议开启'\n },\n {\n key: 'divider1',\n type: 'divider',\n name: '',\n desc: '',\n value: ''\n },\n {\n key: SettingStoreEnums.CHART_TOOLS_STATUS_HIDE,\n value: settingStore.getChartToolsStatusHide,\n type: 'switch',\n name: '隐藏工具栏',\n desc: '鼠标移入时,会展示切换到展开模式',\n },\n {\n key: SettingStoreEnums.CHART_TOOLS_STATUS,\n value: settingStore.getChartToolsStatus,\n type: 'select',\n name: '工具栏展示',\n desc: '工作空间工具栏展示方式',\n options: [\n {\n label: '侧边栏',\n value: ToolsStatusEnum.ASIDE\n },\n {\n label: '底部 Dock',\n value: ToolsStatusEnum.DOCK\n }\n ]\n },\n {\n key: 'divider0',\n type: 'divider',\n name: '',\n desc: '',\n value: ''\n },\n {\n key: SettingStoreEnums.CHART_MOVE_DISTANCE,\n value: settingStore.getChartMoveDistance,\n type: 'number',\n name: '移动距离',\n min: 1,\n step: 1,\n suffix: 'px',\n desc: '工作空间方向键控制移动距离'\n },\n {\n key: SettingStoreEnums.CHART_ALIGN_RANGE,\n value: settingStore.getChartAlignRange,\n type: 'number',\n name: '吸附距离',\n min: 10,\n step: 2,\n suffix: 'px',\n desc: '工作空间移动图表时的吸附距离'\n }\n])\n\nwatch(() => props.modelShow, (newValue) => {\n modelShowRef.value = newValue\n})\n\nconst closeHandle = () => {\n emit('update:modelShow', false)\n}\n\nconst handleChange = (e: MouseEvent, item: ListType) => {\n settingStore.setItem(item.key, item.value)\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.go-system-setting {\n .setting-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid var(--el-border-color-lighter);\n \n .title {\n font-size: 16px;\n font-weight: 500;\n color: var(--el-text-color-primary);\n }\n \n .close-btn {\n cursor: pointer;\n color: var(--el-text-color-secondary);\n transition: color 0.2s;\n &:hover {\n color: var(--el-text-color-primary);\n }\n }\n }\n \n .setting-body {\n padding: 8px 0;\n }\n \n .setting-divider {\n height: 1px;\n margin: 8px 20px;\n background: var(--el-border-color-lighter);\n }\n \n .setting-row {\n display: grid;\n grid-template-columns: 90px 140px 1fr;\n align-items: center;\n gap: 16px;\n padding: 12px 20px;\n transition: background 0.2s;\n \n &:hover {\n background: var(--el-fill-color-light);\n }\n }\n \n .row-label {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 14px;\n color: var(--el-text-color-primary);\n \n .tip-icon {\n color: var(--el-text-color-secondary);\n cursor: help;\n }\n }\n \n .row-control {\n display: flex;\n align-items: center;\n gap: 6px;\n \n .suffix {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n }\n \n :deep(.el-input-number) {\n width: 100px;\n }\n \n :deep(.el-select) {\n width: 120px;\n }\n }\n \n .row-desc {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n }\n}\n</style>\n\n<style lang=\"scss\">\n.go-system-setting-dialog {\n background: var(--el-bg-color-overlay);\n border: 1px solid var(--el-border-color-lighter);\n border-radius: 8px;\n box-shadow: var(--el-box-shadow);\n \n .el-dialog__header {\n display: none;\n }\n \n .el-dialog__body {\n padding: 0;\n color: inherit;\n }\n}\n</style>\n","import { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\r\nimport { canvasCut, downloadTextFile, JSONStringify } from '@core/utils'\r\n\r\n// 导出\r\nexport const exportHandle = () => {\r\n // 在函数内部获取 store 实例\r\n const chartEditStore = useChartEditStore()\r\n \r\n // 取消选中\r\n chartEditStore.setTargetSelectChart(undefined)\r\n\r\n // 导出数据\r\n downloadTextFile(\r\n JSONStringify(chartEditStore.getStorageInfo() || []),\r\n undefined,\r\n 'json'\r\n )\r\n\r\n // 导出图片\r\n const range = document.querySelector('.go-edit-range') as HTMLElement\r\n const watermark = document.getElementById('go-edit-watermark')\r\n // 隐藏边距线\r\n if (!range || !watermark) {\r\n window['$message'].error('导出失败!')\r\n return\r\n }\r\n\r\n // 记录缩放比例\r\n const scaleTemp = chartEditStore.getEditCanvas.scale\r\n // 百分百展示页面\r\n chartEditStore.setScale(1, true)\r\n // 展示水印\r\n watermark.style.display = 'block'\r\n\r\n setTimeout(() => {\r\n canvasCut(range, () => {\r\n // 隐藏水印\r\n if (watermark) watermark.style.display = 'none'\r\n // 还原页面大小\r\n chartEditStore.setScale(scaleTemp, true)\r\n })\r\n }, 600)\r\n}\r\n","import { ref, nextTick } from 'vue'\nimport type { UploadRequestOptions } from 'element-plus'\nimport { FileTypeEnum } from '@core/enums/fileTypeEnum'\nimport { readFile, goDialog, JSONParse } from '@core/utils'\nimport { useSync } from '@core/views/chart/hooks/useSync.hook'\n\nexport const useFile = () => {\n const importUploadFileListRef = ref()\n const { updateComponent } = useSync()\n\n // 上传-前置\n //@ts-ignore\n const importBeforeUpload = ({ file }) => {\n importUploadFileListRef.value = []\n const type = file.file.type\n if (type !== FileTypeEnum.JSON && type !== FileTypeEnum.TXT) {\n window['$message'].warning('仅支持上传 【JSON】 格式文件,请重新上传!')\n return false\n }\n return true\n }\n\n // 上传-导入\n const importCustomRequest = (options: UploadRequestOptions) => {\n const { file } = options\n nextTick(() => {\n if (file) {\n readFile(file).then((fileData: any) => {\n goDialog({\n message: '请选择导入方式:',\n positiveText: '新增(可撤回)',\n negativeText: '覆盖(不可撤回)',\n negativeButtonProps: { type: 'info', ghost: false },\n // 新增\n onPositiveCallback: async () => {\n try {\n fileData = JSONParse(fileData)\n await updateComponent(fileData, false, true)\n window['$message'].success('导入成功!')\n } catch (error) {\n console.log(error)\n window['$message'].error('组件导入失败,请检查文件完整性!')\n }\n },\n // 覆盖\n onNegativeCallback: async () => {\n try {\n fileData = JSONParse(fileData)\n await updateComponent(fileData, true, true)\n window['$message'].success('导入成功!')\n } catch (error) {\n console.log(error)\n window['$message'].error('组件导入失败,请检查文件完整性!')\n }\n }\n })\n })\n } else {\n window['$message'].error('导入失败,请检查数据或联系管理员!')\n }\n })\n }\n\n return {\n importUploadFileListRef,\n importBeforeUpload,\n importCustomRequest\n }\n}\n","export enum TypeEnum {\n BUTTON = 'button',\n IMPORTUPLOAD = 'importUpload'\n}\n\nexport type BtnListType = {\n key: string\n type: TypeEnum\n name: string\n icon: any\n handle?: () => void\n}\n","<template>\n <div class=\"go-chart-edit-tools\" :class=\"[settingStore.getChartToolsStatus, isMiniComputed ? 'isMini' : 'unMini']\"\n @click=\"isMini && (isMini = false)\" @mouseenter=\"toolsMouseoverHandle\" @mouseleave=\"toolsMouseoutHandle\">\n <!-- PawIcon -->\n <el-icon v-show=\"settingStore.getChartToolsStatus === ToolsStatusEnum.ASIDE && isMiniComputed\" class=\"asideLogo\"\n :size=\"22\">\n <PawIcon></PawIcon>\n </el-icon>\n\n <el-tooltip v-for=\"(item, index) in btnListComputed\" :key=\"item.key\"\n :disabled=\"!isAside || (isHide && asideTootipDis)\" :content=\"item.name\" placement=\"left\">\n <div class=\"btn-item\">\n <el-button v-if=\"item.type === TypeEnum.BUTTON\" :circle=\"isAside\" @click=\"item.handle\">\n <el-icon :size=\"isAside ? 18 : 16\">\n <component :is=\"item.icon\"></component>\n </el-icon>\n <span v-show=\"!isAside\" class=\"btn-text\">{{ item.name }}</span>\n </el-button>\n <!-- 下载 -->\n <el-upload v-else-if=\"item.type === TypeEnum.IMPORTUPLOAD\" v-model:file-list=\"importUploadFileListRef\"\n :show-file-list=\"false\" :http-request=\"importCustomRequest\" :before-upload=\"importBeforeUpload\">\n <el-button :circle=\"isAside\">\n <el-icon :size=\"isAside ? 18 : 16\">\n <component :is=\"item.icon\"></component>\n </el-icon>\n <span v-show=\"!isAside\" class=\"btn-text\">{{ item.name }}</span>\n </el-button>\n </el-upload>\n </div>\n </el-tooltip>\n </div>\n <!-- 系统设置 model -->\n <go-system-set v-model:modelShow=\"globalSettingModel\"></go-system-set>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport { useSettingStore } from '@core/store/modules/settingStore/settingStore'\nimport { ToolsStatusEnum } from '@core/store/modules/settingStore/settingStore.d'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { EditCanvasTypeEnum } from '@core/store/modules/chartEditStore/chartEditStore.d'\nimport { getLocalStorage, setSessionStorage } from '@core/utils'\nimport { StorageEnum } from '@core/enums/storageEnum'\nimport { GoSystemSet } from '@core/components/GoSystemSet/index'\nimport { exportHandle } from './utils'\nimport { useFile } from './hooks/useFile.hooks'\nimport { useSyncUpdate } from './hooks/useSyncUpdate.hook'\nimport { BtnListType, TypeEnum } from './index.d'\nimport { icon } from '@core/plugins'\n\nconst { DownloadIcon, ShareIcon, PawIcon, SettingsSharpIcon, CreateIcon } = icon.ionicons5\nconst settingStore = useSettingStore()\nconst chartEditStore = useChartEditStore()\n// 初始化编辑 JSON 模块\nuseSyncUpdate()\n\n// 鼠标悬停定时器\nlet mouseTime: any = null\n// 系统设置 model\nconst globalSettingModel = ref(false)\n// 最小化\nconst isMini = ref<boolean>(true)\n// 控制 tootip 提示时机\nconst asideTootipDis = ref(true)\n// 文件上传\nconst { importUploadFileListRef, importCustomRequest, importBeforeUpload } = useFile()\n\n// 是否是侧边栏\nconst isAside = computed(() => settingStore.getChartToolsStatus === ToolsStatusEnum.ASIDE)\n\n// 是否隐藏(悬浮展示)\nconst isHide = computed(() => settingStore.getChartToolsStatusHide)\n\n// 是否展示最小化(与全局配置相关)\nconst isMiniComputed = computed(() => isMini.value && isHide.value)\n\n// 页面渲染配置\nconst btnListComputed = computed(() => {\n if (!isAside.value) return btnList\n const reverseArr: BtnListType[] = []\n btnList.map(item => {\n reverseArr.unshift(item)\n })\n return reverseArr\n})\n\n// 鼠标移入\nconst toolsMouseoverHandle = () => {\n mouseTime = setTimeout(() => {\n if (isMini.value) {\n isMini.value = false\n asideTootipDis.value = true\n }\n }, 200)\n setTimeout(() => {\n asideTootipDis.value = false\n }, 400)\n}\n\n// 鼠标移出\nconst toolsMouseoutHandle = () => {\n clearTimeout(mouseTime)\n if (!isMini.value) {\n isMini.value = true\n }\n}\n\n// 编辑处理(直接开启JSON编辑模式)\nconst editHandle = () => {\n window['$message'].warning('请通过顶部【同步内容】按钮同步最新数据!')\n chartEditStore.setEditCanvas(EditCanvasTypeEnum.IS_CODE_EDIT, true)\n}\n\n// 配置列表\nconst btnList: BtnListType[] = [\n {\n key: 'import',\n type: TypeEnum.IMPORTUPLOAD,\n name: '导入',\n icon: ShareIcon\n },\n {\n key: 'export',\n type: TypeEnum.BUTTON,\n name: '导出',\n icon: DownloadIcon,\n handle: exportHandle\n },\n {\n key: 'edit',\n type: TypeEnum.BUTTON,\n name: '编辑',\n icon: CreateIcon,\n handle: editHandle\n },\n {\n key: 'setting',\n type: TypeEnum.BUTTON,\n name: '设置',\n icon: SettingsSharpIcon,\n handle: () => {\n globalSettingModel.value = true\n }\n }\n]\n</script>\n\n<style lang=\"scss\" scoped>\n/* 底部区域的高度 */\n$dockHeight: 30px;\n$dockBottom: 60px;\n$dockMiniWidth: 200px;\n$dockMiniBottom: 53px;\n\n$asideHeight: 130px;\n$asideMiniHeight: 22px;\n$asideBottom: 70px;\n\n@include go('chart-edit-tools') {\n @extend .go-background-filter;\n position: absolute;\n display: flex;\n justify-content: space-around;\n align-items: center;\n border-radius: 25px;\n border: 1px solid;\n @include fetch-border-color('hover-border-color-shallow');\n\n .btn-text {\n margin-left: 4px;\n color: var(--el-text-color-secondary);\n }\n\n &.aside {\n display: flex;\n justify-content: center;\n flex-direction: column-reverse;\n height: auto;\n right: 20px;\n padding: 40px 8px;\n bottom: $asideBottom;\n overflow: hidden;\n transition: height ease 0.4s;\n\n .btn-item {\n margin-bottom: 10px;\n display: flex;\n justify-content: center;\n\n &:first-of-type {\n margin-bottom: 0;\n }\n\n @include deep() {\n .el-button {\n &.is-circle {\n width: 40px;\n height: 40px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n\n .el-upload {\n display: flex;\n justify-content: center;\n }\n }\n }\n\n &.unMini {\n animation: aside-in 0.4s ease forwards;\n\n @keyframes aside-in {\n 0% {\n opacity: 0.5;\n height: $asideMiniHeight;\n }\n\n 100% {\n height: $asideHeight;\n opacity: 1;\n }\n }\n\n .btn-item {\n position: relative;\n display: flex;\n }\n\n .asideLogo {\n opacity: 0.4;\n }\n }\n\n &.isMini {\n cursor: pointer;\n padding: 13px 13px;\n background-color: var(--el-fill-color);\n animation: aside-mini-in 0.4s ease forwards;\n\n @keyframes aside-mini-in {\n 0% {\n opacity: 0.5;\n height: $asideHeight;\n }\n\n 100% {\n opacity: 1;\n height: $asideMiniHeight;\n }\n }\n\n .btn-item {\n position: relative;\n display: none;\n }\n\n .asideLogo {\n opacity: 1;\n }\n }\n }\n\n &.dock {\n width: auto;\n left: 50%;\n transform: translateX(-50%);\n\n .btn-item {\n margin-right: 20px;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n &.unMini {\n animation: dock-in 0.4s ease forwards;\n\n @keyframes dock-in {\n 0% {\n opacity: 0;\n height: 0;\n padding: 5px;\n bottom: $dockMiniBottom;\n }\n\n 100% {\n height: $dockHeight;\n padding: 8px 30px;\n bottom: $dockBottom;\n border-radius: 25px;\n }\n }\n\n &::after {\n content: '';\n position: absolute;\n left: 0;\n width: 100%;\n height: 10px;\n bottom: -10px;\n cursor: pointer;\n }\n }\n\n /* 最小化 */\n &.isMini {\n height: 0;\n width: $dockMiniWidth;\n bottom: $dockMiniBottom;\n padding: 5px;\n border-radius: 8px;\n cursor: pointer;\n border: 0px;\n animation: dock-mini-in 1s ease forwards;\n\n @keyframes dock-mini-in {\n 0% {\n opacity: 1;\n height: $dockHeight;\n padding: 8px 30px;\n bottom: $dockBottom;\n border-radius: 25px;\n }\n\n 20% {\n height: 0;\n border-radius: 8px;\n }\n\n 50% {\n opacity: 0;\n bottom: calc(#{$dockMiniBottom} - 10px);\n pointer-events: none;\n }\n\n 100% {\n opacity: 1;\n height: 0;\n padding: 5px;\n bottom: $dockMiniBottom;\n }\n }\n\n .btn-item {\n position: relative;\n bottom: -50px;\n display: none;\n }\n }\n }\n}\n</style>\n","<template>\n <!-- <edit-rule></edit-rule> -->\n <content-box id=\"go-chart-edit-layout\" :flex=\"true\" :showTop=\"false\" :showBottom=\"true\" :depth=\"1\" :xScroll=\"true\"\n :disabledScroll=\"true\" @mousedown=\"mousedownHandleUnStop\" @drop=\"dragHandle\" @dragover=\"dragoverHandle\"\n @dragenter=\"dragoverHandle\">\n <edit-rule>\n <!-- 画布主体 -->\n <div id=\"go-chart-edit-content\" @contextmenu=\"handleContextMenu\">\n <!-- 展示 -->\n <edit-range>\n <!-- 滤镜预览 -->\n <div :style=\"{\n ...getFilterStyle(chartEditStore.getEditCanvasConfig),\n ...rangeStyle\n }\">\n <!-- 图表 -->\n <div v-for=\"(item, index) in chartEditStore.getComponentList\" :key=\"item.id\">\n <!-- 分组 -->\n <edit-group v-if=\"item.isGroup\" :groupData=\"(item as CreateComponentGroupType)\"\n :groupIndex=\"index\"></edit-group>\n\n <!-- 单组件 -->\n <edit-shape-box v-else :data-id=\"item.id\" :index=\"index\" :style=\"{\n ...useComponentStyle(item.attr, index),\n ...getBlendModeStyle(item.styles) as any\n }\" :item=\"item\" @click=\"mouseClickHandle($event, item)\" @mousedown=\"mousedownHandle($event, item)\"\n @mouseenter=\"mouseenterHandle($event, item)\" @mouseleave=\"mouseleaveHandle($event, item)\"\n @contextmenu=\"handleContextMenu($event, item, optionsHandle)\">\n <component class=\"edit-content-chart\" :class=\"animationsClass(item.styles.animations)\"\n :is=\"item.chartConfig.chartKey\" :chartConfig=\"item\" :themeSetting=\"themeSetting\"\n :themeColor=\"themeColor\" :style=\"{\n ...useSizeStyle(item.attr),\n ...getFilterStyle(item.styles),\n ...getTransformStyle(item.styles)\n }\"></component>\n </edit-shape-box>\n </div>\n </div>\n </edit-range>\n </div>\n </edit-rule>\n <!-- 工具栏 -->\n <template #aside>\n <edit-tools></edit-tools>\n </template>\n\n <!-- 底部控制 -->\n <template #bottom>\n <EditBottom></EditBottom>\n </template>\n </content-box>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onMounted, computed, provide, watch } from 'vue'\nimport { chartColors } from '@core/settings/chartThemes/index'\nimport { MenuEnum } from '@core/enums/editPageEnum'\nimport { getRegisteredEngineCapability, type HgDataViewVChartThemeApi } from '@core/engines'\nimport { CreateComponentType, CreateComponentGroupType } from '@core/packages/index.d'\nimport { ChartFrameEnum } from '@core/packages/index.d'\nimport { animationsClass, getFilterStyle, getTransformStyle, getBlendModeStyle, colorCustomMerge } from '@core/utils'\nimport { useContextMenu } from '@core/views/chart/hooks/useContextMenu.hook'\nimport { MenuOptionsItemType } from '@core/views/chart/hooks/useContextMenu.hook.d'\nimport { useChartEditStore } from '@core/store/modules/chartEditStore/chartEditStore'\nimport { useScale } from '@core/views/chart/hooks/useScale.hook'\nimport { useLayout } from './hooks/useLayout.hook'\nimport { useAddKeyboard } from '../hooks/useKeyboard.hook'\nimport { dragHandle, dragoverHandle, mousedownHandleUnStop, useMouseHandle } from './hooks/useDrag.hook'\nimport { useComponentStyle, useSizeStyle } from './hooks/useStyle.hook'\n\nimport { ContentBox } from '../ContentBox/index'\nimport { EditGroup } from './components/EditGroup'\nimport { EditRange } from './components/EditRange'\nimport { EditRule } from './components/EditRule'\nimport { EditBottom } from './components/EditBottom'\nimport { EditShapeBox } from './components/EditShapeBox'\nimport { EditTools } from './components/EditTools'\n\nconst chartEditStore = useChartEditStore()\nconst { handleContextMenu } = useContextMenu()\nconst vChartThemeApi = getRegisteredEngineCapability<HgDataViewVChartThemeApi>(ChartFrameEnum.VCHART, 'vchartTheme')\n\n// 编辑时注入scale变量\nconst { scale, SCALE_KEY } = useScale()\nprovide(SCALE_KEY, scale)\n\n// 布局处理\nuseLayout(async () => { })\n\n// 点击事件\nconst { mouseenterHandle, mouseleaveHandle, mousedownHandle, mouseClickHandle } = useMouseHandle()\n\n// 右键事件\nconst optionsHandle = (\n targetList: MenuOptionsItemType[],\n allList: MenuOptionsItemType[],\n targetInstance: CreateComponentType\n) => {\n // 多选处理\n if (chartEditStore.getTargetChart.selectId.length > 1) {\n return allList.filter(i => [MenuEnum.GROUP, MenuEnum.DELETE].includes(i.key as MenuEnum))\n }\n const statusMenuEnums: MenuEnum[] = []\n if (targetInstance.status.lock) {\n statusMenuEnums.push(MenuEnum.LOCK)\n } else {\n statusMenuEnums.push(MenuEnum.UNLOCK)\n }\n if (targetInstance.status.hide) {\n statusMenuEnums.push(MenuEnum.HIDE)\n } else {\n statusMenuEnums.push(MenuEnum.SHOW)\n }\n return targetList.filter(i => !statusMenuEnums.includes(i.key as MenuEnum))\n}\n\n// 主题色\nconst themeSetting = computed(() => {\n const chartThemeSetting = chartEditStore.getEditCanvasConfig.chartThemeSetting\n return chartThemeSetting\n})\n\n// 配置项\nconst themeColor = computed(() => {\n const colorCustomMergeData: any = colorCustomMerge(chartEditStore.getEditCanvasConfig.chartCustomThemeColorInfo)\n return colorCustomMergeData[chartEditStore.getEditCanvasConfig.chartThemeColor]\n})\n\n// 是否展示渲染\nconst filterShow = computed(() => {\n return chartEditStore.getEditCanvasConfig.filterShow\n})\n\n// 背景\nconst rangeStyle = computed(() => {\n // 设置背景色和图片背景\n const background = chartEditStore.getEditCanvasConfig.background\n const backgroundImage = chartEditStore.getEditCanvasConfig.backgroundImage\n const selectColor = chartEditStore.getEditCanvasConfig.selectColor\n const backgroundColor = background ? background : undefined\n\n const computedBackground = selectColor\n ? { background: backgroundColor }\n : { background: `url(${backgroundImage}) no-repeat center center / cover !important` }\n\n return {\n ...computedBackground,\n width: 'inherit',\n height: 'inherit'\n }\n})\n\nwatch(\n () => chartEditStore.getEditCanvasConfig.vChartThemeName,\n newTheme => {\n vChartThemeApi?.setTheme(newTheme)\n },\n {\n immediate: true\n }\n)\n\n// 键盘事件\nonMounted(() => {\n useAddKeyboard()\n})\n</script>\n\n<style lang=\"scss\" scoped>\n@include goId('chart-edit-layout') {\n position: relative;\n width: 100%;\n overflow: hidden;\n @extend .go-point-bg;\n @include background-image('background-point');\n\n @include goId('chart-edit-content') {\n overflow: hidden;\n @extend .go-transition;\n @include fetch-theme('box-shadow');\n\n .edit-content-chart {\n position: absolute;\n overflow: hidden;\n }\n }\n}\n</style>\n"],"names":["SCALE_KEY","useScale","ref","useLayout","fn","removeScale","onMounted","chartEditStore","useChartEditStore","EditCanvasTypeEnum","onUnmounted","winCtrlMerge","WinKeyboard","winShiftMerge","winKeyboardValue","MenuEnum","macCtrlMerge","MacKeyboard","macShiftMerge","macKeyboardValue","winKeyList","macKeyList","keyRecordHandle","keyCode","setKeyboardDressShow","useAddKeyboard","switchHandle","keyboardValue","e","keymaster","throttle","debounce","key","dragHandle","loadingStart","drayDataString","DragKeyEnum","loadingFinish","dropData","JSONParse","ensureRegisteredComponent","newComponent","createComponent","setComponentPosition","error","loadingError","dragoverHandle","mousedownHandleUnStop","item","mousedownBoxSelect","onClickOutSide","useContextMenu","startScreenX","startScreenY","startOffsetX","startOffsetY","scale","mousemove","moveEvent","currX","currY","selectAttr","x","y","w","h","targetAttr","mouseup","useMouseHandle","_a","exList","MouseEventButton","selectId","canvasWidth","canvasHeight","targetMap","id","index","toRaw","startX","startY","prevComponentInstance","cloneDeep","offsetX","offsetY","componentInstance","distance","curComponentInstance","preItem","moveComponentInstance","err","useMousePointHandle","point","attr","componentId","itemAttrX","itemAttrY","itemAttrW","itemAttrH","isTop","isBottom","isLeft","isRight","newHeight","newWidth","useComponentStyle","useSizeStyle","usePointStyle","cursorResize","width","height","newLeft","newTop","props","__props","designStore","useDesignStore","pointList","themeColor","computed","hover","select","lock","hide","_createElementBlock","_normalizeClass","_renderSlot","_ctx","_openBlock","_Fragment","_normalizeStyle","_unref","$event","_createElementVNode","handleContextMenu","mouseenterHandle","mouseleaveHandle","mousedownHandle","mouseClickHandle","optionsHandle","targetList","allList","targetInstance","filter","menulist","i","statusMenuEnums","singleMenuEnums","divider","colorCustomMerge","themeSetting","_hoisted_1","_createBlock","EditShapeBox","animationsClass","getFilterStyle","getTransformStyle","getBlendModeStyle","_cache","_renderList","_resolveDynamicComponent","settingStore","useSettingStore","line","reactive","minDistance","isComputedLine","isSorption","selectValue","componentValue","selectTarget","canvasPositionList","watch","selectW","selectH","selectLeftX","selectHalfX","selectRightX","seletX","selectTopY","selectHalfY","selectBottomY","selectY","componentList","lineItem","component","componentW","componentH","componentLeftX","componentHalfX","componentRightX","componentX","componentTopY","componentHalfY","componentBottomY","componentY","val","_component_el_watermark","watermarkText","isSelect","toRefs","positionStyle","positionInfo","selectBoxIndex","getEditCanvasConfig","getEditCanvas","size","rangeStyle","rangeModelStyle","dragStyle","_createVNode","EditWatermark","EditAlignLine","EditSelect","thick","chartLayoutStore","useChartLayoutStore","prevMoveXValue","prevMoveYValue","$app","sketchRuleReDraw","refSketchRuleBox","$container","isPressSpace","cursorStyle","lines","canvasBoxWidth","canvasBoxHeight","updateCanvasBoxSize","layoutDom","containerWidth","containerHeight","paletteStyle","handleWheel","resScale","handleScroll","screensRect","canvasRect","dragCanvas","_b","handleMousemove","nx","ny","prevMoveX1","prevMoveX2","prevMoveY1","prevMoveY2","handleMouseup","canvasBox","reDraw","canvasPosCenter","newValue","oldValue","ChartLayoutStoreEnum","handleResize","isHold","_component_sketch_rule","historyActionTypeName","HistoryActionTypeEnum","HistoryTargetTypeEnum","DesktopOutlineIcon","PencilIcon","TrashIcon","CopyIcon","LayersIcon","DuplicateIcon","HelpOutlineIcon","LockClosedOutlineIcon","LockOpenOutlineIcon","EyeOffOutlineIcon","EyeOutlineIcon","icon","StackedMoveIcon","Carbon3DCursorIcon","Carbon3DSoftwareIcon","chartHistoryStoreStore","useChartHistoryStore","iconHandle","labelHandle","options","opts","reverse","_component_el_popover","_component_el_button","_hoisted_2","_component_el_scrollbar","_component_el_icon","_hoisted_4","_toDisplayString","_hoisted_5","_component_el_tooltip","editHistoryMax","CloseIcon","modelShowRef","emit","__emit","shortcutKeyOptions","closeHandle","_component_el_dialog","_component_el_table","_component_el_table_column","_withCtx","row","_hoisted_3","_createTextVNode","DicomOverlayIcon","modelShow","ShortcutKeyModal","lockScale","selectInstRef","filterOptions","filterValue","selectHandle","v","lockHandle","sliderValue","sliderFormatTooltip","sliderHandle","sliderMaks","watchEffect","value","EditHistory","EditShortcutKey","_component_el_select","opt","_component_el_option","_component_el_slider","list","SettingStoreEnums","ToolsStatusEnum","handleChange","_hoisted_6","_hoisted_7","_component_el_switch","_component_el_input_number","_hoisted_8","_hoisted_9","exportHandle","downloadTextFile","JSONStringify","range","watermark","scaleTemp","canvasCut","useFile","importUploadFileListRef","updateComponent","useSync","file","type","FileTypeEnum","nextTick","readFile","fileData","goDialog","TypeEnum","DownloadIcon","ShareIcon","PawIcon","SettingsSharpIcon","CreateIcon","useSyncUpdate","mouseTime","globalSettingModel","isMini","asideTootipDis","importCustomRequest","importBeforeUpload","isAside","isHide","isMiniComputed","btnListComputed","btnList","reverseArr","toolsMouseoverHandle","toolsMouseoutHandle","editHandle","_vShow","_withDirectives","_component_el_upload","GoSystemSet","vChartThemeApi","getRegisteredEngineCapability","ChartFrameEnum","provide","background","backgroundImage","newTheme","ContentBox","EditTools","EditBottom","EditRule","args","EditRange","EditGroup"],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import { ref as f, onBeforeUnmount as g, nextTick as _, defineComponent as y, onMounted as h, watch as S, openBlock as k, createElementBlock as v, Fragment as V, createElementVNode as w, normalizeStyle as M, createVNode as x } from "vue";
2
+ import { w as b, _ as O } from "./index-237a6823.js";
3
+ import * as m from "monaco-editor/esm/vs/editor/editor.api.js";
4
+ import "monaco-editor";
5
+ import C from "monaco-editor/esm/vs/editor/editor.worker?worker";
6
+ import E from "monaco-editor/esm/vs/language/json/json.worker?worker";
7
+ import W from "monaco-editor/esm/vs/language/typescript/ts.worker?worker";
8
+ import j from "monaco-editor/esm/vs/language/html/html.worker?worker";
9
+ const z = (o = "javascript") => {
10
+ const i = b();
11
+ let e = null, n = !1;
12
+ const l = f(null), d = async () => {
13
+ var r;
14
+ await ((r = e == null ? void 0 : e.getAction("monacoEditor.action.formatDocument")) == null ? void 0 : r.run());
15
+ }, s = (r) => {
16
+ _(async () => {
17
+ e == null || e.setValue(r), n && (e == null || e.updateOptions({ readOnly: !1 })), await d(), n && (e == null || e.updateOptions({ readOnly: !0 }));
18
+ });
19
+ }, u = (r = {}) => {
20
+ if (!l.value)
21
+ return;
22
+ const t = m.editor.createModel("", o);
23
+ return n = !!r.readOnly, e = m.editor.create(l.value, {
24
+ model: t,
25
+ // 是否启用预览图
26
+ minimap: { enabled: !1 },
27
+ // 圆角
28
+ roundedSelection: !0,
29
+ // 主题
30
+ theme: i.getDarkTheme ? "vs-dark" : "vs",
31
+ // 主键
32
+ multiCursorModifier: "ctrlCmd",
33
+ // 滚动条
34
+ scrollbar: {
35
+ verticalScrollbarSize: 8,
36
+ horizontalScrollbarSize: 8
37
+ },
38
+ // 行号
39
+ lineNumbers: "off",
40
+ // tab大小
41
+ tabSize: 2,
42
+ //字体大小
43
+ fontSize: 16,
44
+ // 控制编辑器在用户键入、粘贴、移动或缩进行时是否应自动调整缩进
45
+ autoIndent: "advanced",
46
+ // 自动布局
47
+ automaticLayout: !0,
48
+ ...r
49
+ }), e;
50
+ };
51
+ return g(() => {
52
+ e && e.dispose();
53
+ }), {
54
+ el: l,
55
+ updateVal: s,
56
+ getEditor: () => e,
57
+ createEditor: u,
58
+ onFormatDoc: d
59
+ };
60
+ }, D = {
61
+ __name: "EditorWorker",
62
+ setup(o) {
63
+ return self.MonacoEnvironment = {
64
+ getWorker(i, e) {
65
+ return e === "json" ? new E() : e === "typescript" || e === "javascript" ? new W() : e === "html" ? new j() : new C();
66
+ }
67
+ }, (i, e) => null;
68
+ }
69
+ }, B = D, I = /* @__PURE__ */ y({
70
+ __name: "index",
71
+ props: {
72
+ width: {
73
+ type: String,
74
+ default: "100%"
75
+ },
76
+ height: {
77
+ type: String,
78
+ default: "90vh"
79
+ },
80
+ language: {
81
+ type: String,
82
+ default: "typescript"
83
+ },
84
+ preComment: {
85
+ type: String,
86
+ default: ""
87
+ },
88
+ modelValue: {
89
+ type: String,
90
+ default: ""
91
+ },
92
+ editorOptions: {
93
+ type: Object,
94
+ default: () => ({})
95
+ }
96
+ },
97
+ emits: ["blur", "update:modelValue"],
98
+ setup(o, { emit: i }) {
99
+ const e = o, n = i, { el: l, updateVal: d, getEditor: s, createEditor: u } = z(e.language), r = (t) => {
100
+ const { modelValue: a, preComment: c } = e, p = c ? `${c}
101
+ ${t || a}` : t || a;
102
+ d(p);
103
+ };
104
+ return h(() => {
105
+ const t = u(e.editorOptions);
106
+ t.onDidChangeModelContent(() => {
107
+ n("update:modelValue", t.getValue());
108
+ }), t.onDidBlurEditorText(() => {
109
+ n("blur");
110
+ }), r();
111
+ }), S(
112
+ () => e.modelValue,
113
+ (t) => {
114
+ var a;
115
+ t !== ((a = s()) == null ? void 0 : a.getValue()) && r(t);
116
+ }
117
+ ), (t, a) => (k(), v(V, null, [
118
+ w("div", {
119
+ ref_key: "el",
120
+ ref: l,
121
+ class: "go-editor-area",
122
+ style: M({ width: o.width, height: o.height })
123
+ }, null, 4),
124
+ x(B)
125
+ ], 64));
126
+ }
127
+ });
128
+ const U = /* @__PURE__ */ O(I, [["__scopeId", "data-v-ed3d6b36"]]);
129
+ export {
130
+ U as M
131
+ };
132
+ //# sourceMappingURL=index-8d8dc1d2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-8d8dc1d2.js","sources":["../src/components/Pages/MonacoEditor/index.hook.ts","../src/components/Pages/MonacoEditor/EditorWorker.vue","../src/components/Pages/MonacoEditor/index.vue"],"sourcesContent":["import { ref, onBeforeUnmount, nextTick } from 'vue'\nimport { useDesignStore } from '@core/store/modules/designStore/designStore'\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js'\n\nexport const useMonacoEditor = (language = 'javascript') => {\nconst designStore = useDesignStore()\n\n let monacoEditor: monaco.editor.IStandaloneCodeEditor | null = null\n let initReadOnly = false\n const el = ref<HTMLElement | null>(null)\n\n // 格式化\n const onFormatDoc = async () => {\n await monacoEditor?.getAction('monacoEditor.action.formatDocument')?.run()\n }\n\n // 更新\n const updateVal = (val: string) => {\n nextTick(async () => {\n monacoEditor?.setValue(val)\n initReadOnly && monacoEditor?.updateOptions({ readOnly: false })\n await onFormatDoc()\n initReadOnly && monacoEditor?.updateOptions({ readOnly: true })\n })\n }\n\n // 创建实例\n const createEditor = (editorOption: monaco.editor.IStandaloneEditorConstructionOptions = {}) => {\n if (!el.value) return\n const javascriptModel = monaco.editor.createModel('', language)\n initReadOnly = !!editorOption.readOnly\n // 创建\n monacoEditor = monaco.editor.create(el.value, {\n model: javascriptModel,\n // 是否启用预览图\n minimap: { enabled: false },\n // 圆角\n roundedSelection: true,\n // 主题\n theme: designStore.getDarkTheme ? 'vs-dark' : 'vs',\n // 主键\n multiCursorModifier: 'ctrlCmd',\n // 滚动条\n scrollbar: {\n verticalScrollbarSize: 8,\n horizontalScrollbarSize: 8\n },\n // 行号\n lineNumbers: 'off',\n // tab大小\n tabSize: 2,\n //字体大小\n fontSize: 16,\n // 控制编辑器在用户键入、粘贴、移动或缩进行时是否应自动调整缩进\n autoIndent: 'advanced',\n // 自动布局\n automaticLayout: true,\n ...editorOption\n })\n\n return monacoEditor\n }\n\n // 卸载\n onBeforeUnmount(() => {\n if (monacoEditor) monacoEditor.dispose()\n })\n\n return {\n el,\n updateVal,\n getEditor: () => monacoEditor,\n createEditor,\n onFormatDoc\n }\n}\n","<template></template>\n\n<script setup>\nimport * as monaco from 'monaco-editor'\nimport editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'\nimport jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'\nimport tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'\nimport htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'\n\nself.MonacoEnvironment = {\n getWorker(workerId, label) {\n if (label === 'json') {\n return new jsonWorker()\n }\n if (label === 'typescript' || label === 'javascript') {\n return new tsWorker()\n }\n if (label === 'html') {\n return new htmlWorker()\n }\n return new editorWorker()\n }\n}\n</script>\n","<template>\n <div ref=\"el\" class=\"go-editor-area\" :style=\"{ width, height }\"></div>\n <EditorWorker></EditorWorker>\n</template>\n\n<script lang=\"ts\" setup>\nimport { onMounted, watch, PropType } from 'vue'\nimport { useMonacoEditor } from './index.hook'\nimport EditorWorker from './EditorWorker.vue'\n\nconst props = defineProps({\n width: {\n type: String as PropType<string>,\n default: '100%'\n },\n height: {\n type: String as PropType<string>,\n default: '90vh'\n },\n language: {\n type: String as PropType<string>,\n default: 'typescript'\n },\n preComment: {\n type: String as PropType<string>,\n default: ''\n },\n modelValue: {\n type: String as PropType<string>,\n default: ''\n },\n editorOptions: {\n type: Object as PropType<object>,\n default: () => ({})\n }\n})\n\nconst emits = defineEmits(['blur', 'update:modelValue'])\n\nconst { el, updateVal, getEditor, createEditor } = useMonacoEditor(props.language)\n\nconst updateMonacoVal = (_val?: string) => {\n const { modelValue, preComment } = props\n const val = preComment ? `${preComment}\\n${_val || modelValue}` : _val || modelValue\n updateVal(val)\n}\n\nonMounted(() => {\n const monacoEditor = createEditor(props.editorOptions)\n monacoEditor!.onDidChangeModelContent(() => {\n emits('update:modelValue', monacoEditor!.getValue())\n })\n monacoEditor!.onDidBlurEditorText(() => {\n emits('blur')\n })\n updateMonacoVal()\n})\n\nwatch(\n () => props.modelValue,\n (val: string) => {\n val !== getEditor()?.getValue() && updateMonacoVal(val)\n }\n)\n</script>\n\n<style lang=\"scss\" scoped>\n.go-editor-area {\n position: relative;\n border-radius: 4px;\n overflow: hidden;\n padding: 5px;\n padding-left: 0;\n box-sizing: border-box;\n background-color: rgba(0, 0, 0, 0);\n\n @include deep() {\n\n .margin,\n .monaco-editor,\n .inputarea.ime-input {\n background-color: rgba(0, 0, 0, 0);\n }\n\n .monaco-editor-background {\n background-color: rgba(0, 0, 0, 0);\n @include fetch-bg-color('filter-color-shallow');\n }\n\n .margin {\n @include fetch-bg-color('filter-color-shallow');\n }\n }\n}\n</style>\n"],"names":["useMonacoEditor","language","designStore","useDesignStore","monacoEditor","initReadOnly","el","ref","onFormatDoc","_a","updateVal","val","nextTick","createEditor","editorOption","javascriptModel","monaco","onBeforeUnmount","workerId","label","jsonWorker","tsWorker","htmlWorker","editorWorker","props","__props","emits","__emit","getEditor","updateMonacoVal","_val","modelValue","preComment","onMounted","watch","_createElementVNode","_normalizeStyle","_createVNode","EditorWorker"],"mappings":"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"}