bbj-screen-widget 2.4.44

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 (396) hide show
  1. package/README.md +24 -0
  2. package/bbj-screen-widget.d.ts +117 -0
  3. package/bbj-screen-widget.metadata.json +1 -0
  4. package/bundles/bbj-screen-widget-core.umd.js +606 -0
  5. package/bundles/bbj-screen-widget-core.umd.js.map +1 -0
  6. package/bundles/bbj-screen-widget-core.umd.min.js +2 -0
  7. package/bundles/bbj-screen-widget-core.umd.min.js.map +1 -0
  8. package/bundles/bbj-screen-widget.umd.js +21247 -0
  9. package/bundles/bbj-screen-widget.umd.js.map +1 -0
  10. package/bundles/bbj-screen-widget.umd.min.js +2 -0
  11. package/bundles/bbj-screen-widget.umd.min.js.map +1 -0
  12. package/core/bbj-screen-widget-core.d.ts +4 -0
  13. package/core/bbj-screen-widget-core.metadata.json +1 -0
  14. package/core/package.json +11 -0
  15. package/core/public_api.d.ts +1 -0
  16. package/core/service/baidu-map.service.d.ts +16 -0
  17. package/esm2015/bbj-screen-widget.js +118 -0
  18. package/esm2015/core/bbj-screen-widget-core.js +5 -0
  19. package/esm2015/core/public_api.js +2 -0
  20. package/esm2015/core/service/baidu-map.service.js +101 -0
  21. package/esm2015/lib/announcement/announcement.component.js +80 -0
  22. package/esm2015/lib/announcement/announcement.module.js +25 -0
  23. package/esm2015/lib/audio/audio.component.js +167 -0
  24. package/esm2015/lib/audio/audio.module.js +20 -0
  25. package/esm2015/lib/background/background.component.js +52 -0
  26. package/esm2015/lib/background/background.module.js +19 -0
  27. package/esm2015/lib/bar-chart-three-d/bar-chart-three-d.component.js +323 -0
  28. package/esm2015/lib/bar-chart-three-d/bar-chart-three-d.module.js +20 -0
  29. package/esm2015/lib/basic-bar-chart/basic-bar-chart.component.js +604 -0
  30. package/esm2015/lib/basic-bar-chart/basic-bar-chart.module.js +27 -0
  31. package/esm2015/lib/basic-line-chart/basic-line-chart.component.js +782 -0
  32. package/esm2015/lib/basic-line-chart/basic-line-chart.module.js +20 -0
  33. package/esm2015/lib/basic-pie-chart/basic-pie-chart.component.js +471 -0
  34. package/esm2015/lib/basic-pie-chart/basic-pie-chart.module.js +20 -0
  35. package/esm2015/lib/basic-planimetric-map/basic-planimetric-map.component.js +233 -0
  36. package/esm2015/lib/basic-planimetric-map/basic-planimetric-map.module.js +21 -0
  37. package/esm2015/lib/breathing-bubble-layer/breathing-bubble-layer.component.js +503 -0
  38. package/esm2015/lib/breathing-bubble-layer/breathing-bubble-layer.module.js +19 -0
  39. package/esm2015/lib/bubble-chart/bubble-chart.component.js +348 -0
  40. package/esm2015/lib/bubble-chart/bubble-chart.module.js +20 -0
  41. package/esm2015/lib/bulletin-board/bulletin-board.component.js +160 -0
  42. package/esm2015/lib/bulletin-board/bulletin-board.module.js +23 -0
  43. package/esm2015/lib/button/button.component.js +186 -0
  44. package/esm2015/lib/button/button.module.js +21 -0
  45. package/esm2015/lib/calendar/calendar.component.js +96 -0
  46. package/esm2015/lib/calendar/calendar.module.js +28 -0
  47. package/esm2015/lib/checkbox/checkbox.component.js +333 -0
  48. package/esm2015/lib/checkbox/checkbox.module.js +21 -0
  49. package/esm2015/lib/cross-table/cross-table.component.js +291 -0
  50. package/esm2015/lib/cross-table/cross-table.module.js +20 -0
  51. package/esm2015/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.js +685 -0
  52. package/esm2015/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.js +278 -0
  53. package/esm2015/lib/custom-baidu-map/base-layer.js +53 -0
  54. package/esm2015/lib/custom-baidu-map/custom-baidu-map.component.js +655 -0
  55. package/esm2015/lib/custom-baidu-map/custom-baidu-map.module.js +46 -0
  56. package/esm2015/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.js +116 -0
  57. package/esm2015/lib/custom-baidu-map/wind-layer/wind-layer.component.js +331 -0
  58. package/esm2015/lib/date-picker/date-picker.component.js +447 -0
  59. package/esm2015/lib/date-picker/date-picker.module.js +22 -0
  60. package/esm2015/lib/funnel-chart/funnel-chart.component.js +241 -0
  61. package/esm2015/lib/funnel-chart/funnel-chart.module.js +20 -0
  62. package/esm2015/lib/gantt/gantt.component.js +222 -0
  63. package/esm2015/lib/gantt/gantt.module.js +39 -0
  64. package/esm2015/lib/gauge/gauge.component.js +324 -0
  65. package/esm2015/lib/gauge/gauge.module.js +20 -0
  66. package/esm2015/lib/gauge-progress/gauge-progress.component.js +348 -0
  67. package/esm2015/lib/gauge-progress/gauge.module.js +21 -0
  68. package/esm2015/lib/general-text/general-text.component.js +144 -0
  69. package/esm2015/lib/general-text/general-text.module.js +20 -0
  70. package/esm2015/lib/iconfont/icon.js +199 -0
  71. package/esm2015/lib/iconfont/iconfont.component.js +56 -0
  72. package/esm2015/lib/iconfont/iconfont.module.js +20 -0
  73. package/esm2015/lib/iframe/iframe.component.js +46 -0
  74. package/esm2015/lib/iframe/iframe.module.js +20 -0
  75. package/esm2015/lib/image/image.component.js +98 -0
  76. package/esm2015/lib/image/image.module.js +19 -0
  77. package/esm2015/lib/item-swiper/item-swiper.component.js +334 -0
  78. package/esm2015/lib/item-swiper/item-swiper.module.js +28 -0
  79. package/esm2015/lib/line-bar-chart/line-bar-chart.component.js +398 -0
  80. package/esm2015/lib/line-bar-chart/line-bar-chart.module.js +20 -0
  81. package/esm2015/lib/line-light-flow/line-light-flow.component.js +241 -0
  82. package/esm2015/lib/line-light-flow/line-light-flow.module.js +24 -0
  83. package/esm2015/lib/liquid-fill/liquid-fill.component.js +158 -0
  84. package/esm2015/lib/liquid-fill/liquid-fill.module.js +20 -0
  85. package/esm2015/lib/marquee/marquee.component.js +110 -0
  86. package/esm2015/lib/marquee/marquee.module.js +19 -0
  87. package/esm2015/lib/mip-anim/mip-anim.component.js +26 -0
  88. package/esm2015/lib/mip-anim/mip-anim.module.js +19 -0
  89. package/esm2015/lib/multi-title-gauge/multi-title-gauge.component.js +277 -0
  90. package/esm2015/lib/multi-title-gauge/multi-title-gauge.module.js +22 -0
  91. package/esm2015/lib/number-flop/number-flop.component.js +124 -0
  92. package/esm2015/lib/number-flop/number-flop.module.js +19 -0
  93. package/esm2015/lib/parent-container/parent-container.component.js +21 -0
  94. package/esm2015/lib/parent-container/parent-container.module.js +19 -0
  95. package/esm2015/lib/percent-pie-chart/percent-pie-chart.component.js +248 -0
  96. package/esm2015/lib/percent-pie-chart/percent-pie-chart.module.js +20 -0
  97. package/esm2015/lib/pie3d-chart/pie3d-chart.component.js +303 -0
  98. package/esm2015/lib/pie3d-chart/pie3d-chart.module.js +19 -0
  99. package/esm2015/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.js +431 -0
  100. package/esm2015/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.js +19 -0
  101. package/esm2015/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.js +252 -0
  102. package/esm2015/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.js +19 -0
  103. package/esm2015/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.js +124 -0
  104. package/esm2015/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.js +19 -0
  105. package/esm2015/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.js +359 -0
  106. package/esm2015/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.js +21 -0
  107. package/esm2015/lib/planimetric-map2d/planimetric-map2d.component.js +712 -0
  108. package/esm2015/lib/planimetric-map2d/planimetric-map2d.module.js +34 -0
  109. package/esm2015/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.js +128 -0
  110. package/esm2015/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.js +19 -0
  111. package/esm2015/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.js +242 -0
  112. package/esm2015/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.js +19 -0
  113. package/esm2015/lib/planimetric-map3d/planimetric-map3d.component.js +265 -0
  114. package/esm2015/lib/planimetric-map3d/planimetric-map3d.module.js +22 -0
  115. package/esm2015/lib/radar-chart/radar-chart.component.js +236 -0
  116. package/esm2015/lib/radar-chart/radar-chart.module.js +20 -0
  117. package/esm2015/lib/radio/radio.component.js +148 -0
  118. package/esm2015/lib/radio/radio.module.js +21 -0
  119. package/esm2015/lib/rate/rate.component.js +57 -0
  120. package/esm2015/lib/rate/rate.module.js +23 -0
  121. package/esm2015/lib/scatter3d/scatter3d.component.js +166 -0
  122. package/esm2015/lib/scatter3d/scatter3d.module.js +20 -0
  123. package/esm2015/lib/screen-widget.module.js +536 -0
  124. package/esm2015/lib/search/search.component.js +130 -0
  125. package/esm2015/lib/search/search.module.js +29 -0
  126. package/esm2015/lib/select/select.component.js +343 -0
  127. package/esm2015/lib/select/select.module.js +21 -0
  128. package/esm2015/lib/shape/shape.component.js +248 -0
  129. package/esm2015/lib/shape/shape.module.js +19 -0
  130. package/esm2015/lib/shared/component/video-player/video-player.component.js +114 -0
  131. package/esm2015/lib/shared/component/video-player/video-player.module.js +14 -0
  132. package/esm2015/lib/shared/service/common.service.js +39 -0
  133. package/esm2015/lib/shared/service/file-url.service.js +12 -0
  134. package/esm2015/lib/shared/service/gaode-map.service.js +36 -0
  135. package/esm2015/lib/shared/service/highcharts.service.js +36 -0
  136. package/esm2015/lib/shared/service/http.service.js +20 -0
  137. package/esm2015/lib/shared/util/base.util.js +5 -0
  138. package/esm2015/lib/shared/util/echarts.util.js +12 -0
  139. package/esm2015/lib/shared/util/style.util.js +19 -0
  140. package/esm2015/lib/shuffling-list/color.pipe.js +23 -0
  141. package/esm2015/lib/shuffling-list/shuffling-list.component.js +600 -0
  142. package/esm2015/lib/shuffling-list/shuffling-list.module.js +22 -0
  143. package/esm2015/lib/table/table.component.js +657 -0
  144. package/esm2015/lib/table/table.module.js +38 -0
  145. package/esm2015/lib/tabs/tab/tab.component.js +27 -0
  146. package/esm2015/lib/tabs/tabs.component.js +85 -0
  147. package/esm2015/lib/tabs/tabs.module.js +22 -0
  148. package/esm2015/lib/temporary-data/temporary-data.component.js +49 -0
  149. package/esm2015/lib/temporary-data/temporary-data.module.js +20 -0
  150. package/esm2015/lib/time-picker/time-picker.component.js +112 -0
  151. package/esm2015/lib/time-picker/time-picker.module.js +21 -0
  152. package/esm2015/lib/timer/timer.component.js +108 -0
  153. package/esm2015/lib/timer/timer.module.js +20 -0
  154. package/esm2015/lib/tree-control/tree-control.component.js +381 -0
  155. package/esm2015/lib/tree-control/tree-control.module.js +24 -0
  156. package/esm2015/lib/tree-ring-chart/tree-ring-chart.component.js +215 -0
  157. package/esm2015/lib/tree-ring-chart/tree-ring-chart.module.js +20 -0
  158. package/esm2015/lib/upload/upload.component.js +127 -0
  159. package/esm2015/lib/upload/upload.module.js +22 -0
  160. package/esm2015/lib/video-grid/video-grid.component.js +133 -0
  161. package/esm2015/lib/video-grid/video-grid.module.js +22 -0
  162. package/esm2015/lib/visual-map-chart/visual-map-chart.component.js +395 -0
  163. package/esm2015/lib/visual-map-chart/visual-map-chart.module.js +20 -0
  164. package/esm2015/lib/vote/vote.component.js +100 -0
  165. package/esm2015/lib/vote/vote.module.js +21 -0
  166. package/esm2015/lib/weather/weather.component.js +92 -0
  167. package/esm2015/lib/weather/weather.module.js +21 -0
  168. package/esm2015/lib/wordart/wordart.component.js +84 -0
  169. package/esm2015/lib/wordart/wordart.module.js +19 -0
  170. package/esm2015/lib/workbench-widget.module.js +620 -0
  171. package/esm2015/public-api.js +39 -0
  172. package/fesm2015/bbj-screen-widget-core.js +107 -0
  173. package/fesm2015/bbj-screen-widget-core.js.map +1 -0
  174. package/fesm2015/bbj-screen-widget.js +20169 -0
  175. package/fesm2015/bbj-screen-widget.js.map +1 -0
  176. package/lib/announcement/announcement.component.d.ts +13 -0
  177. package/lib/announcement/announcement.module.d.ts +5 -0
  178. package/lib/audio/audio.component.d.ts +22 -0
  179. package/lib/audio/audio.module.d.ts +4 -0
  180. package/lib/background/background.component.d.ts +12 -0
  181. package/lib/background/background.module.d.ts +4 -0
  182. package/lib/bar-chart-three-d/bar-chart-three-d.component.d.ts +30 -0
  183. package/lib/bar-chart-three-d/bar-chart-three-d.module.d.ts +4 -0
  184. package/lib/basic-bar-chart/basic-bar-chart.component.d.ts +105 -0
  185. package/lib/basic-bar-chart/basic-bar-chart.module.d.ts +5 -0
  186. package/lib/basic-line-chart/basic-line-chart.component.d.ts +102 -0
  187. package/lib/basic-line-chart/basic-line-chart.module.d.ts +4 -0
  188. package/lib/basic-pie-chart/basic-pie-chart.component.d.ts +56 -0
  189. package/lib/basic-pie-chart/basic-pie-chart.module.d.ts +4 -0
  190. package/lib/basic-planimetric-map/basic-planimetric-map.component.d.ts +18 -0
  191. package/lib/basic-planimetric-map/basic-planimetric-map.module.d.ts +4 -0
  192. package/lib/breathing-bubble-layer/breathing-bubble-layer.component.d.ts +210 -0
  193. package/lib/breathing-bubble-layer/breathing-bubble-layer.module.d.ts +4 -0
  194. package/lib/bubble-chart/bubble-chart.component.d.ts +75 -0
  195. package/lib/bubble-chart/bubble-chart.module.d.ts +4 -0
  196. package/lib/bulletin-board/bulletin-board.component.d.ts +25 -0
  197. package/lib/bulletin-board/bulletin-board.module.d.ts +4 -0
  198. package/lib/button/button.component.d.ts +25 -0
  199. package/lib/button/button.module.d.ts +4 -0
  200. package/lib/calendar/calendar.component.d.ts +14 -0
  201. package/lib/calendar/calendar.module.d.ts +4 -0
  202. package/lib/checkbox/checkbox.component.d.ts +45 -0
  203. package/lib/checkbox/checkbox.module.d.ts +4 -0
  204. package/lib/cross-table/cross-table.component.d.ts +30 -0
  205. package/lib/cross-table/cross-table.module.d.ts +4 -0
  206. package/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.d.ts +67 -0
  207. package/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.d.ts +23 -0
  208. package/lib/custom-baidu-map/base-layer.d.ts +16 -0
  209. package/lib/custom-baidu-map/custom-baidu-map.component.d.ts +92 -0
  210. package/lib/custom-baidu-map/custom-baidu-map.module.d.ts +4 -0
  211. package/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.d.ts +16 -0
  212. package/lib/custom-baidu-map/wind-layer/wind-layer.component.d.ts +28 -0
  213. package/lib/date-picker/date-picker.component.d.ts +63 -0
  214. package/lib/date-picker/date-picker.module.d.ts +4 -0
  215. package/lib/funnel-chart/funnel-chart.component.d.ts +24 -0
  216. package/lib/funnel-chart/funnel-chart.module.d.ts +4 -0
  217. package/lib/gantt/gantt.component.d.ts +25 -0
  218. package/lib/gantt/gantt.module.d.ts +4 -0
  219. package/lib/gauge/gauge.component.d.ts +37 -0
  220. package/lib/gauge/gauge.module.d.ts +4 -0
  221. package/lib/gauge-progress/gauge-progress.component.d.ts +46 -0
  222. package/lib/gauge-progress/gauge.module.d.ts +4 -0
  223. package/lib/general-text/general-text.component.d.ts +21 -0
  224. package/lib/general-text/general-text.module.d.ts +4 -0
  225. package/lib/iconfont/icon.d.ts +1 -0
  226. package/lib/iconfont/iconfont.component.d.ts +11 -0
  227. package/lib/iconfont/iconfont.module.d.ts +4 -0
  228. package/lib/iframe/iframe.component.d.ts +10 -0
  229. package/lib/iframe/iframe.module.d.ts +4 -0
  230. package/lib/image/image.component.d.ts +21 -0
  231. package/lib/image/image.module.d.ts +4 -0
  232. package/lib/item-swiper/item-swiper.component.d.ts +41 -0
  233. package/lib/item-swiper/item-swiper.module.d.ts +4 -0
  234. package/lib/line-bar-chart/line-bar-chart.component.d.ts +63 -0
  235. package/lib/line-bar-chart/line-bar-chart.module.d.ts +4 -0
  236. package/lib/line-light-flow/line-light-flow.component.d.ts +26 -0
  237. package/lib/line-light-flow/line-light-flow.module.d.ts +4 -0
  238. package/lib/liquid-fill/liquid-fill.component.d.ts +18 -0
  239. package/lib/liquid-fill/liquid-fill.module.d.ts +4 -0
  240. package/lib/marquee/marquee.component.d.ts +20 -0
  241. package/lib/marquee/marquee.module.d.ts +4 -0
  242. package/lib/mip-anim/mip-anim.component.d.ts +6 -0
  243. package/lib/mip-anim/mip-anim.module.d.ts +4 -0
  244. package/lib/multi-title-gauge/multi-title-gauge.component.d.ts +26 -0
  245. package/lib/multi-title-gauge/multi-title-gauge.module.d.ts +4 -0
  246. package/lib/number-flop/number-flop.component.d.ts +22 -0
  247. package/lib/number-flop/number-flop.module.d.ts +4 -0
  248. package/lib/parent-container/parent-container.component.d.ts +9 -0
  249. package/lib/parent-container/parent-container.module.d.ts +4 -0
  250. package/lib/percent-pie-chart/percent-pie-chart.component.d.ts +24 -0
  251. package/lib/percent-pie-chart/percent-pie-chart.module.d.ts +4 -0
  252. package/lib/pie3d-chart/pie3d-chart.component.d.ts +30 -0
  253. package/lib/pie3d-chart/pie3d-chart.module.d.ts +4 -0
  254. package/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.d.ts +206 -0
  255. package/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.d.ts +4 -0
  256. package/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.d.ts +15 -0
  257. package/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.d.ts +4 -0
  258. package/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.d.ts +15 -0
  259. package/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.d.ts +4 -0
  260. package/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.d.ts +49 -0
  261. package/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.d.ts +4 -0
  262. package/lib/planimetric-map2d/planimetric-map2d.component.d.ts +48 -0
  263. package/lib/planimetric-map2d/planimetric-map2d.module.d.ts +4 -0
  264. package/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.d.ts +14 -0
  265. package/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.d.ts +4 -0
  266. package/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.d.ts +41 -0
  267. package/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.d.ts +4 -0
  268. package/lib/planimetric-map3d/planimetric-map3d.component.d.ts +29 -0
  269. package/lib/planimetric-map3d/planimetric-map3d.module.d.ts +4 -0
  270. package/lib/radar-chart/radar-chart.component.d.ts +23 -0
  271. package/lib/radar-chart/radar-chart.module.d.ts +4 -0
  272. package/lib/radio/radio.component.d.ts +21 -0
  273. package/lib/radio/radio.module.d.ts +4 -0
  274. package/lib/rate/rate.component.d.ts +13 -0
  275. package/lib/rate/rate.module.d.ts +4 -0
  276. package/lib/scatter3d/scatter3d.component.d.ts +25 -0
  277. package/lib/scatter3d/scatter3d.module.d.ts +4 -0
  278. package/lib/screen-widget.module.d.ts +4 -0
  279. package/lib/search/search.component.d.ts +21 -0
  280. package/lib/search/search.module.d.ts +6 -0
  281. package/lib/select/select.component.d.ts +34 -0
  282. package/lib/select/select.module.d.ts +4 -0
  283. package/lib/shape/shape.component.d.ts +50 -0
  284. package/lib/shape/shape.module.d.ts +4 -0
  285. package/lib/shared/component/video-player/video-player.component.d.ts +28 -0
  286. package/lib/shared/component/video-player/video-player.module.d.ts +2 -0
  287. package/lib/shared/service/common.service.d.ts +21 -0
  288. package/lib/shared/service/file-url.service.d.ts +3 -0
  289. package/lib/shared/service/gaode-map.service.d.ts +10 -0
  290. package/lib/shared/service/highcharts.service.d.ts +9 -0
  291. package/lib/shared/service/http.service.d.ts +7 -0
  292. package/lib/shared/util/base.util.d.ts +1 -0
  293. package/lib/shared/util/echarts.util.d.ts +1 -0
  294. package/lib/shared/util/style.util.d.ts +1 -0
  295. package/lib/shuffling-list/color.pipe.d.ts +4 -0
  296. package/lib/shuffling-list/shuffling-list.component.d.ts +76 -0
  297. package/lib/shuffling-list/shuffling-list.module.d.ts +4 -0
  298. package/lib/table/table.component.d.ts +65 -0
  299. package/lib/table/table.module.d.ts +4 -0
  300. package/lib/tabs/tab/tab.component.d.ts +7 -0
  301. package/lib/tabs/tabs.component.d.ts +13 -0
  302. package/lib/tabs/tabs.module.d.ts +4 -0
  303. package/lib/temporary-data/temporary-data.component.d.ts +13 -0
  304. package/lib/temporary-data/temporary-data.module.d.ts +4 -0
  305. package/lib/time-picker/time-picker.component.d.ts +17 -0
  306. package/lib/time-picker/time-picker.module.d.ts +4 -0
  307. package/lib/timer/timer.component.d.ts +21 -0
  308. package/lib/timer/timer.module.d.ts +4 -0
  309. package/lib/tree-control/tree-control.component.d.ts +59 -0
  310. package/lib/tree-control/tree-control.module.d.ts +4 -0
  311. package/lib/tree-ring-chart/tree-ring-chart.component.d.ts +24 -0
  312. package/lib/tree-ring-chart/tree-ring-chart.module.d.ts +4 -0
  313. package/lib/upload/upload.component.d.ts +21 -0
  314. package/lib/upload/upload.module.d.ts +4 -0
  315. package/lib/video-grid/video-grid.component.d.ts +23 -0
  316. package/lib/video-grid/video-grid.module.d.ts +4 -0
  317. package/lib/visual-map-chart/visual-map-chart.component.d.ts +49 -0
  318. package/lib/visual-map-chart/visual-map-chart.module.d.ts +4 -0
  319. package/lib/vote/vote.component.d.ts +15 -0
  320. package/lib/vote/vote.module.d.ts +4 -0
  321. package/lib/weather/weather.component.d.ts +26 -0
  322. package/lib/weather/weather.module.d.ts +4 -0
  323. package/lib/wordart/wordart.component.d.ts +14 -0
  324. package/lib/wordart/wordart.module.d.ts +4 -0
  325. package/lib/workbench-widget.module.d.ts +4 -0
  326. package/package.json +30 -0
  327. package/public-api.d.ts +34 -0
  328. package/src/assets/echarts/map/json/330305.json +1 -0
  329. package/src/assets/echarts/map/json/china-cities.json +1 -0
  330. package/src/assets/echarts/map/json/china-contour.json +1 -0
  331. package/src/assets/echarts/map/json/china.json +1 -0
  332. package/src/assets/echarts/map/json/custom_map.json +1425 -0
  333. package/src/assets/echarts/map/json/custom_map_config.json +1299 -0
  334. package/src/assets/echarts/map/json/province/anhui.json +1 -0
  335. package/src/assets/echarts/map/json/province/aomen.json +1 -0
  336. package/src/assets/echarts/map/json/province/beijing.json +1 -0
  337. package/src/assets/echarts/map/json/province/chongqing.json +1 -0
  338. package/src/assets/echarts/map/json/province/fujian.json +1 -0
  339. package/src/assets/echarts/map/json/province/gansu.json +1 -0
  340. package/src/assets/echarts/map/json/province/guangdong.json +1 -0
  341. package/src/assets/echarts/map/json/province/guangxi.json +1 -0
  342. package/src/assets/echarts/map/json/province/guizhou.json +1 -0
  343. package/src/assets/echarts/map/json/province/hainan.json +1 -0
  344. package/src/assets/echarts/map/json/province/hebei.json +1 -0
  345. package/src/assets/echarts/map/json/province/heilongjiang.json +1 -0
  346. package/src/assets/echarts/map/json/province/henan.json +1 -0
  347. package/src/assets/echarts/map/json/province/hubei.json +1 -0
  348. package/src/assets/echarts/map/json/province/hunan.json +1 -0
  349. package/src/assets/echarts/map/json/province/jiangsu.json +1 -0
  350. package/src/assets/echarts/map/json/province/jiangxi.json +1 -0
  351. package/src/assets/echarts/map/json/province/jilin.json +1 -0
  352. package/src/assets/echarts/map/json/province/liaoning.json +1 -0
  353. package/src/assets/echarts/map/json/province/neimenggu.json +1 -0
  354. package/src/assets/echarts/map/json/province/ningxia.json +1 -0
  355. package/src/assets/echarts/map/json/province/qinghai.json +1 -0
  356. package/src/assets/echarts/map/json/province/shandong.json +1 -0
  357. package/src/assets/echarts/map/json/province/shanghai.json +1 -0
  358. package/src/assets/echarts/map/json/province/shanxi.json +1 -0
  359. package/src/assets/echarts/map/json/province/shanxi1.json +1 -0
  360. package/src/assets/echarts/map/json/province/sichuan.json +1 -0
  361. package/src/assets/echarts/map/json/province/taiwan.json +1 -0
  362. package/src/assets/echarts/map/json/province/tianjin.json +1 -0
  363. package/src/assets/echarts/map/json/province/xianggang.json +1 -0
  364. package/src/assets/echarts/map/json/province/xinjiang.json +1 -0
  365. package/src/assets/echarts/map/json/province/xizang.json +1 -0
  366. package/src/assets/echarts/map/json/province/yunnan.json +1 -0
  367. package/src/assets/echarts/map/json/province/zhejiang.json +1 -0
  368. package/src/assets/echarts/map/json/wenzhou.json +1 -0
  369. package/src/assets/echarts/map/json/world.json +1 -0
  370. package/src/assets/img/screen/bulletin-board.png +0 -0
  371. package/src/assets/img/screen/cross-table.png +0 -0
  372. package/src/assets/img/screen/custom-table.png +0 -0
  373. package/src/assets/img/screen/date-picker.png +0 -0
  374. package/src/assets/img/screen/file-upload.png +0 -0
  375. package/src/assets/img/screen/gantt.png +0 -0
  376. package/src/assets/img/screen/grid.png +0 -0
  377. package/src/assets/img/screen/marker.png +0 -0
  378. package/src/assets/img/screen/multiTitleGauge.png +0 -0
  379. package/src/assets/img/screen/pie3d.png +0 -0
  380. package/src/assets/img/screen/shuffling.png +0 -0
  381. package/src/assets/img/screen/sub-screen.png +0 -0
  382. package/src/assets/img/screen/time-picker.png +0 -0
  383. package/src/assets/img/screen/typhoon.png +0 -0
  384. package/src/assets/img/screen/weather_cloudy.png +0 -0
  385. package/src/assets/img/screen/weather_overcast.png +0 -0
  386. package/src/assets/img/screen/weather_rain.png +0 -0
  387. package/src/assets/img/screen/weather_sunny.png +0 -0
  388. package/src/assets/js/BMap/MarkerClusterer_min.js +1 -0
  389. package/src/assets/js/BMap/TextIconOverlay_min.js +1 -0
  390. package/src/assets/js/BMapGL/MarkerClusterer_min.js +1 -0
  391. package/src/assets/js/BMapGL/TextIconOverlay_min.js +1 -0
  392. package/src/assets/js/BMapGL/mapvgl.min.js +1023 -0
  393. package/src/assets/js/flv.min.js +10 -0
  394. package/src/assets/js/highcharts/highcharts-3d.js +104 -0
  395. package/src/assets/js/highcharts/highcharts.js +574 -0
  396. package/src/assets/js/hls.js +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../projects/screen-widget/src/lib/shared/service/gaode-map.service.ts","../../../projects/screen-widget/src/lib/shared/service/common.service.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../projects/screen-widget/src/lib/image/image.component.ts","../../../projects/screen-widget/src/lib/image/image.module.ts","../../../projects/screen-widget/src/lib/shared/util/echarts.util.ts","../../../projects/screen-widget/src/lib/basic-line-chart/basic-line-chart.component.ts","../../../projects/screen-widget/src/lib/basic-line-chart/basic-line-chart.module.ts","../../../projects/screen-widget/src/lib/shared/service/http.service.ts","../../../projects/screen-widget/src/lib/button/button.component.ts","../../../projects/screen-widget/src/lib/button/button.module.ts","../../../projects/screen-widget/src/lib/timer/timer.component.ts","../../../projects/screen-widget/src/lib/timer/timer.module.ts","../../../projects/screen-widget/src/lib/number-flop/number-flop.component.ts","../../../projects/screen-widget/src/lib/number-flop/number-flop.module.ts","../../../projects/screen-widget/src/lib/vote/vote.component.ts","../../../projects/screen-widget/src/lib/vote/vote.module.ts","../../../projects/screen-widget/src/lib/select/select.component.ts","../../../projects/screen-widget/src/lib/select/select.module.ts","../../../projects/screen-widget/src/lib/shared/util/style.util.ts","../../../projects/screen-widget/src/lib/search/search.component.ts","../../../projects/screen-widget/src/lib/search/search.module.ts","../../../projects/screen-widget/src/lib/weather/weather.component.ts","../../../projects/screen-widget/src/lib/weather/weather.module.ts","../../../projects/screen-widget/src/lib/radio/radio.component.ts","../../../projects/screen-widget/src/lib/radio/radio.module.ts","../../../projects/screen-widget/src/lib/checkbox/checkbox.component.ts","../../../projects/screen-widget/src/lib/checkbox/checkbox.module.ts","../../../projects/screen-widget/src/lib/rate/rate.component.ts","../../../projects/screen-widget/src/lib/rate/rate.module.ts","../../../projects/screen-widget/src/lib/general-text/general-text.component.ts","../../../projects/screen-widget/src/lib/general-text/general-text.module.ts","../../../projects/screen-widget/src/lib/marquee/marquee.component.ts","../../../projects/screen-widget/src/lib/marquee/marquee.module.ts","../../../projects/screen-widget/src/lib/wordart/wordart.component.ts","../../../projects/screen-widget/src/lib/wordart/wordart.module.ts","../../../projects/screen-widget/src/lib/iconfont/iconfont.component.ts","../../../projects/screen-widget/src/lib/iconfont/iconfont.module.ts","../../../projects/screen-widget/src/lib/shared/service/file-url.service.ts","../../../projects/screen-widget/src/lib/audio/audio.component.ts","../../../projects/screen-widget/src/lib/shared/component/video-player/video-player.component.ts","../../../projects/screen-widget/src/lib/shared/component/video-player/video-player.module.ts","../../../projects/screen-widget/src/lib/audio/audio.module.ts","../../../projects/screen-widget/src/lib/basic-bar-chart/basic-bar-chart.component.ts","../../../projects/screen-widget/src/lib/basic-bar-chart/basic-bar-chart.module.ts","../../../projects/screen-widget/src/lib/basic-pie-chart/basic-pie-chart.component.ts","../../../projects/screen-widget/src/lib/basic-pie-chart/basic-pie-chart.module.ts","../../../projects/screen-widget/src/lib/bar-chart-three-d/bar-chart-three-d.component.ts","../../../projects/screen-widget/src/lib/bar-chart-three-d/bar-chart-three-d.module.ts","../../../projects/screen-widget/src/lib/shape/shape.component.ts","../../../projects/screen-widget/src/lib/shape/shape.module.ts","../../../projects/screen-widget/src/lib/line-bar-chart/line-bar-chart.component.ts","../../../projects/screen-widget/src/lib/line-bar-chart/line-bar-chart.module.ts","../../../projects/screen-widget/src/lib/bubble-chart/bubble-chart.component.ts","../../../projects/screen-widget/src/lib/bubble-chart/bubble-chart.module.ts","../../../projects/screen-widget/src/lib/radar-chart/radar-chart.component.ts","../../../projects/screen-widget/src/lib/radar-chart/radar-chart.module.ts","../../../projects/screen-widget/src/lib/funnel-chart/funnel-chart.component.ts","../../../projects/screen-widget/src/lib/funnel-chart/funnel-chart.module.ts","../../../projects/screen-widget/src/lib/background/background.component.ts","../../../projects/screen-widget/src/lib/background/background.module.ts","../../../projects/screen-widget/src/lib/gauge/gauge.component.ts","../../../projects/screen-widget/src/lib/gauge/gauge.module.ts","../../../projects/screen-widget/src/lib/percent-pie-chart/percent-pie-chart.component.ts","../../../projects/screen-widget/src/lib/percent-pie-chart/percent-pie-chart.module.ts","../../../projects/screen-widget/src/lib/tree-ring-chart/tree-ring-chart.component.ts","../../../projects/screen-widget/src/lib/tree-ring-chart/tree-ring-chart.module.ts","../../../projects/screen-widget/src/lib/liquid-fill/liquid-fill.component.ts","../../../projects/screen-widget/src/lib/liquid-fill/liquid-fill.module.ts","../../../projects/screen-widget/src/lib/shuffling-list/shuffling-list.component.ts","../../../projects/screen-widget/src/lib/shuffling-list/color.pipe.ts","../../../projects/screen-widget/src/lib/shuffling-list/shuffling-list.module.ts","../../../projects/screen-widget/src/lib/parent-container/parent-container.component.ts","../../../projects/screen-widget/src/lib/basic-planimetric-map/basic-planimetric-map.component.ts","../../../projects/screen-widget/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.ts","../../../projects/screen-widget/src/lib/breathing-bubble-layer/breathing-bubble-layer.module.ts","../../../projects/screen-widget/src/lib/basic-planimetric-map/basic-planimetric-map.module.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/planimetric-map2d.component.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.ts","../../../projects/screen-widget/src/lib/planimetric-map2d/planimetric-map2d.module.ts","../../../projects/screen-widget/src/lib/parent-container/parent-container.module.ts","../../../projects/screen-widget/src/lib/planimetric-map3d/planimetric-map3d.component.ts","../../../projects/screen-widget/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.ts","../../../projects/screen-widget/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.ts","../../../projects/screen-widget/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.ts","../../../projects/screen-widget/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.ts","../../../projects/screen-widget/src/lib/planimetric-map3d/planimetric-map3d.module.ts","../../../projects/screen-widget/src/lib/mip-anim/mip-anim.component.ts","../../../projects/screen-widget/src/lib/mip-anim/mip-anim.module.ts","../../../projects/screen-widget/src/lib/tree-control/tree-control.component.ts","../../../projects/screen-widget/src/lib/tree-control/tree-control.module.ts","../../../projects/screen-widget/src/lib/visual-map-chart/visual-map-chart.component.ts","../../../projects/screen-widget/src/lib/visual-map-chart/visual-map-chart.module.ts","../../../projects/screen-widget/src/lib/date-picker/date-picker.component.ts","../../../projects/screen-widget/src/lib/date-picker/date-picker.module.ts","../../../projects/screen-widget/src/lib/time-picker/time-picker.component.ts","../../../projects/screen-widget/src/lib/time-picker/time-picker.module.ts","../../../projects/screen-widget/src/lib/custom-baidu-map/custom-baidu-map.component.ts","../../../projects/screen-widget/src/lib/custom-baidu-map/wind-layer/wind-layer.component.ts","../../../projects/screen-widget/src/lib/custom-baidu-map/base-layer.ts","../../../projects/screen-widget/src/lib/shared/util/base.util.ts","../../../projects/screen-widget/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.ts","../../../projects/screen-widget/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.ts","../../../projects/screen-widget/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.ts","../../../projects/screen-widget/src/lib/custom-baidu-map/custom-baidu-map.module.ts","../../../projects/screen-widget/src/lib/iconfont/icon.ts","../../../projects/screen-widget/src/lib/upload/upload.component.ts","../../../projects/screen-widget/src/lib/upload/upload.module.ts","../../../projects/screen-widget/src/lib/cross-table/cross-table.component.ts","../../../projects/screen-widget/src/lib/cross-table/cross-table.module.ts","../../../projects/screen-widget/src/lib/table/table.component.ts","../../../projects/screen-widget/src/lib/table/table.module.ts","../../../projects/screen-widget/src/lib/shared/service/highcharts.service.ts","../../../projects/screen-widget/src/lib/pie3d-chart/pie3d-chart.component.ts","../../../projects/screen-widget/src/lib/pie3d-chart/pie3d-chart.module.ts","../../../projects/screen-widget/src/lib/multi-title-gauge/multi-title-gauge.component.ts","../../../projects/screen-widget/src/lib/multi-title-gauge/multi-title-gauge.module.ts","../../../projects/screen-widget/src/lib/gauge-progress/gauge-progress.component.ts","../../../projects/screen-widget/src/lib/gauge-progress/gauge.module.ts","../../../projects/screen-widget/src/lib/bulletin-board/bulletin-board.component.ts","../../../projects/screen-widget/src/lib/bulletin-board/bulletin-board.module.ts","../../../projects/screen-widget/src/lib/item-swiper/item-swiper.component.ts","../../../projects/screen-widget/src/lib/item-swiper/item-swiper.module.ts","../../../projects/screen-widget/src/lib/temporary-data/temporary-data.component.ts","../../../projects/screen-widget/src/lib/temporary-data/temporary-data.module.ts","../../../projects/screen-widget/src/lib/line-light-flow/line-light-flow.component.ts","../../../projects/screen-widget/src/lib/line-light-flow/line-light-flow.module.ts","../../../projects/screen-widget/src/lib/iframe/iframe.component.ts","../../../projects/screen-widget/src/lib/iframe/iframe.module.ts","../../../projects/screen-widget/src/lib/video-grid/video-grid.component.ts","../../../projects/screen-widget/src/lib/video-grid/video-grid.module.ts","../../../projects/screen-widget/src/lib/scatter3d/scatter3d.component.ts","../../../projects/screen-widget/src/lib/scatter3d/scatter3d.module.ts","../../../projects/screen-widget/src/lib/screen-widget.module.ts","../../../projects/screen-widget/src/lib/announcement/announcement.component.ts","../../../projects/screen-widget/src/lib/announcement/announcement.module.ts","../../../projects/screen-widget/src/lib/calendar/calendar.component.ts","../../../projects/screen-widget/src/lib/calendar/calendar.module.ts","../../../projects/screen-widget/src/lib/tabs/tabs.component.ts","../../../projects/screen-widget/src/lib/tabs/tab/tab.component.ts","../../../projects/screen-widget/src/lib/tabs/tabs.module.ts","../../../projects/screen-widget/src/lib/gantt/gantt.component.ts","../../../projects/screen-widget/src/lib/gantt/gantt.module.ts","../../../projects/screen-widget/src/lib/workbench-widget.module.ts"],"names":["GaodeMapService","lazy","http","this","prototype","loadMap","AMap","Promise","resolve","loadAmapPromise","loadScript","getWeather","city","jsonp","toPromise","Injectable","args","providedIn","LazyService","HttpClient","CommonService","baiduMapService","gaodeMapService","getMap","BaiduMapService","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__esDecorate","ctor","descriptorIn","contextIn","initializers","extraInitializers","accept","f","_","kind","descriptor","name","done","context","access","addInitializer","push","result","get","set","init","unshift","__runInitializers","thisArg","value","useValue","__propKey","x","concat","__setFunctionName","prefix","description","configurable","__metadata","metadataKey","metadataValue","metadata","__awaiter","_arguments","P","generator","reject","fulfilled","step","next","rejected","then","__generator","body","y","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","__createBinding","o","m","k","k2","undefined","__esModule","writable","enumerable","__exportStar","__values","__read","ar","error","__spread","__spreadArrays","il","a","j","jl","__spreadArray","to","from","pack","l","slice","__await","__asyncGenerator","asyncIterator","q","AsyncIterator","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","__importStar","mod","__importDefault","default","__classPrivateFieldGet","receiver","state","has","__classPrivateFieldSet","__classPrivateFieldIn","__addDisposableResource","env","async","dispose","inner","asyncDispose","stack","_SuppressedError","SuppressedError","suppressed","message","Error","__disposeResources","fail","hasError","tslib_es6","ImageComponent","cd","renderer","elementRef","widgetRef","opacity","shadow","color","X","Y","Z","style","layout","_data","ngOnChanges","changes","image","_a","setStyle","markForCheck","ngOnInit","addClass","element","_c","widget","link","enabled","_b","outputs","nativeElement","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","Renderer2","ElementRef","WidgetRef","Property","min","ui","spanLabel","spanControl","max","enum","Data","properties","type","title","Widget","group","icon","widgetService","register","getEchartsTextStyle","font","textStyle","fontFamily","family","fontWeight","weight","fontSize","size","lineHeight","NgModule","declarations","imports","CommonModule","WidgetBaseModule","WidgetService","lineColor","ɵ1","ɵ2","ɵ3","ɵ4","ɵ5","ɵ6","ɵ7","BasicLineChartComponent","space","grid","top","right","bottom","left","align","axisType","lineType","axisColor","axisWidth","xType","yUnit","xUnit","boundaryGap","showY","netLine","netLineType","netLineX","netLineXType","netLineColor","markLine","YmarkLineHeight","YmarkLineName","YmarkLineType","YmarkLineColor","YmarkWidth","XmarkLineLocation","XmarkLineName","XmarkLineType","XmarkLineColor","XmarkWidth","xLabelRotate","xLabelOverflow","zoomOnMouseWheel","chartOption","dataClick","EventEmitter","xData","yData","getTextStyle","dataZoom","getDataZoom","tooltip","getTooltip","legend","getLegend","getGrid","xAxis","getXAxis","yAxis","getYAxis","series","reloadData","nameTextStyle","axisLine","lineStyle","axisLabel","rotate","show","hideXLabel","width","xLabelWidth","overflow","interval","xLabelInterval","splitLine","_this","yMin","yMax","Number","Math","ceil","yMaxAddNum","axisTick","minInterval","yMinInterval","trigger","tooltipFont","axisPointer","insideDataZoom","enableDataZoom","dataZoomMinData","xSet_1","Set","forEach","data","add","start","dataZoomStart","end","dataZoomEnd","sliderDataZoom","zoomLock","brushSelect","seriesMap","dataset","source","record","transform","config","dimension","setSeriesStyle","showDataMarkLine","symbol","position","dataMarkLineFormatter","formatter","eval","marklineStyle","silent","datasetIndex","connectNulls","itemStyle","areaStyle","smooth","symbolSize","encode","uniqueData","splice","getMaxY","toFixed","toString","pow","onChartClick","event","emit","seriesName","hidden","reset","example","background","ɵ0","visibleIf","optionalHelp","text","overlayStyle","whiteSpace","Drill","DataOutput","NgxEchartsModule","HttpService","url","options","post","ButtonComponent","gloabl","borderColor","radius","href","openModel","valueOutput","letterSpacing","borderRadius","boxShadow","openPage","edit","window","open","location","script","Function","fn","GlobalVarService","checkedChildren","unCheckedChildren","autosize","minRows","maxRows","providers","TimerComponent","iconShow","weekShow","iconFontSize","iconMarginRight","iconColor","fontGlow","flowColor","flowSize","format","week","getTime","iconStyle","marginRight","str","substr","clearInterval","timer","setInterval","show_day","Date","getDay","NzIconModule","NumberFlopComponent","prefixContent","prefixFont","numberFont","point","suffixContent","suffixFont","numDigit","serial","tableBar","number","headlineStyle","height","prefixStyle","suffixStyle","numberdate","digits","index","split","hideProperty","VoteComponent","ele","num","btnColor","valueChange","border","setProperty","log","checked","NzCheckboxModule","FormsModule","selectColor","dropdownBg","dropdownBorderColor","ɵ1$1","ɵ2$1","ɵ3$1","ɵ4$1","SelectComponent","hint","dropdownBackgroundColor","selectDropDownColor","selectHoverColor","selectHoverBackgroundColor","dropdownWidth","outputFormat","separator","mode","optionChange","ngStyle","backgroundColor","dropdownStyle","document","selectedValue","option","selectChange","item","find","selectAllData","isArray","join","selectedOption","filter","includes","ɵ0$1","DataInput","Event","params","getFontStyle","NzSelectModule","SearchComponent","colorExample","btnStyleOption","iconSingleColor","iconSingleSize","btnStyle","btnIconStyle","searchChange","onKeypress","parent","child","iconService","fetchFromIconfont","scriptUrl","NzInputModule","NzButtonModule","NzPipesModule","NzIconService","WeatherComponent","zone","tempFont","weatherStyleType","iconSize","weatherIcon","weatherImgs","cloudy","rain","overcast","sunny","weatherImgName","tempStyle","reload","localCity","cityName","run","weather","lives","temperature","NgZone","HttpClientJsonpModule","RadioComponent","radioColor","styleType","selectImage","notSelectImage","isCustom","selectRadio","radioValue","radioChange","NzRadioModule","CheckboxComponent","lableLayout","lablePaddNum","allChecked","indeterminate","backgroudColor","updateCheckOptions","checkOptions","map","labelColors","updateSingleChecked","updateValue","currentValue","padd","lablePadd","labelWidthNum","labelWidth","charAt","change","values_1","changed_1","updateAllChecked","showCheckAll","every","checkedAll","arr","host","[class.vertical]","RateComponent","rateValue","sliderValue","NzRateModule","NzSliderModule","GeneralTextComponent","dataChange","textShadow","_d","_e","_f","_g","_h","padding","cursor","textAlign","exportWord","content","replace","p_1","createElement","innerHTML","keys","outerHTML","triggerLink","MarqueeComponent","direction","scrollamount","behavior","display","setTimeout","WordartComponent","offsetHeight","offsetWidth","backgroundImage","IconfontComponent","FileUrlService","getUrl","AudioComponent","fileUrlService","videoType","src","_src","substring","lastIndexOf","_type","ViewChild","list","VideoPlayerComponent","ngAfterViewInit","initd","resetHls","destroy","resetFlv","loadHls","loadHlsPromise","Hls","isSupported","destroyed","hlsPlayer","loadSource","attachMedia","video","loadFlv","flvPlayer","flvjs","createPlayer","hasAudio","hasVideo","isLive","withCredentials","enableWorker","lazyLoadMaxDuration","seekType","attachMediaElement","load","loadFlvPromise","unload","detachMediaElement","ngOnDestroy","Input","static","exports","VideoPlayerModule","barColor","gradient","ɵ1$2","ɵ2$2","ɵ3$2","BasicBarChartComponent","_super","colors","axisShow","scaleShow","labelDirection","barCategoryGap","showBackground","legends","maxNum","fill","hori_1","horizontal","barColors","x2","y2","global","colorStops","offset","yAxis1","yAxis2","inverse","axis","gridIndex","XdisplayScaleShow","YdisplayScaleShow","xAxisIndex","yAxisIndex","normal","barBorderRadius","emphasis","focus","ɵ0$2","colorSwitch","pieColor","ɵ1$3","ɵ2$3","ɵ3$3","BasicPieChartComponent","legentData","lineMark","buoy","roundWidth","addSplit","seriesDataPie","radiusPie","roseType","splitWidth","splitItem","labelLine","borderWidth","getPieData","reduce","abs","parseInt","objData_1","array2obj","addUnit","percent","orient","center","total","unit","array","resObj","getLegentData","class","ɵ0$3","ɵ1$4","ɵ2$4","ɵ3$4","BarChartThreeDComponent","autoRotate","boxWidth","boxDepth","sData","margin","xAxis3D","yAxis3D","zAxis3D","grid3D","viewControl","alpha","beta","zoomSensitivity","autoRotateAfterStill","distance","this_1","shading","temp","count","sort","prev","els","el","ɵ0$4","z","ShapeComponent","resizeObserver","fillet","side","sr","upper","deviation","destroy$","Subject","observe","pipe","takeUntil","subscribe","complete","clientWidth","clientHeight","stroke","strokeWidth","filterId","id","filterUrl","rx","ry","points","offset1","offset2","minX_1","maxX_1","minY_1","maxY_1","scaleX_1","scaleY_1","getEllipsePoint","rx1","ry1","rx2","ry2","cx","cy","rad","PI","cos","sin","NzResizeObserver","ɵ1$5","ɵ2$5","ɵ3$5","LineBarChartComponent","showY1","dataShadow","first","ɵ0$5","bubbleColor","ɵ1$6","ɵ2$6","ɵ3$6","BubbleChartComponent","shadowBlur","shadowOffsetY","shadowColor","ɵ0$6","RadarChartComponent","shape","area","radar","indicator","ext","this_2","seriesColor","ɵ1$7","ɵ2$7","ɵ3$7","FunnelChartComponent","gap","calculable","maxSize","minSize","dimensions","ɵ0$7","BackgroundComponent","pointerEvents","GaugeComponent","pointerColor","pointerShadow","startAngle","endAngle","labelOffset","labelVal","numFont","labelValOffset","axisTickLen","axisTickWidth","axisTickColor","color1","detail","offsetCenter","pointer","shadowOffsetX","ɵ1$8","ɵ2$8","ɵ3$8","PercentPieChartComponent","clockwise","value_per","angleAxis","radiusAxis","polar","coordinateSystem","roundCap","barWidth","barGap","console","ɵ0$8","TreeRingChartComponent","getData","getMax","res","clockWise","hoverAnimation","LiquidFillComponent","cover","bg","level","waveAnimation","insideColor","backgroundStyle","outline","ShufflingListComponent","carousel","lineWrap","time","serialNumberDisplay","headDisplay","headBackground","headFont","fontBling","bindColor","blingColor","borderBlingColor","borderSize","clickTarget","titleStyle","blingNum","oddBackground","evenBackground","contentFont","contentFontBling","contentBlingColor","contentBlingNum","paddingLeft","paddingRight","地区","流量","行为","tableStyle","animationDelay","dateChange","cellClick","columnClick","headStyle","bodyStyle","rowStyle","pageChange","borderBottom","getBlingStyle","wordBreak","schema","totalElements","paged","updateColumns","parentHeight","parentElement","headerHeight","rowHeight","linHeight","_carousel","runtime","placeholder","animation","paused","updateRuntime","loadNextPage","stopLoadNext","now","lastTime","nextPageTimeout","clearTimeout","getNextLoadTime","nextLoadTime","columns","titleStyleMap","keys_1","keys_1_1","property","cellStyle","column","clickable","flex","onClick","mouseover","animationPlayState","mouseout","onMousewheel","deltaY","stopPropagation","preventDefault","onCellClick","row","html","maxItems","items","required","arraySpan","/clickTarget","DataSchema","ColorPipe","_i","bindColor_1","bindColor_1_1","Pipe","NzToolTipModule","ParentContainerComponent","childInit","deleteChild","childId","BasicPlanimetricMapComponent","BasicPlanimetricMapComponent_1","zoom","centerLng","centerLat","hasMap","_children","import","chartInit","bmap","areaColor","roam","mapStyle","styleJson","featureType","elementType","stylers","visibility","childIndex","findIndex","provide","useExisting","forwardRef","children","hideChild","childTypes","BreathingBubbleLayerComponent","bubbleType","geoCoordMap","海门","鄂尔多斯","招远","舟山","齐齐哈尔","盐城","赤峰","青岛","乳山","金昌","泉州","莱西","日照","胶南","南通","拉萨","云浮","梅州","文登","上海","攀枝花","威海","承德","厦门","汕尾","潮州","丹东","太仓","曲靖","烟台","福州","瓦房店","即墨","抚顺","玉溪","张家口","阳泉","莱州","湖州","汕头","昆山","宁波","湛江","揭阳","荣成","连云港","葫芦岛","常熟","东莞","河源","淮安","泰州","南宁","营口","惠州","江阴","蓬莱","韶关","嘉峪关","广州","延安","太原","清远","中山","昆明","寿光","盘锦","长治","深圳","珠海","宿迁","咸阳","铜川","平度","佛山","海口","江门","章丘","肇庆","大连","临汾","吴江","石嘴山","沈阳","苏州","茂名","嘉兴","长春","胶州","银川","张家港","三门峡","锦州","南昌","柳州","三亚","自贡","吉林","阳江","泸州","西宁","宜宾","呼和浩特","成都","大同","镇江","桂林","张家界","宜兴","北海","西安","金坛","东营","牡丹江","遵义","绍兴","扬州","常州","潍坊","重庆","台州","南京","滨州","贵阳","无锡","本溪","克拉玛依","渭南","马鞍山","宝鸡","焦作","句容","北京","徐州","衡水","包头","绵阳","乌鲁木齐","枣庄","杭州","淄博","鞍山","溧阳","库尔勒","安阳","开封","济南","德阳","温州","九江","邯郸","临安","兰州","沧州","临沂","南充","天津","富阳","泰安","诸暨","郑州","哈尔滨","聊城","芜湖","唐山","平顶山","邢台","德州","济宁","荆州","宜昌","义乌","丽水","洛阳","秦皇岛","株洲","石家庄","莱芜","常德","保定","湘潭","金华","岳阳","长沙","衢州","廊坊","菏泽","合肥","武汉","大庆","convertData","getItem","geoCoord","extraData","lat","lng","Inject","spanLabelFixed","BreathingBubbleLayerModule","PlanimetricMap2dComponent","PlanimetricMap2dComponent_1","_areaColor","areaNamefont","showAreaName","triggerType","selectedMode","zoomSwitch","_borderColor","shadowWidth","mapColorStart","mapColorEnd","selectColorStart","selectColorEnd","areaClick","nameMap","Afghanistan","Albania","Algeria","Angola","Argentina","Armenia","Australia","Austria","Azerbaijan","Bangladesh","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Central African Republic","Chad","Chile","China","Colombia","Costa Rica","Croatia","Cuba","Cyprus","Czech Republic","Democratic Republic of the Congo","Denmark","Djibouti","Dominican Republic","East Timor","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Falkland Islands","Fiji","Finland","France","French Guiana","French Southern and Antarctic Lands","Gabon","Gambia","Georgia","Germany","Ghana","Greece","Greenland","Guatemala","Guinea","Guinea Bissau","Guyana","Haiti","Honduras","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Ivory Coast","Jamaica","Japan","Jordan","Kazakhstan","Kenya","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Lithuania","Luxembourg","Macedonia","Madagascar","Malawi","Malaysia","Mali","Mauritania","Mexico","Moldova","Mongolia","Montenegro","Morocco","Mozambique","Myanmar","Namibia","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","North Korea","Northern Cyprus","Norway","Oman","Pakistan","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Qatar","Republic of Serbia","Republic of the Congo","Romania","Russia","Rwanda","Saudi Arabia","Senegal","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","Somaliland","South Africa","South Korea","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Swaziland","Sweden","Switzerland","Syria","Tajikistan","Thailand","The Bahamas","Togo","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Uganda","Ukraine","United Arab Emirates","United Kingdom","United Republic of Tanzania","United States","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","West Bank","Western Sahara","Yemen","Zambia","Zimbabwe","loadedMap","reloadMap","provinces","ngxEcharts","initChart","visualMap","visualMap2","seriesIndex","layer","triggerOn","geo","select","globalCoord","echarts.getMap","echarts.registerMap","markClick","seriesId","startsWith","geoJson","features","feature","cp","province","rollback","NgxEchartsDirective","FlyLineLayerComponent","fromInfo","toInfo","effect","period","trailLength","curveness","zlevel","fromName","toName","coords","Map2dPolylineLayerComponent","datalist","grouping","polyline","grouppname","groups","ɵ1$9","Map2dMarkLayerComponent","address","information","makerClick","coordinateSyste","imageUrl","rich","obj","ɵ0$9","Map2dVisualLayerComponent","gte","lte","colorEnd","suffix","gradual_1","lucency_1","pieces","piece","isLucency","showLabel","geoIndex","mapType","val","match","exec","FlyLineLayerModule","Map2dPolylineLayerModule","Map2dMarkLayerModule","Map2dVisualLayerModule","buttonEnum","PlanimetricMap3dComponent","PlanimetricMap3dComponent_1","boderWidth","regionHeight","projection","orthographicSize","panMouseButton","rotateMouseButton","bloomIntensity","geo3D","boxHeight","postEffect","enable","bloomEnable","bloom","ɵ1$a","Map3dMarkLayerComponent","groupMap","seriesList","groupName","getSeries","endsWith","responseType","svgStr","svg","DOMParser","parseFromString","paths","getElementsByTagName","path","getAttribute","origin","ɵ0$a","Map3dLineLayerComponent","lineMap","line","Map3dMarkLayerModule","Map3dLineLayerModule","MipAnimComponent","TreeControlComponent","arrayService","checkable","checkStrictly","showLine","expandAll","expandLevel","iconWidth","iconHeight","iconPosition","nodeDefaultIcon","nodeBackground","selectedBackground","nodeCheckedColor","nodeCheckedBackground","searchBorderColor","searchBackgroundColor","searchPlaceholder","treeScrollbarThumbBackground","parentKey","keyChange","nodes","selectedKeys","toTree","waittingSelect","updateStyle","expand","nodeMap","root","parentKey_value","node","isLeaf","selected","expandedKeys","visitTree","deep","onKeysChange","nodeClick","onCheckBoxChange","onNodeDblclick","renamable","edittingNode","renameInput","renameEnd","rename","showNode","search","searchValue","findTree","ArrayService","minimum","precision","showSearch","Method","Param","EventParam","NzTreeModule","NzHighlightModule","VisualMapChartComponent","visualMapPosition","mapColor","selectAreaColor","posi","layoutCenter","layoutSize","buttonStyle","defaultDateEnum","DatePickerComponent","i18n","backImage","dateFormat","selectMode","showTime","timeFormat","alert","allowClear","endDateChange","inputDate","inputEndDate","dateRange","initDefaultDate","rangeMode","getDefaultDate","defaultDate","defaultEndDate","date","onChange","today","startOfDay","addDays","startOfMonth","addMonths","startOfYear","addYears","startOfWeek","addWeeks","setDefaultFormat","datePickerStyle","backgroundSize","nzShowTime","nzFormat","nzHourStep","hourStep","nzMinuteStep","minuteStep","nzSecondStep","secondStep","updateData","disabledDate","updateDisabledDate","parse","nzDisabledDate","current","differenceInCalendarDays","endDate","getDate","input","formatDate","getLocaleId","setValue","NzI18nService","platform","NzDatePickerModule","TimePickerComponent","timeChange","defaultOpenValue","timePickerStyle","NzTimePickerModule","MapTypeEnum","CustomBaiduMapComponent","scale$","minMapShow","showType","dragging","shadeColor","mapCityColor","fillOpacity","strokesize","nightMode","tilt","zoomChange","mapClick","overlaysMap","init$","inited","mapTypeEnum","addLayer","view","removeLayer","setCenter","scale","sx","sy","scaleContent","onStable","take","parentNode","offsetX","parseFloat","offsetY","initMap","loadMapGL","loadMapVGL","mapTypeValue","uploadStyle","runOutsideAngular","BMapGL","Map","container","restrictCenter","centerAndZoom","Point","enableScrollWheelZoom","mapTypeChange","disableDragging","enable3D","setTilt","noAnimation","setDisplayOptions","skyColors","disableTilt","disableRotate","showLocationControl","anchor","BMAP_ANCHOR_TOP_LEFT","Size","locationControl","LocationControl","addControl","stCtrl","PanoramaControl","setOffset","infoWindowBackground","infoWindowColor","addEventListener","getCenter","getZoom","mapvgl","View","mapLoaded","setCenterAndZoom","getTilt","setRectCenterAndZoom","minLng","maxLng","minLat","maxLat","pointA","pointB","getDistance","openInfoWindow","infoWindowTemplate","point_1","TemplateUtil","infoWindowWidth","infoWindowHeight","infoWindow_1","InfoWindow","firstOpen","firstOpenPromise","rawClose_1","close","getCanvasOverlay","canvasOverlay","pStart","pEnd","bounds","Bounds","GroundOverlay","canvas","pointToPixel_1","pointToPixel","CanvasLayer","paneName","update","ctx","getContext","clearRect","json_1","polygonData_1","encodeScale_1","UTF8Scale","geometry","coordinates","coordinate","UTF8Encoding","decodePolygon","encodeOffsets","PolygonLayer","lineWidth","fillColor","renderOrder","mapBackColor","maskLayer","MaskLayer","encodeScale","prevX","prevY","charCodeAt","darkStyle","setMapType","BMAP_NORMAL_MAP","setMapStyleV2","BMAP_SATELLITE_MAP","ScaleSubject","Optional","HostBinding","WindLayerComponent","sharpness","updateOverlay","remove","getCanvas","addCanvasOverlay","addOverlay","removeOverlay","startLng_1","startLat_1","endLng_1","endLat_1","multiple_1","c_1","round","groups_1","p1","p2","floor","p3","gnt","createRadialGradient","addColorStop","fillStyle","beginPath","arc","closePath","getTangency","sqrt","atan","t2","quadraticCurveTo","strokeStyle","BaseLayer","layers","updateLayers","removeLayers","createLayers","Directive","getUUID","uuid","ɵ1$b","ɵ2$9","BaiduMarkerLayerComponent","nzContextMenuService","iconUrl","iconOffsetX","iconOffsetY","toCenter","enableMarkerClusterer","clusterMinSize","clusterMaxSize","clusterFont","clusterMaxZoom","labelFont","unselectOnClickBlank","layerMap","dataMap","showLabelMinZoom","updateTextVisible","selectedId","currentSelectedId","move","defaultLayer","createLayer","textOptions","getTextOptions","flat","collides","labelOffsetX","labelOffsetY","textLayer","TextLayer","addPickEvent","PointLayer","duration","trail","CircleLayer","iconOptions","getIconOptions","clusterGradient","gradient_1","maxZoom","ClusterLayer","IconLayer","hide","maxLng_1","minLng_1","maxLat_1","minLat_1","groupData","textData","id_value","getOptions","resetLayer","force","setData","XOffset","YOffset","enablePicked","dataItem","clickData","clickTimeout","subMarkers","data_1","infoWindowData_1","onMousemove","selectedData_1","lastSelectGroup","currentSelectGroup","lastSelect","updateSize","resetLayerData","enlargeOnSelect","ScrollDispatcher","NzContextMenuService","ɵ0$b","BaiduPolylineLayerComponent","strokeWeight","strokeColor","dashInterval","layerOptions","layerLineMap","lineCap","blend","dashArray","LineLayer","EARTH_RADIUS","TyphoonAreaLayerComponent","nw","ne","sw","se","kk","getTF","getPoints","cradius","angle","NzDropDownModule","NzNoAnimationModule","ScrollingModule","icons","UploadComponent","msg","listType","showUploadList","loading","beforeUpload","file","_fileList","Observable","observer","isJpgOrPng","isLt2M","handleChange","info","status","success","response","getBase64","originFileObj","img","avatarUrl","callback","reader","FileReader","readAsDataURL","NzMessageService","NzUploadModule","CrossTableComponent","pageSize","theadBackground","contentAlign","tbodyBackground","showBorder","cross","needPage","crossVal","widthConfig","rows","heads","ths","head","assemble","totalval","nrow","td","NzTableModule","TableComponent","isCount","customCol","isCross","tdChange","trChange","rowChange","tdClick","totalCount","needCount","headers","filterValues","sumData","updateHeader","hasGroup_1","some","subHeader_1","groupMap_1","grouped","field","ismerge","iscount","needlevel","showFilter","col","dataSize","titleSize","updateFilterOptions","groupBy","sumColumns","sum","isNum","valueSet_1","target_1","filterValue","filterMatch","exclude","e_3","myColor","getColor","rowspan","lastTd_1","check","ite","filed","getDataValue","onTdClick","onTdClickByGroup","onTrClick","onCheck","values","filterChecked","filterVisible","export","merges","row1_1","row2_1","colIndex","rowData","rowIndex","row1","tables","querySelectorAll","table","measureRow","cloneNode","querySelector","removeChild","ɵ0$c","HighChartsService","Highcharts","loadHighChartsPromise","load3D","loadHighCharts3DPromise","Pie3dChartComponent","highChartsService","thickness","showLegend","itemDistance","coefficient","alignType","verticalAlign","initPlugin","each","deg2rad","wrap","seriesTypes","pie","proceed","chart","is3d","seriesOptions","depth","options3d","stacking","shapeArgs","shapeType","ran","h","slicedTranslation","translateX","slicedOffset","translateY","SVGRenderer","ret","zTop","zOut","pointFormat","labelFormat","events","graphic","attr","side1","side2","plotOptions","showInLegend","allowPointSelect","legendItemClick","dataLabels","MultiTitleGaugeComponent","detailFont","pointerLength","showPointer","showScale","showAbove","progress","overlap","datas","numa_1","numb_1","GaugeProgressComponent","numfont","slidesPerView","spaceBetween","navigation","navigationMoveVal","navigationLeftIcon","navigationRightIcon","cardBgImg","navigationBtnConfig","prevEl","nextEl","progressColor","progressShadow","sourceData","clip","colorBox","colorInfo","SwiperModule","BulletinBoardComponent","titleFont","subtitleFont","startColor","endColor","separate","marginSize","contentArr","sp","subtitleStyle","borderLeft","boxStyle","SwiperCore","use","Navigation","Pagination","Scrollbar","A11y","Virtual","Zoom","Autoplay","Thumbs","Controller","ItemSwiperComponent","titlefont","selectHeight","gourpHeight","valueBottom","isgroup","images","groupfont","showNavigation","imgstyle","onSwiper","swiper","onSlideChange","NzSpaceModule","TemporaryDataComponent","LineLightFlowComponent","lineshadowColor","lineHightLightColor","topDistance","resize","resizeTimeout","opt","currentIndex","lineCanvas","initOpt","_initCanvas","_createPattern","draw","innerW","canvasBox","animating","tabHeight","curDisX","avgSpeed","calcAVGSpeed","tabWidthList","sign","getCurSpeed","_calCurve","bezierCurveTo","devicePixelRatio","canvasObj","moveTo","lineTo","createPattern","pattern","_drawHightlight","_draw","createLinearGradient","requestAnimationFrame","trueorfalse","tableHeight","nextIndex","HostListener","IframeComponent","setUrl","VideoGridComponent","gutter","videos","selectedIndex","updateGutter","addSrc","cellSize","validIndex","toggle","NzGridModule","Scatter3dComponent","symbolSizeMin","symbolSizeMax","visualMapColor","colorAlphaMin","colorAlphaMax","inRange","colorAlpha","maximum","className","ImageModule","BasicLineChartModule","BasicPieChartModule","BasicBarChartModule","LineBarChartModule","BarChartThreeDModule","BubbleChartModule","RadarChartModule","FunnelChartModule","PercentPieChartModule","TreeRingChartModule","GaugeModule","LiquidFillModule","ButtonModule","TimerModule","NumberFlopModule","VoteModule","SelectModule","SearchModule","WeatherModule","RadioModule","CheckboxModule","RateModule","GeneralTextModule","MarqueeModule","WordartModule","IconfontModule","TableModule","AudioModule","ShapeModule","BackgroundModule","ShufflingListModule","BasicPlanimetricMapModule","PlanimetricMap2dModule","ParentContainerModule","PlanimetricMap3dModule","MipAnimModule","TreeControlModule","VisualMapChartModule","DatePickerModule","TimePickerModule","CustomBaiduMapModule","UploadModule","CrossTableModule","Pie3dChartModule","MultiTitleGaugeModule","GaugeProgressModule","ItemSwiperModule","BulletinBoardModule","TemporaryDataModule","LineLightFlowModule","IframeModule","VideoGridModule","Scatter3dModule","AnnouncementComponent","headIconDisplay","CalendarComponent","router","isInitialDate","initialDate","calendarOptions","headerToolbar","buttonText","dayGridMonth","timeGridWeek","timeGridDay","timeZone","locale","eventTimeFormat","hour","minute","hour12","slotLabelFormat","eventClick","jsEvent","Router","ɵ0$d","FullCalendarModule","registerPlugins","dayGridPlugin","timeGridPlugin","interactionPlugin","TabsComponent","tabPosition","animated","getContainer","selectedChild","TabComponent","NzTabsModule","GanttComponent","contentRenderers","headerContent","progressTransparency","areaRate","progressHeight","project","resources","dateArr","arrIndex","parseISO","eventColor","resourceId","backColor","initialView","scrollTime","aspectRatio","initDate","views","resourceTimelineDay","slotDuration","resourceTimelineTenDay","days","resourceTimelineMonth","day","weekday","resourceTimelineYear","month","slotLabelInterval","editable","resourceAreaHeaderContent","resourceAreaWidth","columnFormat","eventContent","arg","renderEventContent","eventWillUnmount","unrenderEvent","proColor","extendedProps","barStyle","progressStyle","createEmbeddedView","detectChanges","domNodes","rootNodes","resourceTimelinePlugin","hideHead","AnnouncementModule","TabsModule","CalendarModule","GanttModule"],"mappings":"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CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,OAAQa,MAAO,GAAI8O,OAAQ,GACnC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,OAAQa,MAAO,GAAI8O,OAAQ,GACnC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,OAAQa,MAAO,GAAI8O,OAAQ,GACnC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,MAAOa,MAAO,GAAI8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,GACjC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,MAAOa,MAAO,IAAK8O,OAAQ,GACnC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,MAAOa,MAAO,IAAK8O,OAAQ,GACnC,CAAE3P,KAAM,KAAMa,MAAO,GAAI8O,OAAQ,IACjC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,MAAOa,MAAO,IAAK8O,OAAQ,GACnC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,MAAOa,MAAO,IAAK8O,OAAQ,GACnC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,GAClC,CAAE3P,KAAM,KAAMa,MAAO,IAAK8O,OAAQ,IAEpCxU,KAAAgiC,YAAc,CACZC,KAAI,CAAC,OAAQ,OACbC,OAAM,CAAC,WAAY,WACnBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,OAAM,CAAC,OAAQ,OACfC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,WAAY,WAClBC,KAAI,CAAC,MAAO,MACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,MAAK,CAAC,WAAY,WAClBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,MAAK,CAAC,WAAY,WAClBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,UAAW,UACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,UAAW,WAChBC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,WAAY,WAClBC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,WAAY,UACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,OAAM,CAAC,OAAQ,OACfC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,WAAY,WAClBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,MACdC,KAAI,CAAC,MAAO,MACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,OAAM,CAAC,MAAO,OACdC,KAAI,CAAC,MAAO,OACZC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,IAAK,OACVC,KAAI,CAAC,OAAQ,OACbC,OAAM,CAAC,MAAO,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,MAAO,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,IAAK,OACVC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,MAAO,MACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,IAAK,OACVC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,WAAY,UACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,eAIfhM,8BAAA7hC,UAAAgN,YAAA,SAAYC,GAAZ,IAAAqI,EAAAvV,KACQ6gB,EAAO,GACb7gB,KAAK+hC,WAAWtrB,SAAQ,SAACjC,GACvBqM,EAAK3b,KAAK,CACR4zB,iBAAkB,OAClBpiB,KAAMnB,EAAKw4B,YAAYx4B,EAAKmB,KAAMlC,EAAOjR,KACzC8U,UAAW,CAAEyV,OAAQ,CAAEphB,MAAO8H,EAAO9H,QACrCtF,MAAO,CACL2Q,UAAW,MACXF,SAAU,QACV9C,MAAM,GAERyD,WAAYjD,EAAKy4B,QAAQx5B,EAAOrE,MAChCtL,KAAM2P,EAAOjR,IACb6L,KAAM,eAGVpP,KAAKoiB,OAAO6d,UAAU,CACpB3M,GAAItzB,KAAKszB,GACTzS,KAAIA,KAGRihB,8BAAA7hC,UAAAsN,SAAA,aACAu0B,8BAAA7hC,UAAAurB,YAAA,WACExrB,KAAKoiB,OAAO8d,YAAYlgC,KAAKszB,KAE/BwO,8BAAA7hC,UAAA+tC,QAAA,SAAQnmC,GACN,GAAIA,GAAKA,EAAE5E,SAAW4E,EAAE5E,QAAQ,aAAe,EAC7C,OAAO+U,KAAK,IAAMnQ,EAAI,MAG1Bi6B,8BAAA7hC,UAAA8tC,YAAA,SAAYr3B,EAAMnT,GAEhB,IADA,IAAIg2B,EAAM,GACD72B,EAAI,EAAGA,EAAIgU,EAAK7T,OAAQH,IAAK,CACpC,IAAIurC,EAAWjuC,KAAKgiC,YAAYtrB,EAAKhU,GAAGmC,MACpCopC,GAAYv3B,EAAKhU,GAAG8R,QAAUjR,GAChCg2B,EAAIr0B,KAAK,CACPL,KAAM6R,EAAKhU,GAAGmC,KACdqpC,UAAW,CAAEC,IAAKF,EAAS,GAAIG,IAAKH,EAAS,GAAIxrC,EAAGiU,EAAKhU,GAAG8R,OAAQ9O,MAAOgR,EAAKhU,GAAGgD,OACnFA,MAAOuoC,EAASnoC,OAAO4Q,EAAKhU,GAAGgD,SAIrC,OAAO6zB,iCArd+B,iCAXzCtrB,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,4BACVC,SAAA,wEAJO6xB,yBAAwB38B,WAAA,CAAA,CAAA+L,KAsblBi/B,GAAAA,OAAMxtC,KAAA,CAAC6gC,GAAAA,YAAW,WAAM,OAAA1B,kCA1YrC58B,WAAA,CArBCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,QACNiwB,MAAO,CACLjwB,KAAM,SACND,WAAY,CACV5L,IAAK,CAAE6L,KAAM,UACb1C,MAAO,CACL0C,KAAM,SACNC,MAAO,KACPR,GAAI,CAAElB,OAAQ,YAEhBwC,KAAM,CACJf,KAAM,SACNC,MAAO,KACPR,GAAI,CAAElB,OAAQ,WAAY+N,SAAU,CAAEC,QAAS,MAGnD9M,GAAI,CAAEy/B,eAAgB,KAExBz/B,GAAI,CAAEwC,KAAM,CAAEkuB,UAAW,IAAMxwB,YAAa,mFAW9C3L,WAAA,CAPC8L,cAAAA,KAAK,CACJC,WAAY,CACVtK,KAAM,CAAEuK,KAAM,SAAUC,MAAO,MAC/B3J,MAAO,CAAE0J,KAAM,SAAUC,MAAO,KAChCmF,OAAQ,CAAEpF,KAAM,SAAUC,MAAO,+EArC1ByyB,QAAAA,IAA6B1+B,WAAA,CANzCkM,cAAAA,OAAO,QAAS,CACfC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCA2awE4mB,4BAzarE8B,QAAAA,oCCLX,SAAYryB,GACVA,EAAcC,SAASoyB,QAAAA,mDAN1BzxB,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAACwxB,QAAAA,KACfvxB,QAAS,CAACC,OAAAA,aAAcC,cAAAA,wFAJCC,cAAAA,+CCSzB,SAAYjB,GACVA,EAAcC,SAAS0wB,QAAAA,8EAN1B/vB,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAAC8vB,QAAAA,KACf7vB,QAAS,CAACC,OAAAA,aAAcwJ,WAAAA,iBAAkBvJ,cAAAA,iBAAkB89B,iGALnC79B,cAAAA,iBC0Cd89B,QAAAA,IAAyBC,4BAAA,SAAAtiB,GAoUpC,SAAAqiB,EAAsBzuC,GAAtB,IAAAwV,EACE4W,EAAApqB,KAAA/B,OAAOA,YADauV,EAAAxV,KAAAA,EA7TtBwV,EAAAyrB,SAAW,QAIXzrB,EAAA+qB,KAAO,EAOP/qB,EAAAurB,UAAY,UAOZvrB,EAAAgF,YAAc,UAOdhF,EAAAm5B,WAAa,UAEbn5B,EAAAo5B,aAAoB,CAClB5+B,OAAQ,GACRrD,MAAO,UACPuD,OAAQ,SACRE,KAAM,GACNiB,MAAO,EACPhB,WAAY,IAKdmF,EAAAq5B,cAAe,EAQfr5B,EAAAs5B,YAAc,YASdt5B,EAAAu5B,aAAe,GAKfv5B,EAAAw5B,WAAa,QAObx5B,EAAAy5B,aAAe,GAOfz5B,EAAAugB,YAAc,UAIdvgB,EAAA05B,YAAc,GAOd15B,EAAA25B,cAAgB,UAOhB35B,EAAA45B,YAAc,UAOd55B,EAAA65B,iBAAmB,UAOnB75B,EAAA85B,eAAiB,UAGjB95B,EAAAkrB,QAAS,EAQTlrB,EAAAmB,KAAc,GAWdnB,EAAA+5B,UAAY,IAAI77B,GAAAA,aAEhB8B,EAAAg6B,QAAe,CACbC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,OAAQ,MACRC,UAAW,MACXC,QAAS,OACTC,UAAW,OACXC,QAAS,MACTC,WAAY,OACZC,WAAY,OACZC,QAAS,OACTC,QAAS,MACTC,OAAQ,MACRC,MAAO,KACPC,QAAS,MACTC,OAAQ,KACRC,QAAS,OACTC,yBAA0B,aAC1BC,SAAU,OACVC,OAAQ,KACRC,OAAQ,KACRC,SAAU,OACVC,eAAgB,QAChBC,QAAS,MACTC,SAAU,MACVC,SAAU,MACVC,OAAQ,MACRC,2BAA4B,QAC5BC,KAAM,KACNC,MAAO,KACPC,MAAO,KACPC,SAAU,OACVC,aAAc,QACdC,QAAS,OACTC,KAAM,KACNC,OAAQ,OACRC,iBAAkB,QAClBC,mCAAoC,UACpCC,QAAS,KACTC,SAAU,MACVC,qBAAsB,UACtBC,aAAc,MACdC,QAAS,OACTC,MAAO,KACPC,cAAe,OACfC,oBAAqB,QACrBC,QAAS,QACTC,QAAS,OACTC,SAAU,QACVC,mBAAoB,QACpBC,KAAM,IACNC,QAAS,KACTC,OAAQ,KACRC,gBAAiB,QACjBC,sCAAuC,aACvCC,MAAO,KACPC,OAAQ,MACRC,QAAS,OACTC,QAAS,KACTC,MAAO,KACPC,OAAQ,KACRC,UAAW,MACXC,UAAW,OACXC,OAAQ,MACRC,gBAAiB,QACjBC,OAAQ,MACRC,MAAO,KACPC,SAAU,OACVC,QAAS,MACTC,QAAS,KACTC,MAAO,KACPC,UAAW,KACXC,KAAM,KACNC,KAAM,MACNC,QAAS,MACTC,OAAQ,MACRC,MAAO,MACPC,cAAe,OACfC,QAAS,MACTC,MAAO,KACPC,OAAQ,KACRC,WAAY,QACZC,MAAO,MACPC,OAAQ,MACRC,OAAQ,MACRC,WAAY,SACZC,KAAM,KACNC,OAAQ,OACRC,QAAS,MACTC,QAAS,MACTC,QAAS,OACTC,MAAO,MACPC,UAAW,MACXC,WAAY,MACZC,UAAW,MACXC,WAAY,QACZC,OAAQ,MACRC,SAAU,OACVC,KAAM,KACNC,WAAY,QACZC,OAAQ,MACRC,QAAS,OACTC,SAAU,KACVC,WAAY,KACZC,QAAS,MACTC,WAAY,OACZC,QAAS,KACTC,QAAS,OACTC,MAAO,MACPC,YAAa,KACbC,gBAAiB,SACjBC,cAAe,MACfC,UAAW,OACXC,MAAO,MACPC,QAAS,OACTC,cAAe,MACfC,kBAAmB,QACnBC,OAAQ,KACRC,KAAM,KACNC,SAAU,OACVC,OAAQ,MACRC,mBAAoB,UACpBC,SAAU,MACVC,KAAM,KACNC,YAAa,MACbC,OAAQ,KACRC,SAAU,MACVC,cAAe,OACfC,MAAO,MACPC,qBAAsB,OACtBC,wBAAyB,QACzBC,QAAS,OACTC,OAAQ,MACRC,OAAQ,MACRC,eAAgB,QAChBC,QAAS,OACTC,eAAgB,OAChBC,UAAW,MACXC,SAAU,OACVC,SAAU,QACVC,kBAAmB,QACnBC,QAAS,MACTC,WAAY,OACZC,eAAgB,KAChBC,cAAe,KACfC,cAAe,MACfC,MAAO,MACPC,YAAa,OACbC,MAAO,KACPC,SAAU,MACVC,UAAW,OACXC,OAAQ,KACRC,YAAa,KACbC,MAAO,MACPC,WAAY,QACZC,SAAU,KACVC,cAAe,MACfC,KAAM,KACNC,sBAAuB,WACvBC,QAAS,MACTC,OAAQ,MACRC,aAAc,QACdC,OAAQ,MACRC,QAAS,MACTC,uBAAwB,MACxBC,iBAAkB,KAClBC,8BAA+B,OAC/BC,gBAAiB,KACjBC,QAAS,MACTC,WAAY,SACZC,QAAS,OACTC,UAAW,OACXC,QAAS,KACTC,YAAa,KACbC,iBAAkB,OAClBC,MAAO,KACPC,OAAQ,MACRC,SAAU,QAEZllC,EAAAmrB,UAAiB,GACjBnrB,EAAAmlC,UAA8C,GAE9CnlC,EAAA9J,MAAQ,YAhUqCzJ,UAAAwsC,EAAAriB,GAuU7CqiB,EAAAvuC,UAAAgN,YAAA,SAAYC,GACNA,EAAQwJ,OACN1W,KAAK0W,MAAQ1W,KAAK0W,KAAK,KACzB1W,KAAKghC,SAAWhhC,KAAK0W,KAAK,GAAG7R,KAC7B7E,KAAKyL,MAAMvG,KAAKlF,KAAKghC,WAEvBhhC,KAAK26C,cAGHnM,EAAAvuC,UAAAsN,SAAA,6HAGc,OAAlB4Z,EAAAnnB,KAAkB,CAAA,EAAMA,KAAKD,KAAKqF,IAAI,4BAA4BzE,2BAAlEwmB,EAAKyzB,UAAaxzB,EAAA/f,mBASpBmnC,EAAAvuC,UAAAurB,YAAA,WACMxrB,KAAK66C,aACN76C,KAAK66C,WAAmBC,UAAY,eAGzCtM,EAAAvuC,UAAA2gC,UAAA,WAAA,cAAArrB,EAAAvV,KAEMwU,EAAS,GACbxU,KAAK+6C,UAAY,GACjB/6C,KAAK0gC,UAAUjqB,SAAQ,SAAC4L,GACH,WAAfA,EAAMjT,MAGJiT,EAAM04B,WAAa14B,EAAMxB,KAAKhe,SAC5Bwf,EAAM24B,YACRzlC,EAAKwlC,UAAU71C,KAAKmd,EAAM24B,YAE5BzlC,EAAKwlC,UAAU71C,KAAKmd,EAAM04B,WAC1B14B,EAAM04B,UAAUE,YAAczmC,EAAO3R,QAIvC2R,EADE5S,MAAMof,QAAQqB,EAAMxB,MAChB/X,SAAO0L,EAAW6N,EAAMxB,MAExB/X,SAAO0L,EAAM,CAAE6N,EAAMxB,UAG/BrM,EAAOiC,SAAQ,SAACykC,EAAO58B,GACF,UAAf48B,EAAM9rC,aACD8rC,EAAMpiB,iBAEI,YAAfoiB,EAAM9rC,OACR8rC,EAAMpiB,iBAAmB,UAS7B,IAAMjpB,EAAYF,oBAAoB3P,KAAK2uC,cAC3C3uC,KAAKuT,YAAc,CACjBQ,QAAS,CACPkC,QAAS,OACTklC,UAAWn7C,KAAK6uC,YAAc7uC,KAAK6uC,YAAc,aAEnDuM,IAAK,CACHh0C,MAAO,CACL0mB,OAAQ,CAEN/Y,KAAM/U,KAAK4uC,aACX/+B,UAASA,GAEXme,SAAU,CACRjZ,KAAM/U,KAAK4uC,aACX/+B,UAASA,IAGbi/B,aAAc9uC,KAAK8uC,aACnBuM,OAAQ,CACNj0C,MAAO,CACL2N,KAAM/U,KAAK4uC,aACX/+B,UAAW,CACTnD,OAAwB,QAAjBU,EAAApN,KAAK2uC,oBAAY,IAAAvhC,OAAA,EAAAA,EAAEV,QAAS,OACnCwD,UAA2B,QAAjBpC,EAAA9N,KAAK2uC,oBAAY,IAAA7gC,OAAA,EAAAA,EAAEqC,OAAQ,GACrCL,YAA6B,QAAjBpC,EAAA1N,KAAK2uC,oBAAY,IAAAjhC,OAAA,EAAAA,EAAEqC,SAAU,GACzCK,YAA6B,QAAjB6W,EAAAjnB,KAAK2uC,oBAAY,IAAA1nB,OAAA,EAAAA,EAAE7W,aAAc,KAGjDiI,UAAW,CACTyoB,UAAW,CACT1xB,KAAM,SACNvJ,EAAG,GACHsB,EAAG,GACHzD,EAAG,GACHypB,WAAY,CACV,CACEC,OAAQ,EACR1gB,MAAO1M,KAAKovC,iBAAmBpvC,KAAKovC,iBAAmBpvC,KAAK0uC,YAE9D,CACEthB,OAAQ,EACR1gB,MAAO1M,KAAKqvC,eAAiBrvC,KAAKqvC,eAAiBrvC,KAAK0uC,aAG5D4M,aAAa,GAEf/gC,YAAava,KAAKgvC,eAGtB32B,UAAW,CACTyV,OAAQ,CAENvT,YAAava,KAAKua,YAClB/N,QAAS,EACTs0B,UAAW,CACT1xB,KAAM,SACNvJ,EAAG,GACHsB,EAAG,GACHzD,EAAG,GACHypB,WAAY,CACV,CACEC,OAAQ,EACR1gB,MAAO1M,KAAKkvC,cAAgBlvC,KAAKkvC,cAAgBlvC,KAAK8gC,WAExD,CACE1T,OAAQ,EACR1gB,MAAO1M,KAAKmvC,YAAcnvC,KAAKmvC,YAAcnvC,KAAK8gC,YAGtDwa,aAAa,GAEfxlB,YAAa91B,KAAK81B,YAClBF,WAAY51B,KAAKivC,YACjB7W,eAAgB,EAChBvC,cAAe,GAEjB7H,SAAU,CACR8S,UAAW,CACT1xB,KAAM,SACNvJ,EAAG,GACHsB,EAAG,GACHzD,EAAG,GACHypB,WAAY,CACV,CACEC,OAAQ,EACR1gB,MAAO1M,KAAKovC,iBAAmBpvC,KAAKovC,iBAAmBpvC,KAAK0uC,YAE9D,CACEthB,OAAQ,EACR1gB,MAAO1M,KAAKqvC,eAAiBrvC,KAAKqvC,eAAiBrvC,KAAK0uC,aAG5D4M,aAAa,GAEf/gC,YAAava,KAAKgvC,eAItB3pB,IAAKrlB,KAAKghC,SACVD,KAAM/gC,KAAK+uC,WACXQ,QAASvvC,KAAKuvC,QACdjP,KAAMtgC,KAAKsgC,MAEb9rB,OAAMA,IAEU,QAAlB0S,EAAIlnB,KAAK+6C,iBAAS,IAAA7zB,OAAA,EAAAA,EAAErkB,UAClB7C,KAAKuT,YAAYwnC,UAAY/6C,KAAK+6C,YAItCvM,EAAAvuC,UAAAggC,UAAA,SAAU5d,GACR,GAAIA,EAAMiR,GAAI,CACZ,IAAMgO,EAAathC,KAAK0gC,UAAUa,WAAU,SAAC9+B,GAAM,OAAAA,EAAE6wB,KAAOjR,EAAMiR,MAC9DgO,GAAc,EAChBthC,KAAK0gC,UAAUY,GAAcjf,EAE7BriB,KAAK0gC,UAAUx7B,KAAKmd,GAEtBriB,KAAK4gC,cAGT4N,EAAAvuC,UAAAigC,YAAA,SAAYC,GACV,GAAIA,EAAS,CACX,IAAMmB,EAAathC,KAAK0gC,UAAUa,WAAU,SAAC9+B,GAAM,OAAAA,EAAE6wB,KAAO6M,KAMxDmB,GAAc,IAChBthC,KAAK0gC,UAAU/nB,OAAO2oB,EAAY,GAClCthC,KAAK4gC,eAaL4N,EAAAvuC,UAAA06C,UAAA,sIACE3Z,EAAWhhC,KAAKghC,SAEX,MADCua,QAAAA,OAAeva,GACvB,CAAA,EAAA,GACe,CAAA,EAAMhhC,KAAKD,KAAKqF,IAAI,2BAA6B47B,EAAW,SAASrgC,oBAAhF+V,EAAWyQ,EAAA9f,OACjBm0C,QAAAA,YAAoBxa,EAAUtqB,2BAEhC1W,KAAKygC,QAAS,EACdzgC,KAAK4gC,wBAED4N,EAAAvuC,UAAAw7C,UAAA,SAAUxiC,kHAGd,GAAIA,EAAMyiC,SACRtN,EAAMn1B,EAAMvT,MAAM,GAClByoC,EAAMl1B,EAAMvT,MAAM,IACZ2c,EAAQriB,KAAK0gC,UAAU5f,MAAK,SAACre,GAAM,OAAAwW,EAAMyiC,SAASC,WAAWl5C,EAAE6wB,SACxDjR,EAAMoc,SACjBpc,EAAMoc,QAAQxlB,OAEX,CAEL,GADMoM,EAAMk2B,QAAAA,OAAev7C,KAAKghC,cAE9B,IAAsB7Z,EAAAze,SAAA2c,EAAIu2B,QAAQC,UAAQz0B,EAAAD,EAAArgB,QAAAsgB,EAAAtiB,KAAAsiB,EAAAD,EAAArgB,OAExC,GAFSg1C,EAAO10B,EAAA1hB,OACVyJ,EAAa2sC,EAAQ3sC,YACZtK,OAASoU,EAAMpU,KAAM,CAC9BsK,EAAW4sC,IACb3N,EAAMj/B,EAAW4sC,GAAG,GACpB5N,EAAMh/B,EAAW4sC,GAAG,IACX5sC,EAAW2gB,QACpBse,EAAMj/B,EAAW2gB,OAAO,GACxBqe,EAAMh/B,EAAW2gB,OAAO,IAExBoJ,QAAQla,IAAI7P,GAEd,yGAIA6sC,EAAWh8C,KAAK46C,UAAU95B,MAAK,SAACrT,GAAY,OAAAA,EAAQrG,QAAU6R,EAAMpU,WAExE7E,KAAKyL,MAAMvG,KAAKlF,KAAKghC,UACrBhhC,KAAKghC,SAAWgb,EAASt2C,MACzB1F,KAAK26C,oBAGT36C,KAAKsvC,UAAUp2B,KAAK,CAAErU,KAAMoU,EAAMpU,KAAMupC,IAAGA,EAAED,IAAGA,eAalDK,EAAAvuC,UAAAg8C,SAAA,SAAShjC,GACPA,EAAM+lB,iBACY,MAAdh/B,KAAKyL,OAAsC,GAArBzL,KAAKyL,MAAM5I,SACnC7C,KAAKghC,SAAWhhC,KAAKyL,MAAM1D,MAC3B/H,KAAK26C,cAITnM,EAAAvuC,UAAA2T,aAAA,eAzlBoC,CAASosB,wDA5B9C/xB,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,uBACVC,SAAA,iQAEA0N,UAAW,CAAC,CAAE2lB,QAASxB,yBAA0ByB,YAAaC,GAAAA,YAAW,WAAM,OAAA+M,iKATxEztC,GAAAA,4DAmWNuoB,GAAAA,UAAS1oB,KAAA,CAACq7C,WAAAA,wBA3TX94C,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,cACRuM,IAAK,yGAOT9W,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UAAWiB,IAAK,EAAGI,IAAK,GAAInI,KAAM,4EASlDzD,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,0FAU3FlW,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,4FAU3FlW,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,2FAK3FlW,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAElB,OAAQ,2FAYlCvK,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,2FAURhM,WAAA,CAPCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UACdsB,KAAM,CACJ,CAAE7H,MAAO,KAAM1B,MAAO,SACtB,CAAE0B,MAAO,OAAQ1B,MAAO,8FAY5BtC,WAAA,CARCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UACdsB,KAAM,CACJ,CAAE7H,MAAO,KAAM1B,MAAO,IACtB,CAAE0B,MAAO,KAAM1B,MAAO,UACtB,CAAE0B,MAAO,KAAM1B,MAAO,8FAQ1BtC,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,yFASRhM,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,6FAU3FlW,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,4FAO3FlW,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,yFASRhM,WAAA,CANCuL,cAAAA,SAAS,SAAU,CAClBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,8FAU3FlW,WAAA,CANCuL,cAAAA,SAAS,SAAU,CAClBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,4FAU3FlW,WAAA,CANCuL,cAAAA,SAAS,SAAU,CAClBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,iGAU3FlW,WAAA,CANCuL,cAAAA,SAAS,SAAU,CAClBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,+FAc3FlW,WAAA,CAPC8L,cAAAA,KAAK,CACJC,WAAY,CACVtK,KAAM,CAAEuK,KAAM,SAAUC,MAAO,MAC/B++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,+EAclCjM,WAAA,CAVC2W,cAAAA,WAAW,CAAC,OAAQ,MAAO,QAC3BwH,cAAAA,MAAM,KAAM,CACXC,OAAQ,CACNrS,WAAY,CACVtK,KAAM,CAAEuK,KAAM,SAAUC,MAAO,KAC/B++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,sFAnIzBm/B,QAAAA,IAAyBC,4BAAArrC,WAAA,CAtBrCkM,cAAAA,OAAO,SAAU,CAChBC,MAAO,YACPpC,MAAO,8BACPqC,KAAM,aACNmyB,SAAU,CACR,CACEtyB,MAAO,QACPD,KAAM,4BACNuR,OAAQ,GACRvH,QAAQ,EACRwoB,WAAW,IAGfC,WAAY,CACV,oBACA,4BACA,0BACA,sBACA,yBAEF57B,YAAa,iDAsUejF,GAAAA,cApUjBwtC,QAAAA,KC/BA2N,QAAAA,IAAqB,WAqVhC,SAAAA,EAAwE/5B,GAAApiB,KAAAoiB,OAAAA,EAjVxEpiB,KAAAmQ,KAAO,EAOPnQ,KAAA0M,MAAQ,mBASR1M,KAAA0W,KAAc,CACZ,CACEpN,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,oBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,oBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,MAEV,CACE/yC,KAAM,qBACND,GAAI,qBACJ+yC,SAAU,KACVC,OAAQ,OAGZr8C,KAAAgiC,YAAc,CACZC,KAAI,CAAC,OAAQ,OACbC,OAAM,CAAC,WAAY,WACnBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,OAAM,CAAC,OAAQ,OACfC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,WAAY,WAClBC,KAAI,CAAC,MAAO,MACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,MAAK,CAAC,WAAY,WAClBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,MAAK,CAAC,WAAY,WAClBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,UAAW,UACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,UAAW,WAChBC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,WAAY,WAClBC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,WAAY,UACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,OAAM,CAAC,OAAQ,OACfC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,WAAY,WAClBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,MACdC,KAAI,CAAC,MAAO,MACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,OAAM,CAAC,MAAO,OACdC,KAAI,CAAC,MAAO,OACZC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,IAAK,OACVC,KAAI,CAAC,OAAQ,OACbC,OAAM,CAAC,MAAO,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,MAAO,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,IAAK,OACVC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,WAAY,WACjBC,KAAI,CAAC,MAAO,MACZC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,MACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,MAAK,CAAC,OAAQ,OACdC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,IAAK,OACVC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,MAAO,OACZC,KAAI,CAAC,WAAY,UACjBC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,OACbC,KAAI,CAAC,OAAQ,eAIfqO,EAAAl8C,UAAAgN,YAAA,SAAYC,GACV,IAAM2T,EAAO,CACX,CACEiY,iBAAkB,OAClBpiB,KAAM1W,KAAK+tC,YAAY/tC,KAAK0W,MAC5B4lC,OAAQ,CACN5vC,MAAO1M,KAAK0M,MACZ6vC,OAAQ,EACRxnC,MAAM,EACNyD,WAAY,CAACxY,KAAKmQ,KAAM,IACxBqsC,YAAa,KAEf5nC,UAAW,CACTkZ,OAAQ,CACNphB,MAAO,UACP+vC,UAAW,GACXjwC,QAAS,EACTyI,MAAO,IAGX7F,KAAM,QACNstC,OAAQ,IAGZ18C,KAAKoiB,OAAO6d,UAAU,CACpB3M,GAAItzB,KAAKszB,GACTzS,KAAIA,KAGRs7B,EAAAl8C,UAAAsN,SAAA,aACA4uC,EAAAl8C,UAAAurB,YAAA,WACExrB,KAAKoiB,OAAO8d,YAAYlgC,KAAKszB,KAE/B6oB,EAAAl8C,UAAA8tC,YAAA,SAAYr3B,GAEV,IADA,IAAM6iB,EAAM,GACH72B,EAAI,EAAGA,EAAIgU,EAAK7T,OAAQH,IAAK,CAER,iBAAjBgU,EAAKhU,GAAG4G,OACjBoN,EAAKhU,GAAG4G,KAAOoN,EAAKhU,GAAG4G,KAAKiV,MAAM,MAEV,iBAAf7H,EAAKhU,GAAG2G,KACjBqN,EAAKhU,GAAG2G,GAAKqN,EAAKhU,GAAG2G,GAAGkV,MAAM,MAE5B7H,EAAKhU,GAAG4G,MAAQoN,EAAKhU,GAAG2G,IAC1BkwB,EAAIr0B,KAAK,CACPy3C,SAAUjmC,EAAKhU,GAAG05C,SAClBQ,OAAQlmC,EAAKhU,GAAG25C,OAChBQ,OAAQ,CAACnmC,EAAKhU,GAAG4G,KAAMoN,EAAKhU,GAAG2G,MAIrC,OAAOkwB,KAzYuB,iCAXjCtrB,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,oBACVC,SAAA,sEAJO6xB,yBAAwB38B,WAAA,CAAA,CAAA+L,KAkWlBi/B,GAAAA,OAAMxtC,KAAA,CAAC6gC,GAAAA,YAAW,WAAM,OAAA1B,kCAjVrC58B,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UAAWiB,IAAK,EAAGI,IAAK,IAAKnI,KAAM,4EASnDzD,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,iFAY3FlW,WAAA,CARC8L,cAAAA,KAAK,CACJC,WAAY,CACV7F,KAAM,CAAE8F,KAAM,SAAUC,MAAO,QAC/BhG,GAAI,CAAE+F,KAAM,SAAUC,MAAO,QAC7B+sC,SAAU,CAAEhtC,KAAM,SAAUC,MAAO,QACnCgtC,OAAQ,CAAEjtC,KAAM,SAAUC,MAAO,iFAjB1B8sC,QAAAA,IAAqB/4C,WAAA,CANjCkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCAuVwE4mB,4BArVrEmc,QAAAA,4BCNX,SAAY1sC,GACVA,EAAcC,SAASysC,QAAAA,2CAN1B9rC,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAAC6rC,QAAAA,KACf5rC,QAAS,CAACC,OAAAA,aAAcC,cAAAA,gFAHCC,cAAAA,iBCYdosC,QAAAA,IAA2B,WAsCtC,SAAAA,EAAwE16B,GAAApiB,KAAAoiB,OAAAA,EAlCxEpiB,KAAAmQ,KAAO,EAOPnQ,KAAA0M,MAAQ,mBAQR1M,KAAA0W,KAAc,CACZ,CACEnH,MAAO,IACP6+B,IAAK,SACLD,IAAK,SAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,SAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,OAITnuC,KAAA+8C,SAAW,UAEXD,EAAA78C,UAAAurB,YAAA,WACExrB,KAAKoiB,OAAO8d,YAAYlgC,KAAKszB,KAE/BwpB,EAAA78C,UAAAgN,YAAA,SAAYC,GACVlN,KAAKg9C,WACL,IAAMn8B,EAAO,CACX,CACEiY,iBAAkB,OAClBpiB,KAAM1W,KAAK+8C,SACXE,UAAU,EAEVroC,UAAW,CACTkZ,OAAQ,CACNphB,MAAO1M,KAAK0M,MACZF,QAAS,GACTyI,MAAOjV,KAAKmQ,OAGhBf,KAAM,QACNvK,KAAM,WACN63C,OAAQ,IAGZ18C,KAAKoiB,OAAO6d,UAAU,CACpB3M,GAAItzB,KAAKszB,GACTzS,KAAIA,KAIRi8B,EAAA78C,UAAAsN,SAAA,aAEAuvC,EAAA78C,UAAA+8C,SAAA,WAAA,IAAAznC,EAAAvV,KACEA,KAAK+8C,SAAW,GAChB,IAAMG,EAAa,GACbC,EAAS,GACE,MAAbn9C,KAAK0W,OAGT1W,KAAK0W,KAAKD,SAAQ,SAACjU,GACb06C,EAAWj6C,QAAQT,EAAE+M,OAAS,GAChC2tC,EAAWh4C,KAAK1C,EAAE+M,OAEpB4tC,EAAO36C,EAAE+M,OAAS4tC,EAAO36C,EAAE+M,QAAU,CAAEstC,OAAQ,IAC/C,IAAIp/B,EAAQ,GACZA,EAAMvY,KAAK1C,EAAE4rC,KACb3wB,EAAMvY,KAAK1C,EAAE2rC,KACbgP,EAAO36C,EAAE+M,OAAOstC,OAAO33C,KAAKuY,MAE9By/B,EAAWzmC,SAAQ,SAACxN,GAClBsM,EAAKwnC,SAAS73C,KAAKi4C,EAAOl0C,WAxFQ,iCAXvCgF,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,0BACVC,SAAA,sEAJO6xB,yBAAwB38B,WAAA,CAAA,CAAA+L,KAmDlBi/B,GAAAA,OAAMxtC,KAAA,CAAC6gC,GAAAA,YAAW,WAAM,OAAA1B,kCAlCrC58B,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UAAWiB,IAAK,EAAGI,IAAK,IAAKnI,KAAM,4EASnDzD,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,iFAW3FlW,WAAA,CAPC8L,cAAAA,KAAK,CACJC,WAAY,CACVI,MAAO,CAAEH,KAAM,SAAUC,MAAO,MAChC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,+EAhBvBytC,QAAAA,IAA2B15C,WAAA,CANvCkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCAwCwE4mB,4BAtCrE8c,QAAAA,kCCFX,SAAYrtC,GACVA,EAAcC,SAASotC,QAAAA,iDAN1BzsC,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAACwsC,QAAAA,KACfvsC,QAAS,CAACC,OAAAA,aAAcC,cAAAA,sFAPAC,cAAAA,0BCuEhB,CAAEtB,KAAM,SAAUC,MAAO,MAAM+tC,KAsB7B,CAAEhuC,KAAM,SAAUC,MAAO,MAvExBguC,QAAAA,IAAuB,WA+ElC,SAAAA,EAAwEj7B,GAAApiB,KAAAoiB,OAAAA,EAnDxEpiB,KAAAm9C,OAAS,GAITn9C,KAAAmQ,KAAO,GAcPnQ,KAAA0M,MAAQ,mBAWR1M,KAAA0W,KAAc,CACZ,CACE4mC,QAAS,OACTC,YAAa,OACbhuC,MAAO,GACP6+B,IAAK,QACLD,IAAK,OAeTnuC,KAAAw9C,WAAa,IAAI/pC,GAAAA,oBAEjB4pC,EAAAp9C,UAAAurB,YAAA,WACExrB,KAAKoiB,OAAO8d,YAAYlgC,KAAKszB,KAE/B+pB,EAAAp9C,UAAAgN,YAAA,SAAYC,GAAZ,IAAAqI,EAAAvV,KACQ6gB,EAAO,CACXyS,GAAItzB,KAAKszB,GACTlkB,KAAM,UACNquC,gBAAiB,OACjB/mC,KAAM,GACN3C,QAAS,CACPgE,UAAW,MACXF,SAAU,MACVhI,UAAW,CACTnD,MAAO1M,KAAK0M,MACZwD,SAAUlQ,KAAKmQ,OAGnB6d,SAAU,CACR5mB,MAAO,CACL2N,MAAM,KAIZ/U,KAAK0W,KAAKD,SAAQ,SAACjU,GAGG,OAAhB+S,EAAK4nC,QAAmB5nC,EAAK4nC,OAAOt6C,OAAS,GAC/C0S,EAAK4nC,OAAO1mC,SAAQ,SAACjP,GACfA,EAAE+H,QAAU/M,EAAE+M,QACR,WAAa/H,EAAEk2C,SAChBl2C,EAAEyN,UAIf,IAAMyB,EAAY,CAChB4c,GAAI9wB,EAAE8wB,GAAIzuB,KAAMrC,EAAE86C,QAAS53C,MAAO,CAAClD,EAAE4rC,IAAK5rC,EAAE2rC,KAAK31B,WAAW,EAAGpR,MAAO,CACpE2Q,UAAW,SAAC9O,GACV,OAAOA,EAAEpE,MAEX84C,KAAM,CACJtuC,MAAO,CACLa,SAASqF,EAAKpF,KACdzD,MAAO6I,EAAK7I,MACZgF,MAAO,QASThM,MAAO,CAELwK,SAASqF,EAAKpF,KACdmX,QAAS,CAAC,EAAG,GAAI,EAAG,GACpB5V,MAAO,UAIXhF,MAAO6I,EAAK7I,MACZwD,SAAUqF,EAAKpF,KACf4E,MAAM,IAGNvS,EAAE+6C,cACJ7mC,EAAK3C,QAAU,CAAEgE,UAAWvV,EAAE+6C,cAE7BhoC,EAAK4nC,QAAQ5nC,EAAK4nC,OAAOt6C,OAAO,GACjC0S,EAAK4nC,OAAO1mC,SAAQ,SAAAzT,GACdA,EAAE06C,WAGNhnC,EAAKtP,MAAMu2C,KAAK36C,EAAEuM,OAAO,CACvB0O,OAAOjb,EAAEiS,MACTvD,MAAO,SACP6O,gBAAiB,CACXpT,MAAOnK,EAAE06C,eAKrB78B,EAAKnK,KAAKxR,KAAKwR,MA+BjB1W,KAAKoiB,OAAO6d,UAAU,CACpB3M,GAAItzB,KAAKszB,GACTzS,KAAIA,EACJ4d,QAAS,SAACxlB,GACR,IAAM2kC,EAAM3kC,EAAMvC,KAClBnB,EAAKioC,WAAWtkC,KAAK,CACnBoa,GAAIsqB,EAAItqB,GACRgqB,QAASM,EAAI/4C,KACbupC,IAAKwP,EAAIl4C,MAAM,GACfyoC,IAAKyP,EAAIl4C,MAAM,SAMvB23C,EAAAp9C,UAAAsN,SAAA,eAhNkC,iCAXnCU,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,sBACVC,SAAA,wEAJO6xB,yBAAwB38B,WAAA,CAAA,CAAA+L,KA4FlBi/B,GAAAA,OAAMxtC,KAAA,CAAC6gC,GAAAA,YAAW,WAAM,OAAA1B,kCAnDrC58B,WAAA,CA3BCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,QACNC,MAAO,OACP+vB,SAAU,GACVC,MAAO,CACLjwB,KAAM,SACND,WAAY,CACVuuC,SAAU,CACRtuC,KAAM,SACNC,MAAO,KACPR,GAAI,CACFlB,OAAQ,aAGZsH,MAAO,CACL7F,KAAM,SACNC,MAAO,MAETE,MAAO,CACLH,KAAM,SACNC,MAAO,OAGXiwB,SAAU,IAEZzwB,GAAI,CAAEwC,KAAM,CAAEkuB,UAAW,IAAMxwB,YAAa,+EAM9C3L,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UAAWiB,IAAK,EAAGI,IAAK,IAAKnI,KAAM,4EAgBnDzD,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,iFAc3FlW,WAAA,CAVC8L,cAAAA,KAAK,CACJC,WAAY,CACVmkB,GAAEuqB,KACFP,QAAS,CAAEluC,KAAM,SAAUC,MAAO,MAClCkuC,YAAa,CAAEnuC,KAAM,SAAUC,MAAO,MACtCE,MAAO,CAAEH,KAAM,SAAUC,MAAO,QAChC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,+EAwBlCjM,WAAA,CAXC2W,cAAAA,WAAW,CAAC,KAAM,UAAW,MAAO,QACpCwH,cAAAA,MAAM,OAAQ,CACbC,OAAQ,CACNrS,WAAY,CACVmkB,GAAE8pB,KACFE,QAAS,CAAEluC,KAAM,SAAUC,MAAO,MAClC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,uFA1EzBguC,QAAAA,IAAuBj6C,WAAA,CANnCkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCAiFwE4mB,4BA/ErEqd,QAAAA,8BCbX,SAAY5tC,GACVA,EAAcC,SAAS2tC,QAAAA,6CAN1BhtC,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAAC+sC,QAAAA,KACf9sC,QAAS,CAACC,OAAAA,aAAcC,cAAAA,kFANAC,cAAAA,iBCqBbotC,QAAAA,IAAyB,WAqJpC,SAAAA,EAAwE17B,GAAApiB,KAAAoiB,OAAAA,EAnJxEpiB,KAAA4P,KAAY,CACVG,OAAQ,GACRrD,MAAO,UACPuD,OAAQ,SACRE,KAAM,GACNiB,MAAO,EACPhB,WAAY,IAIdpQ,KAAAyR,KAAO,GAEPzR,KAAAwR,OAAS,GA2CTxR,KAAA65B,MAAQ,CACN,CAAEkkB,IAAK,EAAGC,IAAK,GAAI52C,MAAO,MAAOsF,MAAO,UAAWuxC,SAAU,KAAMjuB,KAAM,IACzE,CACE+tB,IAAK,GACL32C,MAAO,MACPsF,MAAO,UACPuxC,SAAU,KACVjuB,KAAM,KAyBVhwB,KAAAgP,IAAM,IAUNhP,KAAA4O,IAAM,IAON5O,KAAAgG,OAAS,GAOThG,KAAAk+C,OAAS,GAUTl+C,KAAAgN,MAAe,CACb,CAAEnI,KAAM,OAAQa,MAAO,EAAGqO,QAAS,oBACnC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,MAAOa,MAAO,GAAIqO,QAAS,sBAIrC/T,KAAAwT,UAAY,IAAIC,GAAAA,aAChBzT,KAAA0T,MAAQ,GACR1T,KAAA2T,MAAQ,GACR3T,KAAAwU,OAAS,GAETxU,KAAA8M,MAAQ,CACNJ,MAAO,GACPoD,WAAY,GACZE,WAAY,GACZE,SAAU,GACVE,WAAY,IAGdpQ,KAAA+6C,UAAY,UAGZ+C,EAAA79C,UAAAurB,YAAA,WACExrB,KAAKoiB,OAAO8d,YAAYlgC,KAAKszB,KAG/BwqB,EAAA79C,UAAAsN,SAAA,aACAuwC,EAAA79C,UAAAgN,YAAA,SAAYC,GAAZ,IAAAqI,EAAAvV,KAQE,GAPAA,KAAK8M,MAAQ,CACXJ,MAAO1M,KAAK4P,KAAKlD,MACjBoD,WAAY9P,KAAK4P,KAAKG,OACtBC,WAAYhQ,KAAK4P,KAAKK,OACtBC,SAAUlQ,KAAK4P,KAAKO,KACpBC,WAAYpQ,KAAK4P,KAAKQ,YAEpBlD,EAAQF,MAAO,CACjB,IAAImxC,GAAU,EACVC,GAAU,EACRC,EAASr+C,KAAK65B,MAAMxU,KAAI,SAACwU,GAC7B,IAAMykB,EAAK78C,OAAAc,OAAA,GAAQs3B,GAwBnB,OAvBKukB,GAAW7oC,EAAKgpC,UAAU1kB,EAAMntB,SACnC0xC,GAAU,GAERvkB,EAAMntB,OAASmtB,EAAMokB,WACvBE,GAAU,EACVG,EAAM5xC,MAAQ,CACZ0C,KAAM,SACNvJ,EAAG,GACHsB,EAAG,GACHzD,EAAG,GACHypB,WAAY,CACV,CACEC,OAAQ,EACR1gB,MAAOmtB,EAAMntB,OAEf,CACE0gB,OAAQ,EACR1gB,MAAOmtB,EAAMokB,WAGjB3C,aAAa,IAGVgD,KAETt+C,KAAK+6C,UAAY,CACfnsC,IAAK,EACLI,IAAK,IACLyC,KAAMzR,KAAKyR,MAAQ,GACnBD,OAAQxR,KAAKwR,QAAU,GACvBgtC,WAAW,EACX7kC,KAAM,CAAC3Z,KAAKgP,IAAKhP,KAAK4O,KACtByvC,OAAMA,EACNxuC,UAAW7P,KAAK8M,MAChBiI,MAAM,GA6BR,IAAI8L,EAAO,GACP7gB,KAAKgN,MAAMnK,SACbge,EAAO,CACL,CACEhc,KAAM,GACNuK,KAAM,MACNqvC,SAAU,EACVC,QAAS,GACTt3C,MAAO,CACL0mB,OAAQ,CACN/Y,MAAM,EACNgD,UAAW,SAAC4mC,GACV,IAAMj5C,EAAQi5C,EAAIj5C,MAAQi5C,EAAIj5C,MAAQ,EAChCM,EAASuP,EAAKvP,OAASuP,EAAKvP,OAAS,GACrCk4C,EAAS3oC,EAAK2oC,OAAS3oC,EAAK2oC,OAAS,GAC3C,OAAQS,EAAI95C,KAAO,IAAMmB,EAASN,EAAQw4C,GAAQ3/B,MAAM,KAAK0C,KAAK,OAEpEpR,UAAW7P,KAAK8M,OAElBkhB,SAAU,CACRjZ,MAAM,IAeV2B,KAAM1W,KAAKgN,SAIjB,IAAMqV,EAAa,CACjBiR,GAAItzB,KAAKszB,GACTzS,KAAMA,EACNk6B,UAAW/6C,KAAK+6C,UAChB3rC,KAAM,WAGJ+uC,GAAWC,KACb/7B,EAAM24B,WAAUv5C,OAAAc,OAAAd,OAAAc,OAAA,GACXvC,KAAK+6C,WAAS,CACjBsD,OAAQr+C,KAAK65B,MAAMxU,KAAI,SAACwU,GACtB,OAAAp4B,OAAAc,OAAAd,OAAAc,OAAA,GAAYs3B,GAAK,CAAEntB,MAAO6I,EAAK/I,QAAQqtB,EAAMntB,cAGjD2V,EAAM04B,UAAUhmC,MAAO,GAEzB/U,KAAKoiB,OAAO6d,UAAU5d,KAI1By7B,EAAA79C,UAAAs+C,UAAA,SAAU7xC,GACR,GAAIA,EAAO,CACT,IAAMkyC,EAAQ,+BAA+BC,KAAKnyC,GAClD,GAAIkyC,EAEF,GADgBlpC,OAAOkpC,EAAM,IACf,EACZ,OAAO,EAIb,OAAO,GAGTd,EAAA79C,UAAAuM,QAAA,SAAQE,GAON,OANIA,IACFA,EAAQA,EAAMib,QAAQ,sCAAsC,SAAC/K,EAAKlZ,EAAG8D,EAAGhG,EAAGyH,GAEzE,OADAiwB,QAAQla,IAAIpC,EAAKlZ,EAAG8D,EAAGhG,EAAGyH,GACnB,OAAOvF,EAAC,IAAI8D,EAAC,IAAIhG,EAAC,QAGtBkL,KAtT2B,iCAXrCuB,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,wBACVC,SAAA,sEAJO6xB,yBAAwB38B,WAAA,CAAA,CAAA+L,KAkKlBi/B,GAAAA,OAAMxtC,KAAA,CAAC6gC,GAAAA,YAAW,WAAM,OAAA1B,kCAnJrC58B,WAAA,CADCuL,cAAAA,SAAS,KAAM,CAAEE,GAAI,CAAElB,OAAQ,mFAWhCvK,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,kFAG1BhM,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,oFA4C1BhM,WAAA,CA1CCuL,cAAAA,SAAS,KAAM,CACdS,KAAM,QACNC,MAAO,OACP+vB,SAAU,GACVC,MAAO,CACLjwB,KAAM,SACND,WAAY,CACV4uC,IAAK,CACH3uC,KAAM,SACNC,MAAO,MAET2uC,IAAK,CACH5uC,KAAM,SACNC,MAAO,QAETjI,MAAO,CACLgI,KAAM,SACNC,MAAO,MAET3C,MAAO,CACL0C,KAAM,SACNC,MAAO,KACPR,GAAI,CACFlB,OAAQ,YAGZswC,SAAU,CACR7uC,KAAM,SACNC,MAAO,OACPR,GAAI,CACFlB,OAAQ,YAGZqiB,KAAM,CACJ5gB,KAAM,SACNC,MAAO,OAGXiwB,SAAU,CAAC,QAAS,UAEtBzwB,GAAI,CAAEwC,KAAM,CAAEkuB,UAAW,IAAMxwB,YAAa,8EAkC9C3L,WAAA,CARCuL,cAAAA,SAAS,OAAQ,CAChBK,IAAK,CACHI,KAAM,SACNC,MAAO,MACPR,GAAI,IAENywB,SAAU,CAAC,+EAYbl8B,WAAA,CARCuL,cAAAA,SAAS,OAAQ,CAChBC,IAAK,CACHQ,KAAM,SACNC,MAAO,MACPR,GAAI,IAENywB,SAAU,CAAC,+EASbl8B,WAAA,CANCuL,cAAAA,SAAS,KAAM,CACdC,IAAK,CACHQ,KAAM,SACNP,GAAI,+EAURzL,WAAA,CANCuL,cAAAA,SAAS,KAAM,CACdC,IAAK,CACHQ,KAAM,SACNP,GAAI,+EAaRzL,WAAA,CATC8L,cAAAA,KAAK,CACJC,WAAY,CACVtK,KAAM,CAAEuK,KAAM,SAAUC,MAAO,MAC/B3J,MAAO,CAAE0J,KAAM,SAAUC,MAAO,KAChC0E,QAAS,CAAE3E,KAAM,SAAUC,MAAO,MAClC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,QAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,kFAclCjM,WAAA,CAFC0W,cAAAA,QACAC,cAAAA,WAAW,CAAC,OAAQ,QAAS,UAAW,MAAO,oFArIrC+jC,QAAAA,IAAyB16C,WAAA,CANrCkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCAuJwE4mB,4BArJrE8d,QAAAA,gCCVX,SAAYruC,GACVA,EAAcC,SAASouC,QAAAA,+CAR1BztC,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CACZwtC,QAAAA,KAEFvtC,QAAS,CAACC,OAAAA,aAAcC,cAAAA,oFARCC,cAAAA,4CCsBzB,SAAYjB,GACVA,EAAcC,SAAS8+B,QAAAA,+CAf1Bn+B,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAACk+B,QAAAA,KACfj+B,QAAS,CACPC,OAAAA,aACAwJ,WAAAA,iBACAvJ,cAAAA,iBACAquC,mBACAvQ,2BACAwQ,yBACAC,qBACAC,0FAjBuBvuC,cAAAA,2CCMzB,SAAYjB,yEALbY,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAAC0vB,0BACfzvB,QAAS,CAACC,OAAAA,aAAcC,cAAAA,mFAJCC,cAAAA,iBCgB3B,IAAMwuC,WAAa,CACjB,CAAE93C,MAAO,OAAQ1B,MAAO,QACxB,CAAE0B,MAAO,OAAQ1B,MAAO,UACxB,CAAE0B,MAAO,OAAQ1B,MAAO,UAyBby5C,QAAAA,IAAyBC,4BAAA,SAAAjzB,GAkGpC,SAAAgzB,EAAYp/C,GAAZ,IAAAwV,EACE4W,EAAApqB,KAAA/B,KAAMD,IAAKC,YA5FbuV,EAAAyrB,SAAW,QAMXzrB,EAAAurB,UAAY,UAMZvrB,EAAAgF,YAAc,UAMdhF,EAAAm5B,WAAa,UAEbn5B,EAAAo5B,aAAoB,CAClB5+B,OAAQ,GACRrD,MAAO,UACPuD,OAAQ,SACRE,KAAM,GACNiB,MAAO,EACPhB,WAAY,IAKdmF,EAAAq5B,cAAe,EAOfr5B,EAAAugB,YAAc,UAIdvgB,EAAA8pC,WAAa,EAEb9pC,EAAA+pC,aAAe,EAOf/pC,EAAAgqC,WAAa,cAEbhqC,EAAAic,SAAW,IAEXjc,EAAAiqC,iBAAmB,IAEnBjqC,EAAA6b,MAAQ,GAER7b,EAAA8b,KAAO,EAEP9b,EAAAkqC,eAAiB,SAEjBlqC,EAAAmqC,kBAAoB,OAIpBnqC,EAAAoqC,eAAiB,GAGjBpqC,EAAAkrB,QAAS,EAQTlrB,EAAAmB,KAAc,GAWdnB,EAAA+5B,UAAY,IAAI77B,GAAAA,sBAhG6BzR,UAAAm9C,EAAAhzB,GAsG7CgzB,EAAAl/C,UAAA2gC,UAAA,WAGE,IAAM/wB,EAAYF,oBAAoB3P,KAAK2uC,cACrCiR,EAAQ,CACZxwC,KAAM,QACNywC,UAAW,EACXP,aAAct/C,KAAKs/C,aACnBl4C,MAAK3F,OAAAc,OAAA,CAEHwS,KAAM/U,KAAK4uC,aACXpd,SAAU,GACP3hB,GAELi/B,aAAc9uC,KAAK8uC,aACnBz2B,UAAW,CACT3L,MAAO1M,KAAK8gC,UACZvmB,YAAava,KAAKua,YAClB6U,YAAapvB,KAAKq/C,YAEpBrxB,SAAU,CACR5mB,MAAK3F,OAAAc,OAAA,CACHwS,KAAM/U,KAAK4uC,cACR/+B,GAELwI,UAAW,CACT3L,MAAO1M,KAAK0uC,aAGhBrpB,IAAKrlB,KAAKghC,SACVD,KAAM/gC,KAAK+uC,WACXQ,QAASvvC,KAAKuvC,QACdjP,KAAMtgC,KAAKsgC,KAGXnP,YAAa,CACXouB,WAAYv/C,KAAKu/C,WACjB/tB,SAAUxxB,KAAKwxB,SACfguB,iBAAkBx/C,KAAKw/C,iBACvBpuB,MAAOpxB,KAAKoxB,MACZC,KAAMrxB,KAAKqxB,KACXouB,eAAgBz/C,KAAKy/C,eACrBC,kBAAmB1/C,KAAK0/C,mBAE1BI,WAAY,CACVC,OAAQ//C,KAAKggD,YACbC,MAAO,CACLF,OAAQ//C,KAAKggD,YACbL,eAAgB3/C,KAAK2/C,kBAIvBnrC,EAAS,GACbxU,KAAK0gC,UAAUjqB,SAAQ,SAAC4L,GAClBzgB,MAAMof,QAAQqB,EAAMxB,MACtBrM,EAAOtP,KAAIpC,MAAX0R,EAAM1L,SAASuZ,EAAMxB,OAErBrM,EAAOtP,KAAKmd,EAAMxB,SAItB7gB,KAAKuT,YAAc,CACjBqsC,MAAKA,EACL7rC,QAAS,GACTS,OAAMA,MAtK0B,CAASg6B,QAAAA,mCAtB9CvgC,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,uBACVC,SAAA,gPAEA0N,UAAW,CAAC,CAAE2lB,QAASxB,yBAA0ByB,YAAaC,GAAAA,YAAW,WAAM,OAAA0d,iKAhBxEp+C,GAAAA,cAyCPoC,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,cACRuM,IAAK,yGAST9W,WAAA,CALCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,yFASZvK,WAAA,CALCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,2FASZvK,WAAA,CALCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,0FAKZvK,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAElB,OAAQ,2FAYlCvK,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,2FASRhM,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,4FAO3FlW,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,wFAIRhM,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,0FAQ1BhM,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBM,KAAM,CACJ,CAAE7H,MAAO,OAAQ1B,MAAO,eACxB,CAAE0B,MAAO,OAAQ1B,MAAO,gGAK5BtC,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,SAAUP,GAAI,CAAE4K,UAAW,CAAE8lC,WAAY,CAAC,8FAGpEn8C,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,SAAUP,GAAI,CAAE4K,UAAW,CAAE8lC,WAAY,CAAC,uGAGpEn8C,WAAA,CADCuL,cAAAA,SAAS,SAAU,CAAES,KAAM,mFAG5BhM,WAAA,CADCuL,cAAAA,SAAS,QAAS,CAAES,KAAM,kFAG3BhM,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEM,KAAMiwC,8FAG1B97C,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEM,KAAMiwC,iGAG1B97C,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,2FAG1BhM,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,SAAUP,GAAI,CAAE4K,UAAW,CAAEumC,YAAa,EAAC,wFAYrE58C,WAAA,CAPC8L,cAAAA,KAAK,CACJC,WAAY,CACVtK,KAAM,CAAEuK,KAAM,SAAUC,MAAO,MAC/B++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,+EAclCjM,WAAA,CAVC2W,cAAAA,WAAW,CAAC,OAAQ,MAAO,QAC3BwH,cAAAA,MAAM,KAAM,CACXC,OAAQ,CACNrS,WAAY,CACVtK,KAAM,CAAEuK,KAAM,SAAUC,MAAO,KAC/B++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,sFA5FzB8vC,QAAAA,IAAyBC,4BAAAh8C,WAAA,CAhBrCkM,cAAAA,OAAO,SAAU,CAChBC,MAAO,YACPpC,MAAO,8BACPqC,KAAM,aACNmyB,SAAU,CACR,CACEtyB,MAAO,MACPD,KAAM,sBACNuR,OAAQ,GACRvH,QAAQ,EACRwoB,WAAW,IAGfC,WAAY,CAAC,sBAAuB,uBACpC57B,YAAa,iDAoGKjF,GAAAA,cAlGPm+C,QAAAA,cC6CH,CAAE/vC,KAAM,SAAUC,MAAO,MAAM6wC,KAsB7B,CAAE9wC,KAAM,SAAUC,MAAO,MAvFxB8wC,QAAAA,IAAuB,WA+FlC,SAAAA,EAC8D/9B,EACpDriB,GADoDC,KAAAoiB,OAAAA,EACpDpiB,KAAAD,KAAAA,EAzCVC,KAAAm9C,OAAS,CACP,CACE5tC,MAAO,GACPqI,OAAQ,SACRzH,KAAM,KAaVnQ,KAAA0W,KAAc,CACZ,CACE4mC,QAAS,OACTC,YAAa,OACbhuC,MAAO,GACP6+B,IAAK,MACLD,IAAK,OAeTnuC,KAAAw9C,WAAa,IAAI/pC,GAAAA,oBAKjB0sC,EAAAlgD,UAAAurB,YAAA,WACExrB,KAAKoiB,OAAO8d,YAAYlgC,KAAKszB,KAE/B6sB,EAAAlgD,UAAAgN,YAAA,SAAYC,GACVlN,KAAK0jB,UAGDy8B,EAAAlgD,UAAAyjB,OAAA,wJACE08B,EAAW,GACXC,EAAa,GACblpC,EAAY,2CACE/J,EAAA1E,SAAA1I,KAAKm9C,QAAMrvC,EAAAV,EAAAtG,6CAApByI,EAAKzB,EAAApI,MACR46C,EAAY/wC,EAAMA,OAAS,GACjC6wC,EAASE,GAAa/wC,EACP,CAAA,EAAMvP,KAAKugD,UAAUhxC,YAA9BiF,EAASyS,EAAA5f,OACfg5C,EAAWn7C,KAAKsP,GAChB2C,EAAUmpC,GAAa9rC,2MAGzBxU,KAAK0W,KAAKD,SAAQ,SAACa,GACjB,IAAI9C,EAAS2C,EAAUG,EAAO/H,OAChB,MAAViF,IACFA,EAAS2C,EAAU,KAEjB3C,GACFA,EAAOkC,KAAKxR,KAAK,CACfouB,GAAIhc,EAAOgc,GACXzuB,KAAMyS,EAAOgmC,QACb53C,MAAO,EAAE4R,EAAO82B,KAAM92B,EAAO62B,IAAK,EAAG72B,EAAOimC,kBAIlDv9C,KAAKoiB,OAAO6d,UAAU,CACpB3M,GAAItzB,KAAKszB,GACTzS,KAAMw/B,EACN5hB,QAAS,SAACxlB,GACR,IAAM2kC,EAAM3kC,EAAMvC,KAClBnB,EAAKioC,WAAWtkC,KAAK,CACnBoa,GAAIsqB,EAAItqB,GACRgqB,QAASM,EAAI/4C,KACbupC,IAAKwP,EAAIl4C,MAAM,GACfyoC,IAAKyP,EAAIl4C,MAAM,oBAMjBy6C,EAAAlgD,UAAAsgD,UAAA,SAAUhxC,uIAEC,WADXqI,EAASrI,EAAMqI,QACf,CAAA,EAAA,IACIsC,EAAM3K,EAAMpC,OAEZ+M,EAAIsmC,SAAS,OACK,CAAA,EAAMxgD,KAAKD,KAAKqF,IAAI8U,EAAK,CAAEumC,aAAc,SAAU9/C,aADrE,CAAA,EAAA,GADF,CAAA,EAAA,UAMA,IAJM+/C,EAActzC,EAAA/F,OACds5C,GAAM,IAAIC,WAAYC,gBAAgBH,EAAQ,YAC9CI,EAAQH,EAAII,qBAAqB,QACvCnpC,EAAS,UACAlV,EAAI,EAAGA,EAAIo+C,EAAMj+C,OAAQH,IAC1Bs+C,EAAOF,EAAMp+C,GACfA,EAAI,IACNkV,GAAU,KAEZA,GAAUopC,EAAKC,aAAa,KAAKt5B,QAAQ,IAAK,wBAGhD/P,EAAS,WAAauD,SAAS+lC,OAAShnC,sCAG1CtC,EAAS,wBA8Bb,MAAA,CAAA,EA3Be,CACb0b,GAAItzB,KAAKszB,GAAK/jB,EAAMA,MACpBH,KAAM,YACN0pB,iBAAkB,QAClBpiB,KAAM,GACN3C,QAAS,CACPgE,UAAW,SAACyJ,GAAW,OAAAA,EAAO9b,MAAM,KAEtC0B,MAAO,CACL2N,MAAM,EACNgD,UAAW,MACXF,SAAU,SACVhI,UAAWF,oBAAoBJ,EAAMK,OAOvCgI,OAAMA,EACNY,WAAYjJ,EAAMY,KAClBkI,UAAW,CACT3L,MAAO6C,EAAM7C,MACbF,QAAS,aAOf2zC,EAAAlgD,UAAAsN,SAAA,eAxMkC,iCAXnCU,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,sBACVC,SAAA,sEALO6xB,yBAAwB38B,WAAA,CAAA,CAAA+L,KA8G5Bi/B,GAAAA,OAAMxtC,KAAA,CAAC6gC,GAAAA,YAAW,WAAM,OAAA1B,sCA3HpBh/B,GAAAA,cAmFPoC,WAAA,CAvDCuL,cAAAA,SAAS,KAAM,CACdS,KAAM,QACNC,MAAO,KACP+vB,SAAU,GACVC,MAAO,CACLjwB,KAAM,SACND,WAAY,CACVI,MAAO,CACLH,KAAM,SACNC,MAAO,MAETuI,OAAQ,CACNxI,KAAM,SACNC,MAAO,KACPJ,KAAM,CACJ,CAAE7H,MAAO,IAAK1B,MAAO,UACrB,CAAE0B,MAAO,KAAM1B,MAAO,QACtB,CAAE0B,MAAO,OAAQ1B,MAAO,aACxB,CAAE0B,MAAO,MAAO1B,MAAO,YACvB,CAAE0B,MAAO,KAAM1B,MAAO,WACtB,CAAE0B,MAAO,KAAM1B,MAAO,OACtB,CAAE0B,MAAO,KAAM1B,MAAO,SACtB,CAAE0B,MAAO,IAAK1B,MAAO,QACrB,CAAE0B,MAAO,KAAM1B,MAAO,WAG1ByH,MAAO,CACLkC,MAAO,KACPD,KAAM,SACNP,GAAI,CACFlB,OAAQ,YACR8L,UAAW,CAAE7B,OAAQ,CAAC,YAG1BzH,KAAM,CACJf,KAAM,SACNC,MAAO,MAET3C,MAAO,CACL0C,KAAM,SACNC,MAAO,KACPR,GAAI,CACFlB,OAAQ,YAGZiC,KAAM,CACJR,KAAM,SACNC,MAAO,KACPR,GAAI,CAAElB,OAAQ,YAGlB2xB,SAAU,IAEZzwB,GAAI,CAAEwC,KAAM,CAAEkuB,UAAW,IAAMxwB,YAAa,+EAmB9C3L,WAAA,CAVC8L,cAAAA,KAAK,CACJC,WAAY,CACVmkB,GAAE6tB,KACF7D,QAAS,CAAEluC,KAAM,SAAUC,MAAO,MAClCkuC,YAAa,CAAEnuC,KAAM,SAAUC,MAAO,MACtCE,MAAO,CAAEH,KAAM,SAAUC,MAAO,QAChC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,+EAwBlCjM,WAAA,CAXC2W,cAAAA,WAAW,CAAC,KAAM,UAAW,MAAO,QACpCwH,cAAAA,MAAM,OAAQ,CACbC,OAAQ,CACNrS,WAAY,CACVmkB,GAAE4sB,KACF5C,QAAS,CAAEluC,KAAM,SAAUC,MAAO,MAClC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,uFA1FzB8wC,QAAAA,IAAuB/8C,WAAA,CANnCkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCAkG8D4mB,yBACtDh/B,GAAAA,cAjGLm/C,QAAAA,8BCjBX,SAAY1wC,GACVA,EAAcC,SAASywC,QAAAA,6CAN1B9vC,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAAC6vC,QAAAA,KACf5vC,QAAS,CAACC,OAAAA,8EAJHE,cAAAA,iBCwBI0wC,QAAAA,IAAuB,WAqDlC,SAAAA,EAAwEh/B,GAAApiB,KAAAoiB,OAAAA,EAjDxEpiB,KAAAiV,MAAQ,EAORjV,KAAA0M,MAAQ,yBASR1M,KAAA0W,KAAc,CACZ,CACEnH,MAAO,IACP6+B,IAAK,QACLD,IAAK,MAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,SAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,QAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,SAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,SAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,iBAMTiT,EAAAnhD,UAAAsN,SAAA,aAEA6zC,EAAAnhD,UAAAurB,YAAA,WACExrB,KAAKoiB,OAAO8d,YAAYlgC,KAAKszB,KAE/B8tB,EAAAnhD,UAAAgN,YAAA,SAAYC,GACVlN,KAAK0jB,UAGD09B,EAAAnhD,UAAAyjB,OAAA,iHACJwV,QAAQla,IAAIhf,KAAK0W,MACXA,EAAO,GACP2qC,EAAU,GAChBrhD,KAAK0W,KAAKD,SAAQ,SAAC/S,GACjB,IAAI49C,EAAOD,EAAQ39C,EAAE6L,OAChB+xC,IACHA,EAAO,GACPD,EAAQ39C,EAAE6L,OAAS+xC,EACnB5qC,EAAKxR,KAAKo8C,IAEZA,EAAKp8C,KAAK,EAAExB,EAAE0qC,KAAM1qC,EAAEyqC,IAAK,OAGvBttB,EAAO,CACXzR,KAAM,UACN0pB,iBAAkB,QAClBmkB,UAAU,EACVroC,UAAW,CACTK,MAAOjV,KAAKiV,MACZvI,MAAO1M,KAAK0M,MACZF,QAAS,GAEXkK,KAAIA,EACJwB,QAAQ,GAEVlY,KAAKoiB,OAAO6d,UAAU,CACpB3M,GAAItzB,KAAKszB,GACTzS,KAAIA,iBA5F0B,iCAXnC5S,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,sBACVC,SAAA,sEALO6xB,yBAAwB38B,WAAA,CAAA,CAAA+L,KAmElBi/B,GAAAA,OAAMxtC,KAAA,CAAC6gC,GAAAA,YAAW,WAAM,OAAA1B,kCAjDrC58B,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UAAWiB,IAAK,EAAGI,IAAK,GAAInI,KAAM,6EASlDzD,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNP,GAAI,CACFlB,OAAQ,qFAYZvK,WAAA,CAPC8L,cAAAA,KAAK,CACJC,WAAY,CACVI,MAAO,CAAEH,KAAM,SAAUC,MAAO,MAChC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,+EAjBvB+xC,QAAAA,IAAuBh+C,WAAA,CANnCkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCAuDwE4mB,4BArDrEohB,QAAAA,8BCjBX,SAAY3xC,GACVA,EAAcC,SAAS0xC,QAAAA,6CAN1B/wC,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAAC8wC,QAAAA,KACf7wC,QAAS,CAACC,OAAAA,8EAJHE,cAAAA,4CCUP,SAAYjB,GACVA,EAAcC,SAASyvC,QAAAA,+CAN1B9uC,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAAC6uC,QAAAA,KACf5uC,QAAS,CAACC,OAAAA,aAAcC,cAAAA,iBAAkBuJ,WAAAA,iBAAkBunC,qBAAqBC,wFAPxD9wC,cAAAA,iBCMd+wC,QAAAA,IAAgB,WAG3B,SAAAA,YAEAA,EAAAxhD,UAAAsN,SAAA,eAL2B,iCAN5BU,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,cACVC,SAAA,iOAMA/K,WAAA,CADCuL,cAAAA,SAAS,KAAM,CAAEE,GAAI,CAAElB,OAAQ,uFADrB8zC,QAAAA,IAAgBr+C,WAAA,CAD5BkM,cAAAA,OAAO,MAAO,CAAEC,MAAO,UAAWC,KAAM,mDAC5BiyC,QAAAA,uBCCX,SAAYhyC,GACVA,EAAcC,SAAS+xC,QAAAA,sCAN1BpxC,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAACmxC,QAAAA,KACflxC,QAAS,CAACC,OAAAA,aAAcC,cAAAA,2EALCC,cAAAA,iBCcdgxC,QAAAA,IAAoB,WA0J/B,SAAAA,EAAoBC,EAAoCr1C,GAApCtM,KAAA2hD,aAAAA,EAAoC3hD,KAAAsM,WAAAA,EAxJxDtM,KAAA4P,KAAY,CACVG,OAAQ,GACRrD,MAAO,UACPuD,OAAQ,SACRE,KAAM,GACNiB,MAAO,EACPhB,WAAY,GAGdpQ,KAAAqR,KAAY,CACVC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GAGRzR,KAAA4hD,WAAY,EAKZ5hD,KAAA6hD,eAAgB,EAEhB7hD,KAAA8hD,UAAW,EAEX9hD,KAAA+hD,WAAY,EAMZ/hD,KAAAgiD,YAAc,EAGdhiD,KAAAiiD,UAAY,GAEZjiD,KAAAkiD,WAAa,GAObliD,KAAAmiD,aAAe,OAUfniD,KAAAoiD,gBAAkB,KAOlBpiD,KAAAqiD,eAAiB,KAGjBriD,KAAAsiD,mBAAqB,UAGrBtiD,KAAAuiD,iBAAmB,OAQnBviD,KAAAwiD,sBAAwB,KAcxBxiD,KAAAyiD,kBAAoB,UAQpBziD,KAAA0iD,sBAAwB,gBAQxB1iD,KAAA2iD,kBAAoB,UAOpB3iD,KAAA4iD,6BAA+B,OAY/B5iD,KAAA0W,KAAO,CACL,CAAErH,MAAO,MAAO9L,IAAK,MAAOs/C,UAAW,IACvC,CAAExzC,MAAO,MAAO9L,IAAK,MAAOs/C,UAAW,IACvC,CAAExzC,MAAO,MAAO9L,IAAK,OAAQs/C,UAAW,OACxC,CAAExzC,MAAO,MAAO9L,IAAK,QAASs/C,UAAW,QACzC,CAAExzC,MAAO,MAAO9L,IAAK,QAASs/C,UAAW,QACzC,CAAExzC,MAAO,MAAO9L,IAAK,OAAQs/C,UAAW,OACxC,CAAExzC,MAAO,MAAO9L,IAAK,QAASs/C,UAAW,QACzC,CAAExzC,MAAO,MAAO9L,IAAK,QAASs/C,UAAW,SAK3C7iD,KAAA8iD,UAAY,IAAIrvC,GAAAA,aAEhBzT,KAAA+iD,MAA6B,GAS7B/iD,KAAAgjD,aAAyB,GACzBhjD,KAAA8M,MAAQ,UAMR40C,EAAAzhD,UAAAsN,SAAA,WACEkT,SAASvZ,KAAK4F,MAAMiS,YAAY,mCAAoC/e,KAAK4iD,8BAAgC,SAG3GlB,EAAAzhD,UAAAgN,YAAA,SAAYC,GACNA,EAAQwJ,OACV1W,KAAK+iD,MAAQ/iD,KAAKijD,OAAOjjD,KAAK0W,MAC1B1W,KAAKkjD,gBACPljD,KAAKq7C,OAAOr7C,KAAKkjD,iBAGjBh2C,EAAQ0C,MACV5P,KAAKmjD,eAGHj2C,EAAQwJ,MAAQxJ,EAAQ80C,aAAe90C,EAAQ60C,YACjD/hD,KAAKojD,UAIT1B,EAAAzhD,UAAAgjD,OAAA,SAAOvsC,GAAP,IAAAnB,EAAAvV,KACQqjD,EAAU,GACVN,EAAQ,GACRO,EAAO,GAyBb,OAxBI5sC,IACFA,EAAKD,SAAQ,SAACrJ,OAAEiC,EAAKjC,EAAAiC,MAAE9L,EAAG6J,EAAA7J,IAAEs/C,EAASz1C,EAAAy1C,UAAEU,EAAen2C,EAAAm2C,gBAAE/zC,EAAIpC,EAAAoC,KAAEoiB,EAAKxkB,EAAAwkB,MACjE,GAAIruB,EAAK,CACP,IAAMigD,EAA0B,CAAEjgD,IAAGA,EAAE8L,MAAKA,EAAEwzC,UAAWU,GAAmBV,EAAWrzC,KAAIA,EAAEi0C,QAAQ,EAAM7xB,MAAKA,GAC5Grc,EAAKytC,aAAa5hC,SAAS7d,KAC7BigD,EAAKE,UAAW,GAElBL,EAAQ9/C,GAAOigD,EACfT,EAAM79C,KAAKs+C,OAGfT,EAAMtsC,SAAQ,SAAC+sC,GACb,GAAIA,EAAKX,UAAW,CAClB,IAAMzgC,EAASihC,EAAQG,EAAKX,WAC5B,GAAIzgC,EAIF,OAHAA,EAAOuf,SAAWvf,EAAOuf,UAAY,GACrCvf,EAAOuf,SAASz8B,KAAKs+C,QACrBphC,EAAOqhC,QAAS,GAIpBH,EAAKp+C,KAAKs+C,OAGPF,GAGT5B,EAAAzhD,UAAAmjD,OAAA,WAAA,IAAA7tC,EAAAvV,KAYEA,KAAK2jD,aAAe,IAChB3jD,KAAK+hD,WAAa/hD,KAAKgiD,cACzBhiD,KAAK2hD,aAAaiC,UAAU5jD,KAAK+iD,OAAO,SAACliC,EAAMuB,EAAQyhC,IACjDtuC,EAAKwsC,WAAa8B,GAAQtuC,EAAKysC,cACjCzsC,EAAKouC,aAAaz+C,KAAK2b,EAAKtd,SAMpCm+C,EAAAzhD,UAAAkjD,YAAA,WACEnjD,KAAK8M,MAAQ2U,aAAazhB,KAAK4P,MAC/B5P,KAAKsM,WAAW0B,cAAclB,MAAMiS,YAAY,wBAAyB/e,KAAKsiD,oBAAsB,YAGtGZ,EAAAzhD,UAAAw+B,QAAA,SAAQxlB,GACNjZ,KAAK8jD,aAAa7qC,EAAM8O,MACxB/nB,KAAK+jD,UAAU9qC,EAAMuqC,KAAKjgD,IAAK0V,EAAMuqC,KAAKn0C,QAG5CqyC,EAAAzhD,UAAA6jD,aAAA,SAAa/7B,GACX/nB,KAAKkjD,eAAiB,KACtBljD,KAAKgjD,aAAej7B,EAChB/nB,KAAK4hD,UACP5hD,KAAK8iD,UAAU5pC,KAAK6O,GAEpB/nB,KAAK8iD,UAAU5pC,KAAK6O,EAAK,KAI7B25B,EAAAzhD,UAAA+jD,iBAAA,SAAiB/qC,GACfjZ,KAAK8jD,aAAa7qC,EAAM8O,OAG1B25B,EAAAzhD,UAAAgkD,eAAA,SAAehrC,GAAf,IAAA1D,EAAAvV,KACMA,KAAKkkD,YACPlkD,KAAKmkD,aAAelrC,EAAMuqC,KAC1Bj7B,YAAW,WACLhT,EAAK6uC,aACP7uC,EAAK6uC,YAAYp2C,cAAcigB,aAMvCyzB,EAAAzhD,UAAAokD,UAAA,SAAUb,GACRxjD,KAAKmkD,aAAe,KACpBnkD,KAAKskD,OAAOd,EAAKjgD,IAAKigD,EAAKn0C,QAI7BqyC,EAAAzhD,UAAAskD,SAAA,SAASvhD,GACPk2B,QAAQla,IAAIhc,IAId0+C,EAAAzhD,UAAAukD,OAAA,SAAoB9+C,GAClB1F,KAAKykD,YAAc/+C,GAIrBg8C,EAAAzhD,UAAAo7C,OAAA,SAAoB/nB,GAClB,IAAIxS,GAAO,EACX,GAAI9gB,KAAK+iD,MAAO,CACd,IAAMS,EAAOxjD,KAAK2hD,aAAa+C,SAAS1kD,KAAK+iD,OAAO,SAACpgD,GAAM,OAAAA,EAAEY,MAAQ+vB,KACjEkwB,IACFxjD,KAAK8jD,aAAa,CAACxwB,IACnBtzB,KAAK+jD,UAAUP,EAAKjgD,IAAKigD,EAAKn0C,OAC9ByR,GAAO,GAINA,IACH9gB,KAAKkjD,eAAiB5vB,IAK1BouB,EAAAzhD,UAAA8jD,UAAA,SAA4BzwB,EAA8BjkB,KAG1DqyC,EAAAzhD,UAAAqkD,OAAA,SAAyBhxB,EAA8BzuB,OA5SxB,iCAVhCoJ,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,kBACVC,SAAA,2vJALOw2C,KAAAA,oBAH2Dl2C,GAAAA,6DAkKjE8a,GAAAA,UAAS1oB,KAAA,CAAC,kBAhJXuC,WAAA,CADCuL,cAAAA,SAAS,KAAM,CAAEE,GAAI,CAAElB,OAAQ,mFAUhCvK,WAAA,CADCuL,cAAAA,SAAS,KAAM,CAAEE,GAAI,CAAElB,OAAQ,mFAQhCvK,WAAA,CADCuL,cAAAA,SAAS,MAAO,CAAES,KAAM,wFAMzBhM,WAAA,CAJCuL,cAAAA,SAAS,SAAU,CAClBS,KAAM,UACNP,GAAI,CAAE6K,aAAc,eAAgBD,UAAW,CAAEmoC,UAAW,EAAC,uFAI/Dx+C,WAAA,CADCuL,cAAAA,SAAS,MAAO,CAAES,KAAM,uFAGzBhM,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,wFAO1BhM,WAAA,CALCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,UACNw1C,QAAS,EACT/1C,GAAI,CAAEg2C,UAAW,EAAGprC,UAAW,CAAEsoC,UAAW,EAAC,qFAK/C3+C,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,wFAG1BhM,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,yFAQ1BhM,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBM,KAAM,CACJ,CAAE7H,MAAO,IAAK1B,MAAO,QACrB,CAAE0B,MAAO,IAAK1B,MAAO,2FAazBtC,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNP,GAAI,CACFlB,OAAQ,gGAUZvK,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNP,GAAI,CACFlB,OAAQ,+FAMZvK,WAAA,CADCuL,cAAAA,SAAS,UAAW,CAAEE,GAAI,CAAElB,OAAQ,kGAIrCvK,WAAA,CADCuL,cAAAA,SAAS,UAAW,CAAEE,GAAI,CAAElB,OAAQ,gGASrCvK,WAAA,CANCuL,cAAAA,SAAS,SAAU,CAClBS,KAAM,SACNP,GAAI,CACFlB,OAAQ,sGAMZvK,WAAA,CADCuL,cAAAA,SAAS,sFAGVvL,WAAA,CADCuL,cAAAA,SAAS,uFAUVvL,WAAA,CANCuL,cAAAA,SAAS,QAAS,CACjBE,GAAI,CACFlB,OAAQ,UACR8L,UAAW,CAAEqrC,WAAY,EAAC,2FAW9B1hD,WAAA,CANCuL,cAAAA,SAAS,SAAU,CAClBE,GAAI,CACFlB,OAAQ,UACR8L,UAAW,CAAEqrC,WAAY,EAAC,+FAW9B1hD,WAAA,CANCuL,cAAAA,SAAS,SAAU,CAClBS,KAAM,SACNP,GAAI,CACF4K,UAAW,CAAEqrC,WAAY,EAAC,2FAU9B1hD,WAAA,CALCuL,cAAAA,SAAS,QAAS,CACjBE,GAAI,CACFlB,OAAQ,4GAeZvK,WAAA,CATC8L,cAAAA,KAAK,CACJC,WAAY,CACVE,MAAO,CAAED,KAAM,SAAUC,MAAO,MAChC9L,IAAK,CAAE6L,KAAM,SAAUC,MAAO,MAC9BwzC,UAAW,CAAEzzC,KAAM,SAAUC,MAAO,QACpCG,KAAM,CAAEJ,KAAM,SAAUC,MAAO,MAC/BuiB,MAAO,CAAExiB,KAAM,SAAUC,MAAO,gFAgBpCjM,WAAA,CAFC2W,cAAAA,WAAW,QACXwH,cAAAA,MAAM,QAAS,CAAEC,OAAQ,mFA0I1Bpe,WAAA,CADC2hD,cAAAA,OAAO,MACAhhD,QAAA,EAAAihD,cAAAA,MAAM,gKAKd5hD,WAAA,CADC2hD,cAAAA,OAAO,MACAhhD,QAAA,EAAAihD,cAAAA,MAAM,gKAiBd5hD,WAAA,CADCme,cAAAA,MAAM,MACIxd,QAAA,EAAAkhD,cAAAA,WAAW,OAAmBlhD,QAAA,EAAAkhD,cAAAA,WAAW,0KAGpD7hD,WAAA,CADCme,cAAAA,MAAM,OACCxd,QAAA,EAAAkhD,cAAAA,WAAW,OAAmBlhD,QAAA,EAAAkhD,cAAAA,WAAW,uKA5StCvD,QAAAA,IAAoBt+C,WAAA,CALhCkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,6BACPqC,KAAM,6CA4J4Bm1C,KAAAA,aAAkCl2C,GAAAA,cA1JzDizC,QAAAA,2BCFX,SAAYjyC,GACVA,EAAcC,SAASgyC,QAAAA,0CAN1BrxC,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAACoxC,QAAAA,KACfnxC,QAAS,CAACC,OAAAA,aAAcC,cAAAA,iBAAkBy0C,KAAAA,aAAcziC,MAAAA,cAAetD,MAAAA,YAAagmC,UAAAA,kBAAmB/nC,KAAAA,2EAR9E1M,cAAAA,iBCad00C,QAAAA,IAAuB,WAqKlC,SAAAA,EAAoBrlD,GAAAC,KAAAD,KAAAA,EAnKpBC,KAAA4P,KAAY,CACVG,OAAQ,GACRrD,MAAO,UACPuD,OAAQ,SACRE,KAAM,GACNiB,MAAO,EACPhB,WAAY,IAEdpQ,KAAAuT,YAAmB,KAOnBvT,KAAAghC,SAAW,QAcXhhC,KAAAiW,QAAU,YAEVjW,KAAAqlD,kBAAyB,CACvB5zC,KAAM,GACNF,MAAO,GACPD,IAAK,GACLE,OAAQ,IAsCVxR,KAAA65B,MAAQ,CACN,CAAEkkB,IAAK,EAAGC,IAAK,GAAI52C,MAAO,MAAOsF,MAAO,UAAWsjB,KAAM,IACzD,CACE+tB,IAAK,GACL32C,MAAO,MACPsF,MAAO,UACPsjB,KAAM,KASVhwB,KAAAslD,SAAW,UAOXtlD,KAAAulD,gBAAkB,UASlBvlD,KAAAgP,IAAM,IAUNhP,KAAA4O,IAAM,IAON5O,KAAAgG,OAAS,GAOThG,KAAAk+C,OAAS,GAUTl+C,KAAAgN,MAAe,CACb,CAAEnI,KAAM,OAAQa,MAAO,EAAGqO,QAAS,oBACnC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,KAAMa,MAAO,GAAIqO,QAAS,qBAClC,CAAElP,KAAM,MAAOa,MAAO,GAAIqO,QAAS,sBAIrC/T,KAAAwT,UAAY,IAAIC,GAAAA,aAChBzT,KAAA0T,MAAQ,GACR1T,KAAA2T,MAAQ,GACR3T,KAAAwU,OAAS,GAETxU,KAAA8M,MAAQ,CACNJ,MAAO,GACPoD,WAAY,GACZE,WAAY,GACZE,SAAU,GACVE,WAAY,WAMdg1C,EAAAnlD,UAAAsN,SAAA,aAEA63C,EAAAnlD,UAAAgN,YAAA,SAAYC,GAAZ,IAAAqI,EAAAvV,KACEA,KAAK8M,MAAQ,CACXJ,MAAO1M,KAAK4P,KAAKlD,MACjBoD,WAAY9P,KAAK4P,KAAKG,OACtBC,WAAYhQ,KAAK4P,KAAKK,OACtBC,SAAUlQ,KAAK4P,KAAKO,KACpBC,WAAYpQ,KAAK4P,KAAKQ,YAGxB,IAAMo1C,EAAO,CAAEh0C,OAAQ,IACnBxR,KAAKqlD,mBACP5jD,OAAOsmB,KAAK/nB,KAAKqlD,mBAAmB5uC,SAAQ,SAAAlT,IACtCgS,EAAK8vC,kBAAkB9hD,IAAwC,IAAhCgS,EAAK8vC,kBAAkB9hD,MACxDiiD,EAAKjiD,GAAOgS,EAAK8vC,kBAAkB9hD,OAIrC2J,EAAQF,OACVhN,KAAKD,KACFqF,IAAI,2BAA6BpF,KAAKghC,SAAW,SACjDrgC,YACAqG,MAAK,SAAC0P,GACL8kC,QAAAA,YAAoBjmC,EAAKyrB,SAAUtqB,GACnCnB,EAAKmB,KAAOA,EACZnB,EAAKhC,YAAc,CACjBQ,QAAS,CACPonC,UAAW5lC,EAAKU,SAQlB8kC,UAASt5C,OAAAc,OAAAd,OAAAc,OAAA,CACPqM,IAAK,EACLI,IAAK,KACFw2C,GAAI,CACPhH,WAAW,EACX7kC,KAAM,GACN0kC,OAAQ9oC,EAAKskB,MACbhqB,UAAW0F,EAAKzI,MAwBhBiI,MAAM,IA6BRP,OAAQ,CACN,CACE3P,KAAM,GACNuK,KAAM,MACNqvC,SAAU,EACVC,QAASnpC,EAAKyrB,SACd55B,MAAO,CACL0mB,OAAQ,CACN/Y,MAAM,EACNgD,UAAW,SAAC4mC,GACV,IAAMj5C,EAAQi5C,EAAIj5C,MAAQi5C,EAAIj5C,MAAQ,EAChCM,EAASuP,EAAKvP,OAASuP,EAAKvP,OAAS,GACrCk4C,EAAS3oC,EAAK2oC,OAAS3oC,EAAK2oC,OAAS,GAC3C,OAAQS,EAAI95C,KAAO,IAAMmB,EAASN,EAAQw4C,GAAQ3/B,MAAM,KAAK0C,KAAK,OAEpEpR,UAAW0F,EAAKzI,OAElBkhB,SAAU,CACRjZ,MAAM,IAGVsD,UAAW,CACTyV,OAAQ,CACNvT,YAAa,qBACbumB,UAAWvrB,EAAK+vC,UAElBt3B,SAAU,CACR8S,UAAWvrB,EAAKgwC,gBAChBntB,cAAe,EACfvC,cAAe,EACfzG,YAAa,IAGjB1Y,KAAMnB,EAAKvI,SAIjBuI,EAAKd,iBAKb2wC,EAAAnlD,UAAA+Y,aAAA,SAAaC,GACX,IAAItW,EAAI,GACJkF,EAAI,GACJrF,EAAI,GACJ+9B,EAAY,GACZC,EAAY,QACU,IAAfvnB,EAAMvC,MACf/T,EAAIsW,EAAMvC,KAAK7R,KACfgD,EAAIoR,EAAMvC,KAAKhR,MACflD,EAAIyW,EAAMvC,KAAK3C,UAEfpR,EAAIsW,EAAMpU,KACVgD,EAAI,KAEN7H,KAAK0W,KAAKmlC,SAASplC,SAAQ,SAACxN,GACtBA,EAAEkG,WAAWtK,OAASlC,IACxB49B,EAAYt3B,EAAEkG,WAAW4sC,GAAG,GAC5Bvb,EAAYv3B,EAAEkG,WAAW4sC,GAAG,OAGhC/7C,KAAKwT,UAAU0F,KAAK,CAAErU,KAAMlC,EAAG+C,MAAOmC,EAAGkM,QAASvR,EAAG4rC,IAAK7N,EAAW4N,IAAK3N,IAE1ExgC,KAAKy+B,QAAQ97B,EAAGkF,EAAGrF,EAAGkT,OAAO6qB,GAAY7qB,OAAO8qB,KAGlD4kB,EAAAnlD,UAAAwU,WAAA,WACEzU,KAAKuT,YAAYwnC,UAAUphC,KAAKzU,KAAKlF,KAAKgP,KAC1ChP,KAAKuT,YAAYwnC,UAAUphC,KAAKzU,KAAKlF,KAAK4O,KACpB,oBAAlB5O,KAAKghC,WACPhhC,KAAKuT,YAAY6nC,IAAItrB,OAAS,CAAC,WAAY,SAC3C9vB,KAAKuT,YAAY6nC,IAAIqK,aAAe,CAAC,MAAO,OAC5CzlD,KAAKuT,YAAY6nC,IAAIsK,WAAa,SAKtCN,EAAAnlD,UAAAw+B,QAAA,SACoB55B,EACDa,EACCqO,EACAq6B,EACAD,OA1Vc,iCAVnClgC,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,sBACVC,SAAA,wSALOnN,GAAAA,cAePoC,WAAA,CADCuL,cAAAA,SAAS,KAAM,CAAEE,GAAI,CAAElB,OAAQ,mFAgBhCvK,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,cACRuM,IAAK,yGAiBT9W,WAAA,CAbCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNH,KAAM,CACJ,CAAEvJ,MAAO,YAAa0B,MAAO,MAC7B,CAAE1B,MAAO,QAAS0B,MAAO,OAE3ByH,GAAI,CACFlB,OAAQ,QACR0W,UAAW,SACXshC,YAAa,SAEf/6C,QAAS,wFAIXxH,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAElB,OAAQ,gGA2ClCvK,WAAA,CApCCuL,cAAAA,SAAS,KAAM,CACdS,KAAM,QACNC,MAAO,OACP+vB,SAAU,GACVC,MAAO,CACLjwB,KAAM,SACND,WAAY,CACV4uC,IAAK,CACH3uC,KAAM,SACNC,MAAO,MAET2uC,IAAK,CACH5uC,KAAM,SACNC,MAAO,KACPu1C,QAAS,GAEXx9C,MAAO,CACLgI,KAAM,SACNC,MAAO,MAET3C,MAAO,CACL0C,KAAM,SACNC,MAAO,KACPR,GAAI,CACFlB,OAAQ,YAGZqiB,KAAM,CACJ5gB,KAAM,SACNC,MAAO,OAGXiwB,SAAU,CAAC,QAAS,UAEtBzwB,GAAI,CAAEwC,KAAM,CAAEkuB,UAAW,IAAMxwB,YAAa,8EAiB9C3L,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNP,GAAI,CACFlB,OAAQ,wFAUZvK,WAAA,CANCuL,cAAAA,SAAS,SAAU,CAClBS,KAAM,SACNP,GAAI,CACFlB,OAAQ,+FAYZvK,WAAA,CARCuL,cAAAA,SAAS,OAAQ,CAChBK,IAAK,CACHI,KAAM,SACNC,MAAO,MACPR,GAAI,IAENywB,SAAU,CAAC,+EAYbl8B,WAAA,CARCuL,cAAAA,SAAS,OAAQ,CAChBC,IAAK,CACHQ,KAAM,SACNC,MAAO,MACPR,GAAI,IAENywB,SAAU,CAAC,+EASbl8B,WAAA,CANCuL,cAAAA,SAAS,KAAM,CACdC,IAAK,CACHQ,KAAM,SACNP,GAAI,+EAURzL,WAAA,CANCuL,cAAAA,SAAS,KAAM,CACdC,IAAK,CACHQ,KAAM,SACNP,GAAI,+EAaRzL,WAAA,CATC8L,cAAAA,KAAK,CACJC,WAAY,CACVtK,KAAM,CAAEuK,KAAM,SAAUC,MAAO,MAC/B3J,MAAO,CAAE0J,KAAM,SAAUC,MAAO,KAChC0E,QAAS,CAAE3E,KAAM,SAAUC,MAAO,MAClC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,QAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,kFAclCjM,WAAA,CAFC0W,cAAAA,QACAC,cAAAA,WAAW,CAAC,OAAQ,QAAS,UAAW,MAAO,oFA+LhD3W,WAAA,CADCme,cAAAA,MAAM,MAEJxd,QAAA,EAAAkhD,cAAAA,WAAW,OACXlhD,QAAA,EAAAkhD,cAAAA,WAAW,MACXlhD,QAAA,EAAAkhD,cAAAA,WAAW,OACXlhD,QAAA,EAAAkhD,cAAAA,WAAW,OACXlhD,QAAA,EAAAkhD,cAAAA,WAAW,6LA1VHG,QAAAA,IAAuBhiD,WAAA,CALnCkM,cAAAA,OAAO,QAAS,CACfC,MAAO,YACPpC,MAAO,+BACPqC,KAAM,+CAuKoBxO,GAAAA,cArKfokD,QAAAA,8BCFX,SAAY31C,GACVA,EAAcC,SAAS01C,QAAAA,6CAN1B/0C,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAAC80C,QAAAA,KACf70C,QAAS,CAACC,OAAAA,aAAcC,cAAAA,iBAAkBuJ,WAAAA,kFARlBtJ,cAAAA,iBCkB1B,IAAMk1C,gBAAkB,CACtB,CAAEx+C,MAAO,KAAM1B,MAAO,OACtB,CAAE0B,MAAO,KAAM1B,MAAO,SACtB,CAAE0B,MAAO,KAAM1B,MAAO,aACtB,CAAE0B,MAAO,KAAM1B,MAAO,YACtB,CAAE0B,MAAO,KAAM1B,MAAO,aACtB,CAAE0B,MAAO,MAAO1B,MAAO,aACvB,CAAE0B,MAAO,MAAO1B,MAAO,aACvB,CAAE0B,MAAO,KAAM1B,MAAO,YACtB,CAAE0B,MAAO,KAAM1B,MAAO,YACtB,CAAE0B,MAAO,KAAM1B,MAAO,YACtB,CAAE0B,MAAO,KAAM1B,MAAO,YACtB,CAAE0B,MAAO,KAAM1B,MAAO,YACtB,CAAE0B,MAAO,KAAM1B,MAAO,aAcXmgD,QAAAA,IAAmB,WA+G9B,SAAAA,EAAoBC,GAAA9lD,KAAA8lD,KAAAA,EAtGpB9lD,KAAA4P,KAAY,CAAEG,OAAQ,GAAIE,OAAQ,SAAUE,KAAM,GAAIiB,MAAO,EAAGhB,WAAY,IAc5EpQ,KAAA+lD,UAAY,KAEZ/lD,KAAAie,OAAiB,GASjBje,KAAAgmD,WAAa,GAuBbhmD,KAAAimD,WAAqB,GAIrBjmD,KAAAkmD,UAAW,EASXlmD,KAAAmmD,WAAqB,WAQrBnmD,KAAAomD,MAAQ,QAWRpmD,KAAAqmD,YAAa,EAGbrmD,KAAA0W,KAAO,GAGP1W,KAAA+7B,WAAa,IAAItoB,GAAAA,aAGjBzT,KAAAsmD,cAAgB,IAAI7yC,GAAAA,aAEpBzT,KAAAumD,UAAY,IAAI9yC,GAAAA,aAEhBzT,KAAAwmD,aAAe,IAAI/yC,GAAAA,aAGnBzT,KAAAymD,UAAY,UAQZZ,EAAA5lD,UAAAsN,SAAA,aAkBAs4C,EAAA5lD,UAAAymD,gBAAA,WACE,GAAI1mD,KAAK2mD,UAAW,CAClB,IAAM/vC,EAAQ5W,KAAK4mD,eAAe5mD,KAAK6mD,aACjC/vC,EAAM9W,KAAK4mD,eAAe5mD,KAAK8mD,gBACrC9mD,KAAK+mD,KAAO,CAACnwC,EAAOE,IAChBF,GAASE,IACX9W,KAAKgnD,SAAShnD,KAAK+mD,WAGrB/mD,KAAK+mD,KAAO/mD,KAAK4mD,eAAe5mD,KAAK6mD,aACjC7mD,KAAK+mD,MACP/mD,KAAKgnD,SAAShnD,KAAK+mD,OAKzBlB,EAAA5lD,UAAA2mD,eAAA,SAAeC,GACb,GAAIA,EAAa,CACf,IAAMI,EAAQ,IAAI/pC,KAClB,OAAQ2pC,GACN,IAAK,MACH,OAAOI,EACT,IAAK,QACH,OAAOC,QAAAA,WAAWD,GACpB,IAAK,YACH,OAAOE,QAAAA,QAAQD,QAAAA,WAAWD,IAAS,GACrC,IAAK,WACH,OAAOE,QAAAA,QAAQD,QAAAA,WAAWD,GAAQ,GACpC,IAAK,YACH,OAAOG,QAAAA,aAAaH,GACtB,IAAK,YACH,OAAOI,QAAAA,UAAUD,QAAAA,aAAaH,IAAS,GACzC,IAAK,YACH,OAAOI,QAAAA,UAAUD,QAAAA,aAAaH,GAAQ,GACxC,IAAK,WACH,OAAOK,QAAAA,YAAYL,GACrB,IAAK,WACH,OAAOM,QAAAA,SAASD,QAAAA,YAAYL,IAAS,GACvC,IAAK,WACH,OAAOM,QAAAA,SAASD,QAAAA,YAAYL,GAAQ,GACtC,IAAK,WACH,OAAOE,QAAAA,QAAQK,QAAAA,YAAYL,QAAAA,QAAQF,GAAQ,IAAK,GAClD,IAAK,WACH,OAAOQ,QAAAA,SAASN,QAAAA,QAAQK,QAAAA,YAAYL,QAAAA,QAAQF,GAAQ,IAAK,IAAK,GAChE,IAAK,WACH,OAAOQ,QAAAA,SAASN,QAAAA,QAAQK,QAAAA,YAAYL,QAAAA,QAAQF,GAAQ,IAAK,GAAI,IAGnE,OAAO,MAGTpB,EAAA5lD,UAAAgN,YAAA,SAAYC,GACNA,EAAQ84C,aAAehmD,KAAKgmD,YAC9BhmD,KAAK0nD,mBAEP1nD,KAAK2nD,gBAAkB,CACrBptC,YAAava,KAAKua,YAClBgG,gBAAiBvgB,KAAKuZ,WACtBrJ,SAAUlQ,KAAK4P,KAAKO,KAAO,KAC3BL,WAAY9P,KAAK4P,KAAKG,OACtBrD,MAAO1M,KAAK4P,KAAKlD,MACjBsD,WAAYhQ,KAAK4P,KAAKK,OACtB2K,cAAe5a,KAAK4P,KAAKwB,MAAQ,KACjC6M,OAAQje,KAAKie,OAAS,KACtB2pC,eAAgB,YAChBx3C,WAAYpQ,KAAK4P,KAAKQ,WAAa,MAEjCpQ,KAAKkmD,WACPlmD,KAAK6nD,WAAa,CAChBC,SAAU9nD,KAAKmmD,YAAc,WAC7B4B,WAAY/nD,KAAKgoD,SACjBC,aAAcjoD,KAAKkoD,WACnBC,aAAcnoD,KAAKooD,aAGnBpoD,KAAK+lD,YACP/lD,KAAK2nD,gBAAgBh/B,gBAAkB,OAAS3oB,KAAK+lD,UAAY,MAE/D74C,EAAQy5C,WAAaz5C,EAAQ25C,aAAe35C,EAAQ45C,iBACtD9mD,KAAK0mD,kBAEHx5C,EAAQwJ,MACV1W,KAAKqoD,aAEHn7C,EAAQo7C,cACVtoD,KAAKuoD,qBAEHr7C,EAAQxH,QACL1F,KAAK+mD,KAEsB,iBAAd/mD,KAAK+mD,OACrB/mD,KAAK+mD,KAAOyB,QAAAA,MAAMxoD,KAAK+mD,KAAM/mD,KAAKgmD,WAAY,IAAI9oC,OAFlDld,KAAK+mD,KAAO,OAOlBlB,EAAA5lD,UAAAsoD,mBAAA,WACE,OAAQvoD,KAAKsoD,cACX,IAAK,QACHtoD,KAAKyoD,eAAiB,SAACC,GAAY,OAAAC,GAAAA,yBAAyBD,EAAS,IAAIxrC,MAAU,GACnF,MACF,IAAK,SACHld,KAAKyoD,eAAiB,SAACC,GAAY,OAAAC,GAAAA,yBAAyBD,EAAS,IAAIxrC,MAAU,GACnF,MACF,QACEld,KAAKyoD,eAAiB,OAI5B5C,EAAA5lD,UAAAooD,WAAA,iBACE,GAAa,QAAbj7C,EAAIpN,KAAK0W,YAAI,IAAAtJ,OAAA,EAAAA,EAAEvK,OAAQ,CACf,IAAAiL,EAAoB9N,KAAK0W,KAAK,GAA5BqwC,EAAIj5C,EAAAi5C,KAAE6B,EAAO96C,EAAA86C,QACfhyC,EAAQ5W,KAAK6oD,QAAQ9B,GAC3B,GAAI/mD,KAAK2mD,UAAW,CAClB,IAAM7vC,EAAM9W,KAAK6oD,QAAQD,IACrBhyC,GAASE,KACX9W,KAAK+mD,KAAO,CAACnwC,GAAS5W,KAAK+mD,KAAK,GAAIjwC,GAAO9W,KAAK+mD,KAAK,IACrD/mD,KAAKgnD,SAAShnD,KAAK+mD,YAGjBnwC,IACF5W,KAAK+mD,KAAOnwC,EACZ5W,KAAKgnD,SAAShnD,KAAK+mD,SAM3BlB,EAAA5lD,UAAA4oD,QAAA,SAAQnjD,GACN,OAAIA,EACK,IAAIwX,KAAKxX,GAET,MAIXmgD,EAAA5lD,UAAA+mD,SAAA,SAAS7hD,EAAc2jD,GACrB,GAAK9oD,KAAK2mD,UAMH,CAEL,IAAM/vC,EAAQ5W,KAAKuc,OAAOvc,KAAK+mD,KAAK,IAC9BjwC,EAAM9W,KAAKuc,OAAOvc,KAAK+mD,KAAK,IAClC/mD,KAAK+7B,WAAW7iB,KAAKtC,GACrB5W,KAAKsmD,cAAcptC,KAAKpC,GACpBgyC,IACF9oD,KAAKumD,UAAUrtC,KAAKtC,GACpB5W,KAAKwmD,aAAattC,KAAKpC,QAdN,CACnB,IAAMiwC,EAAO/mD,KAAKuc,OAAOvc,KAAK+mD,MAC9B/mD,KAAK+7B,WAAW7iB,KAAK6tC,GACjB+B,GACF9oD,KAAKumD,UAAUrtC,KAAK6tC,KAe1BlB,EAAA5lD,UAAAsc,OAAA,SAAOwqC,GACL,OAAIA,EACKgC,OAAAA,WAAWhC,EAAM/mD,KAAKgmD,WAAYhmD,KAAK8lD,KAAKkD,eAE5C,MAIXnD,EAAA5lD,UAAAynD,iBAAA,WACE,OAAQ1nD,KAAKimD,YACX,IAAK,OACHjmD,KAAKgmD,WAAa,UAClB,MACF,IAAK,QAEHhmD,KAAKgmD,WAAa,UAClB,MACF,IAAK,OACHhmD,KAAKgmD,WAAa,OAClB,MACF,QACE,GAAIhmD,KAAKkmD,UAEP,GADAlmD,KAAKgmD,WAAa,sBACdhmD,KAAKmmD,WACP,OAAQnmD,KAAKmmD,YACX,IAAK,KACHnmD,KAAKgmD,WAAa,sBAClB,MACF,IAAK,QACHhmD,KAAKgmD,WAAa,4BAKxBhmD,KAAKgmD,WAAa,eAM1BH,EAAA5lD,UAAAgpD,SAAA,SAAqBvjD,GACnB1F,KAAK+mD,KAAOrhD,EACZ1F,KAAKgnD,SAASthD,IAQhBmgD,EAAA5lD,UAAAwnB,WAAA,WACE,OAAO,QAlVqB,iCAX/BxZ,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,iBACVC,SAAA,+uCAvBO+6C,KAAAA,iBAuCP9lD,WAAA,CANCuL,cAAAA,SAAS,KAAM,CACdE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,uFAK3FlW,WAAA,CADCuL,cAAAA,SAAS,KAAM,CAAEE,GAAI,CAAElB,OAAQ,mFAQhCvK,WAAA,CANCuL,cAAAA,SAAS,KAAM,CACdE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,sFAU3FlW,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNP,GAAI,CACFlB,OAAQ,0FAKZvK,WAAA,CADCuL,cAAAA,SAAS,+EAUVvL,WAAA,CARCuL,cAAAA,SAAS,OAAQ,CAChBq3C,WAAY,CACV52C,KAAM,SACNC,MAAO,MACPR,GAAI,IAENywB,SAAU,CAAC,6FAIbl8B,WAAA,CADCuL,cAAAA,SAAS,uFAMVvL,WAAA,CAJCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNH,KAAM22C,gGAQRxiD,WAAA,CALCuL,cAAAA,SAAS,SAAU,CAClBS,KAAM,SACNH,KAAM22C,gBACN/2C,GAAI,CAAElB,OAAQ,SAAU8L,UAAW,CAAEktC,UAAW,EAAC,wFAYnDvjD,WAAA,CATCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNH,KAAM,CACJ,CAAE7H,MAAO,KAAM1B,MAAO,IACtB,CAAE0B,MAAO,IAAK1B,MAAO,QACrB,CAAE0B,MAAO,KAAM1B,MAAO,SACtB,CAAE0B,MAAO,KAAM1B,MAAO,wFAO1BtC,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,uFAWRhM,WAAA,CARCuL,cAAAA,SAAS,OAAQ,CAChBM,KAAM,CACJ,CAAE7H,MAAO,MAAO1B,MAAO,YACvB,CAAE0B,MAAO,KAAM1B,MAAO,SACtB,CAAE0B,MAAO,IAAK1B,MAAO,OAEvBmJ,GAAI,CAAElB,OAAQ,SAAU8L,UAAW,CAAEysC,SAAU,EAAC,oFAIlD9iD,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAE4K,UAAW,CAAEysC,SAAU,EAAC,kFAGlD9iD,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAE4K,UAAW,CAAE0sC,WAAY,CAAC,WAAY,0FAGhE/iD,WAAA,CADCuL,cAAAA,SAAS,MAAO,CAAEE,GAAI,CAAE4K,UAAW,CAAE0sC,WAAY,CAAC,6FAGnD/iD,WAAA,CADCuL,cAAAA,SAAS,+EAGVvL,WAAA,CADCuL,cAAAA,SAAS,oFAQVvL,WAAA,CANCuL,cAAAA,SAAS,QAAS,CACjBM,KAAM,CACJ,CAAE7H,MAAO,OAAQ1B,MAAO,SACxB,CAAE0B,MAAO,OAAQ1B,MAAO,4FAK5BtC,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,UAAWxE,SAAS,iFAI9CxH,WAAA,CADC8L,cAAAA,KAAK,CAAEC,WAAY,CAAE43C,KAAM,CAAE13C,MAAO,KAAMD,KAAM,UAAYw5C,QAAS,CAAEv5C,MAAO,OAAQD,KAAM,oFAI7FhM,WAAA,CAFC2W,cAAAA,WAAW,KACXwH,cAAAA,MAAM,MAAO,CAAEC,OAAQ,CAAEnS,MAAO,oFAIjCjM,WAAA,CAFC2W,cAAAA,WAAW,MACXwH,cAAAA,MAAM,MAAO,CAAEC,OAAQ,CAAEnS,MAAO,yFAGjCjM,WAAA,CADCme,cAAAA,MAAM,KAAM,CAAEC,OAAQ,CAAEnS,MAAO,mFAGhCjM,WAAA,CADCme,cAAAA,MAAM,SAAU,CAAEC,OAAQ,CAAEnS,MAAO,wFAGpCjM,WAAA,CADCke,cAAAA,UAAU,4EAgOXle,WAAA,CADC2hD,cAAAA,OAAO,OACEhhD,QAAA,EAAAihD,cAAAA,MAAM,yEAAY9nC,sFAvUjB2oC,QAAAA,IAAmBziD,WAAA,CAN/BkM,cAAAA,OAAO,QAAS,CACfC,MAAO,YACPpC,MAAO,oCACPqC,KAAM,OACN25C,SAAU,uCAiHgBD,KAAAA,iBA/GfrD,QAAAA,0BClCX,SAAYp2C,GACVA,EAAcC,SAASm2C,QAAAA,yCAP1Bx1C,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAACu1C,QAAAA,KACft1C,QAAS,CAACC,OAAAA,aAAcC,cAAAA,iBAAkB24C,WAAAA,mBAAoBjqC,MAAAA,aAC9DwM,QAAS,CAACk6B,QAAAA,iEARcn1C,cAAAA,iBCab24C,QAAAA,IAAmB,WA4C9B,SAAAA,IArCArpD,KAAAua,YAAc,UAOdva,KAAA+lD,UAAY,KAEZ/lD,KAAAie,OAAiB,GAEjBje,KAAA4P,KAAY,CAAEG,OAAQ,GAAIrD,MAAO,UAAWuD,OAAQ,SAAUE,KAAM,GAAIiB,MAAO,EAAGhB,WAAY,IAO9FpQ,KAAAuZ,WAAa,uBASbvZ,KAAAmmD,WAAa,WAEbnmD,KAAAomD,MAAQ,QAERpmD,KAAAspD,WAAa,IAAI71C,GAAAA,aACjBzT,KAAAq6B,KAAoB,KAGpBr6B,KAAAupD,iBAAmB,IAAIrsC,KAAK,EAAG,EAAG,EAAG,EAAG,EAAG,UAI3CmsC,EAAAppD,UAAAsN,SAAA,WACEvN,KAAKwpD,gBAAkB,CACrBjvC,YAAava,KAAKua,YAClBgG,gBAAiBvgB,KAAKuZ,WACtBrJ,SAAUlQ,KAAK4P,KAAKO,KAAO,KAC3BL,WAAY9P,KAAK4P,KAAKG,OACtBrD,MAAO1M,KAAK4P,KAAKlD,MACjBsD,WAAYhQ,KAAK4P,KAAKK,OACtB2K,cAAe5a,KAAK4P,KAAKwB,MAAQ,KACjChB,WAAYpQ,KAAK4P,KAAKQ,WAAa,KACnC6N,OAAQje,KAAKie,OAAS,KACtB0K,gBAAiB,OAAO3oB,KAAK+lD,UAAU,IACvC6B,eAAe,cAInByB,EAAAppD,UAAA+mD,SAAA,SAAS7hD,GACP,IAAI4hD,EAAO,GACI,OAAX5hD,IACF4hD,EAAOxqC,QAAAA,OAAOpX,EAAQnF,KAAKmmD,aAE7BnmD,KAAKspD,WAAWpwC,KAAK6tC,MAnEO,iCAV/B94C,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,iBACVC,SAAA,sdAeA/K,WAAA,CANCuL,cAAAA,SAAS,KAAM,CACdE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,uFAU3FlW,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNP,GAAI,CACFlB,OAAQ,0FAKZvK,WAAA,CADCuL,cAAAA,SAAS,+EAGVvL,WAAA,CADCuL,cAAAA,SAAS,KAAM,CAAEE,GAAI,CAAElB,OAAQ,mFAQhCvK,WAAA,CANCuL,cAAAA,SAAS,KAAM,CACdE,GAAI,CACFlB,OAAQ,UACR2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,sFAY3FlW,WAAA,CARCuL,cAAAA,SAAS,OAAQ,CAChBw3C,WAAY,CACV/2C,KAAM,SACNC,MAAO,MACPR,GAAI,IAENywB,SAAU,CAAC,6FAIbl8B,WAAA,CADCuL,cAAAA,SAAS,+EAGVvL,WAAA,CADC2W,cAAAA,WAAW,kFArCDsvC,QAAAA,IAAmBjmD,WAAA,CAL/BkM,cAAAA,OAAO,QAAS,CACfC,MAAO,YACPpC,MAAO,oCACPqC,KAAM,mDAEK65C,QAAAA,0BCDX,SAAY55C,GACVA,EAAcC,SAAS25C,QAAAA,yCAN1Bh5C,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CAAC+4C,QAAAA,KACf94C,QAAS,CAACC,OAAAA,aAAcC,cAAAA,iBAAkBg5C,WAAAA,mBAAmBtqC,MAAAA,yEATrCzO,cAAAA,iBC+B1B,IAAMg5C,YAAc,CAClB,CAAEtiD,MAAO,KAAM1B,MAAO,UACtB,CAAE0B,MAAO,KAAM1B,MAAO,QACtB,CAAE0B,MAAO,KAAM1B,MAAO,aACtB,CAAE0B,MAAO,MAAO1B,MAAO,WAsBZikD,QAAAA,IAAuB,WA8KlC,SAAAA,EACUzoD,EACAnB,EACAuM,EACAwW,EACY8mC,EACZx9C,EACAG,GAPV,IAAAgJ,EAAAvV,KACUA,KAAAkB,gBAAAA,EACAlB,KAAAD,KAAAA,EACAC,KAAAsM,WAAAA,EACAtM,KAAA8iB,KAAAA,EACY9iB,KAAA4pD,OAAAA,EACZ5pD,KAAAoM,GAAAA,EACApM,KAAAuM,UAAAA,EAxKVvM,KAAA0+C,QAAU,SAOV1+C,KAAA6pD,YAAa,EAQb7pD,KAAA8pD,SAAW,QAkBX9pD,KAAA+pD,UAAW,EAMX/pD,KAAAgqD,WAAa,UAWbhqD,KAAAiqD,aAAe,UAIfjqD,KAAAsgC,KAAO,GAIPtgC,KAAAkqD,YAAc,EAEdlqD,KAAAmqD,WAAa,EAEbnqD,KAAAoqD,WAAY,EAMZpqD,KAAAqqD,KAAO,GAIPrqD,KAAAugC,UAAY,MAIZvgC,KAAAwgC,UAAY,GAQZxgC,KAAA4jB,SAAW,KAoCX5jB,KAAAgN,MAAe,CAAC,CAAEohC,IAAK,MAAOD,IAAK,KAKnCnuC,KAAA+mB,WAAa,IAAItT,GAAAA,aAMjBzT,KAAAsqD,WAAa,IAAI72C,GAAAA,aAIjBzT,KAAAuqD,SAAW,IAAI92C,GAAAA,aAKfzT,KAAA0yB,SAAW,IAAIC,KAAAA,QAIf3yB,KAAAwqD,YAAc,GAMdxqD,KAAAyqD,MAAQ,IAAIrqD,SAAQ,SAACC,GACnBkV,EAAKm1C,OAASrqD,KAMhBL,KAAA2qD,YAAcjB,YAAYjgD,MAAM,EAAG,UAcnChI,OAAAqC,eAAI6lD,EAAA1pD,UAAA,UAAO,KAAX,WACE,OAAOD,KAAKsM,WAAW0B,+CAGzB27C,EAAA1pD,UAAA2qD,SAAA,SAAS1P,GACHl7C,KAAK6qD,MACP7qD,KAAK6qD,KAAKD,SAAS1P,IAIvByO,EAAA1pD,UAAA6qD,YAAA,SAAY5P,GACNl7C,KAAK6qD,MACP7qD,KAAK6qD,KAAKC,YAAY5P,IAI1ByO,EAAA1pD,UAAAgN,YAAA,SAAYC,GACNA,EAAQF,OAAShN,KAAKgN,MAAM,KAC9BhN,KAAKugC,WAAavgC,KAAKgN,MAAM,GAAGohC,IAChCpuC,KAAKwgC,WAAaxgC,KAAKgN,MAAM,GAAGmhC,IAChCnuC,KAAK+qD,UAAU/qD,KAAKugC,UAAWvgC,KAAKwgC,aAIlCmpB,EAAA1pD,UAAAsN,SAAA,kIA2CJ,OA1CIvN,KAAK4pD,QAEP5pD,KAAK4pD,OAAO/2B,KAAKC,UAAAA,UAAU9yB,KAAK0yB,WAAWK,WAAU,SAACi4B,GAC5C,IAAGC,EAA4BD,EAAYnlD,EAAjCqlD,EAAqBF,EAAY7jD,EAA7BgkD,EAAiBH,EAAYG,aAC7Cr+C,EAAQyI,EAAK9H,QAAQX,MAC3B,IAAqB,IAAjBq+C,EACF51C,EAAKuN,KAAKsoC,SAASv4B,KAAKw4B,UAAAA,KAAK,IAAIt4B,WAAU,WACzC,IAAM3Q,EAAS7M,EAAK9H,QAAQ69C,WAC5B,GAAIlpC,EAAQ,CACV,IAAMw8B,EAAQ,wCAAwCC,KAAKz8B,EAAOtV,MAAMyK,WACxE,GAAIqnC,EAAO,CACT,IAAM2M,EAAUC,WAAW5M,EAAM,IAC3B6M,EAAUD,WAAW5M,EAAM,IACjC9xC,EAAMyK,UAAY,cAAcg0C,EAAO,OAAOE,EAAO,MACrD3+C,EAAMmR,OAASmE,EAAO8Q,aAAeu4B,EAAU,KAC/C3+C,EAAMmI,MAAQmN,EAAO6Q,YAAcs4B,EAAU,KAC7Cz+C,EAAMwa,QAAamkC,EAAO,UAAUF,EAAO,cAa5C,CACC,IAAAn+C,EAAqBmI,EAAKhJ,UAAUoB,OAAlCkK,EAAQzK,EAAAyK,SAAE1H,EAAI/C,EAAA+C,KACdtK,EAASgS,EAAQhS,EAAdsB,EAAM0Q,EAAQ1Q,EACjB8N,EAAkB9E,EAAI8E,MAAfgJ,EAAW9N,EAAI8N,OAC9BnR,EAAMyK,UAAY,cAAc1R,EAAC,OAAOsB,EAAC,aAAa,EAAI8jD,EAAE,IAAI,EAAIC,EAAE,IACtEp+C,EAAMmR,QAAU9W,EAAI8W,GAAUitC,EAAK,KACnCp+C,EAAMmI,OAASpP,EAAIoP,GAASg2C,EAAK,KACjCn+C,EAAMwa,QAAangB,EAAI+jD,EAAE,UAAUrlD,EAAIolD,EAAE,SAM/C,CAAA,EAAMjrD,KAAK0rD,yBAAXt+C,EAAA/F,mBAGIsiD,EAAA1pD,UAAAyrD,QAAA,kIACJ,MAAA,CAAA,EAAM1rD,KAAKkB,gBAAgByqD,oBAC3B,OADAv+C,EAAA/F,OACA,CAAA,EAAMrH,KAAKkB,gBAAgB0qD,4BAA3Bx+C,EAAA/F,OACArH,KAAK6rD,aAAe7rD,KAAK0+C,QAEL,MAAhB1+C,KAAK0+C,UACH1+C,KAAK8rD,YACP9rD,KAAK6rD,aAAe,SACX7rD,KAAKoqD,YACdpqD,KAAK6rD,aAAe,SAGnB7rD,KAAKmqB,YACRnqB,KAAK8iB,KAAKipC,mBAAkB,WA0B1B,GAzBAx2C,EAAK8P,IAAM,IAAI2mC,OAAOC,IAAI12C,EAAK22C,UAAUl+C,cAAe,CAAEm+C,gBAAgB,IAC1E52C,EAAK8P,IAAI+mC,cAAc,IAAIJ,OAAOK,MAAM92C,EAAKgrB,UAAWhrB,EAAKirB,WAAYjrB,EAAK+qB,MAC9E/qB,EAAK8P,IAAIinC,wBAUT/2C,EAAKg3C,cAAch3C,EAAKs2C,eACpBt2C,EAAKyF,OAA0B,IAAlBzF,EAAKw0C,WACpBx0C,EAAK8P,IAAImnC,kBAEPj3C,EAAKk3C,UACPl3C,EAAK8P,IAAIqnC,QAAqB,MAAbn3C,EAAK80C,KAAe,GAAK90C,EAAK80C,KAAM,CAAEsC,aAAa,IACpEp3C,EAAK8P,IAAIunC,kBAAkB,CAAEC,UAAW,CAAC,wBAIzCt3C,EAAK8P,IAAIynC,cACTv3C,EAAK8P,IAAI0nC,iBAEPx3C,EAAKy3C,oBAAqB,CAC5B,IAAM7yC,EAAU,CAEd8yC,OAAQC,qBAER9/B,OAAQ,IAAI4+B,OAAOmB,KAAK,GAAI,KAE1BC,EAAkB,IAAIpB,OAAOqB,gBAAgBlzC,GAEjD5E,EAAK8P,IAAIioC,WAAWF,GAEtB,GAAI73C,EAAKs0C,WAAY,CACnB,IAAM0D,EAAS,IAAIvB,OAAOwB,gBAC1BD,EAAOE,UAAU,IAAIzB,OAAOmB,KAAK,GAAI,KACrC53C,EAAK8P,IAAIioC,WAAWC,GAElBh4C,EAAKm4C,sBACPn4C,EAAK9H,QAAQX,MAAMiS,YAAY,2BAA4BxJ,EAAKm4C,sBAE9Dn4C,EAAKo4C,iBACPp4C,EAAK9H,QAAQX,MAAMiS,YAAY,sBAAuBxJ,EAAKo4C,iBAE7Dp4C,EAAK8P,IAAIuoC,iBAAiB,WAAW,SAAC30C,GACpC,IAAM6W,EAASva,EAAK8P,IAAIwoC,YACxBt4C,EAAKwR,WAAW7N,KAAK4W,MAEvBva,EAAK8P,IAAIuoC,iBAAiB,SAAS,SAAC30C,GAClC1D,EAAKg1C,SAASrxC,KAAKD,EAAMkf,YAE3B5iB,EAAK8P,IAAIuoC,iBAAiB,WAAW,SAAC30C,GACpC1D,EAAK+0C,WAAWpxC,KAAK3D,EAAK8P,IAAIyoC,WAC9Bv4C,EAAKwR,WAAW7N,KAAK3D,EAAK8P,IAAIwoC,gBAEhCt4C,EAAKs1C,KAAO,IAAIkD,OAAOC,KAAK,CAC1B3oC,IAAK9P,EAAK8P,MAEZ9P,EAAK04C,UAAU14C,EAAK8P,QAEtBrlB,KAAK0qD,OAAO1qD,KAAKqlB,kBAIrBskC,EAAA1pD,UAAA8qD,UAAA,SAAU3c,EAAaD,GACrB,GAAInuC,KAAKqlB,KAAO+oB,GAAOD,EAAK,CAC1B,IAAMre,EAAS9vB,KAAKqlB,IAAIwoC,YACpB/9B,EAAOse,KAAOA,GAAOte,EAAOqe,KAAOA,GACrCnuC,KAAKkuD,iBAAiB9f,EAAKD,EAAKnuC,KAAKqlB,IAAIyoC,aAK/CnE,EAAA1pD,UAAAiuD,iBAAA,SAAiB9f,EAAaD,EAAa7N,GACzC,IAAMxQ,EAAS9vB,KAAKqlB,IAAIwoC,YAGxB,GAAIvtB,GAFgBtgC,KAAKqlB,IAAIyoC,WAEFn4C,KAAK4Z,IAAI6e,EAAMte,EAAOse,KAAO,OAASz4B,KAAK4Z,IAAI4e,EAAMre,EAAOqe,KAAO,KAAM,CAClG,IAAM1wB,EAAQ,IAAIuuC,OAAOK,MAAMje,EAAKD,GACpCnuC,KAAKqlB,IAAI+mC,cAAc3uC,EAAO6iB,EAAM,CAAE+pB,KAAMrqD,KAAKqlB,IAAI8oC,cAWzDxE,EAAA1pD,UAAAmuD,qBAAA,SAAqBC,EAAgBC,EAAgBC,EAAgBC,GACnExuD,KAAKkuD,kBAAkBI,EAASD,GAAU,GAAIG,EAASD,GAAU,EAAGvuD,KAAK8tD,QAAQQ,EAAQD,EAAQG,EAAQD,KAG3G5E,EAAA1pD,UAAA6tD,QAAA,SAAQQ,EAAgBD,EAAgBG,EAAgBD,GACtD,IAGME,EAAS,IAAIzC,OAAOK,MAAMiC,EAAQE,GAClCE,EAAS,IAAI1C,OAAOK,MAAMgC,EAAQE,GAClC/8B,GAAYxxB,KAAKqlB,IAAIspC,YAAYF,EAAQC,GAAQ71C,QAAQ,GACzDnW,EANQ,CACZ,GAAI,IAAK,IAAK,IAAK,IAAM,IAAM,IAAM,IAAO,IAAO,KAAO,IAAO,IAAQ,IAAQ,IAAQ,IAAS,KAKpF6+B,WAAU,SAACjB,GAAS,OAAAA,EAAO9O,EAAW,KACtD,OAAW,IAAP9uB,EACK,EAGF,GAAKA,EAAI,GAGlBinD,EAAA1pD,UAAA2uD,eAAA,SAAel4C,EAAW03B,EAAaD,GAAvC,IAAA54B,EAAAvV,KACE,GAAI0W,EAAK6mC,aAAev9C,KAAK6uD,mBAAoB,CAC/C,IAAMC,EAAQ,IAAI9C,OAAOK,OAAOje,GAAMD,GAKlCoP,EAAc7mC,EAAK6mC,YACnBv9C,KAAK6uD,qBACPtR,EAAcwR,cAAAA,aAAavG,MAAMxoD,KAAK6uD,mBAAoBn4C,IAE5D,IAAMyD,EAAU,CACdiT,OAAQ,IAAI4+B,OAAOmB,KAAK,EAAG,GAC3Bl4C,MAAOjV,KAAKgvD,iBAAmB,EAC/B/wC,OAAQje,KAAKivD,kBAAoB,GAE7BC,EAAa,IAAIlD,OAAOmD,WAAW5R,EAAapjC,GAEtD,GAAKna,KAAKovD,UAwBRpvD,KAAKqlB,IAAIupC,eAAeM,EAAYJ,OAxBjB,CACf9uD,KAAKqvD,iBACPrvD,KAAKqvD,iBAAiBroD,MAAK,WACzBuO,EAAK8P,IAAIupC,eAAeM,EAAYJ,OAGtC9uD,KAAKqvD,iBAAmB,IAAIjvD,SAAc,SAACC,GACzCkoB,YAAW,WACThT,EAAK65C,WAAY,EACjB75C,EAAK85C,iBAAmB,KACxBhvD,MACC,QAELL,KAAKqlB,IAAIupC,eAAeM,EAAYJ,IAEtC,IAAMQ,EAAWJ,EAAWK,MAC5BL,EAAWK,MAAQ,WACbh6C,EAAK85C,iBACP95C,EAAK85C,iBAAiBroD,MAAK,WAAM,OAAAsoD,EAASvtD,KAAKmtD,MAE/CI,EAASvtD,KAAKmtD,IAMpB,OAAOA,IAIXvF,EAAA1pD,UAAAuvD,iBAAA,SAAiBntC,GAAjB,IACMotC,EADNl6C,EAAAvV,KAEE,GAAIA,KAAKysD,SAAU,CACjB,IAAM5rC,EAAOwB,EAAMxB,KACnB,GAAIA,EAAM,CACR,IAAI6uC,EAAS,IAAI1D,OAAOK,MAAMxrC,EAAKjK,MAAMw3B,IAAKvtB,EAAKjK,MAAMu3B,KACrDwhB,EAAO,IAAI3D,OAAOK,MAAMxrC,EAAK/J,IAAIs3B,IAAKvtB,EAAK/J,IAAIq3B,KAC/CyhB,EAAS,IAAI5D,OAAO6D,OAAO,IAAI7D,OAAOK,MAAMqD,EAAOthB,IAAKuhB,EAAKxhB,KAAM,IAAI6d,OAAOK,MAAMsD,EAAKvhB,IAAKshB,EAAOvhB,MACzGshB,EAAgB,IAAIzD,OAAO8D,cAAcF,EAAQ,CAC/CxgD,KAAM,SACN8K,IAAK2G,EAAKkvC,OACVvjD,QAAS,SAGR,CACL,IAAMwjD,EAAe,SAACt5C,GACpB,IAAM+G,EAAQ,IAAIuuC,OAAOK,MAAM31C,EAAK03B,IAAK13B,EAAKy3B,KAC9C,OAAO54B,EAAK8P,IAAI4qC,aAAaxyC,IAE/BgyC,EAAgB,IAAIzD,OAAOkE,YAAY,CACrCC,SAAU,eACVC,OAAQ,WACN,IAAIC,EAAMrwD,KAAK+vD,OAAOO,WAAW,MAC5BD,IAGLA,EAAIE,UAAU,EAAG,EAAGF,EAAIN,OAAO96C,MAAOo7C,EAAIN,OAAO9xC,QACjDoE,EAAM+tC,OAAOC,EAAKL,OAIxB,OAAOP,GAGT9F,EAAA1pD,UAAAurB,YAAA,WACExrB,KAAK0yB,SAAS5rB,OACd9G,KAAK0yB,SAASM,WACdhzB,KAAKmqB,WAAY,EACbnqB,KAAK6qD,MACP7qD,KAAK6qD,KAAKhhC,UAER7pB,KAAKqlB,KACPrlB,KAAKqlB,IAAIwE,WAIP8/B,EAAA1pD,UAAAguD,UAAA,SAAU5oC,6IACVrlB,KAAK4jB,UACe,OAAlB5jB,KAAK4jB,WACP5jB,KAAK4jB,SAAW,WAEA,CAAA,EAAM5jB,KAAKD,KAAKqF,IAAI,2BAA6BpF,KAAK4jB,SAAW,SAASjjB,cAJ1F,CAAA,EAAA,UAII6vD,EAAYpjD,EAAA/F,OACZopD,EAAc,GAChBC,EAAcF,EAAKG,WAAa,KACpCH,EAAK3U,SAASplC,SAAQ,SAACrJ,OAAEwjD,EAAQxjD,EAAAwjD,SAC/BA,EAASC,YAAeD,EAASC,YAAsBp6C,SAAQ,SAACq6C,EAAYpuD,GAC1E,GAAsB,iBAAlBkuD,EAASxhD,KAAyB,CACpC,IAAMyhD,EAAeC,EAAqBzrC,KAAI,SAACqO,EAAQxqB,GAIrD,OAHIsnD,EAAKO,eACPr9B,EAASne,EAAKy7C,cAAct9B,EAAQk9B,EAASK,cAAcvuD,GAAGwG,GAAIwnD,IAE7Dh9B,KAET+8B,EAAYvrD,KAAK2rD,QAEbL,EAAKO,eACPD,EAAav7C,EAAKy7C,cAAcF,EAAYF,EAASK,cAAcvuD,GAAIguD,IAEzED,EAAYvrD,KAAK,CAAC4rD,UAIlBp6C,EAAO,CACX,CACEk6C,SAAU,CACRxhD,KAAM,eACNyhD,YAAaJ,KAIfvV,EAAQ,IAAI6S,OAAOmD,aAAa,CAClCvgD,UAAW3Q,KAAKiqD,aAChBkH,UAAWnxD,KAAKmqD,YAAc,EAC9BiH,UAAWpxD,KAAKgqD,WAChBtzC,KAAIA,EACJ26C,aAAc,IAEhBrxD,KAAK6qD,KAAKD,SAAS1P,GACfl7C,KAAKsxD,eAAiBtxD,KAAKsxD,aAAa1S,MAAM,2BAC5C2S,EAAY,IAAIxD,OAAOyD,UAAU,CACnC9kD,MAAO1M,KAAKsxD,aACZ56C,KAAIA,EACJ26C,aAAc,IAEhBrxD,KAAK6qD,KAAKD,SAAS2G,uCAKzB5H,EAAA1pD,UAAA+wD,cAAA,SAAcF,EAAoBG,EAAyBQ,GAKzD,IAJA,IAAMtsD,EAAS,GACXusD,EAAQT,EAAc,GACtBU,EAAQV,EAAc,GAEjBvuD,EAAI,EAAGA,EAAIouD,EAAWjuD,OAAQH,GAAK,EAAG,CAC7C,IAAImD,EAAIirD,EAAWc,WAAWlvD,GAAK,GAC/ByE,EAAI2pD,EAAWc,WAAWlvD,EAAI,GAAK,GAEvCmD,EAAKA,GAAK,IAAW,EAAJA,GACjBsB,EAAKA,GAAK,IAAW,EAAJA,GAKjBuqD,EAHA7rD,GAAK6rD,EAILC,EAHAxqD,GAAKwqD,EAKLxsD,EAAOD,KAAK,CAACW,EAAI4rD,EAAatqD,EAAIsqD,IAGpC,OAAOtsD,GAGHwkD,EAAA1pD,UAAAssD,cAAA,SAAc7N,8HACVA,OACD,OAAA,MAAA,CAAA,EAAA,OAOA,YAAA,MAAA,CAAA,EAAA,OAGA,SAAA,MAAA,CAAA,EAAA,6BATE1+C,KAAK6xD,UAAN,CAAA,EAAA,IACF/jD,EAAA9N,KAAiB,CAAA,EAAMA,KAAKD,KAAKqF,IAAI,2CAA2CzE,qBAAhFmN,EAAK+jD,UAAYnkD,EAAArG,wBAInB,OAFArH,KAAKqlB,IAAIysC,WAAWC,iBACpB/xD,KAAKqlB,IAAI2sC,cAAc,CAAE/wB,UAAWjhC,KAAK6xD,YACzC,CAAA,EAAA,UAGA,OADA7xD,KAAKqlB,IAAIysC,WAAWG,oBACpB,CAAA,EAAA,iBAEIjyD,KAAK8rD,YACW,CAAA,EAAM9rD,KAAKD,KAAKqF,IAAIpF,KAAK8rD,aAAanrD,aADtD,CAAA,EAAA,UACIsgC,EAAYvzB,EAAArG,OAClBrH,KAAKqlB,IAAIysC,WAAWC,iBACpB/xD,KAAKqlB,IAAI2sC,cAAc,CAAE/wB,UAASA,qBAEpC,MAAA,CAAA,EAAA,UAEAjhC,KAAKqlB,IAAIysC,WAAWC,iBACpB/xD,KAAKqlB,IAAI2sC,cAAc,CAAE/wB,UAAW,4CA5jBR,iCApBnChzB,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,sBACVC,SAAA,imDAnBO9M,GAAAA,uBAvBAL,GAAAA,kBAKPyN,GAAAA,kBAMAwV,GAAAA,cAUOiuC,cAAAA,aAAY7uD,WAAA,CAAA,CAAA+L,KA0NhB+iD,GAAAA,kBA5OH5jD,GAAAA,yBAkBmCG,cAAAA,mEA+ElC0jD,GAAAA,YAAWvxD,KAAA,CAAC,uDAGZuxD,GAAAA,YAAWvxD,KAAA,CAAC,8CA2GZ0oB,GAAAA,UAAS1oB,KAAA,CAAC,YAAa,CAAE6qB,QAAQ,OAzIlCtoB,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBM,KAAMy6C,wFAKRtmD,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,SAAUP,GAAI,CAAElB,OAAQ,gBAAiB8L,UAAW,CAAEilC,QAAS,CAAC,4FAG1Ft7C,WAAA,CADCuL,cAAAA,SAAS,4FAGVvL,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,yFAS1BhM,WAAA,CAPCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UACdsB,KAAM,CACJ,CAAE7H,MAAO,KAAM1B,MAAO,SACtB,CAAE0B,MAAO,KAAM1B,MAAO,2FAK1BtC,WAAA,CADCuL,cAAAA,SAAS,QAAS,CAAEE,GAAI,CAAElB,OAAQ,oGAGnCvK,WAAA,CADCuL,cAAAA,SAAS,QAAS,CAAEE,GAAI,CAAElB,OAAQ,+FAGnCvK,WAAA,CADCuL,cAAAA,SAAS,2FAGVvL,WAAA,CADCuL,cAAAA,SAAS,4FAGVvL,WAAA,CADCuL,cAAAA,SAAS,QAAS,CAAEE,GAAI,CAAElB,OAAQ,mGAInCvK,WAAA,CAFCuL,cAAAA,SAAS,8FAKVvL,WAAA,CAFCuL,cAAAA,SAAS,+FAIVvL,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,uFAO1BhM,WAAA,CAJCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,WACd2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,qFAOzFlW,WAAA,CAJCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,WACd2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,uFAQzFlW,WAAA,CAJCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,WACd2L,QAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,uFAMzFlW,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UAAWiB,IAAK,EAAGI,IAAK,GAAInI,KAAM,4EAMlDzD,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,yFAG1BhM,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,wFAG1BhM,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,UAAWP,GAAI,CAAEuK,QAAQ,iFAGnDhW,WAAA,CADCuL,cAAAA,SAAS,oFAGVvL,WAAA,CADCuL,cAAAA,SAAS,+FAGVvL,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,SAAUP,GAAI,CAAE4K,UAAW,CAAEgzC,SAAU,EAAC,8EAiBlErpD,WAAA,CAPCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,cACR04C,YAAY,EACZnsC,IAAK,yGAuCT9W,WAAA,CANC8L,cAAAA,KAAK,CACJC,WAAY,CACVi/B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,gFAQlCjM,WAAA,CAJC2W,cAAAA,WAAW,CAAC,MAAO,QACnBwH,cAAAA,MAAM,QAAS,CACdC,OAAQ,CAAErS,WAAY,CAAEi/B,IAAK,CAAE/+B,MAAO,KAAMD,KAAM,UAAY++B,IAAK,CAAE9+B,MAAO,KAAMD,KAAM,2FAQ1FhM,WAAA,CAJC2W,cAAAA,WAAW,QACXwH,cAAAA,MAAM,KAAM,CACXC,OAAQ,sFAMVpe,WAAA,CAHCme,cAAAA,MAAM,OAAQ,CACbC,OAAQ,CAAErS,WAAY,CAAEi/B,IAAK,CAAE/+B,MAAO,KAAMD,KAAM,UAAY++B,IAAK,CAAE9+B,MAAO,KAAMD,KAAM,yFAlJ/Eu6C,QAAAA,IAAuBvmD,WAAA,CAfnCkM,cAAAA,OAAO,OAAQ,CACdC,MAAO,YACPpC,MAAO,qCACPw0B,SAAU,CACR,CACEtyB,MAAO,MACPD,KAAM,wBACNuR,OAAQ,GACRvH,QAAQ,EACRwoB,WAAW,IAGfC,WAAY,CAAC,wBAAyB,0BAA2B,gBAAiB,yBAClF57B,YAAa,iDAiLc5E,GAAAA,gBACXL,GAAAA,WACMyN,GAAAA,WACNwV,GAAAA,OACciuC,cAAAA,aAChB3jD,GAAAA,kBACOG,cAAAA,aArLVi7C,QAAAA,KC3CA0I,QAAAA,IAAkB,WAoI7B,SAAAA,EAAoBjwC,GAAApiB,KAAAoiB,OAAAA,EAlIpBpiB,KAAAsyD,UAAY,IAwCZtyD,KAAAm9C,OAAc,CACZ,CACE5tC,MAAO,IACP7C,MAAO,sBACP6N,YAAa,UACb6U,YAAa,EACb0G,YAAa,wBAEf,CACEvmB,MAAO,IACP7C,MAAO,uBACP6N,YAAa,UACb6U,YAAa,EACb0G,YAAa,wBAEf,CACEvmB,MAAO,IACP7C,MAAO,sBACP6N,YAAa,UACb6U,YAAa,EACb0G,YAAa,sBACb3oB,MAAO,mCAWXnN,KAAA0W,KAAc,CACZ,CACE03B,IAAK,MACLD,IAAK,KACL5+B,MAAO,IACP7L,EAAG,KAEL,CACE0qC,IAAK,MACLD,IAAK,MACL5+B,MAAO,IACP7L,EAAG,KAEL,CACE0qC,IAAK,OACLD,IAAK,MACL5+B,MAAO,IACP7L,EAAG,IAEL,CACE0qC,IAAK,MACLD,IAAK,KACL5+B,MAAO,IACP7L,EAAG,IAEL,CACE0qC,IAAK,MACLD,IAAK,MACL5+B,MAAO,IACP7L,EAAG,IAEL,CACE0qC,IAAK,OACLD,IAAK,MACL5+B,MAAO,IACP7L,EAAG,IAEL,CACE0qC,IAAK,MACLD,IAAK,KACL5+B,MAAO,IACP7L,EAAG,IAEL,CACE0qC,IAAK,MACLD,IAAK,MACL5+B,MAAO,IACP7L,EAAG,IAEL,CACE0qC,IAAK,OACLD,IAAK,MACL5+B,MAAO,IACP7L,EAAG,YAOP2uD,EAAApyD,UAAAsN,SAAA,aAEM8kD,EAAApyD,UAAAgN,YAAA,uGACJjN,KAAKuyD,2BAYDF,EAAApyD,UAAAsyD,cAAA,6HACJ,MAAA,CAAA,EAAMvyD,KAAKoiB,OAAOqoC,qBAAlBr9C,EAAA/F,OACArH,KAAKwyD,SACCzC,EAAS/vD,KAAKyyD,YACpBzyD,KAAK0yD,iBAAiB3C,eAGxBsC,EAAApyD,UAAAyyD,iBAAA,SAAiB7xC,GACf,GAAIA,EAAM,CACR,IAAI6uC,EAAS,IAAI1D,OAAOK,MAAMxrC,EAAKjK,MAAMw3B,IAAKvtB,EAAKjK,MAAMu3B,KACrDwhB,EAAO,IAAI3D,OAAOK,MAAMxrC,EAAK/J,IAAIs3B,IAAKvtB,EAAK/J,IAAIq3B,KAC/CyhB,EAAS,IAAI5D,OAAO6D,OACtB,IAAI7D,OAAOK,MAAMqD,EAAOthB,IAAKuhB,EAAKxhB,KAClC,IAAI6d,OAAOK,MAAMsD,EAAKvhB,IAAKshB,EAAOvhB,MAEpCnuC,KAAKyvD,cAAgB,IAAIzD,OAAO8D,cAAcF,EAAQ,CACpDxgD,KAAM,SACN8K,IAAK2G,EAAKkvC,OACVvjD,QAAS,IAEXxM,KAAKoiB,OAAOiD,IAAIstC,WAAW3yD,KAAKyvD,iBAKpC4C,EAAApyD,UAAAurB,YAAA,WACExrB,KAAKwyD,UAIPH,EAAApyD,UAAAuyD,OAAA,WACMxyD,KAAKyvD,gBACPzvD,KAAKoiB,OAAOiD,IAAIutC,cAAc5yD,KAAKyvD,eACnCzvD,KAAKyvD,cAAgB,OAIzB4C,EAAApyD,UAAAwyD,UAAA,WAUE,GAAIzyD,KAAK0W,MAAQ1W,KAAK0W,KAAK7T,QAAU,EAAG,CACtC,IAAIgwD,EAAW,IACXC,EAAW,GACXC,GAAU,IACVC,GAAU,GACRt8C,EAAO1W,KAAK0W,KAAK2O,KAAI,SAAC/N,GAC1B,IAAM5T,EAAiB,KAAX4T,EAAO5T,EAAWiS,KAAKgf,GAAK,SAKxC,OAJAk+B,EAAWl9C,KAAK/G,IAAIikD,GAAWv7C,EAAO82B,IAAM1qC,GAC5CovD,EAAWn9C,KAAK/G,IAAIkkD,GAAWx7C,EAAO62B,IAAMzqC,GAC5CqvD,EAASp9C,KAAK3G,IAAI+jD,GAASz7C,EAAO82B,IAAM1qC,GACxCsvD,EAASr9C,KAAK3G,IAAIgkD,GAAS17C,EAAO62B,IAAMzqC,GACxCjC,OAAAc,OAAAd,OAAAc,OAAA,GAAY+U,GAAM,CAAE5T,EAACA,OAEjB4uD,EAAYtyD,KAAKsyD,WAAa,IAC9BW,EAAWt9C,KAAK/G,IAAI0jD,GAAaS,EAASF,GAAWP,GAAaU,EAASF,IAC3EI,EAAIzyC,SAASoH,cAAc,UACjCqrC,EAAEj+C,MAAQU,KAAKw9C,OAAOJ,EAASF,GAAYI,GAC3CC,EAAEj1C,OAAStI,KAAKw9C,OAAOH,EAASF,GAAYG,GAC5C,IAAMG,EAAS,GA6Ef,OA5EA18C,EAAKD,SAAQ,SAACa,GACZ,IAAM/H,EAAQ+H,EAAO/H,MACrB,GAAIA,EAAO,CACT,IAAImkB,EAAgB0/B,EAAO7jD,GACtBmkB,IACHA,EAAS,GACT0/B,EAAO7jD,GAASmkB,GAElBA,EAAOxuB,KAAK,CACVW,IAAKyR,EAAO82B,IAAMykB,GAAYI,EAC9B9rD,GAAI6rD,GAAU17C,EAAO62B,KAAO8kB,EAC5BvvD,EAAG4T,EAAO5T,EAAIuvD,QAIpBjzD,KAAKm9C,OAAO1mC,SAAQ,SAAClH,GACnB,IAAMmkB,EAAS0/B,EAAO7jD,EAAMA,OAC5B,IAAImkB,MAAAA,OAAM,EAANA,EAAQ7wB,SAAU,EAAG,CACvB,IAAMwtD,EAAM6C,EAAE5C,WAAW,MACnB+C,EAAK3/B,EAAO,GACZ4/B,EAAK5/B,EAAO/d,KAAK49C,MAAM7/B,EAAO7wB,OAAS,IACvC2wD,EAAK9/B,EAAOA,EAAO7wB,OAAS,GAC9B4wD,EAAMpD,EAAIqD,qBAAqBL,EAAGxtD,EAAGwtD,EAAGlsD,EAAG,EAAGksD,EAAGxtD,EAAGwtD,EAAGlsD,EAAGksD,EAAG3vD,GAGjE+vD,EAAIE,aAAa,EAAGpkD,EAAMumB,aAAe,SACzC29B,EAAIE,aAAa,EAAG,iBACpBtD,EAAIuD,UAAYH,EAChBpD,EAAIwD,YACJxD,EAAIyD,IAAIT,EAAGxtD,EAAGwtD,EAAGlsD,EAAGksD,EAAG3vD,EAAG,EAAa,EAAViS,KAAKgf,IAAQ,GAC1C07B,EAAI0D,YACJ1D,EAAIzjC,OACJ,IAAMonC,EAAc,SAACX,EAAIC,GACvB,IAAM9pD,EAAImM,KAAKs+C,KAAKt+C,KAAKoD,IAAIu6C,EAAGztD,EAAIwtD,EAAGxtD,EAAG,GAAK8P,KAAKoD,IAAIu6C,EAAGnsD,EAAIksD,EAAGlsD,EAAG,IACrE,MAAO,CAAEtB,EAAGytD,EAAGztD,EAAKytD,EAAG5vD,GAAK2vD,EAAGlsD,EAAImsD,EAAGnsD,GAAMqC,EAAGrC,EAAGmsD,EAAGnsD,EAAKmsD,EAAG5vD,GAAK4vD,EAAGztD,EAAIwtD,EAAGxtD,GAAM2D,IAEpF6mD,EAAIwD,YACJ,IAAIj9C,EAAQjB,KAAKu+C,MAAMZ,EAAGztD,EAAIwtD,EAAGxtD,IAAMwtD,EAAGlsD,EAAImsD,EAAGnsD,IACjDkpD,EAAIyD,IAAIT,EAAGxtD,EAAGwtD,EAAGlsD,EAAGksD,EAAG3vD,EAAGkT,EAAQjB,KAAKgf,GAAI/d,GAAO,GAClD,IAAIpU,EAAIwxD,EAAYX,EAAIC,GAEpBa,EAAKH,EAAYV,EAAIE,GACzBnD,EAAI+D,iBAAiB5xD,EAAEqD,EAAGrD,EAAE2E,EAAGgtD,EAAGtuD,EAAGsuD,EAAGhtD,GAExCyP,EAAQjB,KAAKu+C,MAAMV,EAAG3tD,EAAIytD,EAAGztD,IAAMytD,EAAGnsD,EAAIqsD,EAAGrsD,IAC7CkpD,EAAIyD,IAAIN,EAAG3tD,EAAG2tD,EAAGrsD,EAAGqsD,EAAG9vD,EAAGkT,EAAOA,EAAQjB,KAAKgf,IAAI,GAClDnyB,EAAIwxD,EAAYR,EAAIF,GACpBa,EAAKH,EAAYV,EAAID,GACrBhD,EAAI+D,iBAAiB5xD,EAAEqD,EAAGrD,EAAE2E,EAAGgtD,EAAGtuD,EAAGsuD,EAAGhtD,GAExCkpD,EAAI0D,YACJ1D,EAAIuD,UAAYrkD,EAAM7C,OAAS,QAC/B2jD,EAAIzjC,OACJyjC,EAAIc,UAAY5hD,EAAM6f,aAAe,EACrCihC,EAAIwD,YACJxD,EAAIyD,IAAIT,EAAGxtD,EAAGwtD,EAAGlsD,EAAGksD,EAAG3vD,EAAG,EAAa,EAAViS,KAAKgf,IAAQ,GAC1C07B,EAAI0D,YACJ1D,EAAIgE,YAAc9kD,EAAMgL,aAAe,QACvC81C,EAAIl9B,aAkBD,CACLvc,MAAO,CACLw3B,IAAKykB,EACL1kB,IAAK2kB,GAEPh8C,IAAK,CACHs3B,IAAK2kB,EACL5kB,IAAK6kB,GAEPjD,OAAQmD,OA5Se,iCAX9BjlD,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,gBACVC,SAAA,sEALOw7C,QAAAA,OAgBPvmD,WAAA,CADCuL,cAAAA,SAAS,MAAO,CAAES,KAAM,uFAyCzBhM,WAAA,CAvCCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,QACNC,MAAO,OACP+vB,SAAU,GACVC,MAAO,CACLjwB,KAAM,SACND,WAAY,CACVI,MAAO,CACLH,KAAM,SACNC,MAAO,MAET3C,MAAO,CACL0C,KAAM,SACNC,MAAO,KACPR,GAAI,CAAElB,OAAQ,YAEhB4M,YAAa,CACXnL,KAAM,SACNC,MAAO,OACPR,GAAI,CAAElB,OAAQ,YAEhByhB,YAAa,CACXhgB,KAAM,SACNC,MAAO,QAETymB,YAAa,CACX1mB,KAAM,SACNC,MAAO,OACPR,GAAI,CAAElB,OAAQ,YAEhBR,MAAO,CACLiC,KAAM,SACNC,MAAO,OACPR,GAAI,CAAElB,OAAQ,eAIpBkB,GAAI,CAAEwC,KAAM,CAAEkuB,UAAW,IAAMxwB,YAAa,+EAkC9C3L,WAAA,CARC8L,cAAAA,KAAK,CACJC,WAAY,CACVi/B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,MAC9B3L,EAAG,CAAE0L,KAAM,SAAUC,MAAO,MAC5BE,MAAO,CAAEH,KAAM,SAAUC,MAAO,+EAvEzBgjD,QAAAA,IAAkBjvD,WAAA,CAN9BkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCAsIoBuwC,QAAAA,OApIjB0I,QAAAA,8BCVX,SAAAiC,EAAsBlyC,EAA2CU,GAA3C9iB,KAAAoiB,OAAAA,EAA2CpiB,KAAA8iB,KAAAA,EADjE9iB,KAAAu0D,OAAS,UAETD,EAAAr0D,UAAAsN,SAAA,WAAA,IAAAgI,EAAAvV,KACEA,KAAK8iB,KAAKipC,mBAAkB,WAC1Bx2C,EAAKi/C,mBAITF,EAAAr0D,UAAAgN,YAAA,SAAYC,GAAZ,IAAAqI,EAAAvV,KACMA,KAAK0qD,QACP1qD,KAAK8iB,KAAKipC,mBAAkB,WAC1Bx2C,EAAK8yC,iBAKXiM,EAAAr0D,UAAAurB,YAAA,WACExrB,KAAKy0D,gBAGDH,EAAAr0D,UAAAu0D,aAAA,kIACJ,MAAA,CAAA,EAAMx0D,KAAKoiB,OAAOqoC,qBAAlBr9C,EAAA/F,OACArH,KAAKy0D,eACLz0D,KAAKu0D,OAASv0D,KAAK00D,eACnB10D,KAAKu0D,OAAO99C,SAAQ,SAACykC,GACnB3lC,EAAK6M,OAAOwoC,SAAS1P,MAEvBl7C,KAAK0qD,QAAS,EACd1qD,KAAKqoD,yBAGPiM,EAAAr0D,UAAAw0D,aAAA,WAAA,IAAAl/C,EAAAvV,KACMA,KAAKu0D,OAAO1xD,SACd7C,KAAKu0D,OAAO99C,SAAQ,SAACykC,GACnB3lC,EAAK6M,OAAO0oC,YAAY5P,MAE1Bl7C,KAAKu0D,OAAS,sCAvCnBI,GAAAA,6DAFQhL,QAAAA,WADoB1lC,GAAAA,UCCtB,IAAM2wC,QAAU,WACrB,OAAOC,KAAAA,KAAOltC,QAAQ,KAAM,UC2LpB,CAAEvY,KAAM,SAAUC,MAAO,MAAMylD,KAwB7B,CAAE1lD,KAAM,SAAUC,MAAO,MAAM0lD,KAa/B,CAAE3lD,KAAM,SAAUC,MAAO,MA3LxB2lD,QAAAA,IAAyB,SAAA7oC,GAmNpC,SAAA6oC,EACY5yC,EACAU,EACFkG,EACAisC,GAJV,IAAA1/C,EAME4W,EAAApqB,KAAA/B,KAAMoiB,EAAQU,IAAK9iB,YALTuV,EAAA6M,OAAAA,EACA7M,EAAAuN,KAAAA,EACFvN,EAAAyT,eAAAA,EACAzT,EAAA0/C,qBAAAA,EArNV1/C,EAAA2/C,QAAU,+BAEV3/C,EAAA0sC,UAAY,GAEZ1sC,EAAA2sC,WAAa,MAEb3sC,EAAA4/C,YAAc,EAEd5/C,EAAA6/C,aAAe,OAKf7/C,EAAA8/C,UAAoB,EAEpB9/C,EAAA+/C,uBAAiC,EAEjC//C,EAAAggD,eAAiB,GAEjBhgD,EAAAigD,eAAiB,GAEjBjgD,EAAAkgD,YAAmB,CACjB/oD,MAAO,UACPyD,KAAM,IAURoF,EAAAmgD,eAAiB,EAQjBngD,EAAAogD,UAAiB,CACf5lD,OAAQ,GACRrD,MAAO,UACPuD,OAAQ,SACRE,KAAM,GACNiB,MAAO,EACPhB,WAAY,GASdmF,EAAAqgD,sBAAuB,EAyFvBrgD,EAAA4nC,OAAS,GAYT5nC,EAAAvI,MAAe,CACb,CACEsmB,GAAI,IACJgqB,QAAS,GACTC,YAAa,OACbhuC,MAAO,GACP6+B,IAAK,QACLD,IAAK,OAeT54B,EAAAioC,WAAa,IAAI/pC,GAAAA,aAajB8B,EAAAkpB,QAAU,IAAIhrB,GAAAA,aAEd8B,EAAAg/C,OAAS,GAGTh/C,EAAAsgD,SAAW,GAMXtgD,EAAAugD,QAAU,GAKVvgD,EAAAmd,SAAW,IAAIC,KAAAA,iBAlN8B3wB,UAAAgzD,EAAA7oC,GA4N7C6oC,EAAA/0D,UAAAsN,SAAA,WAAA,IAAAgI,EAAAvV,KACEmsB,EAAAlsB,UAAMsN,SAAQxL,KAAA/B,MACVA,KAAKw+C,WAAsC,MAAzBx+C,KAAK+1D,kBACzB/1D,KAAKoiB,OAAOkoC,WAAWz3B,KAAKC,UAAAA,UAAU9yB,KAAK0yB,WAAWK,WAAU,SAACuN,GAC/D/qB,EAAKygD,kBAAkB11B,OAK7B00B,EAAA/0D,UAAAgN,YAAA,SAAYC,GAAZ,IAAAqI,EAAAvV,KACMA,KAAK0qD,SACHx9C,EAAQF,OACVhN,KAAK8iB,KAAKipC,mBAAkB,WAC1Bx2C,EAAK8yC,gBAGLn7C,EAAQ+oD,YACNj2D,KAAKi2D,YAAcj2D,KAAKk2D,mBAC1Bl2D,KAAKq7C,OAAOr7C,KAAKi2D,WAAY,CAAEE,MAAM,MAM7CnB,EAAA/0D,UAAAurB,YAAA,WACEW,EAAAlsB,UAAMurB,YAAWzpB,KAAA/B,MACjBA,KAAK0yB,SAAS5rB,OACd9G,KAAK0yB,SAASM,YAGhBgiC,EAAA/0D,UAAAy0D,aAAA,WAAA,MAAAn/C,EAAAvV,KACQu0D,EAAS,GACfv0D,KAAK61D,SAAW,GAChB,IAAMO,EAAep2D,KAAKq2D,cAY1B,GAXAr2D,KAAK61D,SAAS,IAAMO,EACpB7B,EAAOrvD,KAAKkxD,IACG,QAAfhpD,EAAIpN,KAAKm9C,cAAM,IAAA/vC,OAAA,EAAAA,EAAEvK,SACf7C,KAAKm9C,OAAO1mC,SAAQ,SAAClH,GACnB,GAAIA,EAAMA,MAAO,CACf,IAAM2rC,EAAQ3lC,EAAK8gD,YAAY9mD,GAC/BgG,EAAKsgD,SAAStmD,EAAMA,OAAS2rC,EAC7BqZ,EAAOrvD,KAAKg2C,QAIbl7C,KAAKs1D,uBAAyBt1D,KAAKw+C,UAAW,CACjD,IAAM8X,EAAW70D,OAAAc,OAAAd,OAAAc,OAAA,GACZvC,KAAKu2D,eAAev2D,KAAK21D,YAAU,CAItCa,MAAM,EACNC,UAAU,EACVrpC,OAAQ,CAACptB,KAAK02D,cAAgB,EAAG12D,KAAK22D,cAAgB,GACtDrvC,QAAS,CAAC,EAAG,GACbwJ,OAAQ,CAAC,EAAG,KAEd9wB,KAAK42D,UAAY,IAAI7I,OAAO8I,UAAUP,GACT,MAAzBt2D,KAAK+1D,kBACP/1D,KAAKoiB,OAAOqoC,MAAMzjD,MAAK,WACrB,IAAMs5B,EAAO/qB,EAAK6M,OAAOiD,IAAIyoC,UAC7Bv4C,EAAKygD,kBAAkB11B,MAG3Bi0B,EAAOrvD,KAAKlF,KAAK42D,WAEnB,OAAOrC,GAGTS,EAAA/0D,UAAAo2D,YAAA,SAAY9mD,GAAZ,MACM2rC,EADN3lC,EAAAvV,KAEQoP,EAAOG,MAAAA,OAAK,EAALA,EAAOH,KACpB,GAAa,WAATA,GAA8B,WAATA,EAAmB,CAC1C,IAAM+K,EAAU,CACd8b,MAAO7mB,EACP1C,OAAO6C,MAAAA,OAAK,EAALA,EAAO7C,QAAS,uBACvByD,MAAMZ,MAAAA,OAAK,EAALA,EAAOY,OAAQ,IAEvBnQ,KAAK82D,aAAa38C,GAClB+gC,EAAQ,IAAI6S,OAAOgJ,WAAW58C,QACzB,GAAa,WAAT/K,GAA8B,SAATA,EAAiB,CACzC+K,EAAU,CACd/K,KAAIA,EACJ1C,OAAO6C,MAAAA,OAAK,EAALA,EAAO7C,QAAS,qBACvByD,MAAMZ,MAAAA,OAAK,EAALA,EAAOY,OAAQ,GACrB6mD,SAAU,EACVC,MAAO,GAETj3D,KAAK82D,aAAa38C,GAClB+gC,EAAQ,IAAI6S,OAAOmJ,YAAY/8C,OAC1B,CACL,IAAMg9C,EAAcn3D,KAAKo3D,eAAe7nD,GACxC,GAAIvP,KAAKs1D,wBAAyB/lD,MAAAA,OAAK,EAALA,EAAO+lD,uBAAuB,CACxDn7C,EAAe,CACnBg9C,YAAWA,EACXb,YAAat2D,KAAKu2D,eAAev2D,KAAKy1D,aACtC1+B,QAAS/2B,KAAKu1D,gBAAkB,GAChCz+B,QAAS92B,KAAKw1D,gBAAkB,IAElC,GAAwB,QAAxBpoD,EAAIpN,KAAKq3D,uBAAe,IAAAjqD,OAAA,EAAAA,EAAEvK,OAAQ,CAChC,IAAMy0D,EAAgB,GACtBA,EAAS,GAAKt3D,KAAKq3D,gBAAgB,GACnCr3D,KAAKq3D,gBAAgB5tD,MAAM,GAAGgN,SAAQ,SAACjP,EAAG9E,GACxC40D,GAAU50D,EAAI,GAAK6S,EAAK8hD,gBAAgBx0D,QAAU2E,KAEpD2S,EAAQ2R,SAAWwrC,EAEM,MAAvBt3D,KAAK01D,iBACPv7C,EAAQo9C,QAAUv3D,KAAK01D,gBAEzB11D,KAAK82D,aAAa38C,GAClB+gC,EAAQ,IAAI6S,OAAOyJ,aAAar9C,QAEhCna,KAAK82D,aAAaK,GAClBjc,EAAQ,IAAI6S,OAAO0J,UAAUN,GAGjC,OAAOjc,GAGT8Z,EAAA/0D,UAAA+1D,kBAAA,SAAkB11B,GACZtgC,KAAK42D,YACHt2B,GAAQtgC,KAAK+1D,iBACf/1D,KAAK42D,UAAU7hD,OAEf/U,KAAK42D,UAAUc,SAKrB1C,EAAA/0D,UAAAooD,WAAA,WAAA,IAAA9yC,EAAAvV,KAEE,GADAA,KAAK81D,QAAU,GACX91D,KAAKq1D,UAAYr1D,KAAKgN,MAAMnK,OAAS,EAAG,CAC1C,IAAI80D,GAAU,IACVC,EAAS,IACTC,GAAU,GACVC,EAAS,GACb93D,KAAKgN,MAAMyJ,SAAQ,SAAC8iB,GAClBo+B,EAAShiD,KAAK3G,IAAI2oD,EAAQp+B,EAAI6U,KAC9BwpB,EAASjiD,KAAK/G,IAAIgpD,EAAQr+B,EAAI6U,KAC9BypB,EAASliD,KAAK3G,IAAI6oD,EAAQt+B,EAAI4U,KAC9B2pB,EAASniD,KAAK/G,IAAIkpD,EAAQv+B,EAAI4U,QAEhCnuC,KAAKoiB,OAAOgsC,qBAAqBwJ,EAAQD,EAAQG,EAAQD,GAE3D,IAAME,EAAY,GAClB/3D,KAAK+3D,UAAYA,EACjB,IAAMC,EAAW,GACX7a,EAAS17C,OAAOsmB,KAAK/nB,KAAK61D,UAChC1Y,EAAO1mC,SAAQ,SAAClH,GACdwoD,EAAUxoD,GAAS,MAGrBvP,KAAKgN,MAAMyJ,SAAQ,SAACa,GAClB,IAAIgpC,EAAYhpC,EAAO/H,MACN,MAAb+wC,GAAiD,MAA5B/qC,EAAKsgD,SAASvV,KACrCA,EAAY,IAEd,IAAIhtB,EAAKhc,EAAO2gD,UAAY3gD,EAAOgc,GACzB,MAANA,GAAoB,IAANA,IAChBA,EAAKshC,WAEP,IAAM/zC,EAAY,CAChB+vC,SAAU,CACRxhD,KAAM,QACNyhD,YAAa,CAACv5C,EAAO82B,IAAK92B,EAAO62B,MAEnCh/B,WAAY,CACVwK,KAAMrC,EAAOgmC,QACbhqB,GAAEA,EACF/jB,MAAO+wC,EACP/1C,IAAK+M,IAKH4jC,EAAQ3lC,EAAKsgD,SAASvV,GAC5B,GAAa,MAATpF,GAAiBA,aAAiB6S,OAAOyJ,aAAc,CACzD,IAAMr9C,EAAU+gC,EAAMgd,aACtB,GAAI/9C,EAAQg9C,YAAa,CACjB,IAAArpD,EAAkCqM,EAAQg9C,YAAxCl5C,EAAMnQ,EAAAmQ,OAAEhJ,EAAKnH,EAAAmH,MAAEmY,EAAMtf,EAAAsf,OAAE5d,EAAI1B,EAAA0B,KACnCqR,EAAK1R,WAAU1N,OAAAc,OAAA,CAAK0b,OAAMA,EAAEhJ,MAAKA,EAAEmY,OAAMA,EAAE5d,KAAIA,GAAKqR,EAAK1R,aAGzDmI,EAAO9H,OACTqR,EAAK1R,WAAWK,KAAO+F,EAAKyT,eAAeF,OAAOxR,EAAO9H,OAM3DuoD,EAAUzX,GAAWp7C,KAAK2b,GAC1BtL,EAAKugD,QAAQj1C,EAAK1R,WAAWmkB,IAAMzS,EAC/BtL,EAAKqhD,WACPoB,EAAS9yD,KAAK2b,MAGd7gB,KAAKi2D,YACPj2D,KAAKq7C,OAAOr7C,KAAKi2D,WAAY,CAAEE,KAAMn2D,KAAKi2D,YAAcj2D,KAAKk2D,kBAAmBiC,YAAY,EAAOC,OAAO,IAE5Gjb,EAAO1mC,SAAQ,SAAClH,GACd,IAAM2rC,EAAQ3lC,EAAKsgD,SAAStmD,GACtBmH,EAAOqhD,EAAUxoD,GACvB2rC,EAAMmd,QAAQ3hD,MAEZ1W,KAAK42D,WACP52D,KAAK42D,UAAUyB,QAAQL,IAI3BhD,EAAA/0D,UAAAm3D,eAAA,SAAe7nD,GACb,IAAIC,EAAOxP,KAAKk1D,SAAW,+BACvBj3C,EAASje,KAAKkiD,YAAc,MAC5BjtC,EAAQjV,KAAKiiD,WAAa,GAC1BsJ,EAA8B,MAApBvrD,KAAKm1D,YAAsB,EAAIn1D,KAAKm1D,YAC9C1J,EAA8B,MAApBzrD,KAAKo1D,aAAuBn3C,EAAS,EAAIje,KAAKo1D,YAc5D,OAbI7lD,GAASA,EAAMmuC,WACjBluC,EAAOxP,KAAKgpB,eAAeF,OAAOvZ,EAAMmuC,UACxCzoC,EAAQ1F,EAAM0F,OAASA,EACvBgJ,EAAS1O,EAAM0O,QAAUA,EACzBstC,EAA2B,MAAjBh8C,EAAM+oD,QAAkB/oD,EAAM+oD,QAAU,EAClD7M,EAA2B,MAAjBl8C,EAAMgpD,QAAkBhpD,EAAMgpD,SAAWt6C,EAAS,GAErC,CACvBzO,KAAIA,EACJyF,MAAKA,EACLgJ,OAAMA,EACNmP,OAAQ,CAACm+B,EAASE,KAKtBuJ,EAAA/0D,UAAAs2D,eAAA,SAAe3mD,GACb,IAAM0mD,EAAmB,GAMzB,OALI1mD,IACEA,EAAKO,OAAMmmD,EAAYpmD,SAAWN,EAAKO,MACvCP,EAAKG,SAAQumD,EAAYxmD,WAAaF,EAAKG,QAC3CH,EAAKlD,QAAO4pD,EAAY5pD,MAAQkD,EAAKlD,QAEpC4pD,GAGTtB,EAAA/0D,UAAA62D,aAAA,SAAa38C,GAAb,IAAA5E,EAAAvV,KAkCE,GAjCAma,EAAQq+C,cAAe,EACvBr+C,EAAQskB,QAAU,SAAC3wB,OAAE2qD,EAAQ3qD,EAAA2qD,SAgB3B,GAdIA,IACFljD,EAAKmjD,UAAYD,IAEe,IAA9BljD,EAAKqgD,sBAAuD,MAArBrgD,EAAKojD,eAC9CpjD,EAAKojD,aAAepwC,YAAW,WACP,MAAlBhT,EAAKmjD,YACPnjD,EAAK0gD,WAAa,KAClB1gD,EAAK8lC,OAAO,OAEd9lC,EAAKojD,aAAe,KACpBpjD,EAAKmjD,UAAY,KACjBnjD,EAAKqjD,WAAa,SAGlBH,EACF,GAAsB,YAAlBA,EAASrpD,KAAoB,CAC/B,IAAMyhD,EAAc4H,EAAS7H,SAASC,YACtCt7C,EAAK6M,OAAO8rC,iBAAiB2C,EAAY,GAAIA,EAAY,GAAIt7C,EAAK6M,OAAOiD,IAAIyoC,UAAY,OACpF,CACL,IAAM+K,EAAOJ,EAAStpD,WAAW5E,IAC7BsuD,IACFtjD,EAAK0gD,WAAawC,EAAStpD,WAAWmkB,GACtC/d,EAAK8lC,OAAOod,EAAStpD,WAAWmkB,IAChC/d,EAAKuN,KAAKe,KAAI,WACZtO,EAAKkpB,QAAQvlB,KAAIzX,OAAAc,OAAAd,OAAAc,OAAA,GAAMs2D,GAAI,CAAEvlC,GAAIulC,EAAKZ,UAAYY,EAAKvlC,YAMpC,cAAzBtzB,KAAKoiB,OAAO0nC,SAA0B,CACxC,IAAIoF,EAAa,KACb4J,EAAiB,KACrB3+C,EAAQ4+C,YAAc,SAACjrD,OAAE2qD,EAAQ3qD,EAAA2qD,SACzB/hD,EAAmB,MAAZ+hD,EAAmBA,EAAStpD,WAAW5E,IAAM,KACxC,MAAd2kD,GAAsB4J,GAAkBpiD,IAC1Cw4C,EAAWK,QACXL,EAAa,MAEXx4C,GAAQA,EAAK6mC,aAA6B,MAAd2R,IAC9B4J,EAAiBpiD,EACjBw4C,EAAa35C,EAAK6M,OAAOwsC,eAAel4C,EAAMA,EAAK03B,IAAK13B,EAAKy3B,SAMrE6mB,EAAA/0D,UAAAo7C,OAAA,SAAO/nB,EAASnZ,GAAhB,IAAA5E,EAAAvV,KACE,QADc,IAAAma,IAAAA,EAAA,IACVmZ,GAAMtzB,KAAKk2D,mBAAqB/7C,EAAQi+C,MAAO,CACjD,IAAIv3C,OAAS,EACb,GAAU,MAANyS,GAAqB,KAAPA,GAGJ,OAFZzS,EAAO7gB,KAAK81D,QAAQxiC,IAGlB,OAGJtzB,KAAKk2D,kBAAoB5iC,EACzB,IAEI0lC,EAFAC,OAAuB,EACvBC,OAA0B,EAO9B,GALIl5D,KAAKm5D,aACPF,EAAkBj5D,KAAKm5D,WAAWhqD,WAAWI,MAC7CvP,KAAKo5D,WAAWp5D,KAAKm5D,WAAY,GACjCn5D,KAAKm5D,WAAa,MAEhBt4C,EAAM,CAKR,GAJAq4C,EAAqBr4C,EAAK1R,WAAWI,MACrCvP,KAAKo5D,WAAWv4C,EAAM,KACtB7gB,KAAKm5D,WAAat4C,EAClBm4C,EAAen4C,EAAK1R,WAAW5E,IAC3B4P,EAAQg8C,KAAM,CAChB,IAAMjb,EAAQl7C,KAAK61D,SAASqD,GACxB54B,EAAOtgC,KAAKoiB,OAAOiD,IAAIyoC,UACvB5S,aAAiB6S,OAAOyJ,cAAuC,MAAvBx3D,KAAK01D,gBAA0Bp1B,GAAQtgC,KAAK01D,iBACtFp1B,EAAOtgC,KAAK01D,eAAiB,GAE/B11D,KAAKoiB,OAAO8rC,iBAAiB8K,EAAa5qB,IAAK4qB,EAAa7qB,IAAK7N,GAG/D04B,EAAazb,aAAwC,cAAzBv9C,KAAKoiB,OAAO0nC,UAE1CvhC,YAAW,WACThT,EAAK6M,OAAOwsC,eAAeoK,EAAcA,EAAa5qB,IAAK4qB,EAAa7qB,aAI5E6qB,EAAe,IAEU,IAAvB7+C,EAAQg+C,aACgB,MAAtBe,GACFl5D,KAAKq5D,eAAeH,GAEC,MAAnBD,GAA2BA,IAAoBC,GACjDl5D,KAAKq5D,eAAeJ,IAId,MAAN3lC,GAAsB,MAARzS,GAChB7gB,KAAK8iB,KAAKe,KAAI,WACZtO,EAAKioC,WAAWtkC,KAAIzX,OAAAc,OAAAd,OAAAc,OAAA,GAAMy2D,GAAY,CAAE1lC,GAAI0lC,EAAaf,UAAYe,EAAa1lC,WAM1F0hC,EAAA/0D,UAAAo5D,eAAA,SAAe9pD,GACb,IAAM2rC,EAAQl7C,KAAK61D,SAAStmD,GACtBmH,EAAO1W,KAAK+3D,UAAUxoD,GACxB2rC,GAASxkC,GACXwkC,EAAMmd,QAAQ3hD,IAIlBs+C,EAAA/0D,UAAAm5D,WAAA,SAAWv4C,EAAWmqC,GACpB,GAAInqC,GAAQ7gB,KAAKs5D,gBAAiB,CAChC,IAAMpe,EAAQl7C,KAAK61D,SAASh1C,EAAK1R,WAAWI,OACxC4K,OAAY,EAOR8D,GAJN9D,EADE+gC,aAAiB6S,OAAOyJ,aAChBtc,EAAMgd,aAAaf,YAEnBjc,EAAMgd,cAEuBj6C,OAAzBhJ,EAAkBkF,EAAOlF,MAAlBmY,EAAWjT,EAAOiT,OACzCvM,EAAK1R,WAAW8O,OAASA,EAAS+sC,EAClCnqC,EAAK1R,WAAW8F,MAAQA,EAAQ+1C,EAC5BnqC,EAAK1R,WAAWie,SAClBvM,EAAK1R,WAAWie,OAAS,CAACA,EAAO,GAAK49B,EAAO59B,EAAO,GAAK49B,QAllB3B,CAASsJ,yCAZ9CrmD,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,wBACVC,SAAA,mkCAEA0N,UAAW,CAAC09C,UAAAA,2OAfL5P,QAAAA,WAXP1lC,GAAAA,cAaO4E,sBACA2wC,SAAAA,gEA8NNjwC,GAAAA,UAAS1oB,KAAA,CAAC,WAxMXuC,WAAA,CADCuL,cAAAA,SAAS,GAAI,CAAEC,IAAK,EAAGC,GAAI,CAAElB,OAAQ,YAAamB,UAAW,EAAGC,YAAa,gFAG9E3L,WAAA,CADCuL,cAAAA,SAAS,MAAO,CAAES,KAAM,uFAGzBhM,WAAA,CADCuL,cAAAA,SAAS,MAAO,CAAES,KAAM,wFAGzBhM,WAAA,CADCuL,cAAAA,SAAS,QAAS,CAAES,KAAM,yFAG3BhM,WAAA,CADCuL,cAAAA,SAAS,QAAS,CAAES,KAAM,yFAM3BhM,WAAA,CADCuL,cAAAA,SAAS,oFAGVvL,WAAA,CADCuL,cAAAA,SAAS,gGAGVvL,WAAA,CADCuL,cAAAA,SAAS,SAAU,CAAES,KAAM,SAAUP,GAAI,CAAE4K,UAAW,CAAE67C,sBAAuB,EAAC,wFAGjFlyD,WAAA,CADCuL,cAAAA,SAAS,SAAU,CAAES,KAAM,SAAUP,GAAI,CAAE4K,UAAW,CAAE67C,sBAAuB,EAAC,wFAGjFlyD,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAElB,OAAQ,0FAWlCvK,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CACFlB,OAAQ,cACR8L,UAAW,CAAE67C,sBAAuB,EAAC,wFAKzClyD,WAAA,CADCuL,cAAAA,SAAS,SAAU,CAAES,KAAM,SAAUP,GAAI,CAAE4K,UAAW,CAAE67C,sBAAuB,EAAC,wFAGjFlyD,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAE4K,UAAW,CAAE67C,sBAAuB,EAAC,oFAG/DlyD,WAAA,CADCuL,cAAAA,SAAS,WAAY,CAAEE,GAAI,CAAE4K,UAAW,CAAE+kC,UAAW,EAAC,0FAKvDp7C,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAElB,OAAQ,SAAU8L,UAAW,CAAE+kC,UAAW,EAAC,mFAUrEp7C,WAAA,CADCuL,cAAAA,SAAS,QAAS,CAAEE,GAAI,CAAElB,OAAQ,SAAU8L,UAAW,CAAE+kC,UAAW,EAAC,sFAGtEp7C,WAAA,CADCuL,cAAAA,SAAS,QAAS,CAAEE,GAAI,CAAElB,OAAQ,SAAU8L,UAAW,CAAE+kC,UAAW,EAAC,sFAGtEp7C,WAAA,CADCuL,cAAAA,SAAS,2FAGVvL,WAAA,CADCuL,cAAAA,SAAS,WAAY,CAAES,KAAM,UAAWxE,SAAS,2FA0FlDxH,WAAA,CAxFCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,QACNC,MAAO,OACP+vB,SAAU,GACVC,MAAO,CACLjwB,KAAM,SACND,WAAY,CACVI,MAAO,CACLH,KAAM,SACNC,MAAO,MAETD,KAAM,CACJC,MAAO,KACPD,KAAM,SACNH,KAAM,CACJ,CACE7H,MAAO,KACP1B,MAAO,QAET,CACE0B,MAAO,KACP1B,MAAO,UAET,CACE0B,MAAO,MACP1B,MAAO,UAET,CACE0B,MAAO,KACP1B,MAAO,QAET,CACE0B,MAAO,KACP1B,MAAO,WAGXkF,QAAS,QAEX8B,MAAO,CACL0C,KAAM,SACNC,MAAO,KACPR,GAAI,CAAElB,OAAQ,UAAW8L,UAAW,CAAErK,KAAM,CAAC,SAAU,aAEzDe,KAAM,CACJf,KAAM,SACNC,MAAO,KACPR,GAAI,CAAE4K,UAAW,CAAErK,KAAM,CAAC,SAAU,SAAU,OAAQ,aAExDsuC,SAAU,CACRtuC,KAAM,SACNC,MAAO,KACPR,GAAI,CACFlB,OAAQ,YACR8L,UAAW,CAAErK,KAAM,CAAC,WAGxB6F,MAAO,CACL7F,KAAM,SACNC,MAAO,KACPzE,QAAS,GACTiE,GAAI,CAAE4K,UAAW,CAAErK,KAAM,CAAC,WAE5B6O,OAAQ,CACN7O,KAAM,SACNC,MAAO,KACPzE,QAAS,GACTiE,GAAI,CAAE4K,UAAW,CAAErK,KAAM,CAAC,WAE5BkpD,QAAS,CACPlpD,KAAM,SACNC,MAAO,OACPR,GAAI,CAAE4K,UAAW,CAAErK,KAAM,CAAC,WAE5BmpD,QAAS,CACPnpD,KAAM,SACNC,MAAO,OACPR,GAAI,CAAE4K,UAAW,CAAErK,KAAM,CAAC,WAE5BkmD,sBAAuB,CACrBlmD,KAAM,UACNC,MAAO,OACPR,GAAI,CAAE4K,UAAW,CAAErK,KAAM,CAAC,YAG9BkwB,SAAU,IAEZzwB,GAAI,CAAEwC,KAAM,CAAEkuB,UAAW,IAAMxwB,YAAa,+EAc9C3L,WAAA,CAXC8L,cAAAA,KAAK,CACJC,WAAY,CACVmkB,GAAEmmC,KACFnc,QAAS,CAAEluC,KAAM,SAAUC,MAAO,MAClCkuC,YAAa,CAAEnuC,KAAM,SAAUC,MAAO,MACtCE,MAAO,CAAEH,KAAM,SAAUC,MAAO,QAChC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,MAC9BG,KAAM,CAAEJ,KAAM,SAAUC,MAAO,gFAyBnCjM,WAAA,CAXC2W,cAAAA,WAAW,CAAC,KAAM,UAAW,MAAO,QACpCwH,cAAAA,MAAM,QAAS,CACdC,OAAQ,CACNrS,WAAY,CACVmkB,GAAEwhC,KACFxX,QAAS,CAAEluC,KAAM,SAAUC,MAAO,MAClC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,uFAMpCjM,WAAA,CADCke,cAAAA,UAAU,qFAYXle,WAAA,CAVCme,cAAAA,MAAM,KAAM,CACXC,OAAQ,CACNrS,WAAY,CACVmkB,GAAEyhC,KACFzX,QAAS,CAAEluC,KAAM,SAAUC,MAAO,MAClC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,oFA9LzB2lD,QAAAA,IAAyB5xD,WAAA,CANrCkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCAsNYuwC,QAAAA,IACF1lC,GAAAA,OACQ4E,eACM2wC,SAAAA,wBAvNrBxE,QAAAA,KCpBA0E,QAAAA,IAA2B,SAAAvtC,GAkGtC,SAAAutC,EAAsBt3C,EAA2CU,GAAjE,IAAAvN,EACE4W,EAAApqB,KAAA/B,KAAMoiB,EAAQU,IAAK9iB,YADCuV,EAAA6M,OAAAA,EAA2C7M,EAAAuN,KAAAA,EA9FjEvN,EAAAokD,aAAe,EAOfpkD,EAAAqkD,YAAc,sBAQdrkD,EAAA8+C,YAAc,QAEd9+C,EAAAskD,aAAe,GAOftkD,EAAAH,SAAW,GAEXG,EAAAyhD,SAAW,EAEXzhD,EAAAinC,YAAc,GAqBdjnC,EAAAukD,aAAe,GASfvkD,EAAAvI,MAAe,CACb,CACEuC,MAAO,IACP6+B,IAAK,QACLD,IAAK,MAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,SAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,QAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,SAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,SAEP,CACE5+B,MAAO,IACP6+B,IAAK,SACLD,IAAK,UAKT54B,EAAAsgD,SAAgB,YAhG+B7zD,UAAA03D,EAAAvtC,GAuH/CutC,EAAAz5D,UAAAooD,WAAA,WAAA,IAAA9yC,EAAAvV,KACQ81D,EAAU,GAEViE,EAAe,GACrB/5D,KAAKgN,MAAMyJ,SAAQ,SAACa,GAClB,IAAI4jC,EAAQ5jC,EAAO4jC,MACd3lC,EAAKsgD,SAAS3a,KACjBA,EAAQ,IAEV,IAAIxkC,EAAOo/C,EAAQ5a,GACfmG,EAAU0Y,EAAa7e,GACtBxkC,IACHA,EAAO,GACP2qC,EAAU,GACVyU,EAAQ5a,GAASxkC,EACjBqjD,EAAa7e,GAASmG,GAExB,IAAI9xC,EAAQ+H,EAAO/H,MACN,MAATA,IACFA,EAAQ,IAEV,IAAI+xC,EAAOD,EAAQ9xC,GACP,MAAR+xC,IACFA,EAAO,CACLsP,SAAU,CACRxhD,KAAM,aACNyhD,YAAa,KAGjBxP,EAAQ9xC,GAAS+xC,EACjB5qC,EAAKxR,KAAKo8C,IAGZA,EAAKsP,SAASC,YAAY3rD,KAAK,CAACoS,EAAO82B,IAAK92B,EAAO62B,SAErD1sC,OAAOsmB,KAAK/nB,KAAK61D,UAAUp/C,SAAQ,SAAClT,GAClC,IAAM23C,EAAQ3lC,EAAKsgD,SAAStyD,GACtBmT,EAAOo/C,EAAQvyD,IAAQ,GAC7B23C,EAAMmd,QAAQ3hD,OAIlBgjD,EAAAz5D,UAAAy0D,aAAA,WAAA,MAAAn/C,EAAAvV,KACQu0D,EAAS,GACfv0D,KAAK61D,SAAW,GAChB,IAAMO,EAAep2D,KAAKq2D,cAY1B,OAXAr2D,KAAK61D,SAAS,IAAMO,EACpB7B,EAAOrvD,KAAKkxD,IACS,QAArBhpD,EAAIpN,KAAK85D,oBAAY,IAAA1sD,OAAA,EAAAA,EAAEvK,SACrB7C,KAAK85D,aAAarjD,SAAQ,SAAC0D,GACzB,GAAIA,EAAQ+gC,MAAO,CACjB,IAAMA,EAAQ3lC,EAAK8gD,YAAYl8C,GAC/B5E,EAAKsgD,SAAS17C,EAAQ+gC,OAASA,EAC/BqZ,EAAOrvD,KAAKg2C,OAIXqZ,GAwBTmF,EAAAz5D,UAAAo2D,YAAA,SAAYyD,GACV,IAAM3/C,EAAe,CACnBzN,MAAO1M,KAAK45D,YACZ3kD,MAAOjV,KAAK25D,aACZK,QAAS,QACT38B,UAAWr9B,KAAKq9B,UAChBjoB,SAAUpV,KAAKoV,SACf4hD,SAAUh3D,KAAKg3D,SACfxa,YAAax8C,KAAKw8C,YAMlByd,MAAO,WAOT,GALIH,GACEA,EAAaptD,QACfyN,EAAQzN,MAAQotD,EAAaptD,OAGR,WAArB1M,KAAKq0D,YAA0B,CACjC,IAAMwF,EAAe75D,KAAK65D,cAAgB,GAC1C1/C,EAAQ+/C,UAAY,CAACL,EAAcA,GAGrC,OADc,IAAI9L,OAAOoM,UAAUhgD,MAjOC,CAASm6C,yCAXhDrmD,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,0BACVC,SAAA,sEANOw7C,QAAAA,WAJ+B1lC,GAAAA,UAuBtC7gB,WAAA,CAHCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UAAWiB,IAAK,EAAGI,IAAK,GAAInI,KAAM,oFASlDzD,WAAA,CANCuL,cAAAA,SAAS,OAAQ,CAChBS,KAAM,SACNP,GAAI,CACFlB,OAAQ,2FAWZvK,WAAA,CAPCuL,cAAAA,SAAS,OAAQ,CAChBE,GAAI,CAAElB,OAAQ,UACdsB,KAAM,CACJ,CAAE7H,MAAO,KAAM1B,MAAO,SACtB,CAAE0B,MAAO,KAAM1B,MAAO,2FAK1BtC,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,SAAUP,GAAI,CAAE4K,UAAW,CAAE46C,YAAa,CAAC,4FAGrEjxD,WAAA,CADCuL,cAAAA,SAAS,mFAMVvL,WAAA,CAJCuL,cAAAA,SAAS,SAAU,CAClBS,KAAM,SACNP,GAAI,CAAElB,OAAQ,SAAU8L,UAAW,CAAE4jB,UAAW,EAAC,kFAInDj6B,WAAA,CADCuL,cAAAA,SAAS,SAAU,CAAES,KAAM,SAAUP,GAAI,CAAElB,OAAQ,SAAU8L,UAAW,CAAE4jB,UAAW,EAAC,kFAGvFj6B,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,SAAUP,GAAI,CAAElB,OAAQ,SAAU8L,UAAW,CAAE4jB,UAAW,EAAC,qFAsBrFj6B,WAAA,CApBCuL,cAAAA,SAAS,KAAM,CACdS,KAAM,QACNgwB,SAAU,GACVC,MAAO,CACLjwB,KAAM,SACND,WAAY,CACV+rC,MAAO,CACL9rC,KAAM,SACNC,MAAO,MAET3C,MAAO,CACL0C,KAAM,SACNC,MAAO,KACPR,GAAI,CAAElB,OAAQ,aAGlB2xB,SAAU,IAEZzwB,GAAI,CAAEwC,KAAM,CAAEkuB,UAAW,IAAMxwB,YAAa,qFAW9C3L,WAAA,CARC8L,cAAAA,KAAK,CACJC,WAAY,CACV+rC,MAAO,CAAE9rC,KAAM,SAAUC,MAAO,MAChC++B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,MAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,MAC9BE,MAAO,CAAEH,KAAM,SAAUC,MAAO,iFA3DzBqqD,QAAAA,IAA2Bt2D,WAAA,CANvCkM,cAAAA,OAAO,MAAO,CACbC,MAAO,YACPpC,MAAO,GACPqC,KAAM,GACN4J,QAAQ,oCAoGsBuwC,QAAAA,IAAyC1lC,GAAAA,UAlG5Dy1C,QAAAA,KCbb,IAAMU,aAAe,SAWRC,QAAAA,IAAyB,SAAAluC,GA4BpC,SAAAkuC,EAAsBj4C,EAA2CU,GAAjE,IAAAvN,EACE4W,EAAApqB,KAAA/B,KAAMoiB,EAAQU,IAAK9iB,YADCuV,EAAA6M,OAAAA,EAA2C7M,EAAAuN,KAAAA,EA1BjEvN,EAAA5E,UAAY,uBAEZ4E,EAAA47C,UAAY,EAEZ57C,EAAA67C,UAAY,uBAWZ77C,EAAAmB,KAAc,CACZ,CACE03B,IAAK,MACLD,IAAK,KACLmsB,GAAI,GACJC,GAAI,IACJC,GAAI,IACJC,GAAI,eAxBqCz4D,UAAAq4D,EAAAluC,GAgC7CkuC,EAAAp6D,UAAAy0D,aAAA,WAOE,OANA10D,KAAKk7C,MAAQ,IAAI6S,OAAOmD,aAAa,CACnCvgD,UAAW3Q,KAAK2Q,UAChBwgD,UAAWnxD,KAAKmxD,UAChBC,UAAWpxD,KAAKoxD,UAChBC,aAAc,IAET,CAACrxD,KAAKk7C,QAGfmf,EAAAp6D,UAAAooD,WAAA,WAAA,IAAA9yC,EAAAvV,KACQ0W,EAAO,GACb1W,KAAK0W,KAAKD,SAAQ,SAAC/S,GACjB,IAAIg3D,EAAKnlD,EAAKolD,MAAM,EAAEj3D,EAAE0qC,KAAM1qC,EAAEyqC,MAAOzqC,EAAE62D,IAAK72D,EAAE+2D,IAAK/2D,EAAE82D,IAAK92D,EAAE42D,IAC9D5jD,EAAKxR,KAAK,CACR0rD,SAAU,CACRxhD,KAAM,UACNyhD,YAAa,CAAC6J,SAIpB16D,KAAKk7C,MAAMmd,QAAQ3hD,IAGrB2jD,EAAAp6D,UAAA06D,MAAA,SAAMxsB,EAAKosB,EAAIE,EAAID,EAAIF,GAErB,IAAMM,EAAY,SAAC9qC,EAAQ+qC,EAAStjC,GAOlC,IALA,IAAM/c,EAAoB,IAAVqgD,EAAiBT,aAAezkD,KAAKgf,GAGjD6C,EAAWD,EAAa5hB,KAAKgf,GAAK,EAClCjB,EAAS,GACJhxB,EAAI,EAAGA,GAHD,GAGgBA,IAAK,CAClC,IAAMo4D,EAAQvjC,GAAeC,EAAWD,GAAc70B,EAJzC,GAKPmD,EAAIiqB,EAAO,GAAMtV,EAAS7E,KAAKif,IAAIkmC,GAAUnlD,KAAK4Z,IAAI5Z,KAAKif,IAAK9E,EAAO,GAAKna,KAAKgf,GAAM,MACvFxtB,EAAI2oB,EAAO,GAAKtV,EAAS7E,KAAKkf,IAAIimC,GACxCpnC,EAAOxuB,KAAK,CAACW,EAAGsB,IAElB,OAAOusB,GAQT,OAAA5qB,SALW8xD,EAAUzsB,EAAKosB,EAAI,GACnBK,EAAUzsB,EAAKmsB,EAAI3kD,KAAKgf,GAAK,GAC7BimC,EAAUzsB,EAAKqsB,EAAI7kD,KAAKgf,IACxBimC,EAAUzsB,EAAKssB,EAAe,EAAV9kD,KAAKgf,GAAU,OA7EZ,CAAS2/B,yCAT9CrmD,GAAAA,UAASpN,KAAA,CAAC,CACTqN,SAAU,wBACVC,SAAA,sEAPOw7C,QAAAA,WAHW1lC,GAAAA,UAmBlB7gB,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAElB,OAAQ,yFAGlCvK,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAES,KAAM,uFAG1BhM,WAAA,CADCuL,cAAAA,SAAS,OAAQ,CAAEE,GAAI,CAAElB,OAAQ,yFAYlCvK,WAAA,CAVC8L,cAAAA,KAAK,CACJC,WAAY,CACVi/B,IAAK,CAAEh/B,KAAM,SAAUC,MAAO,QAC9B8+B,IAAK,CAAE/+B,KAAM,SAAUC,MAAO,QAC9BirD,GAAI,CAAElrD,KAAM,SAAUC,MAAO,QAC7BkrD,GAAI,CAAEnrD,KAAM,SAAUC,MAAO,QAC7BmrD,GAAI,CAAEprD,KAAM,SAAUC,MAAO,QAC7BorD,GAAI,CAAErrD,KAAM,SAAUC,MAAO,iFAdtBgrD,QAAAA,IAAyBj3D,WAAA,CAJrCkM,cAAAA,OAAO,KAAM,CACZC,MAAO,YACP6J,QAAQ,oCA8BsBuwC,QAAAA,IAAyC1lC,GAAAA,UA5B5Do2C,QAAAA,8BCgBX,SAAY5qD,GACVA,EAAcC,SAASi6C,QAAAA,IAAyB,CAAEwB,cAAc,IAChE17C,EAAcC,SAASslD,QAAAA,KACvBvlD,EAAcC,SAASgqD,QAAAA,KACvBjqD,EAAcC,SAAS2iD,QAAAA,KACvB5iD,EAAcC,SAAS2qD,QAAAA,6CAxB1BhqD,GAAAA,SAAQxP,KAAA,CAAC,CACRyP,aAAc,CACZq5C,QAAAA,IACAqL,QAAAA,IACA0E,QAAAA,IACArH,QAAAA,IACAgI,QAAAA,KAEF9pD,QAAS,CACPC,OAAAA,aACAC,cAAAA,iBACAsqD,SAAAA,iBACAC,YAAAA,oBACAC,UAAAA,gBACAr2C,MAAAA,cACAzF,MAAAA,6EA1BuBzO,cAAAA,iBCHpB,IAAMwqD,MAAQ,CACnB,eACA,iBACA,gBACA,sBACA,gBACA,eACA,cACA,eACA,gBACA,YACA,cACA,iBACA,cACA,gBACA,YACA,cACA,aACA,eACA,qBACA,eACA,yBACA,UACA,aACA,aACA,cACA,aACA,eACA,6BACA,eACA,oBACA,oBACA,eACA,cACA,oBACA,YACA,gBACA,aACA,uBACA,YACA,eACA,aACA,YACA,mBACA,gBACA,uBACA,gBACA,kBACA,gBACA,gBACA,cACA,oBACA,eACA,cACA,WACA,eACA,cACA,yBACA,eACA,cACA,sBACA,YACA,iBACA,aACA,uBACA,eACA,aACA,kBACA,cACA,eACA,eACA,eACA,YACA,uBACA,mBACA,gBACA,yBACA,kBACA,qBACA,oBACA,WACA,eACA,cACA,cACA,YACA,aACA,cACA,aACA,WACA,aACA,cACA,iBACA,sBACA,mBACA,aACA,aACA,oBACA,wBACA,oBACA,aACA,eACA,qBACA,eACA,aACA,eACA,eACA,cACA,oBACA,YACA,kBACA,qBACA,aACA,aACA,aACA,aACA,aACA,cACA,mBACA,cACA,wBACA,mBACA,cACA,uBACA,eACA,aACA,gBACA,eACA,oBACA,mBACA,qBACA,sBACA,YACA,aACA,iBACA,cACA,iBACA,gBACA,mBACA,oBACA,iBACA,cACA,iBACA,eACA,eACA,eACA,eACA,aACA,gBACA,YACA,eACA,aACA,cACA,aACA,gBACA,aACA,cACA,wBACA,eACA,cACA,cACA,aACA,aACA,cACA,WACA,eACA,YACA,aACA,cACA,aACA,UACA,gBACA,gBACA,UACA,iBACA,eACA,cACA,aACA,UACA,cACA,aACA,aACA,aACA,YACA,iBACA,uBACA,YACA,aACA,cACA,aACA,kBACA,YACA,iBACA,YACA,cACA,YACA,UACA,kBCpLWC,QAAAA,IAAe,WAqB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","sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { LazyService } from '@delon/util';\r\n\r\n// (window as any)._AMapSecurityConfig = {\r\n// securityJsCode: '1f288f3bf91dc24647c540ef2988ba30',\r\n// };\r\ndeclare const AMap;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GaodeMapService {\r\n private loadAmapPromise: Promise<any>;\r\n\r\n constructor(public lazy: LazyService, private http: HttpClient) {}\r\n\r\n loadMap(): Promise<any> {\r\n if (typeof AMap !== 'undefined') {\r\n return Promise.resolve();\r\n }\r\n if (!this.loadAmapPromise) {\r\n this.loadAmapPromise = this.lazy.loadScript(\r\n 'https://webapi.amap.com/maps?v=1.4.15&key=803815fd5b53fbb5bfb6656b049f1d37&plugin=AMap.ControlBar',\r\n );\r\n }\r\n return this.loadAmapPromise;\r\n }\r\n\r\n getWeather(city): Promise<any> {\r\n // 高德地图\r\n return this.http\r\n .jsonp(\r\n `https://restapi.amap.com/v3/weather/weatherInfo?key=d633c7a49d34575ad5fb4235856f3a7b&city=${city}`,\r\n 'callback',\r\n )\r\n .toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaiduMapService } from 'bbj-screen-widget/core';\r\nimport { GaodeMapService } from './gaode-map.service';\r\n\r\n/**\r\n * @deprecated\r\n * 用BaiduMapService和GaodeMapService替代\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class CommonService {\r\n constructor(private baiduMapService: BaiduMapService, public gaodeMapService: GaodeMapService) {}\r\n\r\n /**\r\n * @deprecated\r\n * 用BaiduMapService.loadMap替代\r\n */\r\n getMap(): Promise<any> {\r\n return this.baiduMapService.loadMap();\r\n }\r\n\r\n /**\r\n * @deprecated\r\n * 用GaodeMapService.loadMap替代\r\n */\r\n loadMap(): Promise<any> {\r\n return this.gaodeMapService.loadMap();\r\n }\r\n}\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { Data, Property, Widget, WidgetRef } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-picture',\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@Widget('图片', { group: 'picture', icon: 'icontupian' })\nexport class ImageComponent implements OnInit, OnChanges {\n @Property('', { min: 1, ui: { widget: 'myUpload', spanLabel: 0, spanControl: 24 } })\n image: string;\n\n @Property('透明度', { ui: { widget: 'myRange', min: 0, max: 1, step: 0.1 } })\n opacity = 1;\n @Property('阴影', { ui: { widget: 'myShadow' } })\n shadow: any = { color: '', X: 0, Y: 0, Z: 0 };\n style: any = {};\n hideHead: boolean;\n @Property('布局', {\n enum: [\n { label: '自适应', value: 'auto' },\n { label: '拉伸', value: 'stretch' },\n { label: '重复', value: 'repeat' },\n ],\n })\n layout = 'auto';\n @Data({\n properties: {\n image: { type: 'string', title: '路径' },\n },\n })\n _data: any[] = [];\n backgroundImage: string;\n constructor(\n private cd: ChangeDetectorRef,\n private renderer: Renderer2,\n private elementRef: ElementRef,\n private widgetRef: WidgetRef,\n ) {}\n ngOnChanges(changes: SimpleChanges): void {\n let image: string;\n if (this._data && this._data[0]?.image) {\n image = this._data[0].image;\n } else {\n image = this.image;\n }\n this.setStyle('backgroundImage', image ? `url(${image})` : null);\n this.cd.markForCheck();\n }\n\n ngOnInit() {\n this.renderer.addClass(this.element, this.layout || 'auto');\n this.setStyle('opacity', this.opacity === 1 ? null : this.opacity);\n const { color, X, Y, Z } = this.shadow;\n this.setStyle('boxShadow', color ? `${color} ${X}px ${Y}px ${Z}px` : null);\n const widget: any = this.widgetRef.widget as any;\n if (widget.link?.enabled || widget.outputs?.enabled) {\n this.setStyle('cursor', 'pointer');\n }\n }\n\n get element(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n setStyle(style: string, value: any) {\n this.renderer.setStyle(this.element, style, value);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ImageComponent } from './image.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [ImageComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class ImageModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(ImageComponent);\n }\n}\n","export function getEchartsTextStyle(font: any) {\r\n const textStyle: any = {};\r\n if (font) {\r\n textStyle.color = font.color;\r\n textStyle.fontFamily = font.family;\r\n textStyle.fontWeight = font.weight;\r\n textStyle.fontSize = font.size;\r\n textStyle.lineHeight = font.lineHeight;\r\n }\r\n return textStyle;\r\n}\r\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Data, Property, Widget, Drill, DataOutput } from 'bbj-widget-base';\nimport { getEchartsTextStyle } from '../shared/util/echarts.util';\n\n@Component({\n selector: 'sc-basicLine',\n templateUrl: './basic-line-chart.component.html',\n styleUrls: ['./basic-line-chart.component.less'],\n})\n@Widget('基本折线图', {\n group: 'lineChart',\n image: 'assets/img/screen/basic-line-chart.png',\n icon: 'icontubiao',\n})\nexport class BasicLineChartComponent implements OnInit, OnChanges {\n @Property('类型', { ui: { hidden: true } })\n type = 'basic';\n @Property('图表样式', {\n ui: {\n widget: 'myImageExample',\n spanLabel: 24,\n spanControl: 24,\n reset: ['lineColor'],\n example: [\n {\n background: 'assets/img/screen/line2.png',\n data: { lineColor: ['#FF851D', '#FFEF66'] },\n },\n {\n background: 'assets/img/screen/line3.png',\n data: { lineColor: ['#00D191', '#00FECB'] },\n },\n {\n background: 'assets/img/screen/line1.png',\n data: { lineColor: ['#3285FF', '#00D2FD'] },\n },\n {\n background: 'assets/img/screen/line4.png',\n data: { lineColor: ['#8934F8', '#FF3699'] },\n },\n ],\n },\n })\n example: any;\n @Property('系列颜色', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n lineColor = ['#3285FF', '#00D2FD'];\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#595F7A',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n @Property('边距', { ui: { widget: 'myGrid' } })\n grid: any = {\n top: 30,\n right: 30,\n bottom: 40,\n left: 36,\n };\n @Property('图例', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'none' },\n { label: '自动', value: 'auto' },\n { label: '居中', value: 'center' },\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n ],\n })\n align = 'center';\n @Property('提示线样式', {\n ui: { widget: 'select' },\n enum: [\n { label: '直线指示器', value: 'line' },\n { label: '阴影指示器', value: 'shadow' },\n { label: '十字准星指示器', value: 'cross' },\n { label: '无', value: 'none' },\n ],\n })\n axisType = 'none';\n @Property('提示线类型', {\n ui: { widget: 'select' },\n enum: [\n { label: '实线', value: 'solid' },\n { label: '虚线', value: 'dashed' },\n { label: '点线', value: 'dotted' },\n ],\n })\n lineType = 'dashed';\n // @Property('轴单位', {ui: {widget: 'myUnit'}})\n // unit = {x: '', y: ''};\n @Property('提示线颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n axisColor = '#333333';\n @Property('提示线宽度', { type: 'number' })\n axisWidth = 10;\n @Property('x轴类型', {\n enum: [\n { label: '类目', value: 'category' },\n { label: '时间', value: 'time' },\n ],\n })\n xType = 'category';\n @Property('y轴单位', { type: 'string' })\n yUnit = '';\n @Property('x轴单位', { type: 'string' })\n xUnit = '';\n @Property('y轴最小')\n yMin: number;\n @Property('y轴最大')\n yMax: number;\n @Property('y轴最小间隔')\n yMinInterval: number;\n @Property('y轴最大增减')\n yMaxAddNum: number;\n @Property('坐标留白', { type: 'boolean' })\n boundaryGap = true;\n @Property('显示Y轴', { type: 'boolean' })\n showY = true;\n @Property('y轴网络线', { type: 'boolean' })\n netLine = false;\n\n @Property('y网络线类型', {\n ui: { widget: 'select', visibleIf: { netLine: [true] } },\n enum: [\n { label: '实线', value: 'solid' },\n { label: '虚线', value: 'dashed' },\n { label: '点线', value: 'dotted' },\n ],\n })\n netLineType = 'dashed';\n @Property('x轴网络线', { type: 'boolean' })\n netLineX = false;\n\n @Property('x网络线类型', {\n ui: { widget: 'select', visibleIf: { netLineX: [true] } },\n enum: [\n { label: '实线', value: 'solid' },\n { label: '虚线', value: 'dashed' },\n { label: '点线', value: 'dotted' },\n ],\n })\n netLineXType = 'dashed';\n\n @Property('网络线颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n netLineColor = 'rgba(255,255,255,0.2)';\n\n @Property('标签', { type: 'boolean' })\n label = false;\n\n @Property('标线', { type: 'boolean' })\n markLine = false;\n @Property('Y轴标线高度', { type: 'number', ui: { visibleIf: { markLine: [true] } } })\n YmarkLineHeight = 10;\n\n // @Property('显示X轴', {\n // ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n // })\n // showX = true;\n @Property('Y标线标题', {\n type: 'string',\n ui: { visibleIf: { markLine: [true] }, optionalHelp: '此标题需要跟x字段内名字一致' },\n })\n YmarkLineName = '';\n // @Property('标线数值', { type: 'number' })\n // markLineVal = null;\n\n @Property('Y标线类型', {\n ui: { widget: 'select', visibleIf: { markLine: [true] } },\n enum: [\n { label: '实线', value: 'solid' },\n { label: '虚线', value: 'dashed' },\n { label: '点线', value: 'dotted' },\n ],\n })\n YmarkLineType = 'dashed';\n\n @Property('Y标线颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n visibleIf: { markLine: [true] },\n },\n })\n YmarkLineColor = '#f00';\n @Property('Y标线粗细', {\n type: 'number',\n ui: { visibleIf: { markLine: [true] } },\n })\n YmarkWidth = 2;\n @Property('X轴标线位置', { type: 'string', ui: { visibleIf: { markLine: [true] } } })\n XmarkLineLocation = '二月';\n @Property('X标线标题', {\n type: 'string',\n ui: { optionalHelp: '此标题需要跟x字段内名字一致', visibleIf: { markLine: [true] } },\n })\n XmarkLineName = '';\n @Property('X标线类型', {\n ui: { widget: 'select', visibleIf: { markLine: [true] } },\n enum: [\n { label: '实线', value: 'solid' },\n { label: '虚线', value: 'dashed' },\n { label: '点线', value: 'dotted' },\n ],\n })\n XmarkLineType = 'dashed';\n\n @Property('X标线颜色', {\n ui: {\n visibleIf: { markLine: [true] },\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n XmarkLineColor = '#f00';\n @Property('X标线粗细', {\n type: 'number',\n ui: { visibleIf: { markLine: [true] } },\n })\n XmarkWidth = 2;\n @Property('数据标线')\n showDataMarkLine: boolean;\n @Property('数据标线格式化', {\n ui: { visibleIf: { showDataMarkLine: [true] }, optionalHelp: 'function(params){return params.data.value}' },\n })\n dataMarkLineFormatter: string;\n @Property('隐藏x轴标签')\n hideXLabel: boolean;\n @Property('x轴标签角度', {\n ui: { widget: 'myRange', min: -90, max: 90, step: 10, visibleIf: { hideXLabel: (value) => !value } },\n })\n xLabelRotate = 0;\n @Property('x轴文本宽度', { ui: { visibleIf: { hideXLabel: (value) => !value } } })\n xLabelWidth: number;\n @Property('x轴文字宽度超出', {\n enum: [\n { label: '自动', value: 'auto' },\n { label: '截断', value: 'truncate' },\n { label: '换行', value: 'break' },\n { label: '强制换行', value: 'breakAll' },\n ],\n ui: { widget: 'select', visibleIf: { hideXLabel: (value) => !value } },\n })\n xLabelOverflow = 'auto';\n @Property('标签显示间隔', {\n ui: {\n visibleIf: { hideXLabel: (value) => !value },\n optionalHelp: {\n text: `默认会采用标签不重叠的策略间隔显示标签。\n可以设置成 0 强制显示所有标签。 \n如果设置为 1,表示『隔一个标签显示一个标签』,如果值为 2,表示隔两个标签显示一个标签,以此类推。`,\n overlayStyle: {\n whiteSpace: 'pre-line',\n },\n },\n },\n })\n xLabelInterval: number;\n\n @Property('区域缩放')\n insideDataZoom: boolean;\n @Property('缩放最少数量', { ui: { visibleIf: { insideDataZoom: [true] } } })\n dataZoomMinData: number;\n @Property('缩放开始百分比', { ui: { visibleIf: { insideDataZoom: [true] } } })\n dataZoomStart: number;\n @Property('缩放结束百分比', { ui: { visibleIf: { insideDataZoom: [true] } } })\n dataZoomEnd: number;\n @Property('滚轮缩放', {\n enum: [\n { label: '启用', value: true },\n { label: '禁用', value: false },\n { label: '按住shift', value: 'shift' },\n { label: '按住ctrl', value: 'ctrl' },\n { label: '按住alt', value: 'alt' },\n ],\n ui: { widget: 'select', visibleIf: { insideDataZoom: [true] } },\n })\n zoomOnMouseWheel = true;\n @Property('滑动条', { ui: { visibleIf: { insideDataZoom: [true] } } })\n sliderDataZoom: boolean;\n @Property('锁定区域大小', { ui: { visibleIf: { sliderDataZoom: [true] } } })\n zoomLock: boolean;\n @Property('提示框字体', { ui: { widget: 'myFont' } })\n tooltipFont: any;\n @Property('阶梯拐点', {\n enum: [\n { label: '当前点', value: 'start' },\n { label: '中间点', value: 'middle' },\n { label: '下个点', value: 'end' },\n ],\n ui: { widget: 'select', visibleIf: { type: ['step'] } },\n })\n step: string;\n @Property('标记点大小', { type: 'number' })\n symbolSize: number;\n chartOption: any = null;\n @Data({\n properties: {\n x: { type: 'string', title: '类目' },\n y: { type: 'number', title: '值' },\n s: { type: 'string', title: '系列' },\n },\n })\n _data: any[] = [\n { x: '一月', y: 10, s: '收入' },\n { x: '二月', y: 20, s: '收入' },\n { x: '三月', y: 25, s: '收入' },\n { x: '四月', y: 35, s: '收入' },\n { x: '五月', y: 27, s: '收入' },\n { x: '六月', y: 28, s: '收入' },\n { x: '一月', y: 18, s: '支出' },\n { x: '二月', y: 28, s: '支出' },\n { x: '三月', y: 32, s: '支出' },\n { x: '四月', y: 48, s: '支出' },\n { x: '五月', y: 20, s: '支出' },\n { x: '六月', y: 17, s: '支出' },\n ];\n @Drill()\n @DataOutput(['x', 's'])\n dataClick = new EventEmitter<any>();\n xData = [];\n yData = [];\n // series = [];\n style = {\n color: '',\n fontFamily: '',\n fontWeight: '',\n fontSize: '',\n lineHeight: '',\n };\n constructor() {}\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n const textStyle = this.getTextStyle(this.font);\n this.style = textStyle;\n this.chartOption = {\n dataZoom: this.getDataZoom(),\n tooltip: this.getTooltip(),\n legend: this.getLegend(),\n grid: this.getGrid(),\n xAxis: this.getXAxis(),\n yAxis: this.getYAxis(),\n color: this.lineColor,\n series: [],\n };\n this.reloadData();\n }\n }\n\n getXAxis(): any {\n return {\n name: this.xUnit,\n nameTextStyle: this.style,\n type: this.xType || 'category',\n boundaryGap: this.boundaryGap,\n axisLine: {\n lineStyle: {\n color: this.style.color,\n },\n },\n axisLabel: {\n ...this.style,\n rotate: this.xLabelRotate,\n show: !this.hideXLabel,\n width: this.xLabelWidth,\n overflow: this.xLabelOverflow,\n interval: this.xLabelInterval,\n },\n splitLine: {\n show: this.netLineX,\n lineStyle: {\n type: this.netLineXType,\n color: this.netLineColor,\n },\n },\n };\n }\n\n getYAxis(): any {\n return {\n show: true,\n name: this.yUnit,\n nameTextStyle: this.style,\n type: 'value',\n min: this.yMin,\n max: (value) => {\n let yMax = value.max;\n if (this.yMax) {\n yMax = Number(this.yMax);\n } else if (this.markLine) {\n yMax = Math.max(Number(this.YmarkLineHeight), yMax);\n }\n return Math.ceil(this.yMaxAddNum ? yMax + Number(this.yMaxAddNum) : yMax);\n },\n axisLine: {\n show: this.showY,\n lineStyle: {\n color: this.style.color,\n },\n },\n axisLabel: this.style,\n splitLine: {\n show: this.netLine,\n lineStyle: {\n type: this.netLineXType,\n color: this.netLineColor,\n },\n },\n axisTick: {\n show: this.showY,\n },\n minInterval: this.yMinInterval,\n };\n }\n\n getGrid() {\n return {\n top: this.grid.top,\n right: this.grid.right,\n left: this.grid.left,\n bottom: this.grid.bottom,\n };\n }\n getLegend(): any {\n return {\n align: 'left',\n left: this.align,\n show: this.align !== 'none',\n icon: 'rect',\n textStyle: this.style,\n };\n }\n getTooltip() {\n return {\n trigger: 'axis',\n textStyle: this.getTextStyle(this.tooltipFont),\n axisPointer: {\n type: this.axisType,\n label: {\n show: false,\n },\n lineStyle: {\n type: this.lineType,\n color: this.axisColor,\n width: this.axisWidth,\n },\n },\n };\n }\n\n getTextStyle(font: any) {\n return getEchartsTextStyle(font);\n }\n\n getDataZoom() {\n const dataZoom = [];\n if (this.insideDataZoom) {\n let enableDataZoom = true;\n if (this.dataZoomMinData != null) {\n const xSet = new Set<string>();\n this._data.forEach((data) => {\n if (data.x) {\n xSet.add(data.x);\n }\n });\n if (xSet.size < this.dataZoomMinData) {\n enableDataZoom = false;\n }\n }\n if (enableDataZoom) {\n let start = this.dataZoomStart || 0;\n let end = this.dataZoomEnd || 100;\n dataZoom.push({ type: 'inside', start, end, zoomOnMouseWheel: this.zoomOnMouseWheel });\n if (this.sliderDataZoom) {\n dataZoom.push({ type: 'slider', start, end, zoomLock: this.zoomLock, brushSelect: false });\n }\n }\n }\n return dataZoom;\n }\n\n reloadData() {\n const seriesMap = {};\n const dataset = [];\n const source = [];\n dataset.push({ source });\n this._data.forEach((record) => {\n // 针对markline标线关联数据库的操作, 若x的名字与markline的name一致,则获取对应的y轴数据作为markline的value; 目前仅支持一个markline\n // data中过滤掉markline的数据\n if (this.markLine && this.YmarkLineName && record.x === this.YmarkLineName) {\n this.YmarkLineHeight = record.y;\n } else {\n //为空filter会报错\n if (record.s == null) {\n record = { ...record, s: '' };\n }\n source.push(record);\n const s = record.s;\n let series = seriesMap[s];\n if (!series) {\n // seriesSet.add(s);\n const transform = {\n type: 'filter',\n config: { dimension: 's', value: s },\n };\n dataset.push({ transform });\n series = this.setSeriesStyle(s, dataset.length - 1);\n seriesMap[s] = series;\n if (this.showDataMarkLine) {\n series.markLine = {\n symbol: ['none', 'none'],\n label: {\n ...this.style,\n position: 'start',\n },\n data: [],\n };\n if (this.dataMarkLineFormatter) {\n series.markLine.label.formatter = eval('(' + this.dataMarkLineFormatter + ')');\n }\n }\n }\n if (this.showDataMarkLine) {\n series.markLine.data.push({ xAxis: record.x });\n }\n }\n });\n this.chartOption.dataset = dataset;\n if (this.markLine) {\n const marklineStyle: any = {\n symbol: 'none',\n silent: true, // 鼠标悬停书剑,true没有\n data: [],\n };\n if (this.YmarkLineName) {\n marklineStyle.data.push({\n name: this.YmarkLineName,\n type: this.YmarkLineHeight ? null : 'average',\n yAxis: this.YmarkLineHeight,\n lineStyle: {\n color: this.YmarkLineColor,\n type: this.YmarkLineType,\n width: this.YmarkWidth ? this.YmarkWidth : 2,\n },\n label: {\n formatter: '{b}{c}',\n position: 'insideEndTop',\n color: this.YmarkLineColor,\n fontSize: this.font.size,\n },\n });\n }\n if (this.XmarkLineName) {\n marklineStyle.data.push({\n name: this.XmarkLineName,\n type: this.XmarkLineLocation ? null : 'average',\n xAxis: this.XmarkLineLocation,\n lineStyle: {\n color: this.XmarkLineColor,\n type: this.XmarkLineType,\n width: this.XmarkWidth ? this.XmarkWidth : 2,\n },\n label: {\n formatter: '{b}{c}',\n position: 'insideEndTop',\n color: this.XmarkLineColor,\n fontSize: this.font.size,\n },\n });\n }\n this.chartOption.series.push({ type: 'line', markLine: marklineStyle, data: [] });\n // this.chartOption.series[this.chartOption.series.length - 1].markLine = marklineStyle;\n }\n }\n\n setSeriesStyle(name: string, datasetIndex: number) {\n const series: any = {\n name,\n label: {\n show: this.label,\n textStyle: this.style,\n },\n connectNulls: true,\n itemStyle: {},\n type: 'line',\n areaStyle: {},\n smooth: false,\n symbolSize: this.symbolSize ?? 10,\n encode: { x: 'x', y: 'y' },\n datasetIndex,\n };\n this.chartOption.series.push(series);\n series.areaStyle.opacity = 0;\n if (this.type === 'smooth' || this.type === 'smooth-area') {\n series.smooth = true;\n }\n if (this.type === 'area' || this.type === 'smooth-area') {\n series.areaStyle.opacity = 0.5;\n series.symbolSize = this.symbolSize ?? (this.label ? 10 : 0);\n }\n if (this.type === 'step') {\n series.step = this.step;\n }\n return series;\n }\n\n uniqueData(data) {\n for (let i = 0; i < data.length - 1; i++) {\n for (let j = i + 1; j < data.length; j++) {\n if (data[i] === data[j]) {\n data.splice(j, 1);\n j--;\n }\n }\n }\n return data;\n }\n\n getMaxY() {\n for (let i = 0; i < this._data.length; i++) {\n this.yData[i] = this._data[i].y;\n }\n this.uniqueData(this.yData);\n const a = Math.max(...this.yData).toFixed(0);\n const b = a.toString().length;\n const c = Math.pow(10, b - 1);\n const max = Number(c) + Number(a);\n return max;\n }\n\n onChartClick(event) {\n this.dataClick.emit({ x: event.name, s: event.seriesName });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BasicLineChartComponent } from './basic-line-chart.component';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [BasicLineChartComponent],\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\n})\nexport class BasicLineChartModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(BasicLineChartComponent);\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class HttpService {\r\n constructor(private http: HttpClient) {}\r\n\r\n get(url: string, options: any) {\r\n return this.http.get(url, options).toPromise();\r\n }\r\n\r\n post(url: string, body: any, options: any) {\r\n return this.http.post(url, body, options).toPromise();\r\n }\r\n}\r\n","import { Component, EventEmitter, OnInit } from '@angular/core';\nimport { Data, DataOutput, GlobalVarService, Property, TemplateUtil, Widget } from 'bbj-widget-base';\nimport { SFOptionalHelp, SFRadioWidgetSchema } from '@delon/form';\nimport { of } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { HttpService } from '../shared/service/http.service';\n\n@Component({\n selector: 'sc-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.less'],\n})\n@Widget('按钮', { group: 'component', image: 'assets/img/screen/myButton.png', icon: 'iconmokuai' })\nexport class ButtonComponent implements OnInit {\n textStyle: any = {};\n edit: any;\n @Property('按钮样式', {\n ui: {\n widget: 'myButton',\n spanLabel: 24,\n spanControl: 24,\n name: 'button',\n reset: ['background', 'borderColor'],\n background: [\n { background: '#FFB700', borderColor: '#FFB700' },\n { background: '#00E371', borderColor: '#00E371' },\n { background: '#3285FF', borderColor: '#3285FF' },\n { background: '#B232FF', borderColor: '#B232FF' },\n { background: '#FF3286', borderColor: '#FF3286' },\n { background: '#FF3832', borderColor: '#FF3832' },\n { background: 'linear-gradient(-180deg, #FAD961 0%, #F76B1C 100%)', borderColor: '#F76B1C' },\n { background: 'linear-gradient(-180deg, #B4EC51 0%, #429321 100%)', borderColor: '#429321' },\n { background: 'linear-gradient(-180deg, #20C8FF 0%, #0059DD 100%)', borderColor: '#0059DD' },\n { background: 'linear-gradient(-90deg, #3023AE 0%, #C86DD7 87%)', borderColor: '#C86DD7' },\n ],\n },\n })\n colorExample: any;\n @Property('内容')\n title = 'button';\n @Property('填充', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n background = 'linear-gradient(-180deg, #20C8FF 0%, #0059DD 100%)';\n @Property('边框', {\n ui: {\n widget: 'myColor',\n example: ['#FFFFFF', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n borderColor = '#0059DD';\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: '' };\n @Property('透明度', { ui: { widget: 'myRange', min: 0, max: 1, step: 0.1 } })\n opacity = 1;\n @Property('圆角', { ui: { widget: 'myRange', min: 0, max: 100, step: 1 } })\n radius = 4;\n @Property('阴影', { ui: { widget: 'myShadow' } })\n shadow: any = { color: '', X: 0, Y: 0, Z: 0 };\n @Property('超链接')\n href = '';\n @Property('另起窗口', {\n type: 'boolean',\n ui: {\n checkedChildren: '是',\n unCheckedChildren: '否',\n },\n })\n openModel = true;\n @Property('执行脚本', {\n ui: {\n widget: 'textarea',\n autosize: { minRows: 6, maxRows: 10 },\n optionalHelp: {\n text: `内置变量:\n1、http:用于发起http请求\n2、global:全局变量\n例:http.post(\"http://www.xxx.com/xxx\",{a:global.a});// POST,body传参\n http.post(\"http://www.xxx.com/xxx\",null,{params:{a:global.a}});// POST,url传参\n http.get(\"http://www.xxx.com/xxx\",{params:{a:global.a}});// GET,url传参\n`,\n overlayStyle: {\n whiteSpace: 'pre-line',\n },\n },\n },\n })\n script: string;\n @Data({\n properties: {\n value: { type: 'string', title: '值' },\n },\n })\n data: any[] = [];\n @DataOutput('值')\n valueOutput = new EventEmitter<string>();\n constructor(private http: HttpService, private gloabl: GlobalVarService) {}\n\n ngOnInit() {\n this.textStyle = {\n background: this.background,\n borderColor: this.borderColor,\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n opacity: this.opacity,\n borderRadius: this.radius + '%',\n boxShadow: this.shadow.color + ' ' + this.shadow.X + 'px ' + this.shadow.Y + 'px ' + this.shadow.Z + 'px',\n };\n }\n openPage(event) {\n if (!this.edit) {\n if (this.href) {\n if (this.openModel) {\n window.open(this.href, '_blank');\n } else {\n window.location.href = this.href;\n }\n }\n if (this.script) {\n const fn = new Function('http', 'global', this.script);\n fn(this.http, this.gloabl.data);\n }\n }\n if (this.data?.length) {\n this.valueOutput.emit(this.data[0].value);\n }else{\n this.valueOutput.emit(null);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from './button.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { HttpService } from '../shared/service/http.service';\n\n@NgModule({\n declarations: [ButtonComponent],\n imports: [CommonModule, WidgetBaseModule],\n providers: [HttpService],\n})\nexport class ButtonModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(ButtonComponent);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport {Property, Widget} from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-timer',\n templateUrl: './timer.component.html',\n styleUrls: ['./timer.component.less']\n})\n @Widget('时间',{group: 'component',image: 'assets/img/screen/timer.png',icon: 'iconmokuai'})\nexport class TimerComponent implements OnInit {\n\n @Property('图标显示',{ui:{widget: 'checkbox'}})\n iconShow = true;\n @Property('星期显示',{ui:{widget: 'checkbox'}})\n weekShow = true;\n @Property('图标大小',{ui:{widget: 'myRange',min: 0, max: 100, step: 1}})\n iconFontSize = 20;\n @Property('图标右边距',{ui:{widget: 'myRange',min: 0, max: 100, step: 1}})\n iconMarginRight = 10;\n @Property('图标颜色',{ui:{widget: 'myColor', example:['#D0021B','#F5A623','#F8E71C','#50E3C2','#3285FF','#B45FFF','#9B9B9B','#ffffff']}})\n iconColor = '#5DF5F4';\n @Property('字体',{ui:{widget: 'myFont'}})\n font: any = {family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: ''};\n @Property('字体发光',{ui:{widget: 'checkbox'}})\n fontGlow = false;\n @Property('发光颜色',{ui:{widget: 'myColor', example:['#D0021B','#F5A623','#F8E71C','#50E3C2','#3285FF','#B45FFF','#9B9B9B','#ffffff']}})\n flowColor = '#ffffff';\n @Property('发光程度',{ui:{widget: 'myRange',min: 1, max: 10, step: 1}})\n flowSize = 3;\n @Property('格式')\n format = 'yyyy-MM-dd HH:mm:ss';\n iconStyle: any;\n textStyle: any;\n data: any;\n timer: any;\n week='';\n constructor() { }\n\n ngOnInit() {\n this.getTime();\n this.iconStyle = {\n fontSize: this.iconFontSize + 'px',\n marginRight: this.iconMarginRight + 'px',\n color: this.iconColor\n }\n this.textStyle = {\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n }\n if (this.fontGlow) {// 发光\n let str = '';\n for (let i = 0; i < this.flowSize; i++) {\n str += '0 0 20px ' + this.flowColor + ',';\n }\n str = str.substr(0, str.length - 1);\n this.textStyle['text-shadow'] = str;\n } else {\n this.textStyle['text-shadow'] = '';\n }\n clearInterval(this.timer);\n this.timer = setInterval(() => {\n this.getTime();// 检测变化\n }, 1000);\n }\n getTime() {\n const show_day=new Array('星期天','星期一','星期二','星期三','星期四','星期五','星期六');\n this.data = new Date();\n this.week=show_day[this.data.getDay()];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TimerComponent } from './timer.component';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [TimerComponent],\n imports: [CommonModule, WidgetBaseModule, NzIconModule],\n})\nexport class TimerModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(TimerComponent);\n }\n}\n","import { Component, OnInit, OnChanges } from '@angular/core';\nimport { Property, Widget, Data } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-number-flop',\n templateUrl: './number-flop.component.html',\n styleUrls: ['./number-flop.component.less'],\n})\n@Widget('数字翻牌器', { group: 'component', image: 'assets/img/screen/number-flop.png', icon: 'iconmokuai' })\nexport class NumberFlopComponent implements OnInit, OnChanges {\n // @Property('静态值')\n // number: number = 1024;\n @Property('前缀内容')\n prefixContent = '';\n @Property('前缀字体', { ui: { widget: 'myFont', hideProperty: { lineHeight: true } } })\n prefixFont: any = { family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: '' };\n @Property('数字字体', { ui: { widget: 'myFont' , hideProperty: { lineHeight: true } } })\n numberFont: any = { family: '', color: '#ffffff', weight: 'normal', size: 90, space: 0, lineHeight: '' };\n @Property('填充', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n background = '#01A4F9';\n @Property('小数点位数', { ui: { widget: 'myRange', min: 0, max: 10, step: 1 } })\n point = 0;\n @Property('后缀内容')\n suffixContent = '';\n @Property('后缀字体', { ui: { widget: 'myFont' } })\n suffixFont: any = { family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: '' };\n @Property('数字位数')\n numDigit:number = 0;\n headlineStyle: any;\n prefixStyle: any;\n suffixStyle: any;\n numberdate: any;\n textStyle: any;\n serial: any = {};\n tableBar: any = {};\n @Data({\n properties: {\n value: { type: 'number', title: '数值' },\n },\n })\n number: any[] = [{ value: 1024 }];\n\n constructor() {}\n ngOnChanges() {\n this.headlineStyle = {\n height: this.numberFont.size + 'px',\n lineHeight: this.numberFont.size + 'px',\n };\n this.prefixStyle = {\n fontSize: this.prefixFont.size + 'px',\n fontFamily: this.prefixFont.family,\n color: this.prefixFont.color,\n fontWeight: this.prefixFont.weight,\n letterSpacing: this.prefixFont.space + 'px',\n lineHeight: this.prefixFont.lineHeight + 'px',\n };\n this.suffixStyle = {\n fontSize: this.suffixFont.size + 'px',\n fontFamily: this.suffixFont.family,\n color: this.suffixFont.color,\n fontWeight: this.suffixFont.weight,\n letterSpacing: this.suffixFont.space + 'px',\n lineHeight: this.suffixFont.lineHeight + 'px',\n };\n this.textStyle = {\n fontSize: this.numberFont.size + 'px',\n fontFamily: this.numberFont.family,\n color: this.numberFont.color,\n fontWeight: this.numberFont.weight,\n letterSpacing: this.numberFont.space + 'px',\n // lineHeight: this.numberFont.lineHeight + 'px',\n };\n this.serial.width = this.numberFont.size * 0.58 + 'px';\n this.tableBar.width = this.numberFont.size * 0.7 + 'px';\n this.numberdate = Number(this.number && this.number[0] ? this.number[0].value : 0);\n let digits=0;\n if(this.numDigit>0 && this.numberdate.toString().length<this.numDigit){\n digits=this.numDigit-this.numberdate.toString().length;\n }\n this.numberdate=this.numberdate.toFixed(this.point)\n .toString();\n if(digits>0){\n for (let index = 0; index < digits; index++) {\n this.numberdate='0'+this.numberdate;\n }\n }\n this.numberdate= this.numberdate.split('');\n }\n\n ngOnInit() {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NumberFlopComponent } from './number-flop.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [NumberFlopComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class NumberFlopModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(NumberFlopComponent);\n }\n}\n","import { Component, ElementRef, OnInit, EventEmitter } from '@angular/core';\nimport { Property, Widget, DataOutput, Data } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-vote',\n templateUrl: './vote.component.html',\n styleUrls: ['./vote.component.less'],\n})\n@Widget('投票', { group: 'component', image: 'assets/img/screen/vote.png', icon: 'iconmokuai' })\nexport class VoteComponent implements OnInit {\n\n @Data({\n properties: {\n label: { title: '标签', type: 'string' },\n value: { title: '值', type: 'string' },\n checked: { title: '是否选中', type: 'boolean' },\n },\n })\n options: any = [\n { label: '选项一', value: 'option1' },\n { label: '选项二', value: 'option2' },\n { label: '选项三', value: 'option3' },\n ];\n @Property('', { ui: { widget: 'myCheckNumber', title: '多选个数', spanLabel: 0, spanControl: 24 } })\n num = 1;\n @Property('填充', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n background = 'rgba(50,133,255,0.2)';\n @Property('边框', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n borderColor = '#3285FF';\n @Property('按钮颜色', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n btnColor = '#3285FF';\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: '' };\n /*checkOptionsOne = [];*/\n textStyle: any;\n @DataOutput('值')\n valueChange = new EventEmitter<any>();\n constructor(private ele: ElementRef) {}\n\n ngOnInit() {\n this.ele.nativeElement.style.background = this.background;\n this.ele.nativeElement.style.border = this.borderColor ? '1px solid ' + this.borderColor : 0;\n this.ele.nativeElement.style.setProperty('--color', this.borderColor);\n this.textStyle = {\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n };\n }\n log(value: object[]): void {\n this.valueChange.emit(value);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VoteComponent } from './vote.component';\nimport { FormsModule } from '@angular/forms';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [VoteComponent],\n imports: [CommonModule, WidgetBaseModule, NzCheckboxModule, FormsModule],\n})\nexport class VoteModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(VoteComponent);\n }\n}\n","import { Component, OnInit, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { Property, Widget, DataOutput, Data, Event, DataInput } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.less'],\n})\n@Widget('下拉框', {\n group: 'component',\n image: 'assets/img/screen/select.png',\n icon: 'iconmokuai',\n})\nexport class SelectComponent implements OnInit, OnChanges {\n @Property('下拉框样式', {\n ui: {\n widget: 'myImageExample',\n spanLabel: 24,\n spanControl: 24,\n reset: ['background', 'borderColor', 'selectColor'],\n example: [\n {\n background: 'assets/img/screen/select1.png',\n data: {\n selectColor: '#F5A623',\n borderColor: '#F5A623',\n background: 'rgba(245,166,35,0.2)',\n dropdownBg: 'rgba(245,166,35,0.2)',\n dropdownBorderColor: '#F5A623',\n },\n },\n {\n background: 'assets/img/screen/select2.png',\n data: {\n selectColor: '#50E3C2',\n borderColor: '#50E3C2',\n background: 'rgba(80,227,194,0.2)',\n dropdownBg: 'rgba(80,227,194,0.2)',\n dropdownBorderColor: '#50E3C2',\n },\n },\n {\n background: 'assets/img/screen/select3.png',\n data: {\n selectColor: '#9013fe',\n borderColor: '#9013fe',\n background: 'rgba(144,19,254,0.2)',\n dropdownBg: 'rgba(144,19,254,0.2)',\n dropdownBorderColor: '#9013fe',\n },\n },\n {\n background: 'assets/img/screen/select4.png',\n data: {\n selectColor: '#3285ff',\n borderColor: '#3285ff',\n background: 'rgba(50,133,255,0.2)',\n dropdownBg: 'rgba(50,133,255,0.2)',\n dropdownBorderColor: '#3285ff',\n },\n },\n ],\n },\n })\n example: any;\n @Property('提示用语', { type: 'string' })\n hint = '请选择';\n @Property('', {\n ui: {\n widget: 'myCheckNumber',\n title: '多选个数',\n spanLabel: 0,\n spanControl: 24,\n },\n })\n num = 1;\n @Property('填充', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n background: string;\n @Property('边框', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n borderColor = '#d9d9d9';\n\n // 通过全局变量来控制颜色变化 当多个时会互相替换 移除此功能\n @Property('选中颜色', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n dropdownBackgroundColor = '#E6F7FF';\n @Property('选中字体颜色', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n selectDropDownColor = 'rgba(0,0,0,0.85)';\n @Property('hover字体颜色', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n selectHoverColor = 'rgba(0,0,0,0.85)';\n @Property('hover背景颜色', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n selectHoverBackgroundColor = '#f5f5f5';\n\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 30,\n };\n\n @Property('对齐方式', {\n enum: [\n { label: '左对齐', value: 'left' },\n { label: '居中', value: 'center' },\n { label: '右对齐', value: 'right' },\n ],\n })\n align = 'left';\n @Property('搜索')\n showSearch: boolean;\n @Property('清空按钮')\n showClean: boolean;\n @Property('下拉宽度', { type: 'number' })\n dropdownWidth = null;\n\n @Property('下拉填充', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n dropdownBg = '#fff';\n @Property('下拉边框', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n dropdownBorderColor = '#fff';\n\n @Property('输出格式', {\n enum: [\n { label: '数组', value: 'array' },\n { label: '字符串', value: 'string' },\n ],\n ui: { widget: 'select', visibleIf: { num: (value) => value > 1 } },\n })\n outputFormat = 'array';\n @Property('分隔字符', { ui: { visibleIf: { outputFormat: ['string'] } } })\n separator = ',';\n selectedValue: any;\n ngStyle: any;\n dropdownStyle: any;\n mode = 'default';\n\n @Data({\n properties: {\n label: { title: '标签', type: 'string' },\n value: { title: '值', type: 'string' },\n checked: { title: '是否选中', type: 'boolean' },\n },\n })\n options: any = [\n { label: '选项1', value: 'option1' },\n { label: '选项2', value: 'option2' },\n ];\n\n @DataInput('选中值')\n value: any;\n\n @DataOutput('值')\n @Event('值改变', { params: '值' })\n valueChange = new EventEmitter<any>();\n @DataOutput('原始数据')\n optionChange = new EventEmitter<any>();\n\n constructor() {}\n\n ngOnInit() {\n this.ngStyle = {\n backgroundColor: this.background,\n border: '1px solid ' + this.borderColor,\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n };\n this.dropdownBg = this.dropdownBg ? this.dropdownBg : this.background;\n this.dropdownBorderColor = this.dropdownBorderColor ? this.dropdownBorderColor : this.borderColor;\n this.dropdownStyle = {\n backgroundColor: this.dropdownBg,\n border: '1px solid ' + this.dropdownBorderColor,\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n width: this.dropdownWidth + 'px',\n };\n // this.dropdownStyle.width = this.dropdownWidth ? this.dropdownWidth + 'px' : '';\n document.body.style.setProperty(\n '--dropdownBackgroundColor',\n this.dropdownBackgroundColor || ' rgba(255,255,255,0.2)',\n );\n document.body.style.setProperty('--selectDropDownColor', this.selectDropDownColor || '#333');\n document.body.style.setProperty('--selectHoverColor', this.selectHoverColor || 'rgba(255,255,255,0.5)');\n document.body.style.setProperty('--selectHoverBackgroundColor', this.selectHoverBackgroundColor || '#333');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.options) {\n if (this.num && this.num > 1) {\n this.mode = 'multiple';\n this.selectedValue = [];\n this.options.forEach((option) => {\n if (option.checked && this.selectedValue.length < this.num) {\n this.selectedValue.push(option.value ? option.value : option.label);\n }\n });\n if (this.selectedValue.length > 0) {\n this.selectChange(this.selectedValue);\n }\n } else {\n this.mode = 'default';\n const item = this.options.find((s) => s.checked);\n if (item) {\n this.selectedValue = item.value ? item.value : item.label;\n this.selectChange(this.selectedValue);\n }\n }\n }\n if (changes.value) {\n this.selectedValue = this.value;\n // console.log(this.value);\n }\n }\n\n selectAllData() {\n this.selectedValue = [];\n this.options.forEach((data) => {\n this.selectedValue.push(data.value);\n });\n this.selectChange(this.selectedValue);\n // this.valueChange.emit(this.selectedValue);\n // this.optionChange.emit(this.options);\n }\n\n selectChange(value: string | string[]) {\n if (Array.isArray(value)) {\n // 多选\n if (this.outputFormat === 'string') {\n this.valueChange.emit(value.join(this.separator || ','));\n } else {\n this.valueChange.emit(value);\n }\n const selectedOption = this.options.filter((option) => value.includes(option.value));\n this.optionChange.emit(selectedOption);\n } else {\n this.valueChange.emit(value);\n const selectedOption = this.options.find((option) => option.value === event);\n this.optionChange.emit(selectedOption);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SelectComponent } from './select.component';\nimport { FormsModule } from '@angular/forms';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [SelectComponent],\n imports: [CommonModule, WidgetBaseModule, NzSelectModule, FormsModule],\n})\nexport class SelectModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(SelectComponent);\n }\n}\n","export function getFontStyle(font: any) {\r\n let style: any = {};\r\n if (font) {\r\n if (font.size) style.fontSize = font.size + 'px';\r\n if (font.family) style.fontFamily = font.family;\r\n if (font.color) style.color = font.color;\r\n if (font.weight) style.fontWeight = font.weight;\r\n if (font.space) style.letterSpacing = font.space + 'px';\r\n if (font.lineHeight) style.lineHeight = font.lineHeight + 'px';\r\n }\r\n return style;\r\n}\r\n","import { Component, OnInit, EventEmitter } from '@angular/core';\nimport { Property, Widget, DataOutput } from 'bbj-widget-base';\nimport { getFontStyle } from '../shared/util/style.util';\n\n@Component({\n selector: 'sc-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.less'],\n})\n@Widget('搜索框', { group: 'component', image: 'assets/img/screen/search.png', icon: 'iconmokuai' })\nexport class SearchComponent implements OnInit {\n @Property('按钮样式', {\n ui: {\n widget: 'myButton',\n spanLabel: 24,\n spanControl: 24,\n icon: 'search',\n reset: ['background', 'borderColor', { parent: 'font', child: 'color' }],\n background: [\n { color: '#F5A623', borderColor: '#F5A623', background: 'rgba(245,166,35,0.2)' },\n { color: '#50E3C2', borderColor: '#50E3C2', background: 'rgba(80,227,194,0.2)' },\n { color: '#9013fe', borderColor: '#9013fe', background: 'rgba(144,19,254,0.2)' },\n { color: '#3285ff', borderColor: '#3285ff', background: 'rgba(50,133,255,0.2)' },\n ],\n },\n })\n colorExample: any = { color: '#3285ff', borderColor: '#3285ff', background: 'rgba(50,133,255,0.2)' };\n\n @Property('填充', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n background = 'rgba(50,133,255,0.2)';\n @Property('边框', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n borderColor = '#3285ff';\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', color: '#3285ff', weight: 'normal', size: 12, space: 0, lineHeight: '' };\n @Property('按钮样式', {\n enum: [\n { label: '样式一', value: 'default' },\n { label: '样式二', value: 'iconSingle' }\n ],\n })\n btnStyleOption = 'default';\n\n @Property('按钮颜色', {\n ui: {\n widget: 'myColor',\n visibleIf: { btnStyleOption: ['iconSingle'] }\n },\n })\n iconSingleColor = '#fff';\n @Property('按钮大小', {\n ui: {\n visibleIf: { btnStyleOption: ['iconSingle'] }\n },\n })\n iconSingleSize = 16;\n\n @Property('隐藏按钮')\n hideBtn: boolean;\n @Property('提示文字')\n placeholder: string;\n @Property('高度')\n height = 26;\n btnStyle: any;\n btnIconStyle: any;\n @DataOutput('值')\n valueChange = new EventEmitter<any>();\n value: any;\n constructor() { }\n\n ngOnInit() {\n this.btnStyle = {\n backgroundColor: this.background,\n borderColor: this.borderColor,\n ...getFontStyle(this.font),\n };\n if (this.btnStyleOption === 'iconSingle') {\n this.btnIconStyle = {\n fontSize: this.iconSingleSize + 'px',\n color: this.iconSingleColor,\n }\n }\n }\n\n searchChange(value) {\n this.valueChange.emit(value);\n }\n\n onKeypress(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n this.valueChange.emit(this.value);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SearchComponent } from './search.component';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { FormsModule } from '@angular/forms';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { NzIconModule, NzIconService } from 'ng-zorro-antd/icon';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\n\n@NgModule({\n declarations: [SearchComponent],\n imports: [CommonModule, WidgetBaseModule, NzIconModule, NzInputModule, NzButtonModule, FormsModule, NzPipesModule],\n})\nexport class SearchModule {\n constructor(widgetService: WidgetService, private iconService: NzIconService) {\n widgetService.register(SearchComponent);\n this.iconService.fetchFromIconfont({\n scriptUrl: 'assets/icons/screen-icons.js'\n });\n }\n}\n","import { Component, OnInit, ElementRef, OnChanges, SimpleChanges, NgZone } from '@angular/core';\nimport { Property, Widget } from 'bbj-widget-base';\nimport { BaiduMapService } from 'bbj-screen-widget/core';\nimport { GaodeMapService } from '../shared/service/gaode-map.service';\nimport { getFontStyle } from '../shared/util/style.util';\ndeclare var BMapGL: any;\n\n@Component({\n selector: 'sc-weather',\n templateUrl: './weather.component.html',\n styleUrls: ['./weather.component.less'],\n})\n@Widget('天气', { group: 'component', image: 'assets/img/screen/weather.png', icon: 'iconmokuai' })\nexport class WeatherComponent implements OnInit {\n @Property('字体', { ui: { widget: 'myFont' } })\n tempFont: any = { family: '', color: '#ffffff', weight: 'normal', size: 40, space: 0, lineHeight: '' };\n\n @Property('显示样式', {\n enum: [\n { label: '样式1', value: 'default' },\n { label: '样式2', value: 'mini' },\n ],\n })\n weatherStyleType = 'default';\n\n @Property('图标大小', {\n ui: {\n widget: 'myRange',\n min: 0,\n max: 100,\n step: 1,\n visibleIf: { weatherStyleType: ['mini'] },\n },\n })\n iconSize = 64;\n\n city: string;\n weather: string;\n temperature: string;\n weatherIcon: any[] = ['iconfont', 'icon-duoyun'];\n weatherImgs = {\n cloudy: 'weather_cloudy',\n rain: 'weather_rain',\n overcast: 'weather_overcast',\n sunny: 'weather_sunny',\n };\n weatherImgName = 'overcast';\n tempStyle: any;\n\n constructor(\n public baiduMapService: BaiduMapService,\n private gaodeMapService: GaodeMapService,\n private zone: NgZone,\n ) {}\n\n ngOnInit() {\n this.tempStyle = getFontStyle(this.tempFont);\n this.reload();\n }\n\n async reload() {\n const localCity = await this.baiduMapService.localCity();\n const cityName = localCity.name;\n this.city = cityName;\n const data = await this.gaodeMapService.getWeather(cityName);\n this.zone.run(() => {\n this.weather = data.lives[0].weather;\n this.weatherImgName = this.weather.includes('雨')\n ? 'rain'\n : this.weather === '晴'\n ? 'sunny'\n : this.weather.includes('云')\n ? 'cloudy'\n : 'overcast';\n this.temperature = data.lives[0].temperature;\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WeatherComponent } from './weather.component';\nimport { HttpClientJsonpModule } from '@angular/common/http';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [WeatherComponent],\n imports: [CommonModule, WidgetBaseModule, HttpClientJsonpModule],\n providers: [],\n})\nexport class WeatherModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(WeatherComponent);\n }\n}\n","import { Component, ElementRef, OnInit, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { Property, Widget, DataOutput, Data } from 'bbj-widget-base';\nimport {SFNumberWidgetSchema} from '@delon/form';\n\n@Component({\n selector: 'sc-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.less'],\n})\n@Widget('单选', { group: 'component', image: 'assets/img/screen/radio.png', icon: 'iconmokuai' })\nexport class RadioComponent implements OnInit, OnChanges {\n\n @Property('颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n radioColor = '#3285FF';\n @Property('样式类型', {\n ui: { widget: 'select' },\n enum: [\n { label: '圆点', value: 'circle' },\n { label: '按钮', value: 'button' },\n ],\n })\n styleType = 'circle';\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: 26 };\n radioValue: any;\n ngStyle: any;\n @Property('选中图片',{\n type: 'string',\n ui: {\n widget: 'myUpload',\n },\n })\n selectImage='';\n @Property('未选图片',{\n type: 'string',\n ui: {\n widget: 'myUpload',\n }\n })\n notSelectImage='';\n @Property('自定义宽',{type:'number'})\n width=150;\n @Property('自定义高',{type:'number'})\n height=50;\n isCustom=false;\n @Data({\n properties: {\n label: { title: '标签', type: 'string' },\n value: { title: '值', type: 'string' },\n checked: { title: '是否选中', type: 'boolean' },\n },\n })\n options:any[]=[\n { label: '是', value: '1', checked: true },\n { label: '否', value: '0' },\n ]\n @DataOutput('值')\n valueChange = new EventEmitter<any>();\n constructor(private ele: ElementRef) {}\n\n ngOnInit() {\n this.ele.nativeElement.style.setProperty('--radioColor', this.radioColor);\n this.ele.nativeElement.style.setProperty('--outerSize', this.font.size+'px');\n this.ele.nativeElement.style.setProperty('--innerSize', this.font.size/2+'px');\n this.ele.nativeElement.style.setProperty('--width', this.width+'px');\n this.ele.nativeElement.style.setProperty('--height', this.height+'px');\n this.ele.nativeElement.style.setProperty('--color', this.font.color );\n this.ele.nativeElement.style.setProperty('--weight', this.font.weight );\n this.ele.nativeElement.style.setProperty('--family', this.font.weight );\n this.ele.nativeElement.style.setProperty('--select', 'url('+this.selectImage+')' );\n this.ele.nativeElement.style.setProperty('--notSelect', 'url('+this.notSelectImage+')');\n this.ngStyle = {\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n };\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(this.selectImage&&this.notSelectImage&&this.selectImage!=''&&this.notSelectImage!=''){\n this.isCustom=true;\n }\n if (changes.options) {\n if (this.options) {\n const selectRadio = this.options.find((s) => s.checked);\n if (selectRadio) {\n this.radioValue = selectRadio.value;\n this.valueChange.emit(this.radioValue);\n }\n }\n }\n }\n\n checked(option){\n this.options.forEach((o)=>{\n if(o.value===option.value){\n o.checked=true;\n this.valueChange.emit(o.value);\n }else{\n o.checked=false;\n }\n })\n }\n\n radioChange(event) {\n this.valueChange.emit(event);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RadioComponent } from './radio.component';\nimport { FormsModule } from '@angular/forms';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [RadioComponent],\n imports: [CommonModule, WidgetBaseModule, NzRadioModule, FormsModule],\n})\nexport class RadioModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(RadioComponent);\n }\n}\n","import { Component, ElementRef, OnInit, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { NzCheckBoxOptionInterface } from 'ng-zorro-antd/checkbox';\nimport { Property, Widget, DataOutput, Data, Event, DataInput } from 'bbj-widget-base';\n\ninterface CheckBoxOption extends NzCheckBoxOptionInterface {\n color?: string;\n}\n\n@Component({\n selector: 'sc-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.less'],\n host: {\n '[class.vertical]': 'layout===\"vertical\"',\n },\n})\n@Widget('复选框', {\n group: 'component',\n image: 'assets/img/screen/checkbox.png',\n icon: 'iconmokuai',\n})\nexport class CheckboxComponent implements OnInit, OnChanges {\n @Data({\n properties: {\n label: { title: '标签', type: 'string' },\n value: { title: '值', type: 'string' },\n checked: { title: '是否选中', type: 'boolean' },\n },\n })\n options: CheckBoxOption[] = [\n { label: '多选一', value: 'option1', checked: true },\n { label: '多选二', value: 'option2' },\n { label: '多选三', value: 'option3' },\n ];\n @Property('复选框颜色', {\n ui: {\n widget: 'myColor',\n },\n })\n borderColor = '#3285FF';\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 26,\n };\n textStyle: any;\n @Property('整体布局', {\n enum: [\n { label: '横向', value: 'horizontal' },\n { label: '纵向', value: 'vertical' },\n ],\n })\n layout = 'horizontal';\n @Property('选项布局', {\n enum: [\n { label: '横向', value: 'horizontal' },\n { label: '纵向', value: 'vertical' },\n ],\n })\n lableLayout = 'horizontal';\n @Property('选项宽度')\n labelWidthNum: any;\n @Property('选项边距', { ui: { widget: 'myGrid' } })\n lablePaddNum: any = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n };\n\n @Property('显示全选')\n showCheckAll: boolean;\n @Property('隐藏文本')\n hiddenLabel: boolean;\n @Property('输出格式', {\n enum: [\n { label: '数组', value: 'array' },\n { label: '字符串', value: 'string' },\n ],\n })\n outputFormat = 'array';\n @Property('分隔字符', { ui: { visibleIf: { outputFormat: ['string'] } } })\n separator = ',';\n @Property('标签颜色', {\n ui: {\n widget: 'seriesColor',\n },\n })\n labelColors: string[];\n @Property('选中图片', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n },\n })\n selectImage = '';\n @Property('未选图片', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n },\n })\n notSelectImage = '';\n @Property('图片宽', { type: 'number' })\n width = 150;\n @Property('图片高', { type: 'number' })\n height = 50;\n isCustom = false;\n\n @DataInput('选中值')\n value: any;\n\n @DataOutput('值')\n @Event('值改变', { params: '值' })\n valueChange = new EventEmitter<any>();\n\n checkOptions: CheckBoxOption[];\n allChecked = false;\n indeterminate = true;\n lablePadd: any;\n labelWidth: any;\n @Property('禁用', { type: 'boolean' })\n disabled: boolean;\n\n constructor(private ele: ElementRef) {}\n\n ngOnInit() {\n /*this.ele.nativeElement.style.borderColor = this.borderColor;*/\n /* this.ele.nativeElement.style.setProperty('--color', this.borderColor);*/\n this.textStyle = {\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n borderColor: this.borderColor,\n backgroudColor: this.borderColor,\n };\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.selectImage && this.notSelectImage && this.selectImage != '' && this.notSelectImage != '') {\n this.ele.nativeElement.style.setProperty('--outerSize', this.font.size + 'px');\n this.ele.nativeElement.style.setProperty('--innerSize', this.font.size / 2 + 'px');\n this.ele.nativeElement.style.setProperty('--width', this.width + 'px');\n this.ele.nativeElement.style.setProperty('--height', this.height + 'px');\n this.ele.nativeElement.style.setProperty('--color', this.font.color);\n this.ele.nativeElement.style.setProperty('--weight', this.font.weight);\n this.ele.nativeElement.style.setProperty('--family', this.font.weight);\n this.ele.nativeElement.style.setProperty('--select', 'url(' + this.selectImage + ')');\n this.ele.nativeElement.style.setProperty('--notSelect', 'url(' + this.notSelectImage + ')');\n this.isCustom = true;\n }\n if (changes.value) {\n this.updateCheckOptions();\n }\n if (changes.options) {\n this.checkOptions = this.options.map((option, i) => {\n option = { ...option };\n if (this.labelColors?.length) {\n option.color = this.labelColors[i % this.labelColors.length];\n }\n return option;\n });\n this.updateSingleChecked();\n if (this.value) {\n this.updateCheckOptions();\n } else {\n this.updateValue(true);\n }\n }\n\n if (changes.lablePaddNum && changes.lablePaddNum.currentValue) {\n const padd = changes.lablePaddNum.currentValue;\n this.lablePadd = `${padd.top || 0}px ${padd.right || 0}px ${padd.bottom || 0}px ${padd.left || 0}px`;\n // console.log(this.lablePadd);\n }\n if (changes.labelWidthNum && changes.labelWidthNum.currentValue) {\n const labelWidth = changes.labelWidthNum.currentValue;\n if (Number(labelWidth)) {\n this.labelWidth = labelWidth + 'px';\n } else {\n const isPercent =\n labelWidth.charAt(labelWidth.length - 1) === '%' ? Number(labelWidth.slice(0, labelWidth.length - 1)) : false;\n\n if (isPercent) {\n this.labelWidth = labelWidth;\n }\n }\n }\n }\n change(event: NzCheckBoxOptionInterface[]) {\n this.updateSingleChecked();\n this.updateValue();\n }\n\n updateCheckOptions() {\n if (this.value && this.checkOptions?.length) {\n let values: string[];\n if (typeof this.value === 'string') {\n values = this.value.split(this.separator || ',');\n } else {\n values = this.value;\n }\n let changed = false;\n this.checkOptions.forEach((option) => {\n const checked = option.value && values.includes(option.value.toString());\n if (option.checked !== checked) {\n changed = true;\n option.checked = checked;\n }\n });\n if (changed) {\n this.checkOptions = [...this.checkOptions];\n this.updateSingleChecked();\n }\n }\n }\n\n updateValue(init?: boolean) {\n const value = [];\n this.checkOptions.forEach((item) => {\n if (item.checked) {\n value.push(item.value);\n }\n });\n if (!init || value.length) {\n if (this.outputFormat === 'string') {\n this.valueChange.emit(value.join(this.separator || ','));\n } else {\n this.valueChange.emit(value);\n }\n }\n }\n\n updateAllChecked(): void {\n this.indeterminate = false;\n if (this.allChecked) {\n this.checkOptions = this.checkOptions.map((item) => {\n return {\n ...item,\n checked: true,\n };\n });\n } else {\n this.checkOptions = this.checkOptions.map((item) => {\n return {\n ...item,\n checked: false,\n };\n });\n }\n this.updateValue();\n }\n\n updateSingleChecked(): void {\n if (this.showCheckAll) {\n if (this.checkOptions.every((item) => !item.checked)) {\n this.allChecked = false;\n this.indeterminate = false;\n } else if (this.checkOptions.every((item) => item.checked)) {\n this.allChecked = true;\n this.indeterminate = false;\n } else {\n this.indeterminate = true;\n }\n }\n }\n\n // 全选\n checkedAll() {\n this.allChecked = !this.allChecked;\n // this.\n }\n\n checked(option) {\n let arr = [];\n this.options.forEach((o) => {\n if (o.value === option.value) {\n o.checked = !o.checked;\n }\n if (o.checked) {\n arr.push(o.value);\n }\n });\n this.valueChange.emit(arr.join(this.separator || ','));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { CheckboxComponent } from './checkbox.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, WidgetBaseModule, NzCheckboxModule, FormsModule],\n})\nexport class CheckboxModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(CheckboxComponent);\n }\n}\n","import {Component, ElementRef, OnInit} from '@angular/core';\nimport {Property, Widget} from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-rate',\n templateUrl: './rate.component.html',\n styleUrls: ['./rate.component.less']\n})\n@Widget('评分',{group: 'component',image: 'assets/img/screen/rate.png',icon:'iconmokuai'})\nexport class RateComponent implements OnInit {\n\n @Property('类型', {enum: [\n { label: '分数', value: 'slider' },\n { label: '星级', value: 'rate' },\n { label: '满意度', value: 'radio' },\n ],ui: {widget: 'select'}})\n type = 'rate';\n @Property('颜色',{ui:{widget: 'myColor', example:['#D0021B','#F5A623','#F8E71C','#50E3C2','#3285FF','#B45FFF','#9B9B9B','#333333']}})\n radioColor = '#3285FF';\n @Property('字体',{ui:{widget: 'myFont'}})\n font: any = {family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: 26};\n rateValue = 3.5;\n radioValue = 'great';\n sliderValue = 8;\n style: any;\n constructor(private ele: ElementRef) { }\n\n ngOnInit() {\n this.ele.nativeElement.style.setProperty('--backgroundColor', this.radioColor);\n this.style = {\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NzRateModule } from 'ng-zorro-antd/rate';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { NzSliderModule } from 'ng-zorro-antd/slider';\nimport { RateComponent } from './rate.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [RateComponent],\n imports: [CommonModule, WidgetBaseModule, NzRateModule, FormsModule, NzRadioModule, NzSliderModule],\n})\nexport class RateModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(RateComponent);\n }\n}\n","import {\n Component,\n OnInit,\n ElementRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n EventEmitter,\n Renderer2,\n} from '@angular/core';\nimport { Property, Widget, Data, DataOutput, WidgetRef, CustomExport } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-general-text',\n templateUrl: './general-text.component.html',\n styleUrls: ['./general-text.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@Widget('常规文本', { group: 'generalText', icon: 'iconwenzi' })\nexport class GeneralTextComponent implements OnInit, OnChanges, CustomExport {\n @Property('内容', { ui: { widget: 'textarea', autosize: { minRows: 6, maxRows: 6 } } })\n title = '文本';\n @Property('背景', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n background: string;\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: '' };\n @Property('透明度', { ui: { widget: 'myRange', min: 0, max: 1, step: 0.1 } })\n opacity = 1;\n @Property('阴影', { ui: { widget: 'myShadow' } })\n shadow: any = { color: '', X: 0, Y: 0, Z: 0 };\n @Property('文字对齐', {\n ui: { widget: 'select' },\n enum: [\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n { label: '居中', value: 'center' },\n ],\n })\n align = 'left';\n @Property('内容边距', { ui: { widget: 'myGrid' } })\n grid: any = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n };\n style: any;\n @Data({\n properties: {\n value: { type: 'string', title: '值' },\n color: { type: 'string', title: '颜色' },\n },\n })\n data: any[] = [];\n @DataOutput('值', { triggerLink: false })\n dataChange = new EventEmitter();\n constructor(private renderer: Renderer2, private cd: ChangeDetectorRef, private widgetRef: WidgetRef) {}\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.style = {\n backgroundColor: this.background,\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.data && this.data[0] && this.data[0].color ? this.data[0].color : this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n opacity: this.opacity,\n textShadow: this.shadow.X + 'px ' + this.shadow.Y + 'px ' + this.shadow.Z + 'px ' + this.shadow.color,\n };\n if (this.grid) {\n const { top = 0, right = 0, bottom = 0, left = 0 } = this.grid;\n this.style.padding = top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px';\n }\n const widget: any = this.widgetRef.widget as any;\n if (widget.link?.enabled || widget.outputs?.enabled) {\n this.style.cursor = 'pointer';\n }\n this.style.textAlign = this.align;\n if (changes.data) {\n if (this.data?.length && this.data[0].value) {\n this.dataChange.emit(this.data[0].value);\n } else {\n this.dataChange.emit(null);\n }\n }\n this.cd.markForCheck();\n }\n\n exportWord() {\n let content = this.title;\n if (this.data != null && this.data[0] != null && this.data[0].value != null) {\n content = this.data[0].value;\n }\n if (content) {\n content = content.replace(/\\n/g, '<br/>').replace(/ /g, '&nbsp;');\n const p = document.createElement('p');\n p.innerHTML = content;\n Object.keys(this.style).forEach((key) => {\n this.renderer.setStyle(p, key, this.style[key]);\n });\n return p.outerHTML;\n }\n return null;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GeneralTextComponent } from './general-text.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\n\n@NgModule({\n declarations: [GeneralTextComponent],\n imports: [CommonModule, WidgetBaseModule,NzPipesModule],\n})\nexport class GeneralTextModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(GeneralTextComponent);\n }\n}\n","import { Component, ElementRef, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { Property, Widget, Data } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-marquee',\n templateUrl: './marquee.component.html',\n styleUrls: ['./marquee.component.less'],\n})\n@Widget('跑马灯', { group: 'scrollText', icon: 'iconwenzi' })\nexport class MarqueeComponent implements OnInit, OnChanges {\n @Property('背景', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n background: string;\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: '' };\n @Property('透明度', { ui: { widget: 'myRange', min: 0, max: 1, step: 0.1 } })\n opacity = 1;\n @Property('阴影', { ui: { widget: 'myShadow' } })\n shadow: any = { color: '', X: 0, Y: 0, Z: 0 };\n @Property('动画', {\n enum: [\n { label: '从下向上滚动', value: 'up' },\n { label: '从上向下滚动', value: 'down' },\n { label: '从左向右滚动', value: 'right' },\n { label: '从右向左滚动', value: 'left' },\n ],\n ui: { widget: 'select' },\n })\n direction = 'left';\n @Property('速度', { ui: { widget: 'myRange', min: 0, max: 20, step: 1 } })\n scrollamount = 2;\n @Property('轨迹', {\n enum: [\n { label: '循环绕行', value: 'scroll' },\n { label: '播放一次', value: 'slide' },\n { label: '来回往复运动', value: 'alternate' },\n ],\n ui: { widget: 'select' },\n })\n behavior = 'scroll';\n\n @Data({\n properties: {\n value: { type: 'string', title: '值' },\n },\n })\n data: any[] = [{ value: '跑马灯' }];\n style: any;\n display = true;\n\n constructor() {}\n\n ngOnInit() {\n this.style = {\n backgroundColor: this.background,\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n opacity: this.opacity,\n boxShadow: this.shadow.color + ' ' + this.shadow.X + 'px ' + this.shadow.Y + 'px ' + this.shadow.Z + 'px',\n };\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data) {\n this.reset();\n }\n }\n\n /**\n * 数据改变之后重置跑马灯\n */\n reset() {\n this.display = false;\n setTimeout(() => (this.display = true));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MarqueeComponent } from './marquee.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [MarqueeComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class MarqueeModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(MarqueeComponent);\n }\n}\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { Property, Widget, Data } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-wordart',\n templateUrl: './wordart.component.html',\n styleUrls: ['./wordart.component.less']\n})\n@Widget('艺术字', { group: 'wordart', icon: 'iconwenzi' })\nexport class WordartComponent implements OnInit {\n @Property('内容')\n title = '艺术字';\n @Property('背景', { ui: { widget: 'myColor', example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null] } })\n background: string;\n @Property('字体', { ui: { widget: 'myFont' , hideProperty: {size: true, lineHeight: true, space: true }} })\n font: any = { family: '', color: '#333333', weight: 'normal', size: 12, space: 0, lineHeight: '' };\n @Property('透明度', { ui: { widget: 'myRange', min: 0, max: 1, step: 0.1 } })\n opacity = 1;\n @Property('渐变色', { ui: { hidden: true } })\n backgroundImage: string;\n @Property('文字对齐', {\n ui: { widget: 'select' },\n enum: [\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n { label: '居中', value: 'center' }\n ]\n })\n align = 'left';\n style: any;\n @Data({\n properties: {\n value: { type: 'string', title: '值' },\n },\n })\n data: any[] = [];\n constructor(private ele: ElementRef) { }\n\n ngOnInit() {\n this.style = {\n fontSize: this.ele.nativeElement.offsetHeight > (this.ele.nativeElement.offsetWidth - 10) / this.title.length ? (this.ele.nativeElement.offsetWidth - 10) / this.title.length + 'px' : (this.ele.nativeElement.offsetHeight - 10) + 'px',\n lineHeight: this.ele.nativeElement.offsetHeight > this.ele.nativeElement.offsetWidth / this.title.length ? (this.ele.nativeElement.offsetWidth - 10) / this.title.length + 'px' : (this.ele.nativeElement.offsetHeight - 10) + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n opacity: this.opacity\n }\n if (this.backgroundImage) {\n this.style.backgroundImage = this.backgroundImage;\n }\n this.ele.nativeElement.style.backgroundColor = this.background;\n this.ele.nativeElement.style.textAlign = this.align;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WordartComponent } from './wordart.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [WordartComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class WordartModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(WordartComponent);\n }\n}\n","import { Component, OnInit, ElementRef } from '@angular/core';\nimport { Property, Widget } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-iconfont',\n templateUrl: './iconfont.component.html',\n styleUrls: ['./iconfont.component.less'],\n})\n@Widget('图标', { group: 'iconfont', icon: 'icontupian' })\nexport class IconfontComponent implements OnInit {\n\n @Property('图标', { ui: { hidden: true } })\n type = 'iconfont';\n @Property('图标名称', { ui: { hidden: true } })\n icon: string;\n // @Property('图标大小',{ui:{widget: 'myRange',min: 12, max: 150, step: 2}})\n // fontSize: number = 40;\n @Property('图标颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n background = '#3285FF';\n style: any;\n hideHead: boolean;\n constructor(private element: ElementRef) {}\n\n ngOnInit() {\n this.style = {\n fontSize:\n this.element.nativeElement.offsetWidth > this.element.nativeElement.offsetHeight\n ? this.element.nativeElement.offsetHeight + 'px'\n : this.element.nativeElement.offsetWidth + 'px',\n lineHeight:\n this.element.nativeElement.offsetWidth > this.element.nativeElement.offsetHeight\n ? this.element.nativeElement.offsetHeight + 'px'\n : this.element.nativeElement.offsetWidth + 'px',\n color: this.background,\n };\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconfontComponent } from './iconfont.component';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [IconfontComponent],\n imports: [CommonModule, WidgetBaseModule, NzIconModule],\n})\nexport class IconfontModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(IconfontComponent);\n }\n}\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FileUrlService {\r\n getUrl(url: string) {\r\n return url;\r\n }\r\n}\r\n","import { Component, ElementRef, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { LazyService } from '@delon/util';\nimport { Widget, Property, Data } from 'bbj-widget-base';\nimport { FileUrlService } from '../shared/service/file-url.service';\ndeclare const flvjs;\n@Component({\n selector: 'sc-audio',\n templateUrl: './audio.component.html',\n styleUrls: ['./audio.component.less'],\n})\n@Widget('音频', { group: 'audio', icon: 'icontupian' })\nexport class AudioComponent implements OnInit, OnChanges{\n @Property('', {\n min: 1,\n type: 'string',\n ui: { widget: 'radio', spanLabel: 0, spanControl: 24 },\n enum: [\n { value: 'video', label: '视频' },\n { value: 'audio', label: '音频' },\n { value: 'auto', label: '自动' },\n ],\n })\n type = 'video';\n @Property('', {\n min: 1,\n ui: {\n widget: 'myUploadAudio',\n spanLabel: 0,\n spanControl: 24,\n list: [\n { name: '无', value: null },\n { name: '测试一号', value: 'https://xiche.oss-cn-beijing.aliyuncs.com/video/20180417154421.mp4' },\n { name: '测试二号', value: 'https://xiche.oss-cn-beijing.aliyuncs.com/video/20180508102521.mp4' },\n ],\n },\n })\n src: string;\n @Property('透明度', { ui: { widget: 'myRange', min: 0, max: 1, step: 0.1 } })\n opacity = 1;\n @Property('阴影', { ui: { widget: 'myShadow' } })\n shadow: any = { color: '', X: 0, Y: 0, Z: 0 };\n @Data({\n properties: {\n src: { title: '视频/音频地址', type: 'string' },\n },\n })\n data: any[];\n _src: string;\n\n @Property('视频格式', {\n enum: [\n { label: 'MP4', value: 'mp4' },\n { label: 'flv', value: 'flv' },\n ],\n ui: { visibleIf: { type: ['video'] }, widget: 'select' },\n })\n videoType: string;\n\n @Property('是否有声音', { ui: { visibleIf: { videoType: ['flv'] } } })\n hasAudio: boolean;\n style: any;\n @ViewChild('video')\n video: ElementRef;\n flvPlayer: any;\n obj: any;\n // loadFlvPromise: Promise<any>;\n _type: string;\n // destroyed: boolean;\n constructor( private fileUrlService: FileUrlService) {}\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.style = {\n opacity: this.opacity,\n boxShadow: this.shadow.color + ' ' + this.shadow.X + 'px ' + this.shadow.Y + 'px ' + this.shadow.Z + 'px',\n };\n if (changes.type || changes.videoType || changes.src || changes.data) {\n this.reset();\n }\n }\n\n async reset() {\n this._src = null;\n let url: string;\n if (this.data && this.data.length && this.data[0].src) {\n url = this.data[0].src;\n } else {\n url = this.src;\n }\n url = this.fileUrlService.getUrl(url);\n if (this.type === 'auto' && url && url.includes('.')) {\n const ext = url.substring(url.lastIndexOf('.') + 1);\n switch (ext) {\n case 'png':\n case 'jpg':\n this._type = 'image';\n break;\n case 'mp4':\n this._type = 'video';\n break;\n case 'mp3':\n this._type = 'audio';\n break;\n }\n } else {\n this._type = this.type;\n if (this._type === 'video' && this.videoType === 'flv') {\n this._type = 'flv';\n }\n }\n this._src = url;\n // if (url) {\n // if (this._type === 'video' && this.videoType === 'flv') {\n // const obj = new Object();\n // this.obj = obj;\n // await this.loadFlv();\n // if (this.obj === obj && !this.destroyed) {\n // this.destroyFlv();\n // // 防止异步操作先后顺序问题\n // this.flvPlayer = flvjs.createPlayer(\n // {\n // type: 'flv',\n // url,\n // hasAudio: this.hasAudio === true,\n // hasVideo: true,\n // isLive: true,\n // withCredentials: false,\n // },\n // {\n // enableWorker: false,\n // lazyLoadMaxDuration: 3 * 60,\n // seekType: 'range',\n // },\n // );\n // this.flvPlayer.attachMediaElement(this.video.nativeElement);\n // console.log('load');\n // this.flvPlayer.load();\n // }\n // } else {\n // this._src = url;\n // }\n // }\n }\n\n // loadFlv() {\n // if (this.loadFlvPromise == null) {\n // this.loadFlvPromise = this.lazy.loadScript('assets/js/flv.min.js');\n // }\n // return this.loadFlvPromise;\n // }\n\n // destroyFlv() {\n // if (this.flvPlayer) {\n // console.log('destroy');\n // this.flvPlayer.unload();\n // this.flvPlayer.detachMediaElement();\n // this.flvPlayer.destroy();\n // this.flvPlayer = null;\n // }\n // }\n\n // ngOnDestroy(): void {\n // this.destroyFlv();\n // this.destroyed = true;\n // }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { LazyResult, LazyService } from '@delon/util';\nimport { FileUrlService } from '../../service/file-url.service';\ndeclare const flvjs;\ndeclare const Hls;\n@Component({\n selector: 'sc-video-player',\n templateUrl: './video-player.component.html',\n styleUrls: ['./video-player.component.less'],\n})\nexport class VideoPlayerComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n static loadFlvPromise: Promise<LazyResult>;\n static loadHlsPromise: Promise<LazyResult>;\n @Input()\n type: string;\n @Input()\n src: string;\n @Input()\n hasAudio: boolean;\n @ViewChild('video', { static: false })\n video: ElementRef<HTMLVideoElement>;\n flvPlayer: any;\n hlsPlayer: any;\n destroyed: boolean;\n initd: boolean;\n\n constructor(private lazy: LazyService, private fileUrlService: FileUrlService) {}\n\n ngOnInit() {\n\n }\n\n ngAfterViewInit(): void {\n this.reset();\n this.initd = true;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.initd && (changes.type || changes.src)) {\n this.reset();\n }\n }\n\n reset() {\n if (this.type === 'hls') {\n this.resetHls();\n } else if (this.type === 'iframe') {\n this.destroy();\n } else {\n this.resetFlv();\n }\n }\n\n loadHls() {\n if (VideoPlayerComponent.loadHlsPromise == null) {\n VideoPlayerComponent.loadHlsPromise = this.lazy.loadScript('/assets/js/hls.js');\n }\n return VideoPlayerComponent.loadHlsPromise;\n }\n\n async resetHls() {\n await this.loadHls();\n this.destroy();\n if (this.src && Hls.isSupported() && !this.destroyed) {\n const url = this.fileUrlService.getUrl(this.src);\n this.hlsPlayer = new Hls();\n this.hlsPlayer.loadSource(url);\n this.hlsPlayer.attachMedia(this.video.nativeElement);\n }\n }\n\n async resetFlv() {\n await this.loadFlv();\n this.destroy();\n // TODO 目前只做了flv,接下来要根据type播放不同类型\n if (this.src && !this.destroyed) {\n const url = this.fileUrlService.getUrl(this.src);\n this.flvPlayer = flvjs.createPlayer(\n {\n type: 'flv',\n url,\n hasAudio: this.hasAudio === true,\n hasVideo: true,\n isLive: true,\n withCredentials: false,\n },\n {\n enableWorker: false,\n lazyLoadMaxDuration: 3 * 60,\n seekType: 'range',\n },\n );\n this.flvPlayer.attachMediaElement(this.video.nativeElement);\n this.flvPlayer.load();\n }\n }\n\n loadFlv() {\n if (VideoPlayerComponent.loadFlvPromise == null) {\n VideoPlayerComponent.loadFlvPromise = this.lazy.loadScript('assets/js/flv.min.js');\n }\n return VideoPlayerComponent.loadFlvPromise;\n }\n\n destroy() {\n if (this.flvPlayer) {\n this.flvPlayer.unload();\n this.flvPlayer.detachMediaElement();\n this.flvPlayer.destroy();\n this.flvPlayer = null;\n }\n if (this.hlsPlayer) {\n this.hlsPlayer.destroy();\n this.hlsPlayer = null;\n }\n }\n\n ngOnDestroy(): void {\n this.destroy();\n this.destroyed = true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VideoPlayerComponent } from './video-player.component';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\n\n@NgModule({\n declarations: [VideoPlayerComponent],\n imports: [CommonModule, NzPipesModule],\n exports: [VideoPlayerComponent],\n})\nexport class VideoPlayerModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AudioComponent } from './audio.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { VideoPlayerModule } from '../shared/component/video-player/video-player.module';\n\n@NgModule({\n declarations: [AudioComponent],\n imports: [CommonModule, WidgetBaseModule, VideoPlayerModule],\n})\nexport class AudioModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(AudioComponent);\n }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Property, Widget, Data, Drill, DataOutput } from 'bbj-widget-base';\nimport { BasicLineChartComponent } from '../basic-line-chart/basic-line-chart.component';\n\n@Component({\n selector: 'sc-basic-bar-chart',\n templateUrl: './basic-bar-chart.component.html',\n styleUrls: ['./basic-bar-chart.component.less'],\n})\n@Widget('基本柱状图', {\n group: 'barChart',\n image: 'assets/img/screen/baseBar.png',\n icon: 'icontubiao',\n})\nexport class BasicBarChartComponent extends BasicLineChartComponent implements OnInit, OnChanges {\n @Property('类型', { ui: { hidden: true } })\n type = 'basic';\n @Property('图表样式', {\n ui: {\n widget: 'myImageExample',\n spanLabel: 24,\n spanControl: 24,\n reset: ['barColor'],\n example: [\n {\n background: 'assets/img/screen/bar1.png',\n data: { barColor: { gradient: true, value: [['#FFEF66', '#FF851D']] } },\n },\n {\n background: 'assets/img/screen/bar2.png',\n data: { barColor: { gradient: true, value: [['#00FECB', '#00D191']] } },\n },\n {\n background: 'assets/img/screen/bar3.png',\n data: { barColor: { gradient: true, value: [['#00D2FD', '#3285FF']] } },\n },\n {\n background: 'assets/img/screen/bar4.png',\n data: { barColor: { gradient: true, value: [['#FF3699', '#8934F8']] } },\n },\n ],\n },\n })\n example: any;\n @Property('填充', {\n ui: {\n widget: 'seriesColor',\n type: 'gradual',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n barColor = { gradient: true, value: [['#00D2FD', '#3285FF']] };\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#595F7A',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n @Property('单系多色')\n colorSwitch: boolean;\n\n @Property('类别颜色', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n visibleIf: { colorSwitch: [true] },\n },\n })\n colors = ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'];\n @Property('边距', { ui: { widget: 'myGrid' } })\n grid: any = {\n top: 30,\n right: 30,\n bottom: 36,\n left: 38,\n };\n @Property('图例', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'none' },\n { label: '自动', value: 'auto' },\n { label: '居中', value: 'center' },\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n ],\n })\n align = 'center';\n @Property('轴隐藏', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'true' },\n { label: 'x轴', value: '0' },\n { label: 'y轴', value: '1' },\n { label: '两轴', value: 'false' },\n ],\n })\n axisShow = 'true';\n @Property('刻度隐藏', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'true' },\n { label: 'x轴', value: '0' },\n { label: 'y轴', value: '1' },\n { label: '两轴', value: 'false' },\n ],\n })\n scaleShow = 'true';\n // @Property('轴单位', {ui: {widget: 'myUnit'}})\n // unit = {x: '', y: '', yMax: ''};\n @Property('y轴单位', { type: 'string' })\n yUnit = '';\n @Property('x轴单位', { type: 'string' })\n xUnit = '';\n @Property('y轴最小')\n yMin: number;\n @Property('y轴最大')\n yMax: number;\n @Property('y轴最小间隔')\n yMinInterval: number;\n @Property('y轴最大增减')\n yMaxAddNum: number;\n @Property('网络线', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n netLine = false;\n @Property('网络线颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n netLineColor = 'rgba(255,255,255,0.2)';\n @Property('标签', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'none' },\n { label: '居上', value: 'top' },\n { label: '居中', value: 'inside' },\n { label: '居右', value: 'right' },\n ],\n })\n labelDirection = 'none';\n @Property('列间距', { ui: { widget: 'myRange', min: 0, max: 100, step: 10 } })\n barCategoryGap = 40;\n @Property('圆角', { ui: { widget: 'myRange', min: 0, max: 100, step: 1 } })\n barBorderRadius: 20;\n @Property('x轴类型', {\n enum: [\n { label: '类目', value: 'category' },\n { label: '时间', value: 'time' },\n ],\n })\n xType = 'category';\n @Property('轴标签角度', {\n ui: { widget: 'myRange', min: -90, max: 90, step: 10 },\n })\n xLabelRotate = 0;\n @Property('x轴文本宽度')\n xLabelWidth: number;\n @Property('x轴文字宽度超出', {\n enum: [\n { label: '自动', value: 'auto' },\n { label: '截断', value: 'truncate' },\n { label: '换行', value: 'break' },\n { label: '强制换行', value: 'breakAll' },\n ],\n })\n xLabelOverflow = 'auto';\n @Property('标签显示间隔', {\n ui: {\n optionalHelp: {\n text: `默认会采用标签不重叠的策略间隔显示标签。\n可以设置成 0 强制显示所有标签。 \n如果设置为 1,表示『隔一个标签显示一个标签』,如果值为 2,表示隔两个标签显示一个标签,以此类推。`,\n overlayStyle: {\n whiteSpace: 'pre-line',\n },\n },\n },\n })\n xLabelInterval: number;\n\n @Property('区域缩放')\n insideDataZoom: boolean;\n @Property('缩放最少数量', { ui: { visibleIf: { insideDataZoom: [true] } } })\n dataZoomMinData: number;\n @Property('缩放开始百分比', { ui: { visibleIf: { insideDataZoom: [true] } } })\n dataZoomStart: number;\n @Property('缩放结束百分比', { ui: { visibleIf: { insideDataZoom: [true] } } })\n dataZoomEnd: number;\n @Property('滚轮缩放', {\n enum: [\n { label: '启用', value: true },\n { label: '禁用', value: false },\n { label: '按住shift', value: 'shift' },\n { label: '按住ctrl', value: 'ctrl' },\n { label: '按住alt', value: 'alt' },\n ],\n ui: { widget: 'select', visibleIf: { insideDataZoom: [true] } },\n })\n zoomOnMouseWheel = true;\n @Property('滑动条', { ui: { visibleIf: { insideDataZoom: [true] } } })\n sliderDataZoom: boolean;\n @Property('锁定区域大小', { ui: { visibleIf: { sliderDataZoom: [true] } } })\n zoomLock: boolean;\n @Property('提示框字体', { ui: { widget: 'myFont' } })\n tooltipFont: any;\n @Property('显示柱条背景', { type: 'boolean' })\n showBackground = true;\n @Property('标线', { type: 'boolean' })\n markLine = false;\n @Property('Y轴标线高度', { type: 'number', ui: { visibleIf: { markLine: [true] } } })\n YmarkLineHeight = 10;\n\n // @Property('显示X轴', {\n // ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n // })\n // showX = true;\n @Property('Y标线标题', {\n type: 'string',\n ui: { visibleIf: { markLine: [true] }, optionalHelp: '此标题需要跟x字段内名字一致' },\n })\n YmarkLineName = '';\n // @Property('标线数值', { type: 'number' })\n // markLineVal = null;\n\n @Property('Y标线类型', {\n ui: { widget: 'select', visibleIf: { markLine: [true] } },\n enum: [\n { label: '实线', value: 'solid' },\n { label: '虚线', value: 'dashed' },\n { label: '点线', value: 'dotted' },\n ],\n })\n YmarkLineType = 'dashed';\n\n @Property('Y标线颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n visibleIf: { markLine: [true] },\n },\n })\n YmarkLineColor = '#f00';\n @Property('Y标线粗细', {\n type: 'number',\n ui: { visibleIf: { markLine: [true] } },\n })\n YmarkWidth = 2;\n @Property('X轴标线位置', { type: 'string', ui: { visibleIf: { markLine: [true] } } })\n XmarkLineLocation = '二月';\n @Property('X标线标题', {\n type: 'string',\n ui: { optionalHelp: '此标题需要跟x字段内名字一致', visibleIf: { markLine: [true] } },\n })\n XmarkLineName = '';\n @Property('X标线类型', {\n ui: { widget: 'select', visibleIf: { markLine: [true] } },\n enum: [\n { label: '实线', value: 'solid' },\n { label: '虚线', value: 'dashed' },\n { label: '点线', value: 'dotted' },\n ],\n })\n XmarkLineType = 'dashed';\n\n @Property('X标线颜色', {\n ui: {\n visibleIf: { markLine: [true] },\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n XmarkLineColor = '#f00';\n @Property('X标线粗细', {\n type: 'number',\n ui: { visibleIf: { markLine: [true] } },\n })\n XmarkWidth = 2;\n chartOption: any = {};\n\n @Data({\n properties: {\n x: { type: 'string', title: '类目' },\n y: { type: 'number', title: '值' },\n s: { type: 'string', title: '系列' },\n },\n })\n _data = [\n { x: '一月', y: 10, s: '收入' },\n { x: '二月', y: 20, s: '收入' },\n { x: '三月', y: 25, s: '收入' },\n { x: '四月', y: 35, s: '收入' },\n { x: '五月', y: 27, s: '收入' },\n { x: '六月', y: 28, s: '收入' },\n { x: '一月', y: 18, s: '支出' },\n { x: '二月', y: 28, s: '支出' },\n { x: '三月', y: 32, s: '支出' },\n { x: '四月', y: 48, s: '支出' },\n { x: '五月', y: 20, s: '支出' },\n { x: '六月', y: 17, s: '支出' },\n ];\n\n @Drill()\n @DataOutput(['x', 's'])\n dataClick = new EventEmitter<any>();\n xData = [];\n yData = [];\n color = [];\n legends = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n // this.reloadData();\n const dataShadow: number[] = [];\n const maxNum = this.getMaxY();\n dataShadow.fill(maxNum, 0, this.xData.length);\n const textStyle = this.getTextStyle(this.font);\n this.style = textStyle;\n let hori = this.horizontal;\n let barColors: string[][];\n if (this.barColor && this.barColor.value) {\n barColors = this.barColor.value;\n } else {\n barColors = this.barColor as any;\n }\n this.color = barColors.map((barColor) => ({\n type: 'linear',\n x: 0,\n y: 0,\n x2: hori ? 1 : 0,\n y2: hori ? 0 : 1,\n global: false,\n colorStops: [\n { offset: 0, color: barColor[0] },\n { offset: 1, color: barColor[1] },\n ],\n }));\n\n let xAxis: any = this.getXAxis();\n\n let yAxis: any = this.getYAxis();\n let grid: any = {\n top: this.grid.top,\n right: this.grid.right,\n left: this.grid.left,\n bottom: this.grid.bottom,\n };\n if (this.type === 'dcolor') {\n const yAxis1 = yAxis;\n const yAxis2 = this.getYAxis();\n yAxis1.inverse = true;\n yAxis = [yAxis1, yAxis2];\n yAxis.forEach((axis, i) => {\n axis.gridIndex = i;\n axis.position = 'top';\n });\n xAxis = [xAxis, this.getXAxis()];\n xAxis.forEach((axis, i) => {\n axis.gridIndex = i;\n });\n grid = [\n {\n right: '50%',\n },\n {\n left: '50%',\n },\n ];\n }\n const dataZoom = this.getDataZoom();\n this.chartOption = {\n dataZoom,\n tooltip: this.getTooltip(),\n legend: this.getLegend(),\n grid,\n xAxis: !hori ? xAxis : yAxis,\n yAxis: !hori ? yAxis : xAxis,\n color: this.color,\n series: [],\n };\n this.reloadData();\n }\n }\n\n ngOnInit() {}\n\n get horizontal(): boolean {\n return this.type === 'hori' || this.type === 'horiD' || this.type === 'dcolor';\n }\n\n getXAxis(): any {\n let XdisplayScaleShow =\n this.scaleShow === 'true' ? true : this.scaleShow === '0' ? false : this.scaleShow === '1' ? true : false;\n return {\n nameTextStyle: this.style,\n type: this.xType || 'category',\n name: this.xUnit,\n axisLine: {\n show: this.axisShow === 'true' ? true : this.axisShow === '0' ? false : this.axisShow === '1' ? true : false,\n lineStyle: {\n color: this.font.color,\n },\n },\n axisTick: {\n show: XdisplayScaleShow,\n },\n axisLabel: {\n ...this.style,\n show: XdisplayScaleShow,\n rotate: this.xLabelRotate,\n width: this.xLabelWidth,\n overflow: this.xLabelOverflow,\n interval: this.xLabelInterval,\n },\n };\n }\n\n getYAxis(): any {\n let YdisplayScaleShow =\n this.scaleShow === 'true' ? true : this.scaleShow === '0' ? true : this.scaleShow === '1' ? false : false;\n return {\n nameTextStyle: this.style,\n type: 'value',\n name: this.yUnit,\n axisLine: {\n show: this.axisShow === 'true' ? true : this.axisShow === '0' ? true : this.axisShow === '1' ? false : false,\n lineStyle: {\n color: this.font.color,\n },\n },\n axisTick: {\n show: YdisplayScaleShow,\n },\n min: this.yMin,\n max: (value) => {\n const yMax = Number(this.yMax ? this.yMax : value.max);\n return Math.ceil(this.yMaxAddNum ? yMax + Number(this.yMaxAddNum) : yMax);\n },\n axisLabel: {\n ...this.style,\n show: YdisplayScaleShow,\n // formatter: '{value}' + this.yUnit,\n },\n splitLine: {\n show: this.netLine,\n lineStyle: {\n type: 'dashed',\n color: this.netLineColor,\n },\n },\n minInterval: this.yMinInterval,\n };\n }\n\n setSeriesStyle(name: string, datasetIndex: number) {\n const textStyle = this.style;\n const i = this.chartOption.series.length;\n const series = {\n name,\n showBackground: this.showBackground,\n xAxisIndex: this.type === 'dcolor' ? i : 0,\n yAxisIndex: this.type === 'dcolor' ? i : 0,\n label: {\n normal: {\n show: this.labelDirection === 'none' ? false : true,\n // formatter: '{@' + name + '}',\n position: this.labelDirection || '',\n textStyle,\n },\n },\n barCategoryGap: this.barCategoryGap + '%',\n itemStyle: {\n barBorderRadius: this.barBorderRadius,\n },\n stack: this.type === 'double' || this.type === 'horiD' ? '0' : null,\n type: 'bar',\n areaStyle: {\n opacity: 0,\n },\n emphasis: {\n focus: this.type === 'double' || this.type === 'horiD' ? 'series' : null,\n },\n encode: this.horizontal ? { y: 'x', x: 'y' } : { x: 'x', y: 'y' },\n datasetIndex,\n };\n this.chartOption.series.push(series);\n return series;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport {BasicBarChartComponent} from './basic-bar-chart.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [\n BasicBarChartComponent\n ],\n imports: [\n CommonModule,\n WidgetBaseModule,\n NgxEchartsModule\n ]\n})\nexport class BasicBarChartModule {\n constructor(private widgetService:WidgetService){\n widgetService.register(BasicBarChartComponent);\n }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Property, Widget, Data, Drill, DataOutput } from 'bbj-widget-base';\nimport { BasicLineChartComponent } from '../basic-line-chart/basic-line-chart.component';\n\n@Component({\n selector: 'sc-basic-pie-chart',\n templateUrl: './basic-pie-chart.component.html',\n styleUrls: ['./basic-pie-chart.component.less'],\n})\n@Widget('饼图', {\n group: 'pieChart',\n image: 'assets/img/screen/pie.png',\n icon: 'icontubiao',\n})\nexport class BasicPieChartComponent extends BasicLineChartComponent implements OnInit, OnChanges {\n @Property('类型', { ui: { hidden: true } })\n type = 'basic';\n @Property('图表样式', {\n ui: {\n widget: 'myImageExample',\n spanLabel: 24,\n spanControl: 24,\n reset: ['pieColor'],\n class: 'pie',\n example: [\n {\n background: 'assets/img/screen/pie1.png',\n data: {\n pieColor: {\n gradient: true,\n value: [\n ['#FFB82E', '#FFB82E'],\n ['#FF7C24', '#FF7C24'],\n ['#FF610F', '#FF610F'],\n ['#EE2100', '#EE2100'],\n ['#A52501', '#A52501'],\n ['#7B2C04', '#7B2C04'],\n ],\n },\n },\n },\n {\n background: 'assets/img/screen/pie2.png',\n data: {\n pieColor: {\n gradient: true,\n value: [\n ['#00FEC3', '#00FEC3'],\n ['#00F4A8', '#00F4A8'],\n ['#00D59B', '#00D59B'],\n ['#00B880', '#00B880'],\n ['#00896E', '#00896E'],\n ['#006A60', '#006A60'],\n ],\n },\n },\n },\n {\n background: 'assets/img/screen/pie3.png',\n data: {\n pieColor: {\n gradient: true,\n value: [\n ['#45C1FC', '#45C1FC'],\n ['#00A1FB', '#00A1FB'],\n ['#0076B7', '#0076B7'],\n ['#004D7E', '#004D7E'],\n ['#003560', '#003560'],\n ['#001736', '#001736'],\n ],\n },\n },\n },\n {\n background: 'assets/img/screen/pie4.png',\n data: {\n pieColor: {\n gradient: true,\n value: [\n ['#BF91FA', '#BF91FA'],\n ['#9B35F8', '#9B35F8'],\n ['#9813D9', '#9813D9'],\n ['#790588', '#790588'],\n ['#B30B9A', '#B30B9A'],\n ['#DC1098', '#DC1098'],\n ],\n },\n },\n },\n ],\n },\n })\n example: any;\n @Property('填充', {\n ui: {\n widget: 'seriesColor',\n type: 'gradual',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n pieColor = {\n gradient: true,\n value: [\n ['#45C1FC', '#45C1FC'],\n ['#00A1FB', '#00A1FB'],\n ['#0076B7', '#0076B7'],\n ['#004D7E', '#004D7E'],\n ['#003560', '#003560'],\n ['#001736', '#001736'],\n ],\n };\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: '',\n };\n @Property('图例', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'none' },\n { label: '自动', value: 'auto' },\n { label: '纵向居中', value: 'center' },\n { label: '纵向居左', value: 'left' },\n { label: '纵向居右', value: 'right' },\n ],\n })\n align = 'none';\n @Property('图例呈现', {\n ui: { widget: 'select' },\n enum: [\n { label: '数据', value: 'data' },\n { label: '百分比', value: 'percent' },\n { label: '数据-百分比', value: 'both' },\n ],\n })\n legentData = 'data';\n @Property('线标', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n lineMark = false;\n @Property('浮标', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n buoy = false;\n @Property('缩放', { type: 'number' })\n radius = 1;\n @Property('边距', { ui: { widget: 'myGrid', type: 'pie' } })\n grid: any = {\n top: 50,\n left: 50,\n };\n\n @Property('环宽', { type: 'number' })\n roundWidth = 15;\n\n @Property('增加隔断', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n addSplit = false;\n\n @Property('单位')\n unit: string;\n\n seriesDataPie = [];\n xData = [];\n radiusPie = ['0%', '75%'];\n chartOption: any = {};\n roseType = 'false';\n @Data({\n properties: {\n x: { type: 'string', title: '类目' },\n y: { type: 'number', title: '值' },\n },\n })\n _data = [\n { x: '一月', y: 33 },\n { x: '二月', y: 31 },\n { x: '三月', y: 11 },\n { x: '四月', y: 11 },\n { x: '五月', y: 7 },\n { x: '六月', y: 20 },\n ];\n @Drill()\n @DataOutput(['x'])\n dataClick = new EventEmitter<any>();\n // 隔断样式\n splitWidth = 0;\n splitItem = {\n value: this.splitWidth,\n name: 'split',\n itemStyle: {\n normal: {\n label: {\n show: false,\n },\n labelLine: {\n show: false,\n },\n color: 'rgba(0, 0, 0, 0)',\n borderColor: 'rgba(0, 0, 0, 0)',\n borderWidth: 0,\n },\n },\n };\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n if (this._data == null) {\n this._data = [];\n }\n this.getPieData();\n if (this.addSplit) {\n // 计算隔断层的宽度 取1%作为隔断\n const splitWidth = this._data.reduce((a, b) => a + Number(b.y), 0) / 100;\n this.splitItem.value = splitWidth;\n }\n if (this.type === 'ring' || this.type === 'roseRing') {\n const min = 75 - (Math.abs(Number(this.roundWidth)) || 75); // 获取最小的宽度 最大宽固定是75\n this.radiusPie = [`${min}%`, '75%'];\n } else {\n this.radiusPie = ['0%', '75%'];\n }\n if (this.radius != null) {\n this.radiusPie[0] = parseInt(this.radiusPie[0], 10) * this.radius + '%';\n this.radiusPie[1] = parseInt(this.radiusPie[1], 10) * this.radius + '%';\n }\n if (this.type === 'rose' || this.type === 'roseRing') {\n this.roseType = 'radius';\n }\n const objData = this.array2obj(this.seriesDataPie, 'name');\n const color = [];\n const textStyle = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n let pieColor;\n if (this.pieColor && this.pieColor.value) {\n pieColor = this.pieColor.value;\n } else {\n pieColor = this.pieColor;\n }\n for (let i = 0; i < pieColor.length; i++) {\n color.push(pieColor[i][0]);\n }\n this.chartOption = {\n tooltip: {\n show: this.buoy,\n textStyle: {\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n },\n trigger: 'item',\n // formatter: '{b} : {c} ({d}%)',\n formatter: (item) => {\n return item.name === 'split' ? '' : `${item.name}: ${this.addUnit(item.value)}(${item.percent}%)`;\n },\n },\n legend: {\n type: 'scroll',\n orient: 'vertical',\n data: this.xData,\n x: this.align,\n show: this.align !== 'none',\n // formatter: function (name) {\n // return name + '(' + objData[name].value + ')';\n // },\n textStyle,\n },\n color,\n series: [\n {\n name: 'pie',\n type: 'pie',\n roseType: this.roseType === 'radius' ? 'radius' : false,\n label: {\n normal: {\n show: this.lineMark,\n formatter: (item) => {\n return item.name === 'split' ? '' : this.addUnit(item.value);\n },\n textStyle,\n },\n },\n center: [this.grid.left + '%', this.grid.top + '%'],\n radius: this.radiusPie,\n labelLine: {\n normal: {\n show: this.lineMark,\n },\n },\n textStyle,\n data: [],\n // ,\n // data: this.seriesDataPie\n /* .sort(function(a, b) {\n return a.value - b.value;\n }),*/\n },\n ],\n // dataset: {\n // // 用 dimensions 指定了维度的顺序。直角坐标系中,\n // // 默认把第一个维度映射到 X 轴上,第二个维度映射到 Y 轴上。\n // // 如果不指定 dimensions,也可以通过指定 series.encode\n // // 完成映射,参见后文。\n // // dimensions: [],\n // source: [],\n // },\n };\n this.reloadData();\n // console.log(this.chartOption);\n if (this.legentData === 'percent') {\n this.chartOption.legend.formatter = (name: string) => {\n let total = 0;\n Object.keys(objData).forEach((key) => {\n for (const a of objData[key]) {\n total += parseInt(a.value, 10);\n }\n });\n let b = 0;\n for (const a of objData[name]) {\n b += Number(a.value);\n }\n const p = ((b / total) * 100).toFixed(0);\n return name + '(' + p + '%)';\n };\n }\n if (this.legentData === 'both') {\n this.chartOption.legend.formatter = (name) => {\n let total = 0;\n Object.keys(objData).forEach((key) => {\n // console.log(key);\n for (const a of objData[key]) {\n total += parseInt(a.value, 10);\n }\n });\n let b = 0;\n for (const a of objData[name]) {\n b += Number(a.value);\n }\n const p = ((b / total) * 100).toFixed(0);\n return name + '(' + this.addUnit(b) + '-' + p + '%)';\n };\n }\n if (this.legentData === 'data') {\n this.chartOption.legend.formatter = (name) => {\n let total = 0;\n // for (let key of Object.keys(objData)) {\n for (const a of objData[name]) {\n total += Number(a.value);\n }\n // total += Number(objData[key].value);\n // }\n // let p = ((objData[name].value / total) * 100).toFixed(0);\n return name + '(' + this.addUnit(total) + ')';\n };\n }\n }\n }\n\n addUnit(value: any) {\n if (this.unit && value != null && value !== '') {\n value += this.unit;\n }\n return value;\n }\n\n reloadData() {\n const source = [];\n const addSplit = this.addSplit && this._data.filter((item) => item.y).length > 1;\n this._data.forEach((record) => {\n // const x=record.x;\n // const s=record.s;\n // const y=record.y;\n const { x, y } = record;\n const arr = {\n name: x,\n value: Number(y),\n };\n // arr.push(x, Number(y));\n source.push(arr);\n if (addSplit) {\n source.push(this.splitItem);\n }\n });\n this.chartOption.series[0].data = source;\n // this.chartOption.dataset.source = source;\n this._data.forEach((a) => {\n const x = { name: a.x };\n this.xData.push(x);\n });\n this.uniqueData(this.xData);\n }\n\n ngOnInit() {}\n\n getPieData() {\n this.seriesDataPie = [];\n let total = 0;\n if (this.addSplit) {\n this._data.forEach((t) => {\n total += t.y;\n });\n }\n for (let i = 0; i < this._data.length; i++) {\n // if (total > 0 && this._data[i].y / total >= 1) {\n // this.addSplit = false;\n // }\n this.seriesDataPie.push({\n value: this._data[i].y,\n name: this._data[i].x,\n });\n }\n }\n\n array2obj(array, key) {\n const resObj = {};\n for (let i = 0; i < array.length; i++) {\n if (!resObj[array[i][key]]) {\n resObj[array[i][key]] = [];\n }\n resObj[array[i][key]].push(array[i]);\n }\n return resObj;\n }\n\n getLegentData(name) {}\n\n onChartClick(event) {\n this.dataClick.emit({ x: event.name, s: event.seriesName });\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BasicPieChartComponent } from './basic-pie-chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [BasicPieChartComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class BasicPieChartModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(BasicPieChartComponent);\r\n }\r\n}\r\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Property, Widget, Data, Drill, DataOutput } from 'bbj-widget-base';\nimport { BasicLineChartComponent } from '../basic-line-chart/basic-line-chart.component';\nimport 'echarts-gl';\n@Component({\n selector: 'sc-bar-chart-three-d',\n templateUrl: './bar-chart-three-d.component.html',\n styleUrls: ['./bar-chart-three-d.component.less'],\n})\n@Widget('3D柱状图', {\n group: 'barChart',\n image: 'assets/img/screen/basic-bar-chart.png',\n icon: 'icontubiao',\n})\nexport class BarChartThreeDComponent extends BasicLineChartComponent implements OnInit, OnChanges {\n @Property('类型', { ui: { hidden: true } })\n type = 'basic';\n @Property('图表样式', {\n ui: {\n widget: 'myImageExample',\n spanLabel: 24,\n spanControl: 24,\n reset: ['barColor'],\n example: [\n {\n background: 'assets/img/screen/3d1.png',\n data: { barColor: ['#FAA736'] },\n },\n {\n background: 'assets/img/screen/3d2.png',\n data: { barColor: ['#00D190'] },\n },\n {\n background: 'assets/img/screen/3d3.png',\n data: { barColor: ['#3285FF'] },\n },\n {\n background: 'assets/img/screen/3d4.png',\n data: { barColor: ['#8934F8'] },\n },\n ],\n },\n })\n example: any;\n @Property('系列颜色', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n barColor = ['#3285FF', '#00D2FD'];\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n @Property('边距', { ui: { widget: 'myGrid' } })\n grid: any = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n };\n // @Property('轴单位', { ui: { widget: 'myUnit' } })\n // unit = { x: '', y: '' };\n @Property('y轴单位', { type: 'string' })\n yUnit = '';\n @Property('x轴单位', { type: 'string' })\n xUnit = '';\n @Property('y轴最大')\n yMax: number;\n @Property('网络线', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n netLine = false;\n @Property('标签', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n label = false;\n @Property('自动旋转', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n autoRotate = false;\n @Property('柱子宽度', {\n ui: { widget: 'myRange', min: 100, max: 1000, step: 100 },\n })\n boxWidth = 200;\n @Property('柱子深度', {\n ui: { widget: 'myRange', min: 10, max: 100, step: 10 },\n })\n boxDepth = 20;\n\n @Data({\n properties: {\n x: { type: 'string', title: '类目' },\n y: { type: 'number', title: '值' },\n z: { type: 'string', title: '系列' },\n },\n })\n _data = [\n { x: '一月', y: 10, s: '收入' },\n { x: '二月', y: 20, s: '收入' },\n { x: '三月', y: 25, s: '收入' },\n { x: '四月', y: 35, s: '收入' },\n { x: '五月', y: 27, s: '收入' },\n { x: '六月', y: 28, s: '收入' },\n { x: '一月', y: 18, s: '支出' },\n { x: '二月', y: 28, s: '支出' },\n { x: '三月', y: 32, s: '支出' },\n { x: '四月', y: 48, s: '支出' },\n { x: '五月', y: 20, s: '支出' },\n { x: '六月', y: 17, s: '支出' },\n ];\n @Drill()\n @DataOutput(['x', 'z'])\n dataClick = new EventEmitter<any>();\n sData = [];\n series = [];\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n this.reloadData();\n\n const style = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n margin: this.font.lineHeight,\n };\n\n this.chartOption = {\n xAxis3D: {\n name: this.xUnit,\n nameTextStyle: style,\n type: 'category',\n splitLine: {\n show: false,\n },\n data: this.xData,\n },\n yAxis3D: {\n name: '',\n type: 'category',\n data: [],\n },\n zAxis3D: {\n name: this.yUnit,\n nameTextStyle: style,\n type: 'value',\n splitLine: {\n show: this.netLine,\n lineStyle: {\n width: 1,\n },\n },\n },\n grid3D: {\n top: this.grid.top,\n right: this.grid.right,\n left: this.grid.left,\n bottom: this.grid.bottom,\n boxWidth: this.boxWidth,\n boxDepth: this.boxDepth,\n axisTick: {\n show: false,\n },\n axisLine: {\n lineStyle: {\n color: this.font.color,\n width: 1,\n },\n },\n axisLabel: {\n textStyle: style,\n },\n viewControl: {\n alpha: 10,\n beta: 0,\n autoRotate: this.autoRotate,\n zoomSensitivity: 0,\n autoRotateAfterStill: 15,\n distance: 250,\n },\n },\n color: ['#45C1FC', '#00A1FB', '#0076B7', '#004D7E', '#003560', '#001736'],\n series: [],\n };\n if (this.type === '3D') {\n this.series = [this.series[0]];\n }\n for (let i = 0; i < this.series.length; i++) {\n this.chartOption.series.push({\n type: 'bar3D',\n itemStyle: {},\n data: [],\n shading: 'lambert',\n stack: 'stack',\n label: {\n show: this.label,\n textStyle: style,\n },\n emphasis: {\n label: {\n textStyle: {\n fontSize: this.font.size,\n color: this.font.color,\n fontWeight: this.font.weight,\n fontFamily: this.font.family,\n lineHeight: this.font.lineHeight,\n borderWidth: 0,\n borderColor: '#00000000',\n },\n },\n },\n });\n this.chartOption.series[i].itemStyle.color = this.barColor[i];\n const temp = [];\n this._data.forEach((record) => {\n if (this.series[i] === record.s) {\n temp.push(record);\n }\n });\n this.xData.forEach((x) => {\n let count = 0;\n temp.forEach((t) => {\n if (t.x === x) {\n count++;\n }\n });\n if (count === 0) {\n this._data.push({ x, y: 0, s: this.series[i] });\n }\n });\n this._data.sort((prev, next) => {\n return this.xData.indexOf(prev.x) - this.xData.indexOf(next.x);\n });\n this._data\n .filter((els) => els.s === this.series[i])\n .forEach((el) => {\n for (let j = 0; j < this.xData.length; j++) {\n if (this.xData[j] === el.x) {\n this.chartOption.series[i].data.push([j, 0, el.y]);\n }\n }\n });\n }\n }\n }\n reloadData() {\n if (this._data[0]) {\n for (let i = 0; i < this._data.length; i++) {\n if (this._data[i].s) {\n this.series[i] = this._data[i].s;\n }\n }\n this.uniqueData(this.series);\n }\n for (let i = 0; i < this._data.length; i++) {\n this.xData[i] = this._data[i].x;\n }\n this.uniqueData(this.xData);\n }\n ngOnInit() {}\n onChartClick(event) {\n this.dataClick.emit({ x: event.name, s: event.seriesName });\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { BarChartThreeDComponent } from './bar-chart-three-d.component';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [BarChartThreeDComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class BarChartThreeDModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(BarChartThreeDComponent);\r\n }\r\n}\r\n","import { Property, Widget, WidgetRef } from 'bbj-widget-base';\nimport {\n OnInit,\n Component,\n ElementRef,\n OnDestroy,\n NgZone,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { NzResizeObserver } from 'ng-zorro-antd/core/resize-observers';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'sc-shape',\n templateUrl: './shape.component.html',\n styleUrls: ['./shape.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@Widget('图形', { group: 'shape', icon: 'iconxingzhuang' })\nexport class ShapeComponent implements OnInit, OnDestroy {\n @Property('填充', {\n ui: {\n widget: 'myColor',\n visibleIf: {\n type: ['rect', 'polygonplus', 'polyhedrosis', 'circle', 'path', 'polygon', 'parallelogram', 'trapezoid'],\n },\n },\n })\n background = null;\n @Property('线条颜色', { ui: { widget: 'myColor' } })\n borderColor = '#3285ff';\n @Property('线条粗细', { type: 'number' })\n borderWidth = 1;\n @Property('圆角', {\n type: 'number',\n ui: { widget: 'myRange', min: 0, max: 100, step: 1, visibleIf: { type: ['rect'] } },\n })\n fillet = 0;\n @Property('几边形', {\n type: 'number',\n ui: { widget: 'myRange', min: 3, max: 100, step: 1, visibleIf: { type: ['polygonplus', 'polyhedrosis'] } },\n })\n side = 3;\n @Property('内半径', { ui: { widget: 'myRange', min: 1, max: 99, step: 1, visibleIf: { type: ['polyhedrosis'] } } })\n sr = 38;\n @Property('上底', { ui: { widget: 'myRange', min: 1, max: 100, step: 1, visibleIf: { type: ['trapezoid'] } } })\n upper = 60;\n @Property('下底', {\n ui: { widget: 'myRange', min: 1, max: 100, step: 1, visibleIf: { type: ['trapezoid'] } },\n })\n bottom = 100;\n @Property('偏移', {\n ui: {\n widget: 'myRange',\n min: -100,\n max: 100,\n step: 1,\n visibleIf: { type: ['parallelogram', 'trapezoid', 'triangle'] },\n },\n })\n deviation = 0;\n @Property('透明度', { ui: { widget: 'myRange', min: 0, max: 1, step: 0.1 } })\n opacity = 1;\n @Property('阴影', { ui: { widget: 'myShadow' } })\n shadow: any = { color: '', X: 0, Y: 0, Z: 0 };\n @Property('', {\n type: 'string',\n ui: { hidden: true },\n })\n type = 'rect';\n style: any;\n image: string;\n @Property('数据', { ui: { hidden: true } })\n data: { x: number; y: number }[];\n width: number;\n height: number;\n points: string;\n destroy$ = new Subject();\n filterId: string;\n filterUrl: string;\n\n constructor(\n private elementRef: ElementRef,\n private resizeObserver: NzResizeObserver,\n private zone: NgZone,\n private cd: ChangeDetectorRef,\n private widgetRef: WidgetRef,\n ) {}\n\n ngOnInit() {\n this.reset();\n this.resizeObserver\n .observe(this.elementRef)\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.zone.run(() => {\n this.reset();\n });\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n reset() {\n const { clientWidth: width, clientHeight: height } = this.elementRef.nativeElement;\n this.width = width;\n this.height = height;\n this.style = {\n opacity: this.opacity,\n stroke: this.borderColor,\n strokeWidth: this.borderWidth,\n fill: this.background ? this.background : 'rgba(0,0,0,0)',\n };\n if (this.shadow && (this.shadow.X || this.shadow.Y || this.shadow.Z)) {\n this.filterId = this.widgetRef.widget.id;\n this.filterUrl = `url(#${this.filterId})`;\n }\n switch (this.type) {\n case 'rect': // 矩形\n this.style.rx = this.style.ry = this.fillet;\n break;\n case 'triangle': //三角形\n this.points = `${width / 2 + (width * this.deviation) / 200},0 ${width},${height} 0,${height}`;\n break;\n case 'parallelogram': // 平行四边形\n const offset = (width * this.deviation) / 100;\n if (this.deviation >= 0) {\n this.points = `${offset},0 ${width},0 ${width - offset},${height} 0,${height}`;\n } else {\n this.points = `0,0 ${width + offset},0 ${width},${height} ${-offset},${height}`;\n }\n break;\n case 'trapezoid': // 梯形\n const top = (this.upper * width) / 100;\n const bottom = (this.bottom * width) / 100;\n const offset1 = ((width - top) / 2) * (1 + this.deviation / 100);\n const offset2 = ((width - bottom) / 2) * (1 - this.deviation / 100);\n this.points = `${offset1},0 ${offset1 + top},0 ${offset2 + bottom},${height} ${offset2},${height}`;\n break;\n case 'polyline': //折线\n case 'polygon': //多边形\n this.points = '';\n let minX: number, maxX: number, minY: number, maxY: number;\n this.data.forEach(({ x, y }) => {\n if (x < minX || minX == null) minX = x;\n if (x > maxX || maxX == null) maxX = x;\n if (y < minY || minY == null) minY = y;\n if (y > maxY || maxY == null) maxY = y;\n });\n const scaleX = width / (maxX - minX);\n const scaleY = height / (maxY - minY);\n this.data.forEach(({ x, y }) => {\n this.points += `${(x - minX) * scaleX},${(y - minY) * scaleY} `;\n });\n break;\n case 'polygonplus': //正多边形\n const rx = width / 2;\n const ry = height / 2;\n this.points = '';\n for (let i = 0; i < this.side; i++) {\n this.points += this.getEllipsePoint(i, this.side, rx, ry, rx, ry);\n }\n break;\n case 'polyhedrosis': // 星形\n this.points = '';\n const rx1 = width / 2;\n const ry1 = height / 2;\n const rx2 = (rx1 * this.sr) / 100;\n const ry2 = (ry1 * this.sr) / 100;\n for (let i = 0; i < this.side; i++) {\n this.points += this.getEllipsePoint(i, this.side, rx1, ry1, rx1, ry1);\n this.points += this.getEllipsePoint(i + 1 / 2, this.side, rx1, ry1, rx2, ry2);\n }\n break;\n case 'path':\n this.points = '';\n for (let i = 0; i < this.data.length; i++) {\n this.points += 'L' + this.data[i].x + ' ' + this.data[i].y + ' ';\n }\n this.points = 'M' + this.points.substring(1) + 'Z';\n break;\n default:\n break;\n }\n this.cd.markForCheck();\n }\n\n /**\n * 获取椭圆上的的坐标点,起始角度为90度\n * @param index 序号\n * @param max 总数\n * @param cx 中心x\n * @param cy 中心y\n * @param rx x半径\n * @param ry y半径\n * @returns\n */\n getEllipsePoint(index: number, max: number, cx: number, cy: number, rx: number, ry: number) {\n const rad = ((index * 2) / max + 1 / 2) * Math.PI;\n return cx + Math.cos(rad) * rx + ',' + (cy - Math.sin(rad) * ry) + ' ';\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ShapeComponent } from './shape.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [ShapeComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class ShapeModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(ShapeComponent);\n }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Property, Widget, Data, Drill, DataOutput } from 'bbj-widget-base';\nimport { BasicLineChartComponent } from '../basic-line-chart/basic-line-chart.component';\nimport { BasicBarChartComponent } from '../basic-bar-chart/basic-bar-chart.component';\n\n@Component({\n selector: 'sc-line-bar-chart',\n templateUrl: './line-bar-chart.component.html',\n styleUrls: ['./line-bar-chart.component.less'],\n})\n@Widget('折线柱图', {\n group: 'barChart',\n image: 'assets/img/screen/lineBar.png',\n icon: 'icontubiao',\n})\nexport class LineBarChartComponent extends BasicLineChartComponent implements OnInit, OnChanges {\n @Property('类型', { ui: { hidden: true } })\n type = 'line';\n @Property('图表样式', {\n ui: {\n widget: 'myImageExample',\n spanLabel: 24,\n spanControl: 24,\n reset: ['barColor'],\n example: [\n {\n background: 'assets/img/screen/bar1.png',\n data: { barColor: { gradient: true, value: [['#FFEF66', '#FF851D']] } },\n },\n {\n background: 'assets/img/screen/bar2.png',\n data: { barColor: { gradient: true, value: [['#00FECB', '#00D191']] } },\n },\n {\n background: 'assets/img/screen/bar3.png',\n data: { barColor: { gradient: true, value: [['#00D2FD', '#3285FF']] } },\n },\n {\n background: 'assets/img/screen/bar4.png',\n data: { barColor: { gradient: true, value: [['#FF3699', '#8934F8']] } },\n },\n ],\n },\n })\n example: any;\n @Property('填充', {\n ui: {\n widget: 'seriesColor',\n type: 'gradual',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n barColor = { gradient: true, value: [['#00D2FD', '#3285FF']] };\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n @Property('边距', { ui: { widget: 'myGrid' } })\n grid: any = {\n top: 30,\n right: 30,\n bottom: 30,\n left: 30,\n };\n @Property('图例', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'none' },\n { label: '自动', value: 'auto' },\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n ],\n })\n align = 'none';\n // @Property('轴单位', { ui: { widget: 'myUnit', type: 'double' } })\n // unit = { x: '', y: '', yMax: '', y1: '', y1Max: '', showY1: false };\n @Property('y轴单位', { type: 'string' })\n yUnit = '';\n @Property('x轴单位', { type: 'string' })\n xUnit = '';\n @Property('y轴最大')\n yMax: number;\n @Property('y轴最大', { type: 'boolean' })\n showY1 = false;\n @Property('网络线', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n netLine = false;\n @Property('标签', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n label = false;\n @Property('列间距', { ui: { widget: 'myRange', min: 0, max: 100, step: 10 } })\n barCategoryGap = 40;\n @Property('圆角', { ui: { widget: 'myRange', min: 0, max: 10, step: 1 } })\n barBorderRadius = 0;\n @Property('轴标签角度', {\n ui: { widget: 'myRange', min: -90, max: 90, step: 10 },\n })\n xLabelRotate = 0;\n\n chartOption: any = {};\n @Data({\n properties: {\n x: { type: 'string', title: '类目' },\n y: { type: 'number', title: '值' },\n s: { type: 'string', title: '系列' },\n },\n })\n _data: any[] = [\n { x: '一月', y: 2.0, s: '蒸发量' },\n { x: '二月', y: 4.9, s: '蒸发量' },\n { x: '三月', y: 7.0, s: '蒸发量' },\n { x: '四月', y: 35.6, s: '蒸发量' },\n { x: '五月', y: 73.4, s: '蒸发量' },\n { x: '六月', y: 123.4, s: '蒸发量' },\n { x: '一月', y: 2.6, s: '降水量' },\n { x: '二月', y: 5.9, s: '降水量' },\n { x: '三月', y: 9.0, s: '降水量' },\n { x: '四月', y: 25.7, s: '降水量' },\n { x: '五月', y: 43.5, s: '降水量' },\n { x: '六月', y: 78.9, s: '降水量' },\n { x: '一月', y: 2.0, s: '温度' },\n { x: '二月', y: 2.2, s: '温度' },\n { x: '三月', y: 3.3, s: '温度' },\n { x: '四月', y: 4.5, s: '温度' },\n { x: '五月', y: 6.3, s: '温度' },\n { x: '六月', y: 10.2, s: '温度' },\n ];\n @Drill()\n @DataOutput(['x', 's'])\n dataClick = new EventEmitter<any>();\n xData = [];\n series = [];\n yData = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n const dataShadow = [];\n const maxNum = this.getMaxY();\n\n for (let i = 0; i < this.xData.length; i++) {\n dataShadow.push(maxNum);\n }\n this.style = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n\n const color = [];\n let barColor;\n if (this.barColor && this.barColor.value) {\n barColor = this.barColor.value;\n } else {\n barColor = this.barColor;\n }\n for (let i = 0; i < barColor.length; i++) {\n color.push({\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n global: false,\n colorStops: [\n { offset: 0, color: barColor[i][0] },\n { offset: 1, color: barColor[i][1] },\n ],\n });\n }\n\n const xAxis: any = {\n type: 'category',\n name: this.xUnit,\n nameTextStyle: this.style,\n axisLine: {\n show: true,\n lineStyle: {\n color: this.style.color,\n },\n },\n axisTick: {\n show: true,\n },\n axisLabel: {\n rotate: this.xLabelRotate,\n show: true,\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n margin: this.font.lineHeight,\n },\n };\n\n let yAxis: any = {\n type: 'value',\n name: this.yUnit,\n nameTextStyle: this.style,\n axisLine: {\n lineStyle: {\n color: this.style.color,\n },\n },\n max: this.yMax ? undefined : this.yMax,\n axisLabel: this.style,\n splitLine: {\n show: this.netLine,\n lineStyle: {\n type: 'dashed',\n },\n },\n };\n\n const grid: any = {\n top: this.grid.top,\n right: this.grid.right,\n left: this.grid.left,\n bottom: this.grid.bottom,\n };\n\n if (this.showY1) {\n yAxis = [\n {\n type: 'value',\n name: this.yUnit,\n nameTextStyle: this.style,\n axisLine: {\n lineStyle: {\n color: this.style.color,\n },\n },\n max: this.yMax ? undefined : this.yMax,\n axisLabel: this.style,\n splitLine: {\n show: this.netLine,\n lineStyle: {\n type: 'dashed',\n },\n },\n },\n {\n type: 'value',\n name: this.yUnit,\n nameTextStyle: this.style,\n axisLine: {\n lineStyle: {\n color: this.style.color,\n },\n },\n max: this.yMax ? undefined : this.yMax,\n axisLabel: this.style,\n splitLine: {\n show: false,\n },\n },\n ];\n }\n this.chartOption = {\n legend: {\n data: this.series,\n align: this.align,\n icon: 'stack',\n show: this.align !== 'none',\n textStyle: this.style,\n },\n grid,\n xAxis,\n yAxis,\n color,\n series: [],\n };\n this.reloadData();\n // let temp = [];\n // for (let j = 0; j < this._data.length; j++) {\n // if (this.series[i] === this._data[j].s) {\n // temp.push(this._data[j]);\n // }\n // }\n // for (let j = 0; j < this.xData.length; j++) {\n // let count = 0;\n // for (let k = 0; k < temp.length; k++) {\n // if (temp[k].x == this.xData[j]) {\n // count++;\n // }\n // }\n // if (count == 0) {\n // this._data.push({ x: this.xData[j], y: null, s: this.series[i] });\n // }\n // }\n // this._data.sort((prev, next) => {\n // return this.xData.indexOf(prev.x) - this.xData.indexOf(next.x);\n // });\n // this._data\n // .filter(els => els.s === this.series[i])\n // .forEach(el => {\n // for (let j = 0; j < this.xData.length; j++) {\n // if (this.xData[j] === el.x) {\n // this.chartOption.series[i].data.push(el.y);\n // }\n // }\n // });\n // }\n }\n }\n setSeriesStyle(name: string, datasetIndex: number) {\n const first = datasetIndex === 1;\n const series = {\n name,\n showBackground: true,\n label: {\n show: this.label,\n position: 'top',\n textStyle: this.style,\n },\n itemStyle: {\n normal: {\n barBorderRadius: this.barBorderRadius,\n },\n },\n connectNulls: true,\n barCategoryGap: this.barCategoryGap + '%',\n type: first ? 'bar' : 'line',\n yAxisIndex: this.showY1 && !first ? 1 : 0,\n areaStyle: {\n opacity: 0,\n },\n encode: { x: 'x', y: 'y' },\n datasetIndex,\n };\n this.chartOption.series.push(series);\n return series;\n }\n ngOnInit() {}\n onChartClick(event) {\n this.dataClick.emit({ x: event.name, s: event.seriesName });\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LineBarChartComponent } from './line-bar-chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [LineBarChartComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class LineBarChartModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(LineBarChartComponent);\r\n }\r\n}\r\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Property, Widget, Data, Drill, DataOutput } from 'bbj-widget-base';\nimport { BasicLineChartComponent } from '../basic-line-chart/basic-line-chart.component';\n\n@Component({\n selector: 'sc-bubble-chart',\n templateUrl: './bubble-chart.component.html',\n styleUrls: ['./bubble-chart.component.less'],\n})\n@Widget('散点图', {\n group: 'otherChart',\n image: 'assets/img/screen/bubble.png',\n icon: 'icontubiao',\n})\nexport class BubbleChartComponent extends BasicLineChartComponent implements OnInit, OnChanges {\n @Property('图表样式', {\n ui: {\n widget: 'myImageExample',\n spanLabel: 24,\n spanControl: 24,\n reset: ['bubbleColor'],\n example: [\n {\n background: 'assets/img/screen/bubble1.png',\n data: { bubbleColor: { gradient: true, value: [['#FFEF66', '#FF851D']] } },\n },\n {\n background: 'assets/img/screen/bubble2.png',\n data: { bubbleColor: { gradient: true, value: [['#00FECB', '#00D191']] } },\n },\n {\n background: 'assets/img/screen/bubble3.png',\n data: { bubbleColor: { gradient: true, value: [['#00D2FD', '#3285FF']] } },\n },\n {\n background: 'assets/img/screen/bubble4.png',\n data: { bubbleColor: { gradient: true, value: [['#FF3699', '#8934F8']] } },\n },\n ],\n },\n })\n example: any;\n @Property('填充', {\n ui: {\n widget: 'seriesColor',\n type: 'gradual',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n bubbleColor = { gradient: true, value: [['#00D2FD', '#3285FF']] };\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n @Property('边距', { ui: { widget: 'myGrid' } })\n grid: any = {\n top: 30,\n right: 30,\n bottom: 34,\n left: 36,\n };\n @Property('图例', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'none' },\n { label: '自动', value: 'auto' },\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n ],\n })\n align = 'auto';\n // @Property('轴单位', { ui: { widget: 'myUnit' } })\n // unit = { x: '', y: '' };\n @Property('y轴单位', { type: 'string' })\n yUnit = '';\n @Property('x轴单位', { type: 'string' })\n xUnit = '';\n @Property('y轴最大')\n yMax: number;\n @Property('网络线', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n netLine = false;\n @Property('标签', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n label = false;\n @Property('轴标签角度', {\n ui: { widget: 'myRange', min: -90, max: 90, step: 10 },\n })\n xLabelRotate = 0;\n\n chartOption: any = {};\n @Data({\n properties: {\n x: { type: 'string', title: '类目' },\n y: { type: 'number', title: '高度' },\n v: { type: 'number', title: '值' },\n s: { type: 'string', title: '系列' },\n },\n })\n _data = [\n { x: '一月', y: 10, v: 32, s: '收入' },\n { x: '二月', y: 20, v: 13, s: '收入' },\n { x: '三月', y: 25, v: 87, s: '收入' },\n { x: '四月', y: 35, v: 45, s: '收入' },\n { x: '五月', y: 27, v: 18, s: '收入' },\n { x: '六月', y: 28, v: 95, s: '收入' },\n { x: '一月', y: 18, v: 59, s: '支出' },\n { x: '二月', y: 28, v: 32, s: '支出' },\n { x: '三月', y: 32, v: 75, s: '支出' },\n { x: '四月', y: 48, v: 17, s: '支出' },\n { x: '五月', y: 20, v: 43, s: '支出' },\n { x: '六月', y: 17, v: 94, s: '支出' },\n ];\n @Drill()\n @DataOutput(['x', 's'])\n dataClick = new EventEmitter<any>();\n\n style = {\n color: '',\n fontFamily: '',\n fontWeight: '',\n fontSize: '',\n lineHeight: '',\n };\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n this.style = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n\n const color = [];\n let bubbleColor;\n if (this.bubbleColor && this.bubbleColor.value) {\n bubbleColor = this.bubbleColor.value;\n } else {\n bubbleColor = this.bubbleColor;\n }\n for (let i = 0; i < bubbleColor.length; i++) {\n color.push({\n type: 'radial',\n x: 0.4,\n y: 0.3,\n r: 1,\n global: false,\n colorStops: [\n { offset: 0, color: bubbleColor[i][0] },\n { offset: 1, color: bubbleColor[i][1] },\n ],\n });\n }\n this.chartOption = {\n legend: {\n align: this.align,\n show: this.align !== 'none',\n textStyle: this.style,\n },\n grid: {\n top: this.grid.top,\n right: this.grid.right,\n left: this.grid.left,\n bottom: this.grid.bottom,\n },\n xAxis: {\n name: this.xUnit,\n nameTextStyle: this.style,\n type: 'category',\n axisLine: {\n lineStyle: {\n color: this.style.color,\n },\n },\n axisLabel: {\n rotate: this.xLabelRotate,\n show: true,\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n margin: this.font.lineHeight,\n },\n // data: this.xData,\n },\n yAxis: {\n name: this.yUnit,\n nameTextStyle: this.style,\n type: 'value',\n axisLine: {\n lineStyle: {\n color: this.style.color,\n },\n },\n axisLabel: this.style,\n splitLine: {\n show: this.netLine,\n lineStyle: {\n type: 'dashed',\n },\n },\n },\n color,\n series: [],\n };\n this.reloadData();\n // for (let i = 0; i < this.series.length; i++) {\n\n // let temp = [];\n // for (let j = 0; j < this._data.length; j++) {\n // if (this.series[i] === this._data[j].s) {\n // temp.push(this._data[j]);\n // }\n // }\n // for (let j = 0; j < this.xData.length; j++) {\n // let count = 0;\n // for (let k = 0; k < temp.length; k++) {\n // if (temp[k].x == this.xData[j]) {\n // count++;\n // }\n // }\n // if (count == 0) {\n // this._data.push({ x: this.xData[j], y: null,v:null, s: this.series[i] });\n // }\n // }\n // this._data.sort((prev, next) => {\n // return this.xData.indexOf(prev.x) - this.xData.indexOf(next.x);\n // });\n // this._data\n // .filter(els => els.s === this.series[i])\n // .forEach(el => {\n // for (let j = 0; j < this.xData.length; j++) {\n // if (this.xData[j] === el.x) {\n // this.chartOption.series[i].data.push([el.x, el.y, el.v]);\n // }\n // }\n // });\n // this.chartOption.series[i].symbolSize = function(data) {\n // return data[2] / 2;\n // };\n // this.chartOption.series[i].label.emphasis.formatter = function(param) {\n // return param.data[2];\n // };\n // }\n\n // console.log(JSON.stringify(this.chartOption));\n }\n }\n // reloadData(){\n // if (this._data[0]) {\n // for (let i = 0; i < this._data.length; i++) {\n // if ( this._data[i].s) {\n // this.series[i] = this._data[i].s;\n // }\n // }\n // this.uniqueData(this.series);\n // }\n // for (let i = 0; i < this._data.length; i++) {\n // this.xData[i] = this._data[i].x;\n // }\n // this.uniqueData(this.xData);\n // }\n setSeriesStyle(name: string, datasetIndex: number) {\n const series = {\n type: 'scatter',\n symbolSize: (data) => {\n return data.v;\n },\n name,\n label: {\n show: this.label,\n textStyle: this.style,\n emphasis: {\n show: true,\n position: 'top',\n textStyle: this.style,\n formatter: [],\n },\n },\n itemStyle: {\n normal: {\n shadowBlur: 10,\n shadowOffsetY: 5,\n shadowColor: 'rgba(67, 74, 78, 0.5)',\n },\n },\n encode: { x: 'x', y: 'y' },\n datasetIndex,\n // data: [],\n };\n this.chartOption.series.push(series);\n return series;\n }\n ngOnInit() {}\n onChartClick(event) {\n this.dataClick.emit({ x: event.name, s: event.seriesName });\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BubbleChartComponent } from './bubble-chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [BubbleChartComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class BubbleChartModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(BubbleChartComponent);\r\n }\r\n}\r\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Property, Widget, Data, Drill, DataOutput } from 'bbj-widget-base';\nimport { BasicLineChartComponent } from '../basic-line-chart/basic-line-chart.component';\n\n@Component({\n selector: 'sc-radar-chart',\n templateUrl: './radar-chart.component.html',\n styleUrls: ['./radar-chart.component.less'],\n})\n@Widget('雷达图', {\n group: 'otherChart',\n image: 'assets/img/screen/radar.png',\n icon: 'icontubiao',\n})\nexport class RadarChartComponent extends BasicLineChartComponent implements OnInit, OnChanges {\n\n @Property('系列颜色', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n lineColor = ['#3285FF', '#00D2FD'];\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: '',\n };\n @Property('图例', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'none' },\n { label: '自动', value: 'auto' },\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n ],\n })\n align = 'auto';\n @Property('形状', {\n ui: { widget: 'select' },\n enum: [\n { label: '多边形', value: 'polygon' },\n { label: '圆形', value: 'circle' },\n ],\n })\n shape = 'polygon';\n @Property('区域', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n area = false;\n @Property('缩放', { type: 'number' })\n radius = 100;\n chartOption: any = {};\n @Data({\n properties: {\n x: { type: 'string', title: '类目' },\n y: { type: 'number', title: '值' },\n m: { type: 'number', title: '最大值' },\n s: { type: 'string', title: '系列' },\n },\n })\n _data = [\n { x: '销售', y: 10, m: 37, s: '预算' },\n { x: '管理', y: 20, m: 56, s: '预算' },\n { x: '信息技术', y: 25, m: 65, s: '预算' },\n { x: '客服', y: 35, m: 67, s: '预算' },\n { x: '研发', y: 27, m: 76, s: '预算' },\n { x: '市场', y: 28, m: 35, s: '预算' },\n { x: '销售', y: 18, m: 76, s: '实际' },\n { x: '管理', y: 28, m: 53, s: '实际' },\n { x: '信息技术', y: 32, m: 76, s: '实际' },\n { x: '客服', y: 48, m: 57, s: '实际' },\n // { x: \"研发\", y: 20, m: 57, s: \"实际\" },\n { x: '市场', y: 17, m: 56, s: '实际' },\n ];\n @Drill()\n @DataOutput(['x', 's'])\n dataClick = new EventEmitter<any>();\n series = [];\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n this.reloadData();\n const style = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n\n this.chartOption = {\n legend: {\n data: this.series,\n align: this.align,\n show: this.align !== 'none',\n textStyle: style,\n },\n radar: {\n shape: this.shape,\n name: {\n textStyle: style,\n },\n indicator: [],\n radius: this.radius,\n },\n color: this.lineColor,\n series: [\n {\n type: 'radar',\n areaStyle: { opacity: this.area ? 0.3 : 0 },\n data: [],\n },\n ],\n };\n for (let i = 0; i < this.xData.length; i++) {\n this._data\n .filter((els) => els.x === this.xData[i])\n .forEach((el) => {\n if (this.series.length > 1) {\n if (this.chartOption.radar.indicator[i] && this.chartOption.radar.indicator[i].max) {\n const ext = this.chartOption.radar.indicator[i].max;\n this.chartOption.radar.indicator[i].max = Math.max(ext, el.m);\n } else {\n this.chartOption.radar.indicator.push({\n name: this.xData[i],\n max: el.m,\n });\n }\n } else {\n this.chartOption.radar.indicator.push({\n name: this.xData[i],\n max: el.m,\n });\n }\n });\n }\n for (let i = 0; i < this.series.length; i++) {\n this.chartOption.series[0].data.push({\n value: [],\n name: this.series[i],\n });\n const temp = [];\n for (let j = 0; j < this._data.length; j++) {\n if (this.series[i] === this._data[j].s||' ') {\n temp.push(this._data[j]);\n }\n }\n for (let j = 0; j < this.xData.length; j++) {\n let count = 0;\n for (let k = 0; k < temp.length; k++) {\n if (temp[k].x == this.xData[j]) {\n count++;\n }\n }\n if (count == 0) {\n this._data.push({\n x: this.xData[j],\n y: null,\n m: null,\n s: this.series[i],\n });\n }\n }\n this._data.sort((prev, next) => {\n return this.xData.indexOf(prev.x) - this.xData.indexOf(next.x);\n });\n this._data\n .filter((els) => els.s === this.series[i])\n .forEach((el) => {\n for (let j = 0; j < this.xData.length; j++) {\n if (this.xData[j] === el.x) {\n this.chartOption.series[0].data[i].value.push(el.y);\n }\n }\n });\n }\n }\n }\n reloadData() {\n if (this._data[0]) {\n for (let i = 0; i < this._data.length; i++) {\n if(!this._data[i].s){\n this.align='none';\n }\n this._data[i].s=this._data[i].s||' ';\n this.series[i] = this._data[i].s;\n }\n this.uniqueData(this.series);\n }\n for (let i = 0; i < this._data.length; i++) {\n this.xData[i] = this._data[i].x;\n }\n this.uniqueData(this.xData);\n }\n ngOnInit() {}\n onChartClick(event) {\n this.dataClick.emit({ x: event.name, s: event.seriesName });\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RadarChartComponent } from './radar-chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [RadarChartComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class RadarChartModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(RadarChartComponent);\r\n }\r\n}\r\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Property, Widget, Data, Drill, DataOutput } from 'bbj-widget-base';\nimport { BasicLineChartComponent } from '../basic-line-chart/basic-line-chart.component';\n\n@Component({\n selector: 'sc-funnel-chart',\n templateUrl: './funnel-chart.component.html',\n styleUrls: ['./funnel-chart.component.less'],\n})\n@Widget('三角图', {\n group: 'otherChart',\n image: 'assets/img/screen/funnel.png',\n icon: 'icontubiao',\n})\nexport class FunnelChartComponent extends BasicLineChartComponent implements OnInit, OnChanges {\n @Property('图表样式', {\n ui: {\n widget: 'myImageExample',\n spanLabel: 24,\n spanControl: 24,\n reset: ['seriesColor'],\n example: [\n {\n background: 'assets/img/screen/funnel1.png',\n data: {\n seriesColor: ['#FFE53F', '#FFBF47', '#FF7F1D', '#FC460D', '#EE2100'],\n },\n },\n {\n background: 'assets/img/screen/funnel2.png',\n data: {\n seriesColor: ['#C0E656', '#52D852', '#00B335', '#008F44', '#006A61'],\n },\n },\n {\n background: 'assets/img/screen/funnel3.png',\n data: {\n seriesColor: ['#00E5E3', '#0DBBD8', '#2A8BC9', '#345EBB', '#003560'],\n },\n },\n {\n background: 'assets/img/screen/funnel4.png',\n data: {\n seriesColor: ['#FF6DB7', '#E23FCA', '#AD12CE', '#7F0B84', '#610796'],\n },\n },\n ],\n },\n })\n example: any;\n @Property('系列颜色', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n seriesColor = ['#00E5E3', '#0DBBD8', '#2A8BC9', '#345EBB', '#003560'];\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: '',\n };\n @Property('边距', { ui: { widget: 'myGrid' } })\n grid: any = {\n top: 60,\n right: 16,\n bottom: 20,\n left: 16,\n };\n @Property('图例', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'none' },\n { label: '自动', value: 'auto' },\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n ],\n })\n align = 'auto';\n @Property('最大值', {\n ui: { widget: 'myRange', min: 0, max: 100, step: 1 },\n })\n max = 100;\n @Property('最小值', {\n ui: { widget: 'myRange', min: 0, max: 100, step: 1 },\n })\n min = 0;\n @Property('排序', {\n ui: { widget: 'select' },\n enum: [\n { label: '升序', value: 'ascending' },\n { label: '降序', value: 'descending' },\n { label: '无/按数据先后', value: 'none' },\n ],\n })\n sort = 'ascending';\n @Property('间隔', {\n ui: { widget: 'myRange', min: 0, max: 10, step: 1 },\n })\n gap = 4;\n @Property('标签', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n label = true;\n\n chartOption: any = {};\n @Data({\n properties: {\n x: { type: 'string', title: '类目' },\n y: { type: 'number', title: '值' },\n },\n })\n _data = [\n { x: '一月', y: 20 },\n { x: '二月', y: 40 },\n { x: '三月', y: 60 },\n { x: '四月', y: 80 },\n { x: '五月', y: 100 },\n ];\n @Drill()\n @DataOutput(['x'])\n dataClick = new EventEmitter<any>();\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n const style = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n\n this.chartOption = {\n legend: {\n data: this.xData,\n align: this.align,\n show: this.align !== 'none',\n textStyle: style,\n },\n calculable: true,\n color: this.seriesColor,\n series: [\n {\n type: 'funnel',\n top: this.grid.top,\n right: this.grid.right,\n left: this.grid.left,\n bottom: this.grid.bottom,\n maxSize: this.max + '%',\n minSize: this.min + '%',\n sort: this.sort,\n gap: this.gap,\n itemStyle: { borderWidth: 0 },\n label: {\n show: this.label,\n position: 'inside',\n },\n },\n ],\n dataset: {\n // 用 dimensions 指定了维度的顺序。直角坐标系中,\n // 默认把第一个维度映射到 X 轴上,第二个维度映射到 Y 轴上。\n // 如果不指定 dimensions,也可以通过指定 series.encode\n // 完成映射,参见后文。\n dimensions: [],\n source: [],\n },\n };\n this.reloadData();\n // for (let i = 0; i < this._data.length; i++) {\n // this.chartOption.series[0].data.push({\n // value: this._data[i].y,\n // name: this._data[i].x\n // });\n // }\n // console.log(JSON.stringify(this.chartOption));\n }\n }\n reloadData() {\n const dimensions = ['x', 'y'];\n const source = this._data;\n for (let i = 0; i < this._data.length; i++) {\n this.xData[i] = this._data[i].x;\n }\n this.uniqueData(this.xData);\n this.chartOption.dataset.dimensions = dimensions;\n this.chartOption.dataset.source = source;\n }\n ngOnInit() {}\n onChartClick(event) {\n this.dataClick.emit({ x: event.name, s: event.seriesName });\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FunnelChartComponent } from './funnel-chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [FunnelChartComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class FunnelChartModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(FunnelChartComponent);\r\n }\r\n}\r\n","import { Component, ElementRef, HostBinding, HostListener, OnInit } from '@angular/core';\nimport { Property, Widget } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-background',\n templateUrl: './background.component.html',\n styleUrls: ['./background.component.less'],\n})\n@Widget('图片', { group: 'background', icon: 'iconbeijing' })\nexport class BackgroundComponent implements OnInit {\n @Property('', { min: 1, ui: { widget: 'myUpload', spanLabel: 0, spanControl: 24 } })\n image: string;\n @Property('透明度', { ui: { widget: 'myRange', min: 0, max: 1, step: 0.1 } })\n opacity = 1;\n @Property('阴影', { ui: { widget: 'myShadow' } })\n shadow: any = { color: '', X: 0, Y: 0, Z: 0 };\n style: any;\n type: string;\n @Property('响应鼠标事件', { type: 'boolean', default: true })\n pointerEvents = false;\n\n constructor(private ele: ElementRef) {}\n\n ngOnInit() {\n this.style = {\n opacity: this.opacity,\n boxShadow: this.shadow.color + ' ' + this.shadow.X + 'px ' + this.shadow.Y + 'px ' + this.shadow.Z + 'px',\n };\n if (this.pointerEvents === false) {\n this.ele.nativeElement.style.pointerEvents = 'none';\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BackgroundComponent } from './background.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [BackgroundComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class BackgroundModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(BackgroundComponent);\n }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Property, Widget, Data } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-gauge',\n templateUrl: './gauge.component.html',\n styleUrls: ['./gauge.component.less'],\n})\n@Widget('仪表盘', {\n group: 'otherChart',\n image: 'assets/img/screen/gauge.png',\n icon: 'icontubiao',\n})\nexport class GaugeComponent implements OnInit, OnChanges {\n\n @Property('表盘颜色', {\n ui: {\n widget: 'seriesColor',\n type: 'gradual',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n seriesColor = { gradient: true, value: [['#2841E8', '#00CAFA']] };\n\n @Property('指针颜色', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null]\n },\n })\n pointerColor = 'auto';\n @Property('指针阴影', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null]\n },\n })\n pointerShadow = 'rgba(0,138,255,0.45)';\n\n @Property('表盘宽度', {\n ui: { widget: 'myRange', min: 0, max: 100, step: 1 },\n })\n width = 10;\n @Property('起始角度', {\n ui: { widget: 'myRange', min: 90, max: 360, step: 1 },\n })\n startAngle = 225;\n @Property('结束角度', {\n ui: { widget: 'myRange', min: -90, max: 90, step: 1 },\n })\n endAngle = -45;\n\n\n\n @Property('显示标题', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n label = false;\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n\n @Property('标题位移', {\n ui: { widget: 'number' },\n })\n labelOffset = 50;\n @Property('标题宽度', {\n ui: { widget: 'number' },\n })\n labelWidth = null;\n\n @Property('显示数值', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n labelVal = true;\n\n @Property('数值字体', { ui: { widget: 'myFont' } })\n numFont: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 38,\n space: 0,\n lineHeight: 38,\n };\n\n @Property('百分号', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n percent = false;\n\n @Property('数值位移', {\n ui: { widget: 'number' },\n })\n labelValOffset = -10;\n\n @Property('最大值', {\n ui: { widget: 'number' },\n })\n max = 100;\n @Property('最小值', {\n ui: { widget: 'number' },\n })\n min = 0;\n\n // 显示分隔线\n @Property('分隔线', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n splitLine = false;\n\n // 显示刻度\n @Property('刻度', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n axisTick = true;\n\n @Property('刻度数值', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n axisLabel = true;\n\n @Property('刻度长度', {\n ui: { widget: 'number' },\n })\n axisTickLen = 10;\n\n @Property('刻度宽度', {\n ui: { widget: 'number' },\n })\n axisTickWidth = 1;\n\n @Property('刻度颜色', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null]\n },\n })\n axisTickColor = 'auto';\n\n\n image: string;\n constructor() { }\n chartOption: any = {};\n @Data({\n properties: {\n name: { type: 'string', title: '文字' },\n value: { type: 'number', title: '值' },\n },\n })\n _data = [{ name: '速度', value: 48 }];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n const style = {\n show: this.axisLabel,\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n const color = [];\n const color1 = [];\n let seriesColor;\n if (this.seriesColor && this.seriesColor.value) {\n seriesColor = this.seriesColor.value;\n } else {\n seriesColor = this.seriesColor;\n }\n for (let i = 0; i < seriesColor.length; i++) {\n color.push({\n type: 'linear',\n x: 0,\n y: 0,\n x2: 1,\n y2: 0,\n global: false,\n colorStops: [\n { offset: 0, color: seriesColor[i][0] },\n { offset: 1, color: seriesColor[i][1] },\n ],\n });\n }\n let count = 1;\n if (seriesColor.length > 1) {\n count = 1 / seriesColor.length;\n for (let i = 0; i < seriesColor.length; i++) {\n color1.push([count * (i + 1), color[i]]);\n }\n }\n this.chartOption = {\n series: [\n {\n // name: this.title,\n type: 'gauge',\n detail: {\n show: this.labelVal,\n formatter: this.percent ? '' + ((this._data[0].value / this.max) * 100).toFixed(2) + '%' : '{value}',\n color: this.numFont.color,\n fontFamily: this.numFont.family,\n fontWeight: this.numFont.weight,\n fontSize: this.numFont.size,\n lineHeight: this.numFont.lineHeight,\n offsetCenter: [0, `${this.labelValOffset}%`],\n },\n data: this._data,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n title: {\n show: this.label,\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n offsetCenter: [0, `${this.labelOffset}%`],\n overflow: 'breakAll',\n width: this.labelWidth\n },\n axisLine: {\n lineStyle: {\n width: this.width,\n color: count < 1 ? color1 : [[1, color[0]]],\n },\n },\n axisLabel: style,\n max: this.max,\n min: this.min,\n splitLine: {\n show: this.splitLine,\n distance: 0,\n length: 10\n },\n axisTick: {\n show: this.axisTick,\n length: this.axisTickLen,\n lineStyle: {\n width: this.axisTickWidth,\n color: this.axisTickColor\n }\n },\n pointer: {\n width: 6,\n length: '70%',\n itemStyle: {\n color: this.pointerColor,\n shadowColor: this.pointerShadow,\n shadowBlur: 10,\n shadowOffsetX: 2,\n shadowOffsetY: 2\n }\n },\n\n },\n ],\n };\n // console.log(JSON.stringify(this.chartOption));\n }\n }\n ngOnInit() { }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { GaugeComponent } from './gauge.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [GaugeComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class GaugeModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(GaugeComponent);\r\n }\r\n}\r\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Property, Widget, Data, Drill, DataOutput } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-percent-pie-chart',\n templateUrl: './percent-pie-chart.component.html',\n styleUrls: ['./percent-pie-chart.component.less'],\n})\n@Widget('占比饼图', {\n group: 'pieChart',\n image: 'assets/img/screen/percent_pie.png',\n icon: 'icontubiao',\n})\nexport class PercentPieChartComponent implements OnInit, OnChanges {\n @Property('图表样式', {\n ui: {\n widget: 'myImageExample',\n spanLabel: 24,\n spanControl: 24,\n class: 'percentPie',\n reset: ['pieColor'],\n example: [\n {\n background: 'assets/img/screen/percent_pie1.png',\n data: { pieColor: { gradient: true, value: [['#FF7C24', '#50536E']] } },\n },\n {\n background: 'assets/img/screen/percent_pie2.png',\n data: { pieColor: { gradient: true, value: [['#00FEC3', '#50536E']] } },\n },\n {\n background: 'assets/img/screen/percent_pie3.png',\n data: { pieColor: { gradient: true, value: [['#00D2FD', '#50536E']] } },\n },\n {\n background: 'assets/img/screen/percent_pie4.png',\n data: { pieColor: { gradient: true, value: [['#BF91FA', '#50536E']] } },\n },\n ],\n },\n })\n example: any;\n @Property('颜色', {\n ui: {\n widget: 'seriesColor',\n type: 'gradual',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n pieColor = {\n gradient: true,\n value: [\n ['#00A2FD', '#50536E'],\n ['black', 'black'],\n ],\n };\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#AFB2BF',\n weight: 'normal',\n size: 20,\n space: 0,\n lineHeight: '',\n };\n @Property('环宽', { type: 'number' })\n width = 20;\n @Property('圆角', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n fillet = false;\n @Property('顺时针', {\n ui: { widget: 'boolean', checkedChildren: '顺', unCheckedChildren: '逆' },\n })\n clockwise = true;\n @Property('百分值', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n percent = true;\n image: string;\n constructor() {}\n\n chartOption: any = {};\n @Data({\n properties: {\n value: { type: 'number', title: '值' },\n max: { type: 'number', title: '最大值' },\n },\n })\n _data = [{ value: 80, max: 100 }];\n @Drill()\n @DataOutput(['value', 'max'])\n dataClick = new EventEmitter<any>();\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n const value = this._data[0].value;\n const value_per = (this._data[0].value / this._data[0].max) * 100;\n const style = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n let pieColor;\n if (this.pieColor && this.pieColor.value) {\n pieColor = this.pieColor.value;\n } else {\n pieColor = this.pieColor;\n }\n const color = {\n type: 'linear',\n x: 0,\n y: 0,\n global: false,\n colorStops: [\n { offset: 0, color: pieColor[0][0] },\n { offset: 1, color: pieColor[0][1] },\n ],\n };\n\n this.chartOption = {\n title: {\n text: this.percent ? parseInt(value_per.toString()) + '%' : parseInt(value.toString()),\n textStyle: style,\n left: 'center',\n top: 'center',\n },\n angleAxis: {\n max: this._data[0].max, // 满分\n clockwise: this.clockwise, // 逆时针\n // 隐藏刻度线\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: false,\n },\n splitLine: {\n show: false,\n },\n },\n radiusAxis: {\n type: 'category',\n // 隐藏刻度线\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: false,\n },\n splitLine: {\n show: false,\n },\n },\n polar: {\n center: ['50%', '50%'],\n radius: '100%', // 图形大小\n },\n series: [\n {\n type: 'bar',\n label: {\n show: false,\n },\n data: [\n {\n value,\n itemStyle: {\n // 颜色渐变\n color,\n },\n },\n ],\n coordinateSystem: 'polar',\n roundCap: this.fillet,\n barWidth: this.width,\n barGap: '-100%', // 两环重叠\n z: 2,\n },\n {\n // 灰色环\n type: 'bar',\n data: [\n {\n value: this._data[0].max,\n itemStyle: {\n color: pieColor[pieColor.length - 1][0],\n },\n },\n ],\n coordinateSystem: 'polar',\n roundCap: this.fillet,\n barWidth: this.width,\n barGap: '-100%', // 两环重叠\n z: 1,\n },\n ],\n };\n }\n console.log(this.chartOption);\n }\n ngOnInit() {}\n onChartClick(event) {\n this.dataClick.emit({ x: event.name, s: event.seriesName });\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PercentPieChartComponent } from './percent-pie-chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [PercentPieChartComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class PercentPieChartModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(PercentPieChartComponent);\r\n }\r\n}\r\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Property, Widget, Data, Drill, DataOutput } from 'bbj-widget-base';\nimport { BasicLineChartComponent } from '../basic-line-chart/basic-line-chart.component';\n\n@Component({\n selector: 'sc-tree-ring-chart',\n templateUrl: './tree-ring-chart.component.html',\n styleUrls: ['./tree-ring-chart.component.less'],\n})\n@Widget('年轮图', {\n group: 'pieChart',\n image: 'assets/img/screen/ringTree.png',\n icon: 'icontubiao',\n})\nexport class TreeRingChartComponent extends BasicLineChartComponent implements OnInit, OnChanges {\n\n @Property('系列颜色', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n color = ['#3285FF', '#00D2FD'];\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n @Property('顺时针', {\n ui: { widget: 'boolean', checkedChildren: '顺', unCheckedChildren: '逆' },\n })\n clockwise = false;\n @Property('图例', {\n ui: { widget: 'select' },\n enum: [\n { label: '无', value: 'none' },\n { label: '自动', value: 'auto' },\n { label: '纵向居中', value: 'center' },\n { label: '纵向居左', value: 'left' },\n { label: '纵向居右', value: 'right' },\n ],\n })\n align = 'none';\n @Property('边距', { ui: { widget: 'myGrid', type: 'pie' } })\n grid: any = {\n top: 45,\n left: 50,\n };\n\n chartOption: any = {};\n @Data({\n properties: {\n name: { type: 'string', title: '类目' },\n value: { type: 'number', title: '值' },\n },\n })\n _data = [\n { name: '短信', value: 1419 },\n { name: '客服', value: 1776 },\n { name: '外呼', value: 1895 },\n { name: '网厅', value: 1576 },\n { name: '手厅', value: 2077 },\n ];\n @Drill()\n @DataOutput(['value'])\n dataClick = new EventEmitter<any>();\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n const data = this._data.sort(function (a, b) {\n return b.value - a.value;\n });\n const objData = this.array2obj(data, 'name');\n const textStyle = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n\n this.chartOption = {\n legend: {\n type: 'scroll',\n orient: 'vertical',\n data,\n x: this.align,\n show: this.align !== 'none',\n formatter (name) {\n return name + '(' + objData[name].value + ')';\n },\n textStyle,\n },\n color: this.color,\n yAxis: [\n {\n type: 'category',\n inverse: true,\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: false,\n },\n data: this.getData(data).yAxis,\n },\n ],\n xAxis: [\n {\n show: false,\n },\n ],\n series: this.getData(data).series,\n };\n }\n }\n ngOnInit() {}\n\n getMax(data) {\n const a = Math.max(...data.map((item) => item.value));\n const b = a.toString().length;\n const c = Math.pow(10, b - 1);\n const max = Number(c) + Number(a);\n return max;\n }\n\n getData(data) {\n const res = {\n series: [],\n yAxis: [],\n };\n for (let i = 0; i < data.length; i++) {\n res.series.push({\n name: i,\n type: 'pie',\n clockWise: this.clockwise,\n hoverAnimation: false,\n radius: [63 - i * 8 + '%', 58 - i * 8 + '%'],\n center: [this.grid.left + '%', this.grid.top + '%'],\n label: {\n show: false,\n },\n itemStyle: {\n label: {\n show: false,\n },\n labelLine: {\n show: false,\n },\n borderWidth: 5,\n },\n data: [\n {\n value: this.getMax(data) - data[i].value,\n name: '',\n itemStyle: {\n color: '#ffffff00',\n borderWidth: 0,\n },\n tooltip: {\n show: false,\n },\n hoverAnimation: false,\n },\n {\n value: data[i].value,\n name: data[i].name,\n },\n ],\n });\n }\n return res;\n }\n\n array2obj(array, key) {\n const resObj = {};\n for (let i = 0; i < array.length; i++) {\n resObj[array[i][key]] = array[i];\n }\n return resObj;\n }\n onChartClick(event) {\n this.dataClick.emit({ x: event.name, s: event.seriesName });\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TreeRingChartComponent } from './tree-ring-chart.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [TreeRingChartComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class TreeRingChartModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(TreeRingChartComponent);\r\n }\r\n}\r\n","import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Property, Widget, Data } from 'bbj-widget-base';\n\nimport 'echarts-liquidfill';\n@Component({\n selector: 'sc-liquid-fill',\n templateUrl: './liquid-fill.component.html',\n styleUrls: ['./liquid-fill.component.less'],\n})\n@Widget('水球图', {\n group: 'otherChart',\n image: 'assets/img/screen/liquidFill.png',\n icon: 'icontubiao',\n})\nexport class LiquidFillComponent implements OnInit,OnChanges {\n\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#294D99',\n weight: 'normal',\n size: 40,\n space: 0,\n lineHeight: '',\n };\n @Property('字体覆盖', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n cover = '#fff';\n @Property('背景色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n bg = '#DEDEDE';\n @Property('边框色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n border = '#DEDEDE';\n @Property('水波色系', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n seriesColor = ['#1DE2C4', '#008FE9'];\n @Property('水波层数', {\n ui: { widget: 'myRange', min: 1, max: 5, step: 1 },\n })\n level = 2;\n @Property('形状', {\n ui: { widget: 'select' },\n enum: [\n { label: '圆形', value: 'circle' },\n { label: '矩形', value: 'rect' },\n { label: '圆角矩形', value: 'roundRect' },\n { label: '三角形', value: 'triangle' },\n { label: '菱形', value: 'diamond' },\n { label: '大头针', value: 'pin' },\n { label: '箭头', value: 'arrow' },\n ],\n })\n shape = 'circle';\n @Property('动画', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n waveAnimation = true;\n image: string;\n constructor() {}\n @Data({\n properties: { value: { type: 'number', title: '值' } },\n })\n _data: any[] = [{ value: 0.48 }];\n chartOption: any = null;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n const value = this._data[0].value;\n const style = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n\n const data = [];\n for (let i = 0; i < this.level; i++) {\n data.push({\n value,\n label: { normal: { textStyle: style, insideColor: this.cover } },\n });\n }\n\n if (this.bg == '') {\n this.bg = '#ffffff00';\n }\n this.chartOption = {\n series: [\n {\n type: 'liquidFill',\n data,\n radius: '80%',\n shape: this.shape,\n waveAnimation: this.waveAnimation,\n backgroundStyle: {\n borderColor: this.border,\n color: this.bg,\n },\n color: this.seriesColor,\n outline: {\n show: false,\n },\n },\n ],\n };\n }\n }\n ngOnInit() {}\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LiquidFillComponent } from './liquid-fill.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\n\r\n@NgModule({\r\n declarations: [LiquidFillComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\r\n})\r\nexport class LiquidFillModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(LiquidFillComponent);\r\n }\r\n}\r\n","import {\n Component,\n ElementRef,\n OnInit,\n SimpleChanges,\n OnChanges,\n EventEmitter,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild,\n HostBinding,\n Renderer2,\n OnDestroy,\n} from '@angular/core';\nimport { Widget, Data, Property, DataSchema, DataOutput, WidgetRef, CustomExport } from 'bbj-widget-base';\nimport { SFArrayWidgetSchema, SFSchema } from '@delon/form';\nimport { deepCopy } from '@delon/util';\nimport { getFontStyle } from '../shared/util/style.util';\n\n@Component({\n selector: 'sc-shuffling-list',\n templateUrl: './shuffling-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./shuffling-list.component.less'],\n})\n@Widget('滚动表格', { group: 'table', icon: 'icontubiao', image: '/assets/img/screen/shuffling.png' })\nexport class ShufflingListComponent implements OnInit, OnChanges, OnDestroy, CustomExport {\n @Property('轮播', { type: 'boolean' })\n carousel = true;\n _carousel: boolean;\n @Property('自动换行', { type: 'boolean' })\n lineWrap = true;\n @Property('轮播间隔', { ui: { widget: 'myRange', min: 1, max: 20, step: 1 } })\n time = 1;\n @Property('序列号显示', { type: 'boolean' })\n serialNumberDisplay = true;\n @Property('表头显示', { type: 'boolean' })\n headDisplay = true;\n @Property('表头背景', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n headBackground = '';\n @Property('表头字体', { ui: { widget: 'myFont' } })\n headFont: any = { family: '', color: '#ffffff', weight: 'normal', size: 20, space: 0, lineHeight: 40 };\n @Property('字体发光', { type: 'boolean' })\n fontBling = false;\n @Property('字段颜色', {\n type: 'array',\n maxItems: 99,\n items: {\n type: 'object',\n properties: {\n key: {\n type: 'string',\n title: '字段',\n },\n value: {\n type: 'string',\n title: '值',\n },\n color: {\n type: 'string',\n title: '颜色',\n ui: {\n widget: 'myColor',\n },\n },\n },\n required: [],\n },\n ui: { grid: { arraySpan: 24 }, spanControl: 24 } as SFArrayWidgetSchema,\n })\n bindColor = [];\n @Property('发光颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n blingColor = '';\n @Property('边框颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n borderColor = '';\n @Property('边框发光', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n borderBlingColor = '';\n @Property('边框粗细', {\n ui: { widget: 'myRange', min: 0, max: 40, step: 1 },\n })\n borderSize = 0;\n\n @Property('点击触发方式', {\n enum: [\n { label: '行', value: 'row' },\n { label: '单元格', value: 'cell' },\n ],\n })\n clickTarget = 'row';\n @Property('表头设置', {\n type: 'array',\n maxItems: 99,\n items: {\n type: 'object',\n properties: {\n key: {\n type: 'string',\n title: 'key',\n },\n width: {\n type: 'number',\n title: '宽度',\n },\n align: {\n type: 'string',\n ui: { widget: 'select' },\n enum: [\n { label: '居左', value: 'left' },\n { label: '居中', value: 'center' },\n { label: '居右', value: 'right' },\n ],\n },\n show: {\n type: 'boolean',\n title: '是否显示',\n default: true,\n },\n clickable: {\n type: 'boolean',\n title: '是否可点击',\n ui: { visibleIf: { '/clickTarget': ['cell'] } },\n },\n },\n required: [],\n },\n ui: { grid: { arraySpan: 24 }, spanControl: 24 } as SFArrayWidgetSchema,\n })\n titleStyle = [];\n @Property('发光程度', { ui: { widget: 'myRange', min: 1, max: 10, step: 1 } })\n blingNum = 3;\n @Property('奇行背景', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n oddBackground = '';\n @Property('偶行背景', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n evenBackground = '';\n @Property('内容字体', { ui: { widget: 'myFont' } })\n contentFont: any = { family: '', color: '#ffffff', weight: 'normal', size: 12, space: 0, lineHeight: 40 };\n @Property('字体发光', { type: 'boolean' })\n contentFontBling = false;\n @Property('发光颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n contentBlingColor = '';\n @Property('发光程度', { ui: { widget: 'myRange', min: 1, max: 10, step: 1 } })\n contentBlingNum = 3;\n @Property('左内边距', { ui: { widget: 'myRange', min: 1, max: 100, step: 1 } })\n paddingLeft = 0;\n @Property('右内边距', { ui: { widget: 'myRange', min: 1, max: 100, step: 1 } })\n paddingRight = 0;\n @Data({})\n data: any = [\n {\n 地区: '温州',\n 流量: '123',\n 行为: 'xxxx',\n },\n {\n 地区: '杭州',\n 流量: '1235',\n 行为: 'xxxx',\n },\n {\n 地区: '上海',\n 流量: '1234',\n 行为: 'xxxx',\n },\n {\n 地区: '北京',\n 流量: '12367',\n 行为: 'xxxx',\n },\n {\n 地区: '温州1',\n 流量: '123835',\n 行为: 'xxxx',\n },\n {\n 地区: '温州2',\n 流量: '123835',\n 行为: 'xxxx',\n },\n {\n 地区: '温州3',\n 流量: '123835',\n 行为: 'xxxx',\n },\n {\n 地区: '温州4',\n 流量: '123835',\n 行为: 'xxxx',\n },\n ];\n @DataSchema('data')\n schema: SFSchema;\n tableStyle: any = {};\n\n animationDelay = 0;\n @DataOutput('行数据')\n dateChange = new EventEmitter<any>();\n @DataOutput('单元格')\n cellClick = new EventEmitter<any>();\n @DataOutput('列')\n columnClick = new EventEmitter<any>();\n columns: any[];\n headStyle: any = {};\n bodyStyle: any = {};\n rowStyle: any = {};\n content: any[];\n placeholder: any;\n paged: boolean;\n total: number;\n runtime: number; //已滚动时间\n lastTime: number; //上一次计时时间\n @DataOutput('翻页')\n pageChange = new EventEmitter<any>();\n nextPageTimeout: any;\n parentHeight: number;\n headerHeight: any;\n rowHeight: any;\n paused: boolean;\n constructor(\n private ele: ElementRef,\n private cd: ChangeDetectorRef,\n private widgetRef: WidgetRef,\n private renderer: Renderer2,\n ) {}\n ngOnInit() {\n const widget: any = this.widgetRef.widget as any;\n if (this.clickTarget !== 'cell' && (widget.link?.enabled || widget.outputs?.enabled)) {\n this.tableStyle.cursor = 'pointer';\n }\n this.headStyle = getFontStyle(this.headFont);\n this.headStyle.backgroundColor = this.headBackground;\n if (this.paddingLeft) {\n this.headStyle.paddingLeft = this.rowStyle.paddingLeft = this.paddingLeft + 'px';\n }\n if (this.paddingRight) {\n this.headStyle.paddingRight = this.rowStyle.paddingRight = this.paddingRight + 'px';\n }\n\n Object.assign(this.tableStyle, getFontStyle(this.contentFont));\n\n if (this.borderSize && this.borderColor) {\n const element = this.ele.nativeElement;\n const border = `${this.borderSize}px solid ${this.borderColor || '#fff'}`;\n this.rowStyle.borderBottom = this.headStyle.borderBottom = border;\n this.renderer.setStyle(element, 'border', border);\n if (this.borderBlingColor) {\n const filter = `drop-shadow(0 0 8px ${this.borderBlingColor})`;\n this.renderer.setStyle(element, 'filter', filter);\n }\n }\n\n if (this.fontBling) {\n // 发光\n let color = this.blingColor || this.headFont.color || '#ffffff';\n let num = this.blingNum || 3;\n this.headStyle.textShadow = this.getBlingStyle(color, num);\n }\n if (this.contentFontBling) {\n // 发光\n let color = this.contentBlingColor || this.contentFont.color || '#ffffff';\n let num = this.blingNum || 3;\n this.tableStyle.textShadow = this.getBlingStyle(color, num);\n }\n if (this.lineWrap) {\n this.tableStyle.wordBreak = 'break-all';\n } else {\n this.tableStyle.whiteSpace = 'nowrap';\n }\n this.cd.markForCheck();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes.data || changes.schema) && this.data) {\n if (this.data.totalElements != null) {\n this.paged = true;\n const start = this.data.number * this.data.size;\n if (this.content == null) {\n this.content = [];\n }\n if (this.content.length > start) {\n this.content.splice(start, this.content.length - start);\n } else if (this.content.length < start) {\n this.pageChange.emit(Math.ceil(this.content.length / this.data.size));\n return;\n }\n this.content.push(...this.data.content);\n this.total = this.data.totalElements;\n } else {\n this.paged = false;\n this.content = this.data;\n this.total = this.data.length;\n }\n if (!this.paged || this.data.number === 0) {\n this.updateColumns();\n }\n const element: HTMLElement = this.ele.nativeElement;\n this.parentHeight = Number(element.parentElement.style.height.replace('px', ''));\n this.headerHeight = this.headFont.lineHeight || 40;\n this.rowHeight = this.contentFont.linHeight || 40;\n if (this.borderSize && this.borderColor) {\n this.headerHeight += this.borderSize;\n this.rowHeight += this.borderSize;\n }\n if (!this.headDisplay) {\n this.headerHeight = 0;\n }\n const carousel = this.carousel && this.total * this.rowHeight + this.headerHeight > this.parentHeight;\n if (!this._carousel && carousel) {\n this.runtime = 0;\n }\n this._carousel = carousel;\n this.placeholder = null;\n if (this._carousel) {\n const time = this.total * this.time;\n this.tableStyle.animation = 'carousel ' + time + 's linear infinite';\n if (this.paged && this.total > this.content.length) {\n this.placeholder = this.rowHeight * (this.total - this.content.length);\n }\n if (!this.paused) {\n this.updateRuntime();\n this.loadNextPage();\n }\n } else {\n this.tableStyle.animation = null;\n }\n }\n this.cd.markForCheck();\n }\n\n ngOnDestroy(): void {\n this.stopLoadNext();\n }\n\n getBlingStyle(color: string, num: number) {\n let str = '';\n for (let i = 0; i < num; i++) {\n str += '0 0 20px ' + color + ',';\n }\n return str.substr(0, str.length - 1);\n }\n\n /**\n * 更新已滚动时间\n */\n updateRuntime() {\n const now = new Date().getTime();\n if (this.lastTime) {\n this.runtime += now - this.lastTime;\n }\n this.lastTime = now;\n }\n\n stopLoadNext() {\n if (this.nextPageTimeout != null) {\n clearTimeout(this.nextPageTimeout);\n }\n }\n\n getNextLoadTime() {\n const contentHeight = this.headerHeight + this.rowHeight * this.content.length; // 已加载内容的高度\n let nextLoadTime =\n ((contentHeight - this.parentHeight) / this.rowHeight) * this.time * 1000 - this.runtime + this.animationDelay;\n return nextLoadTime;\n }\n\n loadNextPage() {\n this.stopLoadNext();\n if (this.paged && this.total > this.content.length) {\n let nextLoadTime = this.getNextLoadTime();\n if (nextLoadTime < 0) {\n nextLoadTime = 0;\n }\n this.nextPageTimeout = setTimeout(() => {\n this.pageChange.next(this.data.number + 1);\n }, nextLoadTime);\n }\n }\n\n updateColumns() {\n this.columns = [];\n let keys: string[];\n if (this.schema && this.schema.properties) {\n keys = Object.keys(this.schema.properties);\n } else if (this.content && this.content[0]) {\n keys = Object.keys(this.content[0]);\n }\n const titleStyleMap = {};\n if (this.titleStyle && this.titleStyle.length > 0) {\n this.titleStyle.forEach((titleStyle) => {\n if (titleStyle.key) {\n titleStyleMap[titleStyle.key] = titleStyle;\n }\n });\n }\n if (keys) {\n for (const key of keys) {\n let title = key;\n if (this.schema && this.schema.properties) {\n const property = this.schema.properties[key];\n if (property && property.title) {\n title = property.title;\n }\n }\n const headStyle: any = {};\n const cellStyle: any = {};\n const column: any = { index: key, title, headStyle, cellStyle };\n const titleStyle = titleStyleMap[key];\n if (this.titleStyle.length && (titleStyle == null || !titleStyle.show)) {\n continue;\n }\n let width: number;\n if (titleStyle) {\n width = titleStyle.width;\n if (titleStyle.align) {\n cellStyle.textAlign = titleStyle.align;\n }\n if (this.clickTarget === 'cell' && titleStyle.clickable) {\n column.clickable = true;\n }\n }\n if (width) {\n headStyle.width = cellStyle.width = width + 'px';\n } else {\n headStyle.flex = cellStyle.flex = 1;\n }\n\n this.columns.push(column);\n }\n }\n }\n\n onClick(value) {\n if (this.clickTarget !== 'cell') {\n this.dateChange.emit(value);\n }\n }\n mouseover() {\n // this._carousel=false;\n if (this._carousel) {\n this.paused = true;\n this.tableStyle.animationPlayState = 'paused';\n this.updateRuntime();\n this.stopLoadNext();\n }\n }\n mouseout() {\n if (this._carousel) {\n this.paused = false;\n this.lastTime = new Date().getTime();\n this.tableStyle.animationPlayState = 'running';\n if (this.paged) {\n this.loadNextPage();\n }\n }\n }\n onMousewheel(event: WheelEvent) {\n if (this._carousel) {\n this.animationDelay -= event.deltaY * 2;\n if (this.animationDelay > this.runtime) {\n this.animationDelay = this.runtime;\n }\n this.tableStyle.animationDelay = this.animationDelay / 1000 + 's';\n if (this.paged && this.total > this.content.length && this.getNextLoadTime() < 0) {\n this.pageChange.emit(this.data.number + 1);\n }\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n onCellClick(column: any, row: any, event: MouseEvent) {\n if (this.clickTarget !== 'cell' || column.clickable) {\n event.stopPropagation();\n this.cellClick.emit(row[column.index]);\n this.columnClick.emit(column.index);\n this.dateChange.emit(row);\n }\n }\n\n exportWord() {\n let html = '<table>';\n if (this.headDisplay) {\n html += '<thead><tr>';\n this.columns.forEach((column) => {\n html += `<th>${column.title}</th>`;\n });\n html += '</tr></thead>';\n }\n html += '<tbody>';\n this.content.forEach((row) => {\n html += '<tr>';\n this.columns.forEach((column) => {\n html += `<td>${row[column.index]}</td>`;\n });\n html += '</tr>';\n });\n html += '</tbody></table><br/>';\n return html;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'bindColor',\n})\nexport class ColorPipe implements PipeTransform {\n transform(data: any, ...args: any[]): unknown {\n if (data) {\n const bindColor = args[0];\n if (bindColor?.length) {\n for (const item of bindColor) {\n const { key, value, color } = item;\n if (key && color && data[key] == value) {\n return color;\n }\n }\n }\n }\n return null;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ShufflingListComponent } from './shuffling-list.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\nimport { ColorPipe } from './color.pipe';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\n\n@NgModule({\n declarations: [ShufflingListComponent, ColorPipe],\n imports: [CommonModule, WidgetBaseModule, NzPipesModule, NzToolTipModule],\n})\nexport class ShufflingListModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(ShufflingListComponent);\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sc-parent-container',\n templateUrl: './parent-container.component.html',\n styleUrls: ['./parent-container.component.less']\n})\nexport class ParentContainerComponent implements OnInit {\n children: any;\n childId: string;\n constructor() { }\n\n ngOnInit() {\n }\n childInit(child: any) {\n // this.children = child;\n }\n deleteChild(childId: string) {\n // this.childId = childId\n }\n}\n","import { Component, OnInit, OnChanges, SimpleChanges, forwardRef } from '@angular/core';\nimport { Widget, Property } from 'bbj-widget-base';\n// import 'echarts/dist/extension/bmap.js';\nimport { ParentContainerComponent } from '../parent-container/parent-container.component';\nimport { BaiduMapService } from 'bbj-screen-widget/core';\n\n@Component({\n selector: 'sc-basic-planimetric-map',\n templateUrl: './basic-planimetric-map.component.html',\n styleUrls: ['./basic-planimetric-map.component.less'],\n providers: [{ provide: ParentContainerComponent, useExisting: forwardRef(() => BasicPlanimetricMapComponent) }],\n})\n@Widget('基础平面地图',{group: 'component',image: 'assets/img/screen/basicMap.png',icon: 'iconmokuai', children:[\n{\n title: '呼吸气泡层',\n type: 'sc-breathing-bubble-layer',\n option: {\n },\n hidden: true,\n hideChild: true\n },],\n childTypes:['sc-breathing-bubble-layer'],\n description: 'hasChildItem'})\nexport class BasicPlanimetricMapComponent extends ParentContainerComponent implements OnInit, OnChanges {\n\n @Property('地图缩放', {\n ui: { widget: 'myRange', min: 1, max: 40, step: 1 },\n })\n zoom = 5;\n @Property('中心经度', {\n ui: { widget: 'myRange', min: -180, max: 180, step: 1 },\n })\n centerLng = 104;\n @Property('中心纬度', {\n ui: { widget: 'myRange', min: -90, max: 90, step: 1 },\n })\n centerLat = 36;\n chartOption: any;\n hasMap = false;\n _children: any = [];\n constructor(public baiduMapService: BaiduMapService) {\n super();\n }\n ngOnChanges(changes: SimpleChanges): void {\n }\n\n async ngOnInit() {\n await this.baiduMapService.loadMap();\n await import('echarts/extension/bmap/bmap.js');\n this.hasMap = true;\n this.chartInit();\n }\n chartInit() {\n let series = [];\n this._children.forEach(child => {\n if (Array.isArray(child.item)) {\n series = [...series, ...child.item];\n } else {\n series = [...series, child.item];\n }\n });\n this.chartOption = {\n title: {\n text: '基础平面地图'\n },\n tooltip : {\n trigger: 'item'\n },\n bmap: {\n label: {\n emphasis: {\n show: false\n }\n },\n itemStyle: {\n normal: {\n areaColor: '#323c48',\n borderColor: '#404a59',\n opacity:1\n },\n emphasis: {\n areaColor: '#2a333d'\n }\n },\n center: [this.centerLng, this.centerLat],\n zoom: this.zoom,\n roam: true,\n mapStyle: {\n styleJson: [{\n featureType: 'water',\n elementType: 'all',\n stylers: {\n color: '#d1d1d1'\n }\n }, {\n featureType: 'land',\n elementType: 'all',\n stylers: {\n color: '#f3f3f3'\n }\n }, {\n featureType: 'railway',\n elementType: 'all',\n stylers: {\n visibility: 'off'\n }\n }, {\n featureType: 'highway',\n elementType: 'all',\n stylers: {\n color: '#fdfdfd'\n }\n }, {\n featureType: 'highway',\n elementType: 'labels',\n stylers: {\n visibility: 'off'\n }\n }, {\n featureType: 'arterial',\n elementType: 'geometry',\n stylers: {\n color: '#fefefe'\n }\n }, {\n featureType: 'arterial',\n elementType: 'geometry.fill',\n stylers: {\n color: '#fefefe'\n }\n }, {\n featureType: 'poi',\n elementType: 'all',\n stylers: {\n visibility: 'off'\n }\n }, {\n featureType: 'green',\n elementType: 'all',\n stylers: {\n visibility: 'off'\n }\n }, {\n featureType: 'subway',\n elementType: 'all',\n stylers: {\n visibility: 'off'\n }\n }, {\n featureType: 'manmade',\n elementType: 'all',\n stylers: {\n color: '#d1d1d1'\n }\n }, {\n featureType: 'local',\n elementType: 'all',\n stylers: {\n color: '#d1d1d1'\n }\n }, {\n featureType: 'arterial',\n elementType: 'labels',\n stylers: {\n visibility: 'off'\n }\n }, {\n featureType: 'boundary',\n elementType: 'all',\n stylers: {\n color: '#fefefe'\n }\n }, {\n featureType: 'building',\n elementType: 'all',\n stylers: {\n color: '#d1d1d1'\n }\n }, {\n featureType: 'label',\n elementType: 'labels.text.fill',\n stylers: {\n color: '#999999'\n }\n }]\n }\n },\n series\n };\n }\n childInit(child: any) {\n if (child.id) {\n const childIndex = this._children.findIndex(s => s.id === child.id);\n if (childIndex > -1) {\n this._children[childIndex] = child;\n } else {\n this._children.push(child);\n }\n this.chartInit();\n }\n }\n deleteChild(childId: string) {\n if (childId) {\n const childIndex = this._children.findIndex((s) => s.id === childId);\n if (childIndex > -1) {\n this._children.splice(childIndex, 1);\n this.chartInit();\n }\n }\n }\n}\n","import { Component, OnInit, Inject, forwardRef, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\nimport { Widget, Data, Property } from 'bbj-widget-base';\nimport { ParentContainerComponent } from '../parent-container/parent-container.component';\n\n@Component({\n selector: 'sc-breathing-bubble-layer',\n templateUrl: './breathing-bubble-layer.component.html',\n styleUrls: ['./breathing-bubble-layer.component.css'],\n})\n@Widget('呼吸气泡层', {\n group: 'component',\n image: '',\n icon: '',\n hidden: true,\n})\nexport class BreathingBubbleLayerComponent implements OnInit, OnChanges, OnDestroy {\n // @Property('', {\n // ui: {\n // widget: 'myBubbleType',\n // spanLabel: 0,\n // spanControl: 24,\n // title: '气泡类型',\n // example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n // },\n // })\n @Property('气泡类型', {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n key: { type: 'string' },\n color: {\n type: 'string',\n title: '颜色',\n ui: { widget: 'myColor' },\n },\n size: {\n type: 'string',\n title: '大小',\n ui: { widget: 'textarea', autosize: { minRows: 4 } },\n },\n },\n ui: { spanLabelFixed: 50 },\n },\n ui: { grid: { arraySpan: 24 }, spanControl: 24 },\n })\n bubbleType = [{ key: 1, color: '#ddb926', size: 'function (val) {return val[2]*0.1;}' }];\n\n @Data({\n properties: {\n name: { type: 'string', title: '地名' },\n value: { type: 'number', title: '值' },\n series: { type: 'string', title: '系列' },\n },\n })\n data: any[] = [\n { name: '海门', value: 9, series: 1 },\n { name: '鄂尔多斯', value: 12, series: 1 },\n { name: '招远', value: 12, series: 1 },\n { name: '舟山', value: 12, series: 1 },\n { name: '齐齐哈尔', value: 14, series: 1 },\n { name: '盐城', value: 15, series: 1 },\n { name: '赤峰', value: 16, series: 1 },\n { name: '青岛', value: 18, series: 1 },\n { name: '乳山', value: 18, series: 1 },\n { name: '金昌', value: 19, series: 1 },\n { name: '泉州', value: 21, series: 1 },\n { name: '莱西', value: 21, series: 1 },\n { name: '日照', value: 21, series: 1 },\n { name: '胶南', value: 22, series: 1 },\n { name: '南通', value: 23, series: 1 },\n { name: '拉萨', value: 24, series: 2 },\n { name: '云浮', value: 24, series: 2 },\n { name: '梅州', value: 25, series: 2 },\n { name: '文登', value: 25, series: 2 },\n { name: '上海', value: 25, series: 2 },\n { name: '攀枝花', value: 25, series: 2 },\n { name: '威海', value: 25, series: 2 },\n { name: '承德', value: 25, series: 2 },\n { name: '厦门', value: 26, series: 2 },\n { name: '汕尾', value: 26, series: 2 },\n { name: '潮州', value: 26, series: 2 },\n { name: '丹东', value: 27, series: 2 },\n { name: '太仓', value: 27, series: 2 },\n { name: '曲靖', value: 27, series: 2 },\n { name: '烟台', value: 28, series: 2 },\n { name: '福州', value: 29, series: 2 },\n { name: '瓦房店', value: 30, series: 2 },\n { name: '即墨', value: 30, series: 2 },\n { name: '抚顺', value: 31, series: 2 },\n { name: '玉溪', value: 31, series: 2 },\n { name: '张家口', value: 31, series: 2 },\n { name: '阳泉', value: 31, series: 2 },\n { name: '莱州', value: 32, series: 2 },\n { name: '湖州', value: 32, series: 2 },\n { name: '汕头', value: 32, series: 2 },\n { name: '昆山', value: 33, series: 2 },\n { name: '宁波', value: 33, series: 2 },\n { name: '湛江', value: 33, series: 2 },\n { name: '揭阳', value: 34, series: 1 },\n { name: '荣成', value: 34, series: 1 },\n { name: '连云港', value: 35, series: 1 },\n { name: '葫芦岛', value: 35, series: 1 },\n { name: '常熟', value: 36, series: 1 },\n { name: '东莞', value: 36, series: 1 },\n { name: '河源', value: 36, series: 1 },\n { name: '淮安', value: 36, series: 1 },\n { name: '泰州', value: 36, series: 1 },\n { name: '南宁', value: 37, series: 1 },\n { name: '营口', value: 37, series: 1 },\n { name: '惠州', value: 37, series: 1 },\n { name: '江阴', value: 37, series: 1 },\n { name: '蓬莱', value: 37, series: 1 },\n { name: '韶关', value: 38, series: 1 },\n { name: '嘉峪关', value: 38, series: 1 },\n { name: '广州', value: 38, series: 1 },\n { name: '延安', value: 38, series: 1 },\n { name: '太原', value: 39, series: 1 },\n { name: '清远', value: 39, series: 1 },\n { name: '中山', value: 39, series: 1 },\n { name: '昆明', value: 39, series: 1 },\n { name: '寿光', value: 40, series: 1 },\n { name: '盘锦', value: 40, series: 1 },\n { name: '长治', value: 41, series: 1 },\n { name: '深圳', value: 41, series: 1 },\n { name: '珠海', value: 42, series: 1 },\n { name: '宿迁', value: 43, series: 1 },\n { name: '咸阳', value: 43, series: 1 },\n { name: '铜川', value: 44, series: 1 },\n { name: '平度', value: 44, series: 1 },\n { name: '佛山', value: 44, series: 1 },\n { name: '海口', value: 44, series: 1 },\n { name: '江门', value: 45, series: 1 },\n { name: '章丘', value: 45, series: 1 },\n { name: '肇庆', value: 46, series: 1 },\n { name: '大连', value: 47, series: 1 },\n { name: '临汾', value: 47, series: 1 },\n { name: '吴江', value: 47, series: 1 },\n { name: '石嘴山', value: 49, series: 1 },\n { name: '沈阳', value: 50, series: 1 },\n { name: '苏州', value: 50, series: 1 },\n { name: '茂名', value: 50, series: 1 },\n { name: '嘉兴', value: 51, series: 1 },\n { name: '长春', value: 51, series: 1 },\n { name: '胶州', value: 52, series: 1 },\n { name: '银川', value: 52, series: 1 },\n { name: '张家港', value: 52, series: 1 },\n { name: '三门峡', value: 53, series: 1 },\n { name: '锦州', value: 54, series: 1 },\n { name: '南昌', value: 54, series: 1 },\n { name: '柳州', value: 54, series: 1 },\n { name: '三亚', value: 54, series: 1 },\n { name: '自贡', value: 56, series: 1 },\n { name: '吉林', value: 56, series: 1 },\n { name: '阳江', value: 57, series: 1 },\n { name: '泸州', value: 57, series: 1 },\n { name: '西宁', value: 57, series: 1 },\n { name: '宜宾', value: 58, series: 1 },\n { name: '呼和浩特', value: 58, series: 1 },\n { name: '成都', value: 58, series: 1 },\n { name: '大同', value: 58, series: 1 },\n { name: '镇江', value: 59, series: 1 },\n { name: '桂林', value: 59, series: 1 },\n { name: '张家界', value: 59, series: 1 },\n { name: '宜兴', value: 59, series: 1 },\n { name: '北海', value: 60, series: 1 },\n { name: '西安', value: 61, series: 1 },\n { name: '金坛', value: 62, series: 1 },\n { name: '东营', value: 62, series: 1 },\n { name: '牡丹江', value: 63, series: 1 },\n { name: '遵义', value: 63, series: 1 },\n { name: '绍兴', value: 63, series: 1 },\n { name: '扬州', value: 64, series: 1 },\n { name: '常州', value: 64, series: 1 },\n { name: '潍坊', value: 65, series: 1 },\n { name: '重庆', value: 66, series: 1 },\n { name: '台州', value: 67, series: 1 },\n { name: '南京', value: 67, series: 1 },\n { name: '滨州', value: 70, series: 1 },\n { name: '贵阳', value: 71, series: 1 },\n { name: '无锡', value: 71, series: 1 },\n { name: '本溪', value: 71, series: 1 },\n { name: '克拉玛依', value: 72, series: 1 },\n { name: '渭南', value: 72, series: 1 },\n { name: '马鞍山', value: 72, series: 1 },\n { name: '宝鸡', value: 72, series: 1 },\n { name: '焦作', value: 75, series: 1 },\n { name: '句容', value: 75, series: 1 },\n { name: '北京', value: 79, series: 1 },\n { name: '徐州', value: 79, series: 1 },\n { name: '衡水', value: 80, series: 1 },\n { name: '包头', value: 80, series: 1 },\n { name: '绵阳', value: 80, series: 1 },\n { name: '乌鲁木齐', value: 84, series: 1 },\n { name: '枣庄', value: 84, series: 1 },\n { name: '杭州', value: 84, series: 1 },\n { name: '淄博', value: 85, series: 1 },\n { name: '鞍山', value: 86, series: 1 },\n { name: '溧阳', value: 86, series: 1 },\n { name: '库尔勒', value: 86, series: 1 },\n { name: '安阳', value: 90, series: 1 },\n { name: '开封', value: 90, series: 1 },\n { name: '济南', value: 92, series: 1 },\n { name: '德阳', value: 93, series: 1 },\n { name: '温州', value: 95, series: 1 },\n { name: '九江', value: 96, series: 1 },\n { name: '邯郸', value: 98, series: 1 },\n { name: '临安', value: 99, series: 1 },\n { name: '兰州', value: 99, series: 1 },\n { name: '沧州', value: 100, series: 1 },\n { name: '临沂', value: 103, series: 1 },\n { name: '南充', value: 104, series: 1 },\n { name: '天津', value: 105, series: 1 },\n { name: '富阳', value: 106, series: 1 },\n { name: '泰安', value: 112, series: 1 },\n { name: '诸暨', value: 112, series: 1 },\n { name: '郑州', value: 113, series: 1 },\n { name: '哈尔滨', value: 114, series: 1 },\n { name: '聊城', value: 116, series: 1 },\n { name: '芜湖', value: 117, series: 1 },\n { name: '唐山', value: 119, series: 1 },\n { name: '平顶山', value: 119, series: 1 },\n { name: '邢台', value: 11, series: 19 },\n { name: '德州', value: 120, series: 1 },\n { name: '济宁', value: 120, series: 1 },\n { name: '荆州', value: 127, series: 1 },\n { name: '宜昌', value: 130, series: 1 },\n { name: '义乌', value: 132, series: 1 },\n { name: '丽水', value: 133, series: 1 },\n { name: '洛阳', value: 134, series: 1 },\n { name: '秦皇岛', value: 136, series: 1 },\n { name: '株洲', value: 143, series: 1 },\n { name: '石家庄', value: 147, series: 1 },\n { name: '莱芜', value: 148, series: 1 },\n { name: '常德', value: 152, series: 1 },\n { name: '保定', value: 153, series: 1 },\n { name: '湘潭', value: 154, series: 1 },\n { name: '金华', value: 157, series: 1 },\n { name: '岳阳', value: 169, series: 1 },\n { name: '长沙', value: 175, series: 1 },\n { name: '衢州', value: 177, series: 1 },\n { name: '廊坊', value: 193, series: 1 },\n { name: '菏泽', value: 194, series: 1 },\n { name: '合肥', value: 229, series: 1 },\n { name: '武汉', value: 273, series: 1 },\n { name: '大庆', value: 279, series: 1 },\n ];\n geoCoordMap = {\n 海门: [121.15, 31.89],\n 鄂尔多斯: [109.781327, 39.608266],\n 招远: [120.38, 37.35],\n 舟山: [122.207216, 29.985295],\n 齐齐哈尔: [123.97, 47.33],\n 盐城: [120.13, 33.38],\n 赤峰: [118.87, 42.28],\n 青岛: [120.33, 36.07],\n 乳山: [121.52, 36.89],\n 金昌: [102.188043, 38.520089],\n 泉州: [118.58, 24.93],\n 莱西: [120.53, 36.86],\n 日照: [119.46, 35.42],\n 胶南: [119.97, 35.88],\n 南通: [121.05, 32.08],\n 拉萨: [91.11, 29.97],\n 云浮: [112.02, 22.93],\n 梅州: [116.1, 24.55],\n 文登: [122.05, 37.2],\n 上海: [121.48, 31.22],\n 攀枝花: [101.718637, 26.582347],\n 威海: [122.1, 37.5],\n 承德: [117.93, 40.97],\n 厦门: [118.1, 24.46],\n 汕尾: [115.375279, 22.786211],\n 潮州: [116.63, 23.68],\n 丹东: [124.37, 40.13],\n 太仓: [121.1, 31.45],\n 曲靖: [103.79, 25.51],\n 烟台: [121.39, 37.52],\n 福州: [119.3, 26.08],\n 瓦房店: [121.979603, 39.627114],\n 即墨: [120.45, 36.38],\n 抚顺: [123.97, 41.97],\n 玉溪: [102.52, 24.35],\n 张家口: [114.87, 40.82],\n 阳泉: [113.57, 37.85],\n 莱州: [119.942327, 37.177017],\n 湖州: [120.1, 30.86],\n 汕头: [116.69, 23.39],\n 昆山: [120.95, 31.39],\n 宁波: [121.56, 29.86],\n 湛江: [110.359377, 21.270708],\n 揭阳: [116.35, 23.55],\n 荣成: [122.41, 37.16],\n 连云港: [119.16, 34.59],\n 葫芦岛: [120.836932, 40.711052],\n 常熟: [120.74, 31.64],\n 东莞: [113.75, 23.04],\n 河源: [114.68, 23.73],\n 淮安: [119.15, 33.5],\n 泰州: [119.9, 32.49],\n 南宁: [108.33, 22.84],\n 营口: [122.18, 40.65],\n 惠州: [114.4, 23.09],\n 江阴: [120.26, 31.91],\n 蓬莱: [120.75, 37.8],\n 韶关: [113.62, 24.84],\n 嘉峪关: [98.289152, 39.77313],\n 广州: [113.23, 23.16],\n 延安: [109.47, 36.6],\n 太原: [112.53, 37.87],\n 清远: [113.01, 23.7],\n 中山: [113.38, 22.52],\n 昆明: [102.73, 25.04],\n 寿光: [118.73, 36.86],\n 盘锦: [122.070714, 41.119997],\n 长治: [113.08, 36.18],\n 深圳: [114.07, 22.62],\n 珠海: [113.52, 22.3],\n 宿迁: [118.3, 33.96],\n 咸阳: [108.72, 34.36],\n 铜川: [109.11, 35.09],\n 平度: [119.97, 36.77],\n 佛山: [113.11, 23.05],\n 海口: [110.35, 20.02],\n 江门: [113.06, 22.61],\n 章丘: [117.53, 36.72],\n 肇庆: [112.44, 23.05],\n 大连: [121.62, 38.92],\n 临汾: [111.5, 36.08],\n 吴江: [120.63, 31.16],\n 石嘴山: [106.39, 39.04],\n 沈阳: [123.38, 41.8],\n 苏州: [120.62, 31.32],\n 茂名: [110.88, 21.68],\n 嘉兴: [120.76, 30.77],\n 长春: [125.35, 43.88],\n 胶州: [120.03336, 36.264622],\n 银川: [106.27, 38.47],\n 张家港: [120.555821, 31.875428],\n 三门峡: [111.19, 34.76],\n 锦州: [121.15, 41.13],\n 南昌: [115.89, 28.68],\n 柳州: [109.4, 24.33],\n 三亚: [109.511909, 18.252847],\n 自贡: [104.778442, 29.33903],\n 吉林: [126.57, 43.87],\n 阳江: [111.95, 21.85],\n 泸州: [105.39, 28.91],\n 西宁: [101.74, 36.56],\n 宜宾: [104.56, 29.77],\n 呼和浩特: [111.65, 40.82],\n 成都: [104.06, 30.67],\n 大同: [113.3, 40.12],\n 镇江: [119.44, 32.2],\n 桂林: [110.28, 25.29],\n 张家界: [110.479191, 29.117096],\n 宜兴: [119.82, 31.36],\n 北海: [109.12, 21.49],\n 西安: [108.95, 34.27],\n 金坛: [119.56, 31.74],\n 东营: [118.49, 37.46],\n 牡丹江: [129.58, 44.6],\n 遵义: [106.9, 27.7],\n 绍兴: [120.58, 30.01],\n 扬州: [119.42, 32.39],\n 常州: [119.95, 31.79],\n 潍坊: [119.1, 36.62],\n 重庆: [106.54, 29.59],\n 台州: [121.420757, 28.656386],\n 南京: [118.78, 32.04],\n 滨州: [118.03, 37.36],\n 贵阳: [106.71, 26.57],\n 无锡: [120.29, 31.59],\n 本溪: [123.73, 41.3],\n 克拉玛依: [84.77, 45.59],\n 渭南: [109.5, 34.52],\n 马鞍山: [118.48, 31.56],\n 宝鸡: [107.15, 34.38],\n 焦作: [113.21, 35.24],\n 句容: [119.16, 31.95],\n 北京: [116.46, 39.92],\n 徐州: [117.2, 34.26],\n 衡水: [115.72, 37.72],\n 包头: [110, 40.58],\n 绵阳: [104.73, 31.48],\n 乌鲁木齐: [87.68, 43.77],\n 枣庄: [117.57, 34.86],\n 杭州: [120.19, 30.26],\n 淄博: [118.05, 36.78],\n 鞍山: [122.85, 41.12],\n 溧阳: [119.48, 31.43],\n 库尔勒: [86.06, 41.68],\n 安阳: [114.35, 36.1],\n 开封: [114.35, 34.79],\n 济南: [117, 36.65],\n 德阳: [104.37, 31.13],\n 温州: [120.65, 28.01],\n 九江: [115.97, 29.71],\n 邯郸: [114.47, 36.6],\n 临安: [119.72, 30.23],\n 兰州: [103.73, 36.03],\n 沧州: [116.83, 38.33],\n 临沂: [118.35, 35.05],\n 南充: [106.110698, 30.837793],\n 天津: [117.2, 39.13],\n 富阳: [119.95, 30.07],\n 泰安: [117.13, 36.18],\n 诸暨: [120.23, 29.71],\n 郑州: [113.65, 34.76],\n 哈尔滨: [126.63, 45.75],\n 聊城: [115.97, 36.45],\n 芜湖: [118.38, 31.33],\n 唐山: [118.02, 39.63],\n 平顶山: [113.29, 33.75],\n 邢台: [114.48, 37.05],\n 德州: [116.29, 37.45],\n 济宁: [116.59, 35.38],\n 荆州: [112.239741, 30.335165],\n 宜昌: [111.3, 30.7],\n 义乌: [120.06, 29.32],\n 丽水: [119.92, 28.45],\n 洛阳: [112.44, 34.7],\n 秦皇岛: [119.57, 39.95],\n 株洲: [113.16, 27.83],\n 石家庄: [114.48, 38.03],\n 莱芜: [117.67, 36.19],\n 常德: [111.69, 29.05],\n 保定: [115.48, 38.85],\n 湘潭: [112.91, 27.87],\n 金华: [119.64, 29.12],\n 岳阳: [113.09, 29.37],\n 长沙: [113, 28.21],\n 衢州: [118.88, 28.97],\n 廊坊: [116.7, 39.53],\n 菏泽: [115.480656, 35.23375],\n 合肥: [117.27, 31.86],\n 武汉: [114.31, 30.52],\n 大庆: [125.03, 46.58],\n };\n id: string;\n constructor(@Inject(forwardRef(() => ParentContainerComponent)) private parent: ParentContainerComponent) {}\n ngOnChanges(changes: SimpleChanges): void {\n const item = [];\n this.bubbleType.forEach((series) => {\n item.push({\n coordinateSystem: 'bmap',\n data: this.convertData(this.data, series.key),\n itemStyle: { normal: { color: series.color } },\n label: {\n formatter: '{b}',\n position: 'right',\n show: false,\n },\n symbolSize: this.getItem(series.size),\n name: series.key,\n type: 'scatter',\n });\n });\n this.parent.childInit({\n id: this.id,\n item,\n });\n }\n ngOnInit() {}\n ngOnDestroy(): void {\n this.parent.deleteChild(this.id);\n }\n getItem(v) {\n if (v && v.indexOf && v.indexOf('function') > -1) {\n return eval('(' + v + ')');\n }\n }\n convertData(data, key) {\n let res = [];\n for (let i = 0; i < data.length; i++) {\n let geoCoord = this.geoCoordMap[data[i].name];\n if (geoCoord && data[i].series == key) {\n res.push({\n name: data[i].name,\n extraData: { lat: geoCoord[1], lng: geoCoord[0], s: data[i].series, value: data[i].value },\n value: geoCoord.concat(data[i].value),\n });\n }\n }\n return res;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BreathingBubbleLayerComponent } from './breathing-bubble-layer.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [BreathingBubbleLayerComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class BreathingBubbleLayerModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(BreathingBubbleLayerComponent);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BasicPlanimetricMapComponent } from './basic-planimetric-map.component';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { BreathingBubbleLayerModule } from '../breathing-bubble-layer/breathing-bubble-layer.module';\n\n@NgModule({\n declarations: [BasicPlanimetricMapComponent],\n imports: [CommonModule, NgxEchartsModule, WidgetBaseModule, BreathingBubbleLayerModule],\n})\nexport class BasicPlanimetricMapModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(BasicPlanimetricMapComponent);\n }\n}\n","import {\r\n Component,\r\n OnInit,\r\n forwardRef,\r\n ViewChild,\r\n ElementRef,\r\n OnDestroy,\r\n OnChanges,\r\n SimpleChanges,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { Widget, Property, Data, DataOutput, Event } from 'bbj-widget-base';\r\nimport { ParentContainerComponent } from '../parent-container/parent-container.component';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport * as echarts from 'echarts';\r\nimport { NgxEchartsDirective } from 'ngx-echarts';\r\nimport { getEchartsTextStyle } from '../shared/util/echarts.util';\r\n\r\n@Component({\r\n selector: 'sc-planimetric-map2d',\r\n templateUrl: './planimetric-map2d.component.html',\r\n styleUrls: ['./planimetric-map2d.component.less'],\r\n providers: [{ provide: ParentContainerComponent, useExisting: forwardRef(() => PlanimetricMap2dComponent) }],\r\n})\r\n@Widget('2D平面地图', {\r\n group: 'component',\r\n image: 'assets/img/screen/2dmap.png',\r\n icon: 'iconmokuai',\r\n children: [\r\n {\r\n title: '呼吸气泡层',\r\n type: 'sc-breathing-bubble-layer',\r\n option: {},\r\n hidden: true,\r\n hideChild: true,\r\n },\r\n ],\r\n childTypes: [\r\n 'sc-fly-line-layer',\r\n 'sc-breathing-bubble-layer',\r\n 'sc-map2d-polyline-layer',\r\n 'sc-map2d-mark-layer',\r\n 'sc-map2d-visual-layer',\r\n ],\r\n description: 'hasChildItem',\r\n})\r\nexport class PlanimetricMap2dComponent extends ParentContainerComponent implements OnInit, OnDestroy, OnChanges {\r\n @Property('地图样式', {\r\n ui: {\r\n widget: 'myUrlSelect',\r\n url: '/assets/mapListItem.json',\r\n },\r\n })\r\n mapStyle = 'china';\r\n @Property('地图缩放', {\r\n ui: { widget: 'myRange', min: 1, max: 40, step: 1 },\r\n })\r\n zoom = 1;\r\n @Property('区域背景', {\r\n ui: {\r\n widget: 'myColor',\r\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\r\n },\r\n })\r\n areaColor = '#323c48';\r\n @Property('区域描边', {\r\n ui: {\r\n widget: 'myColor',\r\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\r\n },\r\n })\r\n borderColor = '#404a59';\r\n @Property('移动高亮', {\r\n ui: {\r\n widget: 'myColor',\r\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\r\n },\r\n })\r\n _areaColor = '#2a333d';\r\n @Property('地区字体', { ui: { widget: 'myFont' } })\r\n areaNamefont: any = {\r\n family: '',\r\n color: '#FFFFFF',\r\n weight: 'normal',\r\n size: 12,\r\n space: 0,\r\n lineHeight: 12,\r\n };\r\n @Property('显示地名', {\r\n type: 'boolean',\r\n })\r\n showAreaName = true;\r\n @Property('触发方式', {\r\n ui: { widget: 'select' },\r\n enum: [\r\n { label: '点击', value: 'click' },\r\n { label: '鼠标移动', value: 'mousemove' },\r\n ],\r\n })\r\n triggerType = 'mousemove';\r\n @Property('选中方式', {\r\n ui: { widget: 'select' },\r\n enum: [\r\n { label: '默认', value: '' },\r\n { label: '单选', value: 'single' },\r\n { label: '多选', value: 'multiple' },\r\n ],\r\n })\r\n selectedMode = '';\r\n\r\n @Property('缩放开关', {\r\n type: 'boolean',\r\n })\r\n zoomSwitch = 'false';\r\n @Property('高亮描边', {\r\n ui: {\r\n widget: 'myColor',\r\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\r\n },\r\n })\r\n _borderColor = '';\r\n @Property('阴影颜色', {\r\n ui: {\r\n widget: 'myColor',\r\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\r\n },\r\n })\r\n shadowColor = '#2a333d';\r\n @Property('边框粗细', {\r\n type: 'number',\r\n })\r\n shadowWidth = 20;\r\n @Property('地图渐变开始', {\r\n ui: {\r\n widget: 'myColor',\r\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\r\n },\r\n })\r\n mapColorStart = '#2a333d';\r\n @Property('地图渐变结束', {\r\n ui: {\r\n widget: 'myColor',\r\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\r\n },\r\n })\r\n mapColorEnd = '#2a333d';\r\n @Property('选中渐变开始', {\r\n ui: {\r\n widget: 'myColor',\r\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\r\n },\r\n })\r\n selectColorStart = '#2a333d';\r\n @Property('选中渐变结束', {\r\n ui: {\r\n widget: 'myColor',\r\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\r\n },\r\n })\r\n selectColorEnd = '#2a333d';\r\n\r\n chartOption: any;\r\n hasMap = false;\r\n @Data({\r\n properties: {\r\n name: { type: 'string', title: '地名' },\r\n lng: { type: 'number', title: '经度' },\r\n lat: { type: 'string', title: '纬度' },\r\n },\r\n })\r\n data: any[] = [];\r\n @DataOutput(['name', 'lng', 'lat'])\r\n @Event('选中', {\r\n params: {\r\n properties: {\r\n name: { type: 'string', title: '值' },\r\n lng: { type: 'number', title: '经度' },\r\n lat: { type: 'string', title: '纬度' },\r\n },\r\n },\r\n })\r\n areaClick = new EventEmitter();\r\n\r\n nameMap: any = {\r\n Afghanistan: '阿富汗',\r\n Albania: '阿尔巴尼亚',\r\n Algeria: '阿尔及利亚',\r\n Angola: '安哥拉',\r\n Argentina: '阿根廷',\r\n Armenia: '亚美尼亚',\r\n Australia: '澳大利亚',\r\n Austria: '奥地利',\r\n Azerbaijan: '阿塞拜疆',\r\n Bangladesh: '孟加拉国',\r\n Belarus: '白俄罗斯',\r\n Belgium: '比利时',\r\n Belize: '伯利兹',\r\n Benin: '贝宁',\r\n Bermuda: '百慕大',\r\n Bhutan: '不丹',\r\n Bolivia: '玻利维亚',\r\n 'Bosnia and Herzegovina': '波斯尼亚和黑塞哥维那',\r\n Botswana: '博茨瓦纳',\r\n Brazil: '巴西',\r\n Brunei: '文莱',\r\n Bulgaria: '保加利亚',\r\n 'Burkina Faso': '布基纳法索',\r\n Burundi: '布隆迪',\r\n Cambodia: '柬埔寨',\r\n Cameroon: '喀麦隆',\r\n Canada: '加拿大',\r\n 'Central African Republic': '中非共和国',\r\n Chad: '乍得',\r\n Chile: '智利',\r\n China: '中国',\r\n Colombia: '哥伦比亚',\r\n 'Costa Rica': '哥斯达黎加',\r\n Croatia: '克罗地亚',\r\n Cuba: '古巴',\r\n Cyprus: '塞浦路斯',\r\n 'Czech Republic': '捷克共和国',\r\n 'Democratic Republic of the Congo': '刚果民主共和国',\r\n Denmark: '丹麦',\r\n Djibouti: '吉布提',\r\n 'Dominican Republic': '多明尼加共和国',\r\n 'East Timor': '东帝汶',\r\n Ecuador: '厄瓜多尔',\r\n Egypt: '埃及',\r\n 'El Salvador': '萨尔瓦多',\r\n 'Equatorial Guinea': '赤道几内亚',\r\n Eritrea: '厄立特里亚',\r\n Estonia: '爱沙尼亚',\r\n Ethiopia: '埃塞俄比亚',\r\n 'Falkland Islands': '福克兰群岛',\r\n Fiji: '斐',\r\n Finland: '芬兰',\r\n France: '法国',\r\n 'French Guiana': '法属圭亚那',\r\n 'French Southern and Antarctic Lands': '法属南半球和南极领地',\r\n Gabon: '加蓬',\r\n Gambia: '冈比亚',\r\n Georgia: '格鲁吉亚',\r\n Germany: '德国',\r\n Ghana: '加纳',\r\n Greece: '希腊',\r\n Greenland: '格陵兰',\r\n Guatemala: '危地马拉',\r\n Guinea: '几内亚',\r\n 'Guinea Bissau': '几内亚比绍',\r\n Guyana: '圭亚那',\r\n Haiti: '海地',\r\n Honduras: '洪都拉斯',\r\n Hungary: '匈牙利',\r\n Iceland: '冰岛',\r\n India: '印度',\r\n Indonesia: '印尼',\r\n Iran: '伊朗',\r\n Iraq: '伊拉克',\r\n Ireland: '爱尔兰',\r\n Israel: '以色列',\r\n Italy: '意大利',\r\n 'Ivory Coast': '象牙海岸',\r\n Jamaica: '牙买加',\r\n Japan: '日本',\r\n Jordan: '约旦',\r\n Kazakhstan: '哈萨克斯坦',\r\n Kenya: '肯尼亚',\r\n Kosovo: '科索沃',\r\n Kuwait: '科威特',\r\n Kyrgyzstan: '吉尔吉斯斯坦',\r\n Laos: '老挝',\r\n Latvia: '拉脱维亚',\r\n Lebanon: '黎巴嫩',\r\n Lesotho: '莱索托',\r\n Liberia: '利比里亚',\r\n Libya: '利比亚',\r\n Lithuania: '立陶宛',\r\n Luxembourg: '卢森堡',\r\n Macedonia: '马其顿',\r\n Madagascar: '马达加斯加',\r\n Malawi: '马拉维',\r\n Malaysia: '马来西亚',\r\n Mali: '马里',\r\n Mauritania: '毛里塔尼亚',\r\n Mexico: '墨西哥',\r\n Moldova: '摩尔多瓦',\r\n Mongolia: '蒙古',\r\n Montenegro: '黑山',\r\n Morocco: '摩洛哥',\r\n Mozambique: '莫桑比克',\r\n Myanmar: '缅甸',\r\n Namibia: '纳米比亚',\r\n Nepal: '尼泊尔',\r\n Netherlands: '荷兰',\r\n 'New Caledonia': '新喀里多尼亚',\r\n 'New Zealand': '新西兰',\r\n Nicaragua: '尼加拉瓜',\r\n Niger: '尼日尔',\r\n Nigeria: '尼日利亚',\r\n 'North Korea': '北朝鲜',\r\n 'Northern Cyprus': '北塞浦路斯',\r\n Norway: '挪威',\r\n Oman: '阿曼',\r\n Pakistan: '巴基斯坦',\r\n Panama: '巴拿马',\r\n 'Papua New Guinea': '巴布亚新几内亚',\r\n Paraguay: '巴拉圭',\r\n Peru: '秘鲁',\r\n Philippines: '菲律宾',\r\n Poland: '波兰',\r\n Portugal: '葡萄牙',\r\n 'Puerto Rico': '波多黎各',\r\n Qatar: '卡塔尔',\r\n 'Republic of Serbia': '塞尔维亚',\r\n 'Republic of the Congo': '刚果共和国',\r\n Romania: '罗马尼亚',\r\n Russia: '俄罗斯',\r\n Rwanda: '卢旺达',\r\n 'Saudi Arabia': '沙特阿拉伯',\r\n Senegal: '塞内加尔',\r\n 'Sierra Leone': '塞拉利昂',\r\n Singapore: '新加坡',\r\n Slovakia: '斯洛伐克',\r\n Slovenia: '斯洛文尼亚',\r\n 'Solomon Islands': '所罗门群岛',\r\n Somalia: '索马里',\r\n Somaliland: '索马里兰',\r\n 'South Africa': '南非',\r\n 'South Korea': '韩国',\r\n 'South Sudan': '南苏丹',\r\n Spain: '西班牙',\r\n 'Sri Lanka': '斯里兰卡',\r\n Sudan: '苏丹',\r\n Suriname: '苏里南',\r\n Swaziland: '斯威士兰',\r\n Sweden: '瑞典',\r\n Switzerland: '瑞士',\r\n Syria: '叙利亚',\r\n Tajikistan: '塔吉克斯坦',\r\n Thailand: '泰国',\r\n 'The Bahamas': '巴哈马',\r\n Togo: '多哥',\r\n 'Trinidad and Tobago': '特里尼达和多巴哥',\r\n Tunisia: '突尼斯',\r\n Turkey: '土耳其',\r\n Turkmenistan: '土库曼斯坦',\r\n Uganda: '乌干达',\r\n Ukraine: '乌克兰',\r\n 'United Arab Emirates': '阿联酋',\r\n 'United Kingdom': '英国',\r\n 'United Republic of Tanzania': '坦桑尼亚',\r\n 'United States': '美国',\r\n Uruguay: '乌拉圭',\r\n Uzbekistan: '乌兹别克斯坦',\r\n Vanuatu: '瓦努阿图',\r\n Venezuela: '委内瑞拉',\r\n Vietnam: '越南',\r\n 'West Bank': '西岸',\r\n 'Western Sahara': '西撒哈拉',\r\n Yemen: '也门',\r\n Zambia: '赞比亚',\r\n Zimbabwe: '津巴布韦',\r\n };\r\n _children: any = [];\r\n loadedMap: { [name: string]: Promise<any> } = {};\r\n provinces: any;\r\n stack = [];\r\n visualMap: any[];\r\n @ViewChild(NgxEchartsDirective)\r\n ngxEcharts: NgxEchartsDirective;\r\n constructor(protected http: HttpClient) {\r\n super();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.data) {\r\n if (this.data && this.data[0]) {\r\n this.mapStyle = this.data[0].name;\r\n this.stack.push(this.mapStyle);\r\n }\r\n this.reloadMap();\r\n }\r\n }\r\n async ngOnInit() {\r\n // await this.commonService.getMap();\r\n // await import('echarts/dist/extension/bmap.js');\r\n this.provinces = (await this.http.get('/assets/mapListItem.json').toPromise()) as any;\r\n // const map = echarts.getMap(this.mapStyle);\r\n // if (map == null) {\r\n // const data = await this.http.get('assets/echarts/map/json/' + this.mapStyle + '.json').toPromise();\r\n // echarts.registerMap(this.mapStyle, data);\r\n // }\r\n // this.hasMap = true;\r\n // this.chartInit();\r\n }\r\n ngOnDestroy(): void {\r\n if (this.ngxEcharts) {\r\n (this.ngxEcharts as any).initChart = () => {};\r\n }\r\n }\r\n chartInit() {\r\n // this.loadMap(this.mapStyle).then((data) => {\r\n let series = [];\r\n this.visualMap = [];\r\n this._children.forEach((child) => {\r\n if (child.type === 'visual') {\r\n // series = child.series;\r\n // series[0].mapType = this.mapStyle;\r\n if (child.visualMap && child.item.length) {\r\n if (child.visualMap2) {\r\n this.visualMap.push(child.visualMap2);\r\n }\r\n this.visualMap.push(child.visualMap);\r\n child.visualMap.seriesIndex = series.length;\r\n }\r\n }\r\n if (Array.isArray(child.item)) {\r\n series = [...series, ...child.item];\r\n } else {\r\n series = [...series, child.item];\r\n }\r\n });\r\n series.forEach((layer, index) => {\r\n if (layer.type === 'lines') {\r\n delete layer.coordinateSystem;\r\n }\r\n if (layer.type === 'scatter') {\r\n layer.coordinateSystem = 'geo';\r\n // layer.symbolSize = '10';\r\n }\r\n // if (layer.type === 'map') {\r\n // this.visualMap.forEach((visualMap) => {\r\n // visualMap['seriesIndex'] = index;\r\n // });\r\n // }\r\n });\r\n const textStyle = getEchartsTextStyle(this.areaNamefont);\r\n this.chartOption = {\r\n tooltip: {\r\n trigger: 'item',\r\n triggerOn: this.triggerType ? this.triggerType : 'mousemove',\r\n },\r\n geo: {\r\n label: {\r\n normal: {\r\n //静态的时候展示样式\r\n show: this.showAreaName, //是否显示地图省份得名称\r\n textStyle,\r\n },\r\n emphasis: {\r\n show: this.showAreaName,\r\n textStyle,\r\n },\r\n },\r\n selectedMode: this.selectedMode,\r\n select: {\r\n label: {\r\n show: this.showAreaName, //是否显示地图省份得名称\r\n textStyle: {\r\n color: this.areaNamefont?.color || '#fff',\r\n fontSize: this.areaNamefont?.size || 12,\r\n fontFamily: this.areaNamefont?.family || '',\r\n lineHeight: this.areaNamefont?.lineHeight || 12,\r\n },\r\n },\r\n itemStyle: {\r\n areaColor: {\r\n type: 'radial',\r\n x: 0.5,\r\n y: 0.5,\r\n r: 0.8,\r\n colorStops: [\r\n {\r\n offset: 0,\r\n color: this.selectColorStart ? this.selectColorStart : this._areaColor, // 0% 处的颜色\r\n },\r\n {\r\n offset: 1,\r\n color: this.selectColorEnd ? this.selectColorEnd : this._areaColor, // 100% 处的颜色\r\n },\r\n ],\r\n globalCoord: false, // 缺省为 false\r\n },\r\n borderColor: this._borderColor,\r\n },\r\n },\r\n itemStyle: {\r\n normal: {\r\n // areaColor: this.areaColor,\r\n borderColor: this.borderColor,\r\n opacity: 1,\r\n areaColor: {\r\n type: 'radial',\r\n x: 0.5,\r\n y: 0.5,\r\n r: 0.8,\r\n colorStops: [\r\n {\r\n offset: 0,\r\n color: this.mapColorStart ? this.mapColorStart : this.areaColor, // 0% 处的颜色\r\n },\r\n {\r\n offset: 1,\r\n color: this.mapColorEnd ? this.mapColorEnd : this.areaColor, // 100% 处的颜色\r\n },\r\n ],\r\n globalCoord: false, // 缺省为 false\r\n },\r\n shadowColor: this.shadowColor,\r\n shadowBlur: this.shadowWidth,\r\n shadowOffsetX: -2,\r\n shadowOffsetY: 2,\r\n },\r\n emphasis: {\r\n areaColor: {\r\n type: 'radial',\r\n x: 0.5,\r\n y: 0.5,\r\n r: 0.8,\r\n colorStops: [\r\n {\r\n offset: 0,\r\n color: this.selectColorStart ? this.selectColorStart : this._areaColor, // 0% 处的颜色\r\n },\r\n {\r\n offset: 1,\r\n color: this.selectColorEnd ? this.selectColorEnd : this._areaColor, // 100% 处的颜色\r\n },\r\n ],\r\n globalCoord: false, // 缺省为 false\r\n },\r\n borderColor: this._borderColor,\r\n },\r\n },\r\n\r\n map: this.mapStyle,\r\n roam: this.zoomSwitch,\r\n nameMap: this.nameMap,\r\n zoom: this.zoom,\r\n },\r\n series,\r\n };\r\n if (this.visualMap?.length) {\r\n this.chartOption.visualMap = this.visualMap;\r\n }\r\n // });\r\n }\r\n childInit(child: any) {\r\n if (child.id) {\r\n const childIndex = this._children.findIndex((s) => s.id === child.id);\r\n if (childIndex > -1) {\r\n this._children[childIndex] = child;\r\n } else {\r\n this._children.push(child);\r\n }\r\n this.chartInit();\r\n }\r\n }\r\n deleteChild(childId: string) {\r\n if (childId) {\r\n const childIndex = this._children.findIndex((s) => s.id === childId);\r\n // this._children.forEach((element) => {\r\n // if (childId === element.id) {\r\n // this.visualMap = null;\r\n // }\r\n // });\r\n if (childIndex > -1) {\r\n this._children.splice(childIndex, 1);\r\n this.chartInit();\r\n }\r\n }\r\n }\r\n\r\n // loadMap(name: string) {\r\n // let loadMapPromise = this.loadedMap[name];\r\n // if (!loadMapPromise) {\r\n // loadMapPromise = this.http.get('assets/echarts/map/json/' + name + '.json').toPromise();\r\n // this.loadedMap[name] = loadMapPromise;\r\n // }\r\n // return loadMapPromise;\r\n // }\r\n async reloadMap() {\r\n const mapStyle = this.mapStyle;\r\n const map = echarts.getMap(mapStyle);\r\n if (map == null) {\r\n const data:any = await this.http.get('assets/echarts/map/json/' + mapStyle + '.json').toPromise();\r\n echarts.registerMap(mapStyle, data);\r\n }\r\n this.hasMap = true;\r\n this.chartInit();\r\n }\r\n async markClick(event) {\r\n let lng: number;\r\n let lat: number;\r\n if (event.seriesId) {\r\n lng = event.value[0];\r\n lat = event.value[1];\r\n const child = this._children.find((s) => event.seriesId.startsWith(s.id));\r\n if (child && child.onClick) {\r\n child.onClick(event);\r\n }\r\n } else {\r\n const map = echarts.getMap(this.mapStyle);\r\n if (map) {\r\n for (const feature of map.geoJson.features) {\r\n const properties = feature.properties;\r\n if (properties.name === event.name) {\r\n if (properties.cp) {\r\n lng = properties.cp[0];\r\n lat = properties.cp[1];\r\n } else if (properties.center) {\r\n lng = properties.center[0];\r\n lat = properties.center[1];\r\n } else {\r\n console.log(properties);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n const province = this.provinces.find((element) => element.label === event.name);\r\n if (province) {\r\n this.stack.push(this.mapStyle);\r\n this.mapStyle = province.value;\r\n this.reloadMap();\r\n }\r\n }\r\n this.areaClick.emit({ name: event.name, lng, lat });\r\n // if(event.componentSubType!=null && event.componentSubType==='scatter'){\r\n // const obj=event.data;\r\n // console.log(event);\r\n // this.markerTierClick.emit({\r\n // address: obj.name,\r\n // information: '',\r\n // group: '',\r\n // lng: obj.value[0],\r\n // lat: obj.value[1],\r\n // });\r\n // }\r\n }\r\n rollback(event: MouseEvent) {\r\n event.preventDefault();\r\n if (this.stack != null && this.stack.length != 0) {\r\n this.mapStyle = this.stack.pop();\r\n this.reloadMap();\r\n }\r\n }\r\n\r\n getTextStyle() {}\r\n}\r\n","import { Component, OnInit, Inject, forwardRef, SimpleChanges, OnDestroy } from '@angular/core';\nimport { Widget, Property, Data } from 'bbj-widget-base';\nimport { ParentContainerComponent } from '../../parent-container/parent-container.component';\n\n@Component({\n selector: 'sc-fly-line-layer',\n templateUrl: './fly-line-layer.component.html',\n styleUrls: ['./fly-line-layer.component.less'],\n})\n@Widget('飞线层', {\n group: 'component',\n image: '',\n icon: '',\n hidden: true,\n})\nexport class FlyLineLayerComponent implements OnInit, OnDestroy {\n @Property('飞线粗细', {\n ui: { widget: 'myRange', min: 1, max: 100, step: 1 },\n })\n size = 1;\n @Property('飞线颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n color = 'RGB(0, 252, 255)';\n @Data({\n properties: {\n from: { type: 'number', title: '出发位置' },\n to: { type: 'number', title: '结束位置' },\n fromInfo: { type: 'string', title: '出发信息' },\n toInfo: { type: 'string', title: '结束信息' },\n },\n })\n data: any[] = [\n {\n from: '116.85059,31.69078',\n to: '118.69629,36.20882',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '120.89355,37.09024',\n to: '116.93848,31.61597',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '121.28906,29.34388',\n to: '117.20215,31.12820',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '118.16895,31.57854',\n to: '119.79492,32.47270',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '116.76270,33.35806',\n to: '116.49902,38.95941',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '116.41113,30.93992',\n to: '114.78516,26.58853',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '115.83984,32.13841',\n to: '97.47070,37.54458',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '116.27930,32.36140',\n to: '114.08203,36.27971',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '103.66699,25.79989',\n to: '116.05957,31.54109',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '112.14844,24.40714',\n to: '116.71875,33.21112',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '116.93848,31.65338',\n to: '118.34473,26.62782',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '90.70313,42.26105',\n to: '116.23535,32.32428',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '116.41113,30.82678',\n to: '114.87305,36.94989',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '116.45508,30.78904',\n to: '118.91602,28.57487',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '116.01562,40.07807',\n to: '116.71875,31.69078',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '116.71875,31.72817',\n to: '108.45703,40.24599',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '117.99316,40.84706',\n to: '116.85059,31.69078',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '118.30078,36.56260',\n to: '117.24609,40.97990',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '119.35547,26.86328',\n to: '120.41016,32.28713',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '113.07129,31.42866',\n to: '106.04004,31.31610',\n fromInfo: '起点',\n toInfo: '终点',\n },\n {\n from: '116.85059,31.31610',\n to: '110.43457,32.76880',\n fromInfo: '起点',\n toInfo: '终点',\n },\n ];\n geoCoordMap = {\n 海门: [121.15, 31.89],\n 鄂尔多斯: [109.781327, 39.608266],\n 招远: [120.38, 37.35],\n 舟山: [122.207216, 29.985295],\n 齐齐哈尔: [123.97, 47.33],\n 盐城: [120.13, 33.38],\n 赤峰: [118.87, 42.28],\n 青岛: [120.33, 36.07],\n 乳山: [121.52, 36.89],\n 金昌: [102.188043, 38.520089],\n 泉州: [118.58, 24.93],\n 莱西: [120.53, 36.86],\n 日照: [119.46, 35.42],\n 胶南: [119.97, 35.88],\n 南通: [121.05, 32.08],\n 拉萨: [91.11, 29.97],\n 云浮: [112.02, 22.93],\n 梅州: [116.1, 24.55],\n 文登: [122.05, 37.2],\n 上海: [121.48, 31.22],\n 攀枝花: [101.718637, 26.582347],\n 威海: [122.1, 37.5],\n 承德: [117.93, 40.97],\n 厦门: [118.1, 24.46],\n 汕尾: [115.375279, 22.786211],\n 潮州: [116.63, 23.68],\n 丹东: [124.37, 40.13],\n 太仓: [121.1, 31.45],\n 曲靖: [103.79, 25.51],\n 烟台: [121.39, 37.52],\n 福州: [119.3, 26.08],\n 瓦房店: [121.979603, 39.627114],\n 即墨: [120.45, 36.38],\n 抚顺: [123.97, 41.97],\n 玉溪: [102.52, 24.35],\n 张家口: [114.87, 40.82],\n 阳泉: [113.57, 37.85],\n 莱州: [119.942327, 37.177017],\n 湖州: [120.1, 30.86],\n 汕头: [116.69, 23.39],\n 昆山: [120.95, 31.39],\n 宁波: [121.56, 29.86],\n 湛江: [110.359377, 21.270708],\n 揭阳: [116.35, 23.55],\n 荣成: [122.41, 37.16],\n 连云港: [119.16, 34.59],\n 葫芦岛: [120.836932, 40.711052],\n 常熟: [120.74, 31.64],\n 东莞: [113.75, 23.04],\n 河源: [114.68, 23.73],\n 淮安: [119.15, 33.5],\n 泰州: [119.9, 32.49],\n 南宁: [108.33, 22.84],\n 营口: [122.18, 40.65],\n 惠州: [114.4, 23.09],\n 江阴: [120.26, 31.91],\n 蓬莱: [120.75, 37.8],\n 韶关: [113.62, 24.84],\n 嘉峪关: [98.289152, 39.77313],\n 广州: [113.23, 23.16],\n 延安: [109.47, 36.6],\n 太原: [112.53, 37.87],\n 清远: [113.01, 23.7],\n 中山: [113.38, 22.52],\n 昆明: [102.73, 25.04],\n 寿光: [118.73, 36.86],\n 盘锦: [122.070714, 41.119997],\n 长治: [113.08, 36.18],\n 深圳: [114.07, 22.62],\n 珠海: [113.52, 22.3],\n 宿迁: [118.3, 33.96],\n 咸阳: [108.72, 34.36],\n 铜川: [109.11, 35.09],\n 平度: [119.97, 36.77],\n 佛山: [113.11, 23.05],\n 海口: [110.35, 20.02],\n 江门: [113.06, 22.61],\n 章丘: [117.53, 36.72],\n 肇庆: [112.44, 23.05],\n 大连: [121.62, 38.92],\n 临汾: [111.5, 36.08],\n 吴江: [120.63, 31.16],\n 石嘴山: [106.39, 39.04],\n 沈阳: [123.38, 41.8],\n 苏州: [120.62, 31.32],\n 茂名: [110.88, 21.68],\n 嘉兴: [120.76, 30.77],\n 长春: [125.35, 43.88],\n 胶州: [120.03336, 36.264622],\n 银川: [106.27, 38.47],\n 张家港: [120.555821, 31.875428],\n 三门峡: [111.19, 34.76],\n 锦州: [121.15, 41.13],\n 南昌: [115.89, 28.68],\n 柳州: [109.4, 24.33],\n 三亚: [109.511909, 18.252847],\n 自贡: [104.778442, 29.33903],\n 吉林: [126.57, 43.87],\n 阳江: [111.95, 21.85],\n 泸州: [105.39, 28.91],\n 西宁: [101.74, 36.56],\n 宜宾: [104.56, 29.77],\n 呼和浩特: [111.65, 40.82],\n 成都: [104.06, 30.67],\n 大同: [113.3, 40.12],\n 镇江: [119.44, 32.2],\n 桂林: [110.28, 25.29],\n 张家界: [110.479191, 29.117096],\n 宜兴: [119.82, 31.36],\n 北海: [109.12, 21.49],\n 西安: [108.95, 34.27],\n 金坛: [119.56, 31.74],\n 东营: [118.49, 37.46],\n 牡丹江: [129.58, 44.6],\n 遵义: [106.9, 27.7],\n 绍兴: [120.58, 30.01],\n 扬州: [119.42, 32.39],\n 常州: [119.95, 31.79],\n 潍坊: [119.1, 36.62],\n 重庆: [106.54, 29.59],\n 台州: [121.420757, 28.656386],\n 南京: [118.78, 32.04],\n 滨州: [118.03, 37.36],\n 贵阳: [106.71, 26.57],\n 无锡: [120.29, 31.59],\n 本溪: [123.73, 41.3],\n 克拉玛依: [84.77, 45.59],\n 渭南: [109.5, 34.52],\n 马鞍山: [118.48, 31.56],\n 宝鸡: [107.15, 34.38],\n 焦作: [113.21, 35.24],\n 句容: [119.16, 31.95],\n 北京: [116.46, 39.92],\n 徐州: [117.2, 34.26],\n 衡水: [115.72, 37.72],\n 包头: [110, 40.58],\n 绵阳: [104.73, 31.48],\n 乌鲁木齐: [87.68, 43.77],\n 枣庄: [117.57, 34.86],\n 杭州: [120.19, 30.26],\n 淄博: [118.05, 36.78],\n 鞍山: [122.85, 41.12],\n 溧阳: [119.48, 31.43],\n 库尔勒: [86.06, 41.68],\n 安阳: [114.35, 36.1],\n 开封: [114.35, 34.79],\n 济南: [117, 36.65],\n 德阳: [104.37, 31.13],\n 温州: [120.65, 28.01],\n 九江: [115.97, 29.71],\n 邯郸: [114.47, 36.6],\n 临安: [119.72, 30.23],\n 兰州: [103.73, 36.03],\n 沧州: [116.83, 38.33],\n 临沂: [118.35, 35.05],\n 南充: [106.110698, 30.837793],\n 天津: [117.2, 39.13],\n 富阳: [119.95, 30.07],\n 泰安: [117.13, 36.18],\n 诸暨: [120.23, 29.71],\n 郑州: [113.65, 34.76],\n 哈尔滨: [126.63, 45.75],\n 聊城: [115.97, 36.45],\n 芜湖: [118.38, 31.33],\n 唐山: [118.02, 39.63],\n 平顶山: [113.29, 33.75],\n 邢台: [114.48, 37.05],\n 德州: [116.29, 37.45],\n 济宁: [116.59, 35.38],\n 荆州: [112.239741, 30.335165],\n 宜昌: [111.3, 30.7],\n 义乌: [120.06, 29.32],\n 丽水: [119.92, 28.45],\n 洛阳: [112.44, 34.7],\n 秦皇岛: [119.57, 39.95],\n 株洲: [113.16, 27.83],\n 石家庄: [114.48, 38.03],\n 莱芜: [117.67, 36.19],\n 常德: [111.69, 29.05],\n 保定: [115.48, 38.85],\n 湘潭: [112.91, 27.87],\n 金华: [119.64, 29.12],\n 岳阳: [113.09, 29.37],\n 长沙: [113, 28.21],\n 衢州: [118.88, 28.97],\n 廊坊: [116.7, 39.53],\n 菏泽: [115.480656, 35.23375],\n 合肥: [117.27, 31.86],\n 武汉: [114.31, 30.52],\n 大庆: [125.03, 46.58],\n };\n id: string;\n constructor(@Inject(forwardRef(() => ParentContainerComponent)) private parent: ParentContainerComponent) {}\n ngOnChanges(changes: SimpleChanges): void {\n const item = [\n {\n coordinateSystem: 'bmap',\n data: this.convertData(this.data),\n effect: {\n color: this.color,\n period: 1,\n show: true,\n symbolSize: [this.size, 20],\n trailLength: 0.05,\n },\n lineStyle: {\n normal: {\n color: '#a6c84c',\n curveness: 0.2,\n opacity: 1,\n width: 0,\n },\n },\n type: 'lines',\n zlevel: 1,\n },\n ];\n this.parent.childInit({\n id: this.id,\n item,\n });\n }\n ngOnInit() {}\n ngOnDestroy(): void {\n this.parent.deleteChild(this.id);\n }\n convertData(data) {\n const res = [];\n for (let i = 0; i < data.length; i++) {\n const item = {};\n if (typeof data[i].from === 'string') {\n data[i].from = data[i].from.split(',');\n }\n if (typeof data[i].to === 'string') {\n data[i].to = data[i].to.split(',');\n }\n if (data[i].from && data[i].to) {\n res.push({\n fromName: data[i].fromInfo,\n toName: data[i].toInfo,\n coords: [data[i].from, data[i].to],\n });\n }\n }\n return res;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlyLineLayerComponent } from './fly-line-layer.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n@NgModule({\n declarations: [FlyLineLayerComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class FlyLineLayerModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(FlyLineLayerComponent);\n }\n}\n","import { Component, forwardRef, Inject, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { Data, Property, Widget } from 'bbj-widget-base';\nimport { ParentContainerComponent } from '../../parent-container/parent-container.component';\n\n@Component({\n selector: 'sc-map2d-polyline-layer',\n templateUrl: './map2d-polyline-layer.component.html',\n styleUrls: ['./map2d-polyline-layer.component.less'],\n})\n@Widget('折线层', {\n group: 'component',\n image: '',\n icon: '',\n hidden: true,\n})\nexport class Map2dPolylineLayerComponent implements OnInit, OnChanges, OnDestroy {\n @Property('线条粗细', {\n ui: { widget: 'myRange', min: 1, max: 100, step: 1 },\n })\n size = 1;\n @Property('线条颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n color = 'RGB(0, 252, 255)';\n @Data({\n properties: {\n group: { type: 'string', title: '分组' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n },\n })\n data: any[] = [\n {\n group: 'x',\n lng: '116.85',\n lat: '28.69',\n },\n {\n group: 'x',\n lng: '116.35',\n lat: '28.79',\n },\n {\n group: 'x',\n lng: '116.10',\n lat: '29',\n },\n ];\n id: string;\n datalist = [];\n constructor(@Inject(forwardRef(() => ParentContainerComponent)) private parent: ParentContainerComponent) {}\n ngOnDestroy(): void {\n this.parent.deleteChild(this.id);\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.grouping();\n const item = [\n {\n coordinateSystem: 'bmap',\n data: this.datalist,\n polyline: true,\n\n lineStyle: {\n normal: {\n color: this.color,\n opacity: 0.6,\n width: this.size,\n },\n },\n type: 'lines',\n name: 'polyline',\n zlevel: 1,\n },\n ];\n this.parent.childInit({\n id: this.id,\n item,\n });\n }\n\n ngOnInit(): void {}\n\n grouping() {\n this.datalist = [];\n const grouppname = [];\n const groups = {};\n if (this.data == null) {\n return;\n }\n this.data.forEach((t) => {\n if (grouppname.indexOf(t.group) < 0) {\n grouppname.push(t.group);\n }\n groups[t.group] = groups[t.group] || { coords: [] };\n let point = [];\n point.push(t.lng);\n point.push(t.lat);\n groups[t.group].coords.push(point);\n });\n grouppname.forEach((a) => {\n this.datalist.push(groups[a]);\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Map2dPolylineLayerComponent } from './map2d-polyline-layer.component';\nimport {WidgetBaseModule, WidgetService} from 'bbj-widget-base';\n\n\n\n\n@NgModule({\n declarations: [Map2dPolylineLayerComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class Map2dPolylineLayerModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(Map2dPolylineLayerComponent);\n }\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SFArrayWidgetSchema } from '@delon/form';\nimport { Data, DataOutput, Property, Widget, Event } from 'bbj-widget-base';\nimport { ParentContainerComponent } from '../../parent-container/parent-container.component';\n\n@Component({\n selector: 'sc-map2d-mark-layer',\n templateUrl: './map2d-mark-layer.component.html',\n styleUrls: ['./map2d-mark-layer.component.less'],\n})\n@Widget('标记层', {\n group: 'component',\n image: '',\n icon: '',\n hidden: true,\n})\nexport class Map2dMarkLayerComponent implements OnInit, OnChanges, OnDestroy {\n @Property('标记分组', {\n type: 'array',\n title: '标记分组',\n maxItems: 10,\n items: {\n type: 'object',\n properties: {\n imageUrl: {\n type: 'string',\n title: '图片',\n ui: {\n widget: 'myUpload',\n },\n },\n width: {\n type: 'number',\n title: '大小',\n },\n group: {\n type: 'string',\n title: '分组',\n },\n },\n required: [],\n },\n ui: { grid: { arraySpan: 24 }, spanControl: 24 } as SFArrayWidgetSchema,\n })\n groups = [];\n @Property('字体大小', {\n ui: { widget: 'myRange', min: 1, max: 100, step: 1 },\n })\n size = 12;\n // @Property('浮框背景', {\n // ui: {\n // widget: 'myColor',\n // example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n // },\n // })\n // backgroundColor='#F5A623';\n @Property('字体颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n color = 'RGB(0, 252, 255)';\n @Data({\n properties: {\n id: { type: 'string', title: 'id' },\n address: { type: 'string', title: '地点' },\n information: { type: 'string', title: '信息' },\n group: { type: 'string', title: '标记分组' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n },\n })\n data: any[] = [\n {\n address: '机楼1号',\n information: '暂无信息',\n group: '',\n lng: '116.7',\n lat: '28',\n },\n ];\n id: string;\n @DataOutput(['id', 'address', 'lng', 'lat'])\n @Event('点击标记', {\n params: {\n properties: {\n id: { type: 'string', title: 'id' },\n address: { type: 'string', title: '地点' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n },\n },\n })\n makerClick = new EventEmitter();\n constructor(@Inject(forwardRef(() => ParentContainerComponent)) private parent: ParentContainerComponent) { }\n ngOnDestroy(): void {\n this.parent.deleteChild(this.id);\n }\n ngOnChanges(changes: SimpleChanges): void {\n const item = {\n id: this.id,\n type: 'scatter',\n coordinateSyste: 'bmap',\n data: [],\n tooltip: {\n formatter: '{b}',\n position: 'top',\n textStyle: {\n color: this.color,\n fontSize: this.size,\n },\n },\n emphasis: {\n label: {\n show: true,\n },\n },\n };\n this.data.forEach((t) => {\n let image = 'none';\n let size = 30;\n if (this.groups !== null && this.groups.length > 0) {\n this.groups.forEach((g) => {\n if (g.group === t.group) {\n image = 'image://' + g.imageUrl;\n size = g.width;\n }\n });\n }\n const data: any = {\n id: t.id, name: t.address, value: [t.lng, t.lat],symbolSize:0, label: {\n formatter: (a) => {\n return a.name;\n },\n rich: {\n title: {\n fontSize:this.size,\n color: this.color,\n align: 'left'\n },\n // icon: {\n // // height: 10,\n // // align: 'bottom',\n // // backgroundColor: {\n // // image: '/screen/file/ebfd7e18c4644c278d838f784e9b5a94.png',\n // // }\n // },\n value: {\n // width: 20,\n fontSize:this.size,\n padding: [3, 20, 0, 5],\n align: 'right'\n },\n },\n // position: 'right',\n color: this.color,\n fontSize: this.size,\n show: true,\n }\n };\n if (t.information) {\n data.tooltip = { formatter: t.information };\n }\n if(this.groups&&this.groups.length>0){\n this.groups.forEach(e=>{\n if(!e.imageUrl){\n return;\n }\n data.label.rich[e.group]={\n height:e.width,\n align: 'bottom',\n backgroundColor: {\n image: e.imageUrl,\n }\n }\n })\n }\n item.data.push(data);\n // item.push({\n // id: this.id,\n // name: t.address,\n // type: 'scatter',\n // coordinateSyste: 'bmap',\n // symbol: image,\n // symbolSize: size,\n // data: [{ name: t.address, value: [t.lng, t.lat] }],\n // label: {\n // formatter: '{b}',\n // position: 'bottom',\n // color: this.color,\n // fontSize: this.size,\n // show: true,\n // },\n // tooltip: {\n // formatter: '{b}',\n // position: 'top',\n // textStyle: {\n // color: this.color,\n // fontSize: this.size,\n // },\n // },\n // emphasis: {\n // label: {\n // show: true,\n // },\n // },\n // });\n });\n this.parent.childInit({\n id: this.id,\n item,\n onClick: (event) => {\n const obj = event.data;\n this.makerClick.emit({\n id: obj.id,\n address: obj.name,\n lng: obj.value[0],\n lat: obj.value[1],\n });\n },\n });\n }\n\n ngOnInit(): void { }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Map2dMarkLayerComponent } from './map2d-mark-layer.component';\nimport {WidgetBaseModule, WidgetService} from 'bbj-widget-base';\n\n\n\n@NgModule({\n declarations: [Map2dMarkLayerComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class Map2dMarkLayerModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(Map2dMarkLayerComponent);\n }\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { Data, DataOutput, Drill, Property, Widget } from 'bbj-widget-base';\nimport { ParentContainerComponent } from '../../parent-container/parent-container.component';\n\n@Component({\n selector: 'sc-map2d-visual-layer',\n templateUrl: './map2d-visual-layer.component.html',\n styleUrls: ['./map2d-visual-layer.component.less'],\n})\n@Widget('热力层', {\n group: 'component',\n image: '',\n icon: '',\n hidden: true,\n})\nexport class Map2dVisualLayerComponent implements OnInit, OnChanges, OnDestroy {\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n\n @Property('左侧边距', { type: 'number' })\n left = 26;\n @Property('底部边距', { type: 'number' })\n bottom = 40;\n @Property('分级', {\n type: 'array',\n title: '热力等级',\n maxItems: 10,\n items: {\n type: 'object',\n properties: {\n gte: {\n type: 'number',\n title: '大于',\n },\n lte: {\n type: 'number',\n title: '小于等于',\n },\n label: {\n type: 'string',\n title: '标签',\n },\n color: {\n type: 'string',\n title: '颜色',\n ui: {\n widget: 'myColor',\n },\n },\n colorEnd: {\n type: 'string',\n title: '渐变颜色',\n ui: {\n widget: 'myColor',\n },\n },\n unit: {\n type: 'string',\n title: '单位',\n },\n },\n required: ['label', 'color'],\n },\n ui: { grid: { arraySpan: 24 }, spanControl: 24 },\n })\n level = [\n { gte: 0, lte: 50, label: '等级1', color: '#AAAAAA', colorEnd: null, unit: '' },\n {\n gte: 50,\n label: '等级2',\n color: '#FF3333',\n colorEnd: null,\n unit: '',\n },\n ];\n // @Property('地图颜色', {\n // type: 'string',\n // ui: {\n // widget: 'myColor',\n // },\n // })\n // mapColor = '#FFFFFF';\n // @Property('选中区域颜色', {\n // type: 'string',\n // ui: {\n // widget: 'myColor',\n // },\n // })\n // selectAreaColor = '#f2d5ad';\n @Property('正极名称', {\n max: {\n type: 'string',\n title: 'max',\n ui: {},\n },\n required: ['max'],\n })\n max = '高';\n\n @Property('负极名称', {\n min: {\n type: 'string',\n title: 'min',\n ui: {},\n },\n required: ['min'],\n })\n min = '低';\n @Property('前缀', {\n min: {\n type: 'string',\n ui: {},\n },\n })\n prefix = '';\n @Property('后缀', {\n min: {\n type: 'string',\n ui: {},\n },\n })\n suffix = '';\n @Data({\n properties: {\n name: { type: 'string', title: '地名' },\n value: { type: 'number', title: '值' },\n tooltip: { type: 'string', title: '提示' },\n lng: { type: 'number', title: '中心经度' },\n lat: { type: 'number', title: '中心纬度' },\n },\n })\n _data: any[] = [\n { name: '南海诸岛', value: 0, tooltip: '告警统计' + '<br />' + '失联告警:0' },\n { name: '北京', value: 54, tooltip: '告警统计' + '<br />' + '失联告警:54' },\n { name: '天津', value: 13, tooltip: '告警统计' + '<br />' + '失联告警:13' },\n { name: '上海', value: 40, tooltip: '告警统计' + '<br />' + '失联告警:40' },\n { name: '重庆', value: 75, tooltip: '告警统计' + '<br />' + '失联告警:75' },\n { name: '河北', value: 13, tooltip: '告警统计' + '<br />' + '失联告警:13' },\n { name: '海口市', value: 70, tooltip: '告警统计' + '<br />' + '失联告警:70' },\n ];\n @Drill()\n @DataOutput(['name', 'value', 'tooltip', 'lng', 'lat'])\n dataClick = new EventEmitter<any>();\n xData = [];\n yData = [];\n series = [];\n image: string;\n style = {\n color: '',\n fontFamily: '',\n fontWeight: '',\n fontSize: '',\n lineHeight: '',\n };\n data: any;\n visualMap = {};\n id: string;\n constructor(@Inject(forwardRef(() => ParentContainerComponent)) private parent: ParentContainerComponent) {}\n ngOnDestroy(): void {\n this.parent.deleteChild(this.id);\n }\n\n ngOnInit(): void {}\n ngOnChanges(changes: SimpleChanges): void {\n this.style = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n if (changes._data) {\n let gradual = false;\n let lucency = false;\n const pieces = this.level.map((level) => {\n const piece = { ...level };\n if (!lucency && this.isLucency(level.color)) {\n lucency = true;\n }\n if (level.color && level.colorEnd) {\n gradual = true;\n piece.color = {\n type: 'radial',\n x: 0.5,\n y: 0.5,\n r: 0.8,\n colorStops: [\n {\n offset: 0,\n color: level.color, // 0% 处的颜色\n },\n {\n offset: 1,\n color: level.colorEnd, // 100% 处的颜色\n },\n ],\n globalCoord: false, // 缺省为 false\n } as any;\n }\n return piece;\n });\n this.visualMap = {\n min: 0,\n max: 500,\n left: this.left || 26,\n bottom: this.bottom || 40,\n showLabel: !0,\n text: [this.max, this.min],\n pieces,\n textStyle: this.style,\n show: !0,\n };\n // geo: {\n // map: this.mapStyle,\n // roam: !1,\n // scaleLimit: {\n // min: 1,\n // max: 2\n // },\n // // label: {\n // // normal: {\n // // show: !0,\n // // fontSize: '14',\n // // color: 'rgba(0,0,0,0.7)'\n // // }\n // // },\n // itemStyle: {\n // normal: {\n // borderColor: 'rgba(0, 0, 0, 0.2)',\n // areaColor: this.mapColor,\n // },\n // emphasis: {\n // areaColor: this.selectAreaColor,\n // shadowOffsetX: 0,\n // shadowOffsetY: 0,\n // borderWidth: 0\n // }\n // }\n // },\n let item = [];\n if (this._data.length) {\n item = [\n {\n name: '',\n type: 'map',\n geoIndex: 0,\n mapType: '',\n label: {\n normal: {\n show: true,\n formatter: (val) => {\n const value = val.value ? val.value : 0;\n const prefix = this.prefix ? this.prefix : '';\n const suffix = this.suffix ? this.suffix : '';\n return (val.name + '-' + prefix + value + suffix).split('-').join('\\n');\n },\n textStyle: this.style,\n },\n emphasis: {\n show: false,\n },\n },\n // itemStyle: {\n // normal: {\n // borderColor: 'rgba(0, 0, 0, 0.2)',\n // areaColor: this.mapColor,\n // },\n // emphasis: {\n // areaColor: this.selectAreaColor,\n // shadowOffsetX: 0,\n // shadowOffsetY: 0,\n // borderWidth: 0,\n // },\n // },\n data: this._data,\n },\n ];\n }\n const child: any = {\n id: this.id,\n item: item,\n visualMap: this.visualMap,\n type: 'visual',\n };\n // 如果有渐变或者半透明,添加一个不透明的图层作为图例(台风项目的需求)\n if (gradual || lucency) {\n child.visualMap2 = {\n ...this.visualMap,\n pieces: this.level.map((level) => {\n return { ...level, color: this.opacity(level.color) };\n }),\n };\n child.visualMap.show = false;\n }\n this.parent.childInit(child);\n }\n }\n\n isLucency(color: string) {\n if (color) {\n const match = /rgba\\(\\d+,\\d+,\\d+,([\\d.]+)\\)/.exec(color);\n if (match) {\n const opacity = Number(match[1]);\n if (opacity < 1) {\n return true;\n }\n }\n }\n return false;\n }\n\n opacity(color: string) {\n if (color) {\n color = color.replace(/rgba\\((\\d+),(\\d+),(\\d+),([\\d.]+)\\)/, (str, r, g, b, a) => {\n console.log(str, r, g, b, a);\n return `rgb(${r},${g},${b})`;\n });\n }\n return color;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Map2dVisualLayerComponent } from './map2d-visual-layer.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n\n\n@NgModule({\n declarations: [\n Map2dVisualLayerComponent\n ],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class Map2dVisualLayerModule { \n constructor(widgetService: WidgetService) {\n widgetService.register(Map2dVisualLayerComponent);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { PlanimetricMap2dComponent } from './planimetric-map2d.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { FlyLineLayerModule } from './fly-line-layer/fly-line-layer.module';\nimport { BreathingBubbleLayerModule } from '../breathing-bubble-layer/breathing-bubble-layer.module';\nimport { Map2dPolylineLayerModule } from './map2d-polyline-layer/map2d-polyline-layer.module';\nimport { Map2dMarkLayerModule } from './map2d-mark-layer/map2d-mark-layer.module';\nimport { Map2dVisualLayerModule } from './map2d-visual-layer/map2d-visual-layer.module';\n\n@NgModule({\n declarations: [PlanimetricMap2dComponent],\n imports: [\n CommonModule,\n NgxEchartsModule,\n WidgetBaseModule,\n FlyLineLayerModule,\n BreathingBubbleLayerModule,\n Map2dPolylineLayerModule,\n Map2dMarkLayerModule,\n Map2dVisualLayerModule\n ],\n})\nexport class PlanimetricMap2dModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(PlanimetricMap2dComponent);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ParentContainerComponent } from './parent-container.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [ParentContainerComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class ParentContainerModule {\n constructor(widgetService: WidgetService) {\n // widgetService.register(ParentContainerComponent);\n }\n}\n","import {\n Component,\n OnInit,\n forwardRef,\n ViewChild,\n ElementRef,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n EventEmitter,\n} from '@angular/core';\nimport { Widget, Property, Data, DataOutput, Event } from 'bbj-widget-base';\nimport { ParentContainerComponent } from '../parent-container/parent-container.component';\nimport { HttpClient } from '@angular/common/http';\nimport * as echarts from 'echarts';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { PlanimetricMap2dComponent } from '../planimetric-map2d/planimetric-map2d.component';\nimport { getEchartsTextStyle } from '../shared/util/echarts.util';\n\nconst buttonEnum = [\n { label: '鼠标左键', value: 'left' },\n { label: '鼠标中键', value: 'middle' },\n { label: '鼠标右键', value: 'right' },\n];\n\n@Component({\n selector: 'sc-planimetric-map3d',\n templateUrl: './planimetric-map3d.component.html',\n styleUrls: ['./planimetric-map3d.component.less'],\n providers: [{ provide: ParentContainerComponent, useExisting: forwardRef(() => PlanimetricMap3dComponent) }],\n})\n@Widget('3D平面地图', {\n group: 'component',\n image: 'assets/img/screen/3dmap.png',\n icon: 'iconmokuai',\n children: [\n {\n title: '散点图',\n type: 'sc-map3d-mark-layer',\n option: {},\n hidden: true,\n hideChild: true,\n },\n ],\n childTypes: ['sc-map3d-mark-layer', 'sc-map3d-line-layer'],\n description: 'hasChildItem',\n})\nexport class PlanimetricMap3dComponent extends PlanimetricMap2dComponent implements OnInit, OnDestroy, OnChanges {\n @Property('地图样式', {\n ui: {\n widget: 'myUrlSelect',\n url: '/assets/mapListItem.json',\n },\n })\n mapStyle = 'china';\n @Property('区域背景', {\n ui: {\n widget: 'myColor',\n },\n })\n areaColor = '#323c48';\n @Property('区域描边', {\n ui: {\n widget: 'myColor',\n },\n })\n borderColor = '#404a59';\n @Property('移动高亮', {\n ui: {\n widget: 'myColor',\n },\n })\n _areaColor = '#2a333d';\n @Property('地区字体', { ui: { widget: 'myFont' } })\n areaNamefont: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n @Property('显示地名', {\n type: 'boolean',\n })\n showAreaName = true;\n @Property('阴影颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n shadowColor = '#2a333d';\n @Property('边框粗细', {\n type: 'number',\n })\n boderWidth = 2;\n @Property('模型高度', { type: 'number' })\n regionHeight = 3;\n @Property('投影方式', {\n enum: [\n { label: '透视投影', value: 'perspective' },\n { label: '正交投影', value: 'orthographic' },\n ],\n })\n projection = 'perspective';\n @Property('视角距离', { type: 'number', ui: { visibleIf: { projection: ['perspective'] } } })\n distance = 100;\n @Property('正交大小', { type: 'number', ui: { visibleIf: { projection: ['orthographic'] } } })\n orthographicSize = 100;\n @Property('alpha角', { type: 'number' })\n alpha = 40;\n @Property('beta角', { type: 'number' })\n beta = 0;\n @Property('平移操作', { enum: buttonEnum })\n panMouseButton = 'middle';\n @Property('旋转操作', { enum: buttonEnum })\n rotateMouseButton = 'left';\n @Property('开启光晕', { type: 'boolean' })\n bloomEnable: boolean;\n @Property('光晕强度', { type: 'number', ui: { visibleIf: { bloomEnable: [true] } } })\n bloomIntensity = 0.1;\n\n chartOption: any;\n hasMap = false;\n @Data({\n properties: {\n name: { type: 'string', title: '地名' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'string', title: '纬度' },\n },\n })\n data: any[] = [];\n @DataOutput(['name', 'lng', 'lat'])\n @Event('选中', {\n params: {\n properties: {\n name: { type: 'string', title: '值' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'string', title: '纬度' },\n },\n },\n })\n areaClick = new EventEmitter();\n\n constructor(http: HttpClient) {\n super(http);\n }\n\n chartInit() {\n // this.loadMap(this.mapStyle).then((data) => {\n\n const textStyle = getEchartsTextStyle(this.areaNamefont);\n const geo3D = {\n type: 'map3D',\n boxHeight: 7,\n regionHeight: this.regionHeight,\n label: {\n //静态的时候展示样式\n show: this.showAreaName, //是否显示地图省份得名称\n distance: 0,\n ...textStyle,\n },\n selectedMode: this.selectedMode,\n itemStyle: {\n color: this.areaColor,\n borderColor: this.borderColor,\n borderWidth: this.boderWidth,\n },\n emphasis: {\n label: {\n show: this.showAreaName,\n ...textStyle,\n },\n itemStyle: {\n color: this._areaColor,\n },\n },\n map: this.mapStyle,\n roam: this.zoomSwitch,\n nameMap: this.nameMap,\n zoom: this.zoom,\n // silent: false,\n // regions,\n viewControl: {\n projection: this.projection,\n distance: this.distance,\n orthographicSize: this.orthographicSize,\n alpha: this.alpha,\n beta: this.beta,\n panMouseButton: this.panMouseButton,\n rotateMouseButton: this.rotateMouseButton,\n },\n postEffect: {\n enable: this.bloomEnable,\n bloom: {\n enable: this.bloomEnable,\n bloomIntensity: this.bloomIntensity,\n },\n },\n };\n let series = [];\n this._children.forEach((child) => {\n if (Array.isArray(child.item)) {\n series.push(...child.item);\n } else {\n series.push(child.item);\n }\n });\n // series.push(geo3D);\n this.chartOption = {\n geo3D,\n tooltip: {},\n series,\n };\n // });\n }\n\n // loadMap(name: string) {\n // let loadMapPromise = this.loadedMap[name];\n // if (!loadMapPromise) {\n // loadMapPromise = this.http.get('assets/echarts/map/json/' + name + '.json').toPromise();\n // this.loadedMap[name] = loadMapPromise;\n // }\n // return loadMapPromise;\n // }\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SFArrayWidgetSchema } from '@delon/form';\nimport { Data, DataOutput, Property, Widget, Event } from 'bbj-widget-base';\nimport { ParentContainerComponent } from '../../parent-container/parent-container.component';\nimport { getEchartsTextStyle } from '../../shared/util/echarts.util';\n\n@Component({\n selector: 'sc-map3d-mark-layer',\n templateUrl: './map3d-mark-layer.component.html',\n styleUrls: ['./map3d-mark-layer.component.less'],\n})\n@Widget('散点图', {\n group: 'component',\n image: '',\n icon: '',\n hidden: true,\n})\nexport class Map3dMarkLayerComponent implements OnInit, OnChanges, OnDestroy {\n @Property('分组', {\n type: 'array',\n title: '分组',\n maxItems: 10,\n items: {\n type: 'object',\n properties: {\n group: {\n type: 'string',\n title: '分组',\n },\n symbol: {\n type: 'string',\n title: '形状',\n enum: [\n { label: '圆', value: 'circle' },\n { label: '矩形', value: 'rect' },\n { label: '圆角矩形', value: 'roundRect' },\n { label: '三角形', value: 'triangle' },\n { label: '菱形', value: 'diamond' },\n { label: '针形', value: 'pin' },\n { label: '箭头', value: 'arrow' },\n { label: '无', value: 'none' },\n { label: '图片', value: 'image' },\n ],\n },\n image: {\n title: '图片',\n type: 'string',\n ui: {\n widget: 'myPicture',\n visibleIf: { symbol: ['image'] },\n },\n },\n size: {\n type: 'number',\n title: '大小',\n },\n color: {\n type: 'string',\n title: '颜色',\n ui: {\n widget: 'myColor',\n },\n },\n font: {\n type: 'string',\n title: '字体',\n ui: { widget: 'myFont' },\n },\n },\n required: [],\n },\n ui: { grid: { arraySpan: 24 }, spanControl: 24 } as SFArrayWidgetSchema,\n })\n groups = [\n {\n group: '',\n symbol: 'circle',\n size: 30,\n },\n ];\n @Data({\n properties: {\n id: { type: 'string', title: 'id' },\n address: { type: 'string', title: '地点' },\n information: { type: 'string', title: '信息' },\n group: { type: 'string', title: '标记分组' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n },\n })\n data: any[] = [\n {\n address: '机楼1号',\n information: '暂无信息',\n group: '',\n lng: '120',\n lat: '28',\n },\n ];\n id: string;\n @DataOutput(['id', 'address', 'lng', 'lat'])\n @Event('点击标记', {\n params: {\n properties: {\n id: { type: 'string', title: 'id' },\n address: { type: 'string', title: '地点' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n },\n },\n })\n makerClick = new EventEmitter();\n constructor(\n @Inject(forwardRef(() => ParentContainerComponent)) private parent: ParentContainerComponent,\n private http: HttpClient,\n ) {}\n ngOnDestroy(): void {\n this.parent.deleteChild(this.id);\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.reload();\n }\n\n async reload() {\n const groupMap = {};\n const seriesList = [];\n const seriesMap = {};\n for (const group of this.groups) {\n const groupName = group.group || '';\n groupMap[groupName] = group;\n const series = await this.getSeries(group);\n seriesList.push(series);\n seriesMap[groupName] = series;\n }\n\n this.data.forEach((record) => {\n let series = seriesMap[record.group];\n if (series == null) {\n series = seriesMap[''];\n }\n if (series) {\n series.data.push({\n id: record.id,\n name: record.address,\n value: [+record.lng, +record.lat, 1, record.information],\n });\n }\n });\n this.parent.childInit({\n id: this.id,\n item: seriesList,\n onClick: (event) => {\n const obj = event.data;\n this.makerClick.emit({\n id: obj.id,\n address: obj.name,\n lng: obj.value[0],\n lat: obj.value[1],\n });\n },\n });\n }\n\n async getSeries(group: any) {\n let symbol = group.symbol;\n if (symbol === 'image') {\n const url = group.image as string;\n if (url) {\n if (url.endsWith('svg')) {\n const svgStr: any = await this.http.get(url, { responseType: 'text' }).toPromise();\n const svg = new DOMParser().parseFromString(svgStr, 'text/xml');\n const paths = svg.getElementsByTagName('path');\n symbol = 'path://';\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n if (i > 0) {\n symbol += ' ';\n }\n symbol += path.getAttribute('d').replace(' ', ',');\n }\n } else {\n symbol = 'image://' + location.origin + url;\n }\n } else {\n symbol = 'none';\n }\n }\n const series = {\n id: this.id + group.group,\n type: 'scatter3D',\n coordinateSystem: 'geo3D',\n data: [],\n tooltip: {\n formatter: (params) => params.value[3],\n },\n label: {\n show: true,\n formatter: '{b}',\n position: 'bottom',\n textStyle: getEchartsTextStyle(group.font),\n },\n // emphasis: {\n // label: {\n // show: true,\n // },\n // },\n symbol,\n symbolSize: group.size,\n itemStyle: {\n color: group.color,\n opacity: 1,\n },\n // zlevel: 10,\n };\n return series;\n }\n\n ngOnInit(): void {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Map3dMarkLayerComponent } from './map3d-mark-layer.component';\nimport { WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [Map3dMarkLayerComponent],\n imports: [CommonModule],\n})\nexport class Map3dMarkLayerModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(Map3dMarkLayerComponent);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport {\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SFArrayWidgetSchema } from '@delon/form';\nimport { Data, DataOutput, Property, Widget, Event } from 'bbj-widget-base';\nimport { ParentContainerComponent } from '../../parent-container/parent-container.component';\nimport { getEchartsTextStyle } from '../../shared/util/echarts.util';\n\n@Component({\n selector: 'sc-map3d-line-layer',\n templateUrl: './map3d-line-layer.component.html',\n styleUrls: ['./map3d-line-layer.component.less'],\n})\n@Widget('折线图', {\n group: 'component',\n image: '',\n icon: '',\n hidden: true,\n})\nexport class Map3dLineLayerComponent implements OnInit, OnChanges, OnDestroy {\n @Property('线条宽度', {\n ui: { widget: 'myRange', min: 1, max: 40, step: 1 },\n })\n width = 4;\n @Property('线条颜色', {\n type: 'string',\n ui: {\n widget: 'myColor',\n },\n })\n color = 'rgba(242,213,173,0.85)';\n\n @Data({\n properties: {\n group: { type: 'string', title: '分组' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n },\n })\n data: any[] = [\n {\n group: 'x',\n lng: '120.7',\n lat: '28',\n },\n {\n group: 'x',\n lng: '120.71',\n lat: '28.01',\n },\n {\n group: 'x',\n lng: '120.79',\n lat: '28.1',\n },\n {\n group: 'y',\n lng: '120.72',\n lat: '28.02',\n },\n {\n group: 'y',\n lng: '120.73',\n lat: '28.03',\n },\n {\n group: 'y',\n lng: '120.81',\n lat: '28.12',\n },\n ];\n id: string;\n constructor(@Inject(forwardRef(() => ParentContainerComponent)) private parent: ParentContainerComponent) {}\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.parent.deleteChild(this.id);\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.reload();\n }\n\n async reload() {\n console.log(this.data);\n const data = [];\n const lineMap = {};\n this.data.forEach((r) => {\n let line = lineMap[r.group];\n if (!line) {\n line = [];\n lineMap[r.group] = line;\n data.push(line);\n }\n line.push([+r.lng, +r.lat, 1]);\n });\n\n const item = {\n type: 'lines3D',\n coordinateSystem: 'geo3D',\n polyline: true,\n lineStyle: {\n width: this.width,\n color: this.color,\n opacity: 1,\n },\n data,\n silent: true, //不响应和触发鼠标事件\n };\n this.parent.childInit({\n id: this.id,\n item,\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Map3dLineLayerComponent } from './map3d-line-layer.component';\nimport { WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [Map3dLineLayerComponent],\n imports: [CommonModule],\n})\nexport class Map3dLineLayerModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(Map3dLineLayerComponent);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlanimetricMap3dComponent } from './planimetric-map3d.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { Map3dMarkLayerModule } from './map3d-mark-layer/map3d-mark-layer.module';\nimport { Map3dLineLayerModule } from './map3d-line-layer/map3d-line-layer.module';\n\n@NgModule({\n declarations: [PlanimetricMap3dComponent],\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule, Map3dMarkLayerModule,Map3dLineLayerModule],\n})\nexport class PlanimetricMap3dModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(PlanimetricMap3dComponent);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Widget, Property } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-mip-anim',\n templateUrl: './mip-anim.component.html',\n styleUrls: ['./mip-anim.component.less']\n})\n@Widget('动态图', { group: 'mipAnim', icon: 'icontupian' })\nexport class MipAnimComponent implements OnInit {\n @Property('图片', { ui: { widget: 'myPicture' } })\n image: string;\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { MipAnimComponent } from './mip-anim.component';\n\n@NgModule({\n declarations: [MipAnimComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class MipAnimModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(MipAnimComponent);\n }\n}\n","import { Component, OnInit, SimpleChanges, OnChanges, EventEmitter, ElementRef, ViewChild } from '@angular/core';\nimport { Data, Property, Widget, DataOutput, Event, EventParam, Method, Param } from 'bbj-widget-base';\nimport { NzFormatEmitEvent, NzTreeNode, NzTreeNodeOptions } from 'ng-zorro-antd/tree';\nimport { ArrayService } from '@delon/util';\nimport { getFontStyle } from '../shared/util/style.util';\n\n@Component({\n selector: 'sc-tree-control',\n templateUrl: './tree-control.component.html',\n styleUrls: ['./tree-control.component.less'],\n})\n@Widget('树控件', {\n group: 'component',\n image: 'assets/img/screen/Tree.png',\n icon: 'bianzu40',\n})\nexport class TreeControlComponent implements OnInit, OnChanges {\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#595F7A',\n weight: 'normal',\n size: 16,\n space: 0,\n lineHeight: 0,\n };\n @Property('边距', { ui: { widget: 'myGrid' } })\n grid: any = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n };\n @Property('复选框', { type: 'boolean' })\n checkable = false;\n @Property('选择完全受控', {\n type: 'boolean',\n ui: { optionalHelp: '父子节点选中状态不再关联', visibleIf: { checkable: [true] } },\n })\n checkStrictly = false;\n @Property('连接线', { type: 'boolean' })\n showLine = false;\n @Property('展开所有', { type: 'boolean' })\n expandAll = false;\n @Property('展开层级', {\n type: 'integer',\n minimum: 0,\n ui: { precision: 0, visibleIf: { expandAll: [false] } },\n })\n expandLevel = 0;\n\n @Property('图标宽度', { type: 'integer' })\n iconWidth = 20;\n @Property('图标高度', { type: 'integer' })\n iconHeight = 20;\n @Property('图标位置', {\n enum: [\n { label: '左', value: 'left' },\n { label: '右', value: 'right' },\n ],\n })\n iconPosition = 'left';\n\n\n\n @Property('节点图标', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n }\n })\n nodeDefaultIcon = null;\n @Property('节点背景', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n }\n })\n nodeBackground = null;\n\n @Property('节点选中背景色', { ui: { widget: 'myColor' } })\n selectedBackground = '#bae7ff';\n\n @Property('节点选中字体色', { ui: { widget: 'myColor' } })\n nodeCheckedColor = '#333';\n\n @Property('节点选中背景', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n }\n })\n nodeCheckedBackground = null;\n\n @Property('双击重命名')\n renamable: boolean;\n @Property('显示搜索框')\n showSearch: boolean;\n searchValue: string;\n\n @Property('搜索框颜色', {\n ui: {\n widget: 'myColor',\n visibleIf: { showSearch: [true] }\n }\n })\n searchBorderColor = '#8F9AB3';\n\n @Property('搜索框背景色', {\n ui: {\n widget: 'myColor',\n visibleIf: { showSearch: [true] }\n }\n })\n searchBackgroundColor = 'rgba(0,0,0,0)';\n\n @Property('搜索框提示语', {\n type: 'string',\n ui: {\n visibleIf: { showSearch: [true] }\n }\n })\n searchPlaceholder = '请输入搜索内容';\n\n @Property('滚动条颜色', {\n ui: {\n widget: 'myColor',\n }\n })\n treeScrollbarThumbBackground = '#ddd';\n\n\n @Data({\n properties: {\n title: { type: 'string', title: '标题' },\n key: { type: 'string', title: 'id' },\n parentKey: { type: 'string', title: '父级id' },\n icon: { type: 'string', title: '图标' },\n count: { type: 'string', title: '数量' }\n },\n })\n data = [\n { title: '江苏省', key: '300', parentKey: '' },\n { title: '浙江省', key: '100', parentKey: '' },\n { title: '杭州市', key: '1001', parentKey: '100' },\n { title: '顶顶区', key: '10010', parentKey: '1001' },\n { title: '的方区', key: '10011', parentKey: '1001' },\n { title: '温州市', key: '1002', parentKey: '100' },\n { title: '鹿城区', key: '10020', parentKey: '1002' },\n { title: '龙湾区', key: '10021', parentKey: '1002' },\n ];\n\n @DataOutput('选中id')\n @Event('选中值改变', { params: 'id' })\n keyChange = new EventEmitter<any>();\n\n nodes: NzTreeNodeOptions[] = [];\n\n expandedKeys: string[];\n\n edittingNode: NzTreeNode; // 正在重命名的节点\n\n @ViewChild('renameInput')\n renameInput: ElementRef;\n\n selectedKeys: string[] = [];\n style = {};\n waittingSelect: string;\n\n paddNum: any;\n constructor(private arrayService: ArrayService, private elementRef: ElementRef) { }\n\n ngOnInit(): void {\n document.body.style.setProperty('--treeScrollbar-thumb-background', this.treeScrollbarThumbBackground || '#ddd');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data) {\n this.nodes = this.toTree(this.data);\n if (this.waittingSelect) {\n this.select(this.waittingSelect);\n }\n }\n if (changes.font) {\n this.updateStyle();\n }\n\n if (changes.data || changes.expandLevel || changes.expandAll) {\n this.expand();\n }\n }\n\n toTree(data: any[]) {\n const nodeMap = {};\n const nodes = [];\n const root = [];\n if (data) {\n data.forEach(({ title, key, parentKey, parentKey_value, icon, count }) => {\n if (key) {\n const node: NzTreeNodeOptions = { key, title, parentKey: parentKey_value || parentKey, icon, isLeaf: true, count };\n if (this.selectedKeys.includes(key)) {\n node.selected = true;\n }\n nodeMap[key] = node;\n nodes.push(node);\n }\n });\n nodes.forEach((node) => {\n if (node.parentKey) {\n const parent = nodeMap[node.parentKey];\n if (parent) {\n parent.children = parent.children || [];\n parent.children.push(node);\n parent.isLeaf = false;\n return;\n }\n }\n root.push(node);\n });\n }\n return root;\n }\n\n expand() {\n // TODO nz的bug,在数据改变之后nzExpandAll无效,等修复了可以切换成这里的代码\n // if (!this.expandAll) {\n // this.expandedKeys = [];\n // if (this.expandLevel) {\n // this.arrayService.visitTree(this.nodes, (item, parent, deep) => {\n // if (deep <= this.expandLevel) {\n // this.expandedKeys.push(item.key);\n // }\n // });\n // }\n // }\n this.expandedKeys = [];\n if (this.expandAll || this.expandLevel) {\n this.arrayService.visitTree(this.nodes, (item, parent, deep) => {\n if (this.expandAll || deep <= this.expandLevel) {\n this.expandedKeys.push(item.key);\n }\n });\n }\n }\n\n updateStyle() {\n this.style = getFontStyle(this.font);\n this.elementRef.nativeElement.style.setProperty('--selected-background', this.selectedBackground || '#bae7ff');\n }\n\n onClick(event: NzFormatEmitEvent) {\n this.onKeysChange(event.keys);\n this.nodeClick(event.node.key, event.node.title);\n }\n\n onKeysChange(keys: string[]) {\n this.waittingSelect = null;\n this.selectedKeys = keys;\n if (this.checkable) {\n this.keyChange.emit(keys);\n } else {\n this.keyChange.emit(keys[0]);\n }\n }\n\n onCheckBoxChange(event: NzFormatEmitEvent) {\n this.onKeysChange(event.keys);\n }\n\n onNodeDblclick(event: NzFormatEmitEvent) {\n if (this.renamable) {\n this.edittingNode = event.node;\n setTimeout(() => {\n if (this.renameInput) {\n this.renameInput.nativeElement.focus();\n }\n });\n }\n }\n\n renameEnd(node: NzTreeNode) {\n this.edittingNode = null;\n this.rename(node.key, node.title);\n }\n\n\n showNode(e) {\n console.log(e);\n }\n\n @Method('搜索')\n search(@Param('内容') value: string) {\n this.searchValue = value;\n }\n\n @Method('选中')\n select(@Param('id') id: string) {\n let find = false;\n if (this.nodes) {\n const node = this.arrayService.findTree(this.nodes, (n) => n.key === id);\n if (node) {\n this.onKeysChange([id]);\n this.nodeClick(node.key, node.title);\n find = true;\n }\n }\n // 数据有可能还没加载,等数据加载了再选中\n if (!find) {\n this.waittingSelect = id;\n }\n }\n\n @Event('点击')\n nodeClick(@EventParam('id') id: string, @EventParam('标题') title: string) { }\n\n @Event('重命名')\n rename(@EventParam('id') id: string, @EventParam('名称') name: string) { }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TreeControlComponent } from './tree-control.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { FormsModule } from '@angular/forms';\nimport { NzHighlightModule } from 'ng-zorro-antd/core/highlight';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n@NgModule({\n declarations: [TreeControlComponent],\n imports: [CommonModule, WidgetBaseModule, NzTreeModule, NzInputModule, FormsModule, NzHighlightModule, NzIconModule],\n})\nexport class TreeControlModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(TreeControlComponent);\n }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges, EventEmitter } from '@angular/core';\r\nimport { Data, DataOutput, Drill, Property, Widget, Event, EventParam } from 'bbj-widget-base';\r\nimport * as echarts from 'echarts';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { SFArrayWidgetSchema, SFRadioWidgetSchema, SFStringWidgetSchema } from '@delon/form';\r\n\r\n@Component({\r\n selector: 'sc-visual-map-chart',\r\n templateUrl: './visual-map-chart.component.html',\r\n styleUrls: ['./visual-map-chart.component.less'],\r\n})\r\n@Widget('2D热力图', {\r\n group: 'component',\r\n image: 'assets/img/screen/hotMap.png',\r\n icon: 'icontubiao',\r\n})\r\nexport class VisualMapChartComponent implements OnInit, OnChanges {\r\n @Property('字体', { ui: { widget: 'myFont' } })\r\n font: any = {\r\n family: '',\r\n color: '#FFFFFF',\r\n weight: 'normal',\r\n size: 12,\r\n space: 0,\r\n lineHeight: 12,\r\n };\r\n chartOption: any = null;\r\n @Property('地图样式', {\r\n ui: {\r\n widget: 'myUrlSelect',\r\n url: '/assets/mapListItem.json',\r\n },\r\n })\r\n mapStyle = 'china';\r\n @Property('触发提示', {\r\n type: 'string',\r\n enum: [\r\n { value: 'mousemove', label: '移动' },\r\n { value: 'click', label: '点击' },\r\n ],\r\n ui: {\r\n widget: 'radio',\r\n styleType: 'button',\r\n buttonStyle: 'solid',\r\n } as SFRadioWidgetSchema,\r\n default: 'mousemove',\r\n })\r\n trigger = 'mousemove';\r\n @Property('图例位置', { ui: { widget: 'myGrid' } })\r\n visualMapPosition: any = {\r\n left: '',\r\n right: '',\r\n top: '',\r\n bottom: 40,\r\n };\r\n @Property('分级', {\r\n type: 'array',\r\n title: '热力等级',\r\n maxItems: 10,\r\n items: {\r\n type: 'object',\r\n properties: {\r\n gte: {\r\n type: 'number',\r\n title: '大于',\r\n },\r\n lte: {\r\n type: 'number',\r\n title: '小于',\r\n minimum: 1,\r\n },\r\n label: {\r\n type: 'string',\r\n title: '标签',\r\n },\r\n color: {\r\n type: 'string',\r\n title: '颜色',\r\n ui: {\r\n widget: 'myColor',\r\n },\r\n },\r\n unit: {\r\n type: 'string',\r\n title: '单位',\r\n },\r\n },\r\n required: ['label', 'color'],\r\n },\r\n ui: { grid: { arraySpan: 24 }, spanControl: 24 } as SFArrayWidgetSchema,\r\n })\r\n level = [\r\n { gte: 0, lte: 50, label: '等级1', color: '#AAAAAA', unit: '' },\r\n {\r\n gte: 50,\r\n label: '等级2',\r\n color: '#FF3333',\r\n unit: '',\r\n },\r\n ];\r\n @Property('地图颜色', {\r\n type: 'string',\r\n ui: {\r\n widget: 'myColor',\r\n },\r\n })\r\n mapColor = '#FFFFFF';\r\n @Property('选中区域颜色', {\r\n type: 'string',\r\n ui: {\r\n widget: 'myColor',\r\n },\r\n })\r\n selectAreaColor = '#f2d5ad';\r\n @Property('正极名称', {\r\n max: {\r\n type: 'string',\r\n title: 'max',\r\n ui: {} as SFStringWidgetSchema,\r\n },\r\n required: ['max'],\r\n })\r\n max = '高';\r\n\r\n @Property('负极名称', {\r\n min: {\r\n type: 'string',\r\n title: 'min',\r\n ui: {} as SFStringWidgetSchema,\r\n },\r\n required: ['min'],\r\n })\r\n min = '低';\r\n @Property('前缀', {\r\n min: {\r\n type: 'string',\r\n ui: {} as SFStringWidgetSchema,\r\n },\r\n })\r\n prefix = '';\r\n @Property('后缀', {\r\n min: {\r\n type: 'string',\r\n ui: {} as SFStringWidgetSchema,\r\n },\r\n })\r\n suffix = '';\r\n @Data({\r\n properties: {\r\n name: { type: 'string', title: '地名' },\r\n value: { type: 'number', title: '值' },\r\n tooltip: { type: 'string', title: '提示' },\r\n lng: { type: 'number', title: '中心经度' },\r\n lat: { type: 'number', title: '中心纬度' },\r\n },\r\n })\r\n _data: any[] = [\r\n { name: '南海诸岛', value: 0, tooltip: '告警统计' + '<br />' + '失联告警:0' },\r\n { name: '北京', value: 54, tooltip: '告警统计' + '<br />' + '失联告警:54' },\r\n { name: '天津', value: 13, tooltip: '告警统计' + '<br />' + '失联告警:13' },\r\n { name: '上海', value: 40, tooltip: '告警统计' + '<br />' + '失联告警:40' },\r\n { name: '重庆', value: 75, tooltip: '告警统计' + '<br />' + '失联告警:75' },\r\n { name: '河北', value: 13, tooltip: '告警统计' + '<br />' + '失联告警:13' },\r\n { name: '海口市', value: 70, tooltip: '告警统计' + '<br />' + '失联告警:70' },\r\n ];\r\n @Drill()\r\n @DataOutput(['name', 'value', 'tooltip', 'lng', 'lat'])\r\n dataClick = new EventEmitter<any>();\r\n xData = [];\r\n yData = [];\r\n series = [];\r\n image: string;\r\n style = {\r\n color: '',\r\n fontFamily: '',\r\n fontWeight: '',\r\n fontSize: '',\r\n lineHeight: '',\r\n };\r\n data: any;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.style = {\r\n color: this.font.color,\r\n fontFamily: this.font.family,\r\n fontWeight: this.font.weight,\r\n fontSize: this.font.size,\r\n lineHeight: this.font.lineHeight,\r\n };\r\n\r\n const posi = { bottom: 40 }; // 保证以前添加的此组件在未修改图例位置前保持不变\r\n if (this.visualMapPosition) {\r\n Object.keys(this.visualMapPosition).forEach(key => {\r\n if (this.visualMapPosition[key] || this.visualMapPosition[key] === 0) {\r\n posi[key] = this.visualMapPosition[key];\r\n }\r\n });\r\n }\r\n if (changes._data) {\r\n this.http\r\n .get('assets/echarts/map/json/' + this.mapStyle + '.json')\r\n .toPromise()\r\n .then((data:any) => {\r\n echarts.registerMap(this.mapStyle, data);\r\n this.data = data;\r\n this.chartOption = {\r\n tooltip: {\r\n triggerOn: this.trigger,\r\n // formatter:(params)=>{\r\n // console.log(params);\r\n // }\r\n // formatter: function(e, t, n) {\r\n // return .5 === e.value ? e.name + ':有疑似病例' : e.seriesName + '<br />' + e.x + ':' + e.y\r\n // }\r\n },\r\n visualMap: {\r\n min: 0,\r\n max: 500,\r\n ...posi,\r\n showLabel: !0,\r\n text: [],\r\n pieces: this.level,\r\n textStyle: this.style,\r\n // [{\r\n // gt: 100,\r\n // label: '> 100 人',\r\n // color: '#7f1100'\r\n // }, {\r\n // gte: 10,\r\n // lte: 100,\r\n // label: '10 - 100 人',\r\n // color: '#ff5428'\r\n // }, {\r\n // gte: 1,\r\n // lt: 10,\r\n // label: '1 - 9 人',\r\n // color: '#ff8c71'\r\n // }, {\r\n // gt: 0,\r\n // lt: 1,\r\n // label: '疑似',\r\n // color: '#ffd768'\r\n // }, {\r\n // value: 0,\r\n // color: '#ffffff'\r\n // }],\r\n show: !0,\r\n },\r\n // geo: {\r\n // map: this.mapStyle,\r\n // roam: !1,\r\n // scaleLimit: {\r\n // min: 1,\r\n // max: 2\r\n // },\r\n // // label: {\r\n // // normal: {\r\n // // show: !0,\r\n // // fontSize: '14',\r\n // // color: 'rgba(0,0,0,0.7)'\r\n // // }\r\n // // },\r\n // itemStyle: {\r\n // normal: {\r\n // borderColor: 'rgba(0, 0, 0, 0.2)',\r\n // areaColor: this.mapColor,\r\n // },\r\n // emphasis: {\r\n // areaColor: this.selectAreaColor,\r\n // shadowOffsetX: 0,\r\n // shadowOffsetY: 0,\r\n // borderWidth: 0\r\n // }\r\n // }\r\n // },\r\n series: [\r\n {\r\n name: '',\r\n type: 'map',\r\n geoIndex: 0,\r\n mapType: this.mapStyle,\r\n label: {\r\n normal: {\r\n show: true,\r\n formatter: (val) => {\r\n const value = val.value ? val.value : 0;\r\n const prefix = this.prefix ? this.prefix : '';\r\n const suffix = this.suffix ? this.suffix : '';\r\n return (val.name + '-' + prefix + value + suffix).split('-').join('\\n');\r\n },\r\n textStyle: this.style,\r\n },\r\n emphasis: {\r\n show: false,\r\n },\r\n },\r\n itemStyle: {\r\n normal: {\r\n borderColor: 'rgba(0, 0, 0, 0.2)',\r\n areaColor: this.mapColor,\r\n },\r\n emphasis: {\r\n areaColor: this.selectAreaColor,\r\n shadowOffsetX: 0,\r\n shadowOffsetY: 0,\r\n borderWidth: 0,\r\n },\r\n },\r\n data: this._data,\r\n },\r\n ],\r\n };\r\n this.reloadData();\r\n });\r\n }\r\n }\r\n\r\n onChartClick(event) {\r\n let n = '';\r\n let v = '';\r\n let t = '';\r\n let centerLng = '';\r\n let centerLat = '';\r\n if (typeof event.data !== 'undefined') {\r\n n = event.data.name;\r\n v = event.data.value;\r\n t = event.data.tooltip;\r\n } else {\r\n n = event.name;\r\n v = '0';\r\n }\r\n this.data.features.forEach((a) => {\r\n if (a.properties.name === n) {\r\n centerLng = a.properties.cp[0];\r\n centerLat = a.properties.cp[1];\r\n }\r\n });\r\n this.dataClick.emit({ name: n, value: v, tooltip: t, lng: centerLng, lat: centerLat });\r\n\r\n this.onClick(n, v, t, Number(centerLng), Number(centerLat));\r\n }\r\n\r\n reloadData() {\r\n this.chartOption.visualMap.text.push(this.max);\r\n this.chartOption.visualMap.text.push(this.min);\r\n if (this.mapStyle === 'province/hainan') {\r\n this.chartOption.geo.center = [109.844902, 19.0392];\r\n this.chartOption.geo.layoutCenter = ['50%', '50%'];\r\n this.chartOption.geo.layoutSize = '600%';\r\n }\r\n }\r\n\r\n @Event('点击')\r\n onClick(\r\n @EventParam('名称') name: string,\r\n @EventParam('值') value: string,\r\n @EventParam('提示') tooltip: string,\r\n @EventParam('经度') lng: number,\r\n @EventParam('维度') lat: number,\r\n ) { }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VisualMapChartComponent } from './visual-map-chart.component';\nimport {WidgetBaseModule, WidgetService} from 'bbj-widget-base';\nimport {NgxEchartsModule} from 'ngx-echarts';\n\n\n\n\n@NgModule({\n declarations: [VisualMapChartComponent],\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\n})\nexport class VisualMapChartModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(VisualMapChartComponent);\n }\n}\n","import { Component, OnInit, OnChanges, SimpleChanges, EventEmitter } from '@angular/core';\nimport { DataOutput, Event, Method, Property, Widget, Param, Data, CustomExport, DataInput } from 'bbj-widget-base';\nimport {\n compareAsc,\n format,\n addDays,\n startOfMonth,\n addMonths,\n startOfYear,\n addYears,\n startOfWeek,\n addWeeks,\n startOfDay,\n parse,\n} from 'date-fns';\nimport { SFStringWidgetSchema } from '@delon/form';\nimport { NzI18nService } from 'ng-zorro-antd/i18n';\nimport { formatDate } from '@angular/common';\nimport { DisabledDateFn, SupportTimeOptions } from 'ng-zorro-antd/date-picker';\nimport { differenceInCalendarDays } from 'date-fns/fp';\n\nconst defaultDateEnum = [\n { label: '当前', value: 'now' },\n { label: '今天', value: 'today' },\n { label: '昨天', value: 'yesterday' },\n { label: '明天', value: 'tomorrow' },\n { label: '本月', value: 'thisMonth' },\n { label: '上个月', value: 'lastMonth' },\n { label: '下个月', value: 'nextMonth' },\n { label: '本周', value: 'thisWeek' },\n { label: '上周', value: 'lastWeek' },\n { label: '下周', value: 'nextWeek' },\n { label: '今年', value: 'thisYear' },\n { label: '去年', value: 'lastYear' },\n { label: '明年', value: 'nextYear' },\n];\n\n@Component({\n selector: 'sc-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.less'],\n})\n@Widget('日期选择器', {\n group: 'component',\n image: 'assets/img/screen/date-picker.png',\n icon: 'riqi',\n platform: 'pc',\n})\nexport class DatePickerComponent implements OnInit, OnChanges, CustomExport {\n @Property('边框', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n borderColor: string;\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', weight: 'normal', size: 14, space: 0, lineHeight: '' };\n @Property('填充', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n background: string;\n @Property('背景图片', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n },\n })\n backImage = null;\n @Property('高度')\n height: number = 30;\n @Property('日期格式', {\n dateFormat: {\n type: 'string',\n title: 'max',\n ui: {} as SFStringWidgetSchema,\n },\n required: ['dateFormat'],\n })\n dateFormat = '';\n @Property('开启区间模式')\n rangeMode: boolean;\n @Property('默认时间', {\n type: 'string',\n enum: defaultDateEnum,\n })\n defaultDate: string;\n @Property('默认结束时间', {\n type: 'string',\n enum: defaultDateEnum,\n ui: { widget: 'select', visibleIf: { rangeMode: [true] } },\n })\n defaultEndDate: string;\n @Property('选择模式', {\n type: 'string',\n enum: [\n { label: '默认', value: '' },\n { label: '周', value: 'week' },\n { label: '月份', value: 'month' },\n { label: '年份', value: 'year' },\n ],\n })\n selectMode: string = '';\n @Property('显示时间', {\n type: 'boolean',\n })\n showTime = false;\n @Property('时间格式', {\n enum: [\n { label: '时分秒', value: 'HH:mm:ss' },\n { label: '时分', value: 'HH:mm' },\n { label: '时', value: 'HH' },\n ],\n ui: { widget: 'select', visibleIf: { showTime: [true] } },\n })\n timeFormat: string = 'HH:mm:ss';\n @Property('小时间隔', { ui: { visibleIf: { showTime: [true] } } })\n hourStep: number;\n @Property('分钟间隔', { ui: { visibleIf: { timeFormat: ['HH:mm:ss', 'HH:mm'] } } })\n minuteStep: number;\n @Property('秒间隔', { ui: { visibleIf: { timeFormat: ['HH:mm:ss'] } } })\n secondStep: number;\n @Property('提示语')\n alert = '请选择日期';\n @Property('是否禁用')\n disabled: boolean;\n @Property('不可选日期', {\n enum: [\n { label: '今天之后', value: 'after' },\n { label: '今天之前', value: 'before' },\n ],\n })\n disabledDate: string;\n @Property('清除按钮', { type: 'boolean', default: true })\n allowClear = true;\n\n @Data({ properties: { date: { title: '日期', type: 'string' }, endDate: { title: '结束日期', type: 'string' } } })\n data = [];\n @DataOutput('值')\n @Event('值改变', { params: { title: '值' } })\n dateChange = new EventEmitter<any>();\n @DataOutput('结束')\n @Event('结束值', { params: { title: '结束值' } })\n endDateChange = new EventEmitter<any>();\n @Event('输入', { params: { title: '值' } })\n inputDate = new EventEmitter<any>();\n @Event('输入结束时间', { params: { title: '结束值' } })\n inputEndDate = new EventEmitter<any>();\n @DataInput('值')\n date: any;\n dateRange = [];\n datePickerStyle: any;\n nzShowTime: SupportTimeOptions;\n nzDisabledDate: DisabledDateFn;\n // isEnglish = false;\n\n constructor(private i18n: NzI18nService) {}\n\n ngOnInit(): void {\n // this.initDefaultDate();\n }\n\n /**\n * {label: '当前', value: 'now'},\n {label: '昨天', value: 'yesterday'},\n {label: '明天', value: 'tomorrow'},\n {label: '本月', value: 'thisMonth'},\n {label: '上个月', value: 'lastMonth'},\n {label: '下个月', value: 'nextMonth'},\n {label: '本周', value: 'thisWeek'},\n {label: '上个月', value: 'lastWeek'},\n {label: '下个月', value: 'nextWeek'},\n {label: '今年', value: 'thisYear'},\n {label: '去年', value: 'lastYear'},\n {label: '明年', value: 'nextYear'},\n */\n initDefaultDate() {\n if (this.rangeMode) {\n const start = this.getDefaultDate(this.defaultDate);\n const end = this.getDefaultDate(this.defaultEndDate);\n this.date = [start, end];\n if (start || end) {\n this.onChange(this.date);\n }\n } else {\n this.date = this.getDefaultDate(this.defaultDate);\n if (this.date) {\n this.onChange(this.date);\n }\n }\n }\n\n getDefaultDate(defaultDate: string) {\n if (defaultDate) {\n const today = new Date();\n switch (defaultDate) {\n case 'now':\n return today;\n case 'today':\n return startOfDay(today);\n case 'yesterday':\n return addDays(startOfDay(today), -1);\n case 'tomorrow':\n return addDays(startOfDay(today), 1);\n case 'thisMonth':\n return startOfMonth(today);\n case 'lastMonth':\n return addMonths(startOfMonth(today), -1);\n case 'nextMonth':\n return addMonths(startOfMonth(today), 1);\n case 'thisYear':\n return startOfYear(today);\n case 'lastYear':\n return addYears(startOfYear(today), -1);\n case 'nextYear':\n return addYears(startOfYear(today), 1);\n case 'thisWeek':\n return addDays(startOfWeek(addDays(today, -1)), 1);\n case 'lastWeek':\n return addWeeks(addDays(startOfWeek(addDays(today, -1)), 1), -1);\n case 'nextWeek':\n return addWeeks(addDays(startOfWeek(addDays(today, -1)), 1), 1);\n }\n }\n return null;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.dateFormat && !this.dateFormat) {\n this.setDefaultFormat();\n }\n this.datePickerStyle = {\n borderColor: this.borderColor,\n backgroundColor: this.background,\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n height: this.height + 'px',\n backgroundSize: '100% 100%',\n lineHeight: this.font.lineHeight + 'px',\n };\n if (this.showTime) {\n this.nzShowTime = {\n nzFormat: this.timeFormat || 'HH:mm:ss',\n nzHourStep: this.hourStep,\n nzMinuteStep: this.minuteStep,\n nzSecondStep: this.secondStep,\n };\n }\n if (this.backImage) {\n this.datePickerStyle.backgroundImage = 'url(' + this.backImage + ')';\n }\n if (changes.rangeMode || changes.defaultDate || changes.defaultEndDate) {\n this.initDefaultDate();\n }\n if (changes.data) {\n this.updateData();\n }\n if (changes.disabledDate) {\n this.updateDisabledDate();\n }\n if (changes.value) {\n if (!this.date) {\n this.date = null;\n } else if (typeof this.date === 'string') {\n this.date = parse(this.date, this.dateFormat, new Date());\n }\n }\n }\n\n updateDisabledDate() {\n switch (this.disabledDate) {\n case 'after':\n this.nzDisabledDate = (current) => differenceInCalendarDays(current, new Date()) < 0;\n break;\n case 'before':\n this.nzDisabledDate = (current) => differenceInCalendarDays(current, new Date()) > 0;\n break;\n default:\n this.nzDisabledDate = null;\n }\n }\n\n updateData() {\n if (this.data?.length) {\n const { date, endDate } = this.data[0];\n const start = this.getDate(date);\n if (this.rangeMode) {\n const end = this.getDate(endDate);\n if (start || end) {\n this.date = [start || this.date[0], end || this.date[1]];\n this.onChange(this.date);\n }\n } else {\n if (start) {\n this.date = start;\n this.onChange(this.date);\n }\n }\n }\n }\n\n getDate(value: any) {\n if (value) {\n return new Date(value);\n } else {\n return null;\n }\n }\n\n onChange(result: Date, input?: boolean): void {\n if (!this.rangeMode) {\n const date = this.format(this.date);\n this.dateChange.emit(date);\n if (input) {\n this.inputDate.emit(date);\n }\n } else {\n // date=format(this.date[0], this.dateFormat)+'-'+format(this.date[1], this.dateFormat);\n const start = this.format(this.date[0]);\n const end = this.format(this.date[1]);\n this.dateChange.emit(start);\n this.endDateChange.emit(end);\n if (input) {\n this.inputDate.emit(start);\n this.inputEndDate.emit(end);\n }\n }\n }\n\n format(date: Date) {\n if (date) {\n return formatDate(date, this.dateFormat, this.i18n.getLocaleId());\n } else {\n return null;\n }\n }\n\n setDefaultFormat() {\n switch (this.selectMode) {\n case 'week':\n this.dateFormat = 'yyyy-ww';\n break;\n case 'month':\n // console.log(today);\n this.dateFormat = 'yyyy-MM';\n break;\n case 'year':\n this.dateFormat = 'yyyy';\n break;\n default:\n if (this.showTime) {\n this.dateFormat = 'yyyy-MM-dd HH:mm:ss';\n if (this.timeFormat) {\n switch (this.timeFormat) {\n case 'HH':\n this.dateFormat = 'yyyy-MM-dd HH:00:00';\n break;\n case 'HH:mm':\n this.dateFormat = 'yyyy-MM-dd HH:mm:00';\n break;\n }\n }\n } else {\n this.dateFormat = 'yyyy-MM-dd';\n }\n break;\n }\n }\n @Method('设置值')\n setValue(@Param('值') value: Date) {\n this.date = value;\n this.onChange(value);\n }\n\n // changeLanguage(): void {\n // this.i18n.setLocale(this.isEnglish ? zh_CN : en_US);\n // this.isEnglish = !this.isEnglish;\n // }\n\n exportWord() {\n return null;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DatePickerComponent} from './date-picker.component';\nimport {WidgetBaseModule, WidgetService} from 'bbj-widget-base';\nimport {NzDatePickerModule} from 'ng-zorro-antd/date-picker';\nimport {FormsModule} from '@angular/forms';\n\n\n@NgModule({\n declarations: [DatePickerComponent],\n imports: [CommonModule, WidgetBaseModule, NzDatePickerModule, FormsModule],\n exports: [DatePickerComponent]\n})\nexport class DatePickerModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(DatePickerComponent);\n }\n}\n","import { Component, EventEmitter, OnInit } from '@angular/core';\nimport { DataOutput, Property, Widget } from 'bbj-widget-base';\nimport { SFStringWidgetSchema } from '@delon/form';\nimport { format } from 'date-fns';\nimport { backgroundImage } from 'html2canvas/dist/types/css/property-descriptors/background-image';\n\n@Component({\n selector: 'sc-time-picker',\n templateUrl: './time-picker.component.html',\n styleUrls: ['./time-picker.component.less'],\n})\n@Widget('时间选择器', {\n group: 'component',\n image: 'assets/img/screen/time-picker.png',\n icon: 'icontubiao',\n})\nexport class TimePickerComponent implements OnInit {\n @Property('边框', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n borderColor = '#3285ff';\n @Property('背景图片', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n }\n })\n backImage = null;\n @Property('高度')\n height: number = 30;\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', color: '#3285ff', weight: 'normal', size: 12, space: 0, lineHeight: '' };\n @Property('填充', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\n },\n })\n background = 'rgba(50,133,255,0.2)';\n @Property('时间格式', {\n timeFormat: {\n type: 'string',\n title: 'max',\n ui: {} as SFStringWidgetSchema,\n },\n required: ['timeFormat'],\n })\n timeFormat = 'HH:mm:ss';\n @Property('提示语')\n alert = '请选择时间';\n @DataOutput('值')\n timeChange = new EventEmitter<any>();\n time: Date | null = null;\n timePickerStyle: any;\n\n defaultOpenValue = new Date(0, 0, 0, 0, 0, 0);\n\n constructor() { }\n\n ngOnInit(): void {\n this.timePickerStyle = {\n borderColor: this.borderColor,\n backgroundColor: this.background,\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n height: this.height + 'px',\n backgroundImage: 'url('+this.backImage+')',\n backgroundSize:'100% 100%'\n };\n }\n\n onChange(result: Date) {\n let date = '';\n if (result !== null) {\n date = format(result, this.timeFormat);\n }\n this.timeChange.emit(date);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TimePickerComponent } from './time-picker.component';\nimport {WidgetBaseModule, WidgetService} from 'bbj-widget-base';\nimport { NzTimePickerModule } from 'ng-zorro-antd/time-picker';\nimport {FormsModule} from '@angular/forms';\n\n\n\n\n@NgModule({\n declarations: [TimePickerComponent],\n imports: [CommonModule, WidgetBaseModule, NzTimePickerModule,FormsModule],\n})\nexport class TimePickerModule {\n constructor(widgetService: WidgetService){\n widgetService.register(TimePickerComponent);\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { take, takeUntil } from 'rxjs/operators';\r\nimport { ScaleSubject, TemplateUtil, WidgetRef } from 'bbj-widget-base';\r\nimport { Data, DataOutput, Property, Widget, Event } from 'bbj-widget-base';\r\nimport { BaiduMapService } from 'bbj-screen-widget/core';\r\n\r\n// declare const BMap;\r\ndeclare const BMapGL: any;\r\n// declare const BMapGLLib;\r\n// declare const BMapLib;\r\n// declare const BMAP_ANCHOR_BOTTOM_LEFT: number;\r\ndeclare const BMAP_ANCHOR_TOP_LEFT: number;\r\ndeclare const mapvgl: any;\r\ndeclare const BMAP_SATELLITE_MAP: number;\r\ndeclare const BMAP_NORMAL_MAP: number;\r\nconst MapTypeEnum = [\r\n { label: '普通', value: 'normal' },\r\n { label: '深色', value: 'dark' },\r\n { label: '卫星', value: 'satellite' },\r\n { label: '自定义', value: 'custom' },\r\n];\r\n@Component({\r\n selector: 'sc-custom-baidu-map',\r\n templateUrl: './custom-baidu-map.component.html',\r\n styleUrls: ['./custom-baidu-map.component.less'],\r\n})\r\n@Widget('百度地图', {\r\n group: 'component',\r\n image: 'assets/img/screen/my-baidu-map.png',\r\n children: [\r\n {\r\n title: '标记层',\r\n type: 'sc-baidu-marker-layer',\r\n option: {},\r\n hidden: true,\r\n hideChild: true,\r\n },\r\n ],\r\n childTypes: ['sc-baidu-marker-layer', 'sc-baidu-polyline-layer', 'sc-wind-layer', 'sc-typhoon-area-layer'],\r\n description: 'hasChildItem',\r\n} as any)\r\nexport class CustomBaiduMapComponent implements OnInit, OnDestroy, OnChanges {\r\n // @Property('字体', { ui: { widget: 'myFont' } })\r\n // font: any = {\r\n // family: '',\r\n // color: '#000000',\r\n // weight: 'normal',\r\n // size: 16,\r\n // space: 0,\r\n // lineHeight: 0,\r\n // };\r\n @Property('地图类型', {\r\n enum: MapTypeEnum,\r\n })\r\n mapType = 'normal';\r\n mapTypeValue: string;\r\n @Property('上传样式', { type: 'string', ui: { widget: 'myUploadAudio', visibleIf: { mapType: ['custom'] } } })\r\n uploadStyle: string;\r\n @Property('切换按钮')\r\n showMapTypeRadio: boolean;\r\n @Property('全景地图', { type: 'boolean' })\r\n minMapShow = false;\r\n @Property('显示信息', {\r\n ui: { widget: 'select' },\r\n enum: [\r\n { label: '点击', value: 'click' },\r\n { label: '悬停', value: 'mouseover' },\r\n ],\r\n })\r\n showType = 'click';\r\n @Property('信息窗背景', { ui: { widget: 'myColor' } })\r\n infoWindowBackground: string;\r\n @Property('信息窗字体', { ui: { widget: 'myColor' } })\r\n infoWindowColor: string;\r\n @Property('信息窗宽度')\r\n infoWindowWidth: number;\r\n @Property('信息窗高度')\r\n infoWindowHeight: number;\r\n @Property('信息窗模板', { ui: { widget: 'textarea' } })\r\n infoWindowTemplate: string;\r\n @Property('隐藏尖角')\r\n @HostBinding('class.hideInfoWindowTail')\r\n hideInfoWindowTail: boolean;\r\n @Property('隐藏关闭按钮')\r\n @HostBinding('class.hideInfoWindowTop')\r\n hideInfoWindowTop: boolean;\r\n @Property('地图拖动', { type: 'boolean' })\r\n dragging = true;\r\n\r\n @Property('遮罩颜色', {\r\n ui: { widget: 'myColor' },\r\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\r\n })\r\n shadeColor = '#004395';\r\n @Property('背景颜色', {\r\n ui: { widget: 'myColor' },\r\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\r\n })\r\n mapBackColor: string;\r\n\r\n @Property('多边线色', {\r\n ui: { widget: 'myColor' },\r\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],\r\n })\r\n mapCityColor = '#41b7ff';\r\n @Property('地图缩放', {\r\n ui: { widget: 'myRange', min: 1, max: 40, step: 1 },\r\n })\r\n zoom = 12;\r\n // @Property('放大比例', { type: 'number' })\r\n // scale = 1;\r\n @Property('遮罩透明', { type: 'number' })\r\n fillOpacity = 0;\r\n @Property('多边线粗', { type: 'number' })\r\n strokesize = 2;\r\n @Property('黑夜模式', { type: 'boolean', ui: { hidden: true } })\r\n nightMode = false;\r\n @Property('3D视角')\r\n enable3D: boolean;\r\n @Property('定位控件')\r\n showLocationControl: boolean;\r\n @Property('初始角度', { type: 'number', ui: { visibleIf: { enable3D: [true] } } })\r\n tilt = 73;\r\n // @Property('中心经度', {\r\n // ui: {widget: 'myRange', min: -180, max: 180, step: 1},\r\n // })\r\n centerLng = 120.7;\r\n // @Property('中心纬度', {\r\n // ui: {widget: 'myRange', min: -90, max: 90, step: 1},\r\n // })\r\n centerLat = 28;\r\n @Property('显示省市', {\r\n ui: {\r\n widget: 'myUrlSelect',\r\n allowClear: true,\r\n url: '/assets/mapListItem.json',\r\n },\r\n })\r\n cityName = null;\r\n point: any;\r\n\r\n // _data = [\r\n // {\r\n // options: {\r\n // icon: {\r\n // imageUrl: 'assets/img/screen/number-flop.png',\r\n // size: {\r\n // height: 260,\r\n // width: 250\r\n // }\r\n // }\r\n // },\r\n // point: {\r\n // lng: 120.7, // 经度\r\n // lat: 28, // 纬度\r\n // }\r\n // },\r\n // ];\r\n // 文字标注\r\n\r\n public text: string;\r\n // _children = [];\r\n type: string;\r\n map: any;\r\n edit: boolean;\r\n // markerTierClick: any;\r\n // pingyang = '';\r\n // ruian = '';\r\n @Data({\r\n properties: {\r\n lng: { type: 'number', title: '经度' },\r\n lat: { type: 'number', title: '纬度' },\r\n },\r\n })\r\n _data: any[] = [{ lng: 120.7, lat: 28 }];\r\n @DataOutput(['lng', 'lat'])\r\n @Event('中心点改变', {\r\n params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },\r\n })\r\n dataChange = new EventEmitter<any>();\r\n\r\n @DataOutput('缩放等级')\r\n @Event('缩放', {\r\n params: '缩放等级',\r\n })\r\n zoomChange = new EventEmitter<any>();\r\n @Event('地图点击', {\r\n params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },\r\n })\r\n mapClick = new EventEmitter<any>();\r\n\r\n @ViewChild('container', { static: true })\r\n container: ElementRef;\r\n children: any[];\r\n destroy$ = new Subject();\r\n destroyed: boolean;\r\n // containerStyle: any = {};\r\n // unloadedChildren = {};\r\n overlaysMap = {};\r\n\r\n // @HostBinding('class.hideInfoWindowTail')\r\n // hideInfoWindowTail: boolean;\r\n\r\n private inited: (map: any) => void;\r\n init$ = new Promise((resolve) => {\r\n this.inited = resolve;\r\n });\r\n view: any;\r\n pickerEvent: any;\r\n pickerItem: any;\r\n pickerTimeout: any;\r\n mapTypeEnum = MapTypeEnum.slice(0, 3);\r\n darkStyle: any;\r\n firstOpen: boolean;\r\n firstOpenPromise: Promise<void>;\r\n constructor(\r\n private baiduMapService: BaiduMapService,\r\n private http: HttpClient,\r\n private elementRef: ElementRef,\r\n private zone: NgZone,\r\n @Optional() private scale$: ScaleSubject,\r\n private cd: ChangeDetectorRef,\r\n private widgetRef: WidgetRef,\r\n ) {}\r\n\r\n get element(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n\r\n addLayer(layer: any) {\r\n if (this.view) {\r\n this.view.addLayer(layer);\r\n }\r\n }\r\n\r\n removeLayer(layer: any) {\r\n if (this.view) {\r\n this.view.removeLayer(layer);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes._data && this._data[0]) {\r\n this.centerLng = +this._data[0].lng;\r\n this.centerLat = +this._data[0].lat;\r\n this.setCenter(this.centerLng, this.centerLat);\r\n }\r\n }\r\n\r\n async ngOnInit() {\r\n if (this.scale$) {\r\n // 这是为了解决地图缩放中心不在鼠标所在位置的问题\r\n this.scale$.pipe(takeUntil(this.destroy$)).subscribe((scale) => {\r\n const { x: sx, y: sy, scaleContent } = scale as any;\r\n const style = this.element.style;\r\n if (scaleContent === false) {\r\n this.zone.onStable.pipe(take(1)).subscribe(() => {\r\n const parent = this.element.parentNode as HTMLElement;\r\n if (parent) {\r\n const match = /translate\\(([-\\d.]+)px, ([-\\d.]+)px\\)/.exec(parent.style.transform);\r\n if (match) {\r\n const offsetX = parseFloat(match[1]);\r\n const offsetY = parseFloat(match[2]);\r\n style.transform = `translate(${-offsetX}px,${-offsetY}px)`;\r\n style.height = parent.clientHeight + offsetY + 'px';\r\n style.width = parent.clientWidth + offsetX + 'px';\r\n style.padding = `${offsetY}px 0 0 ${offsetX}px`;\r\n // this.containerStyle = {\r\n // transformOrigin: `0 0`,\r\n // transform: `translate(${-offsetX}px,${-offsetY}px)`,\r\n // height: parent.clientHeight + offsetY + 'px',\r\n // width: parent.clientWidth + offsetX + 'px',\r\n // padding: `${offsetY}px 0 0 ${offsetX}px`,\r\n // };\r\n }\r\n }\r\n\r\n // this.cd.markForCheck();\r\n });\r\n } else {\r\n const { position, size } = this.widgetRef.widget as any;\r\n const { x, y } = position;\r\n const { width, height } = size;\r\n style.transform = `translate(${-x}px,${-y}px) scale(${1 / sx},${1 / sy})`;\r\n style.height = (y + height) * sy + 'px';\r\n style.width = (x + width) * sx + 'px';\r\n style.padding = `${y * sy}px 0 0 ${x * sx}px`;\r\n }\r\n\r\n // this.cd.markForCheck();\r\n });\r\n }\r\n await this.initMap();\r\n }\r\n\r\n async initMap() {\r\n await this.baiduMapService.loadMapGL();\r\n await this.baiduMapService.loadMapVGL();\r\n this.mapTypeValue = this.mapType;\r\n // 兼容老的配置\r\n if (this.mapType == null) {\r\n if (this.uploadStyle) {\r\n this.mapTypeValue = 'custom';\r\n } else if (this.nightMode) {\r\n this.mapTypeValue = 'dark';\r\n }\r\n }\r\n if (!this.destroyed) {\r\n this.zone.runOutsideAngular(() => {\r\n this.map = new BMapGL.Map(this.container.nativeElement, { restrictCenter: false });\r\n this.map.centerAndZoom(new BMapGL.Point(this.centerLng, this.centerLat), this.zoom); // 设置中心点和缩放级别\r\n this.map.enableScrollWheelZoom(); // 启用滚轮进行缩放功能\r\n // var dist = new BMapGL.DistrictLayer({\r\n // name: '(温州市)',\r\n // kind: 1,\r\n // fillColor: '#fff',\r\n // fillOpacity: 0.1,\r\n // strokeColor: '#daeafa',\r\n // viewport: true,\r\n // });\r\n // this.map.addDistrictLayer(dist);\r\n this.mapTypeChange(this.mapTypeValue);\r\n if (this.edit || this.dragging === false) {\r\n this.map.disableDragging();\r\n }\r\n if (this.enable3D) {\r\n this.map.setTilt(this.tilt == null ? 73 : this.tilt, { noAnimation: true });\r\n this.map.setDisplayOptions({ skyColors: ['rgba(0, 0, 0, 0)'] }); // 隐藏天空\r\n // const navi3DCtrl = new BMapGL.NavigationControl3D(); // 添加3D控件\r\n // this.map.addControl(navi3DCtrl);\r\n } else {\r\n this.map.disableTilt();\r\n this.map.disableRotate();\r\n }\r\n if (this.showLocationControl) {\r\n const options = {\r\n // 控件的停靠位置(可选,默认左上角)\r\n anchor: BMAP_ANCHOR_TOP_LEFT,\r\n // 控件基于停靠位置的偏移量(可选)\r\n offset: new BMapGL.Size(20, 20),\r\n };\r\n let locationControl = new BMapGL.LocationControl(options);\r\n // 将控件添加到地图上\r\n this.map.addControl(locationControl);\r\n }\r\n if (this.minMapShow) {\r\n const stCtrl = new BMapGL.PanoramaControl();\r\n stCtrl.setOffset(new BMapGL.Size(20, 20));\r\n this.map.addControl(stCtrl);\r\n }\r\n if (this.infoWindowBackground) {\r\n this.element.style.setProperty('--info-window-background', this.infoWindowBackground);\r\n }\r\n if (this.infoWindowColor) {\r\n this.element.style.setProperty('--info-window-color', this.infoWindowColor);\r\n }\r\n this.map.addEventListener('moveend', (event) => {\r\n const center = this.map.getCenter();\r\n this.dataChange.emit(center);\r\n });\r\n this.map.addEventListener('click', (event) => {\r\n this.mapClick.emit(event.pointer);\r\n });\r\n this.map.addEventListener('zoomend', (event) => {\r\n this.zoomChange.emit(this.map.getZoom());\r\n this.dataChange.emit(this.map.getCenter());\r\n });\r\n this.view = new mapvgl.View({\r\n map: this.map,\r\n });\r\n this.mapLoaded(this.map);\r\n });\r\n this.inited(this.map);\r\n }\r\n }\r\n\r\n setCenter(lng: number, lat: number) {\r\n if (this.map && lng && lat) {\r\n const center = this.map.getCenter();\r\n if (center.lng != lng || center.lat != lat) {\r\n this.setCenterAndZoom(lng, lat, this.map.getZoom());\r\n }\r\n }\r\n }\r\n\r\n setCenterAndZoom(lng: number, lat: number, zoom: number) {\r\n const center = this.map.getCenter();\r\n const currentZoom = this.map.getZoom();\r\n // 误差范围内不移动,防止背景抖动\r\n if (zoom != currentZoom || Math.abs(lng - center.lng) > 1e-13 || Math.abs(lat - center.lat) > 1e-7) {\r\n const point = new BMapGL.Point(lng, lat);\r\n this.map.centerAndZoom(point, zoom, { tilt: this.map.getTilt() });\r\n }\r\n }\r\n\r\n /**\r\n * 根据经纬度范围设置中心和缩放等级\r\n * @param minLng\r\n * @param maxLng\r\n * @param minLat\r\n * @param maxLat\r\n */\r\n setRectCenterAndZoom(minLng: number, maxLng: number, minLat: number, maxLat: number) {\r\n this.setCenterAndZoom((maxLng + minLng) / 2, (maxLat + minLat) / 2, this.getZoom(maxLng, minLng, maxLat, minLat));\r\n }\r\n\r\n getZoom(maxLng: number, minLng: number, maxLat: number, minLat: number) {\r\n const zooms = [\r\n 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 25000, 50000, 100000, 200000, 500000, 1000000, 2000000,\r\n ]; //级别18到3。\r\n const pointA = new BMapGL.Point(maxLng, maxLat); // 创建点坐标A\r\n const pointB = new BMapGL.Point(minLng, minLat); // 创建点坐标B\r\n const distance = +this.map.getDistance(pointA, pointB).toFixed(1); //获取两点距离,保留小数点后两位\r\n const i = zooms.findIndex((zoom) => zoom - distance > 0);\r\n if (i === -1) {\r\n return 5;\r\n }\r\n //之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。\r\n return 18 - i + 3;\r\n }\r\n\r\n openInfoWindow(data: any, lng: number, lat: number) {\r\n if (data.information || this.infoWindowTemplate) {\r\n const point = new BMapGL.Point(+lng, +lat);\r\n // let offsetY = -25;\r\n // if (this.hideInfoWindowTail) {\r\n // offsetY = 0;\r\n // }\r\n let information = data.information;\r\n if (this.infoWindowTemplate) {\r\n information = TemplateUtil.parse(this.infoWindowTemplate, data);\r\n }\r\n const options = {\r\n offset: new BMapGL.Size(0, 0),\r\n width: this.infoWindowWidth || 0,\r\n height: this.infoWindowHeight || 0,\r\n };\r\n const infoWindow = new BMapGL.InfoWindow(information, options);\r\n // 第一次打开信息窗口后在短时间关闭或重新打开会导致click事件失效,临时解决方案是第一次打开后0.5秒内不关闭\r\n if (!this.firstOpen) {\r\n if (this.firstOpenPromise) {\r\n this.firstOpenPromise.then(() => {\r\n this.map.openInfoWindow(infoWindow, point);\r\n });\r\n } else {\r\n this.firstOpenPromise = new Promise<void>((resolve) => {\r\n setTimeout(() => {\r\n this.firstOpen = true;\r\n this.firstOpenPromise = null;\r\n resolve();\r\n }, 500);\r\n });\r\n this.map.openInfoWindow(infoWindow, point);\r\n }\r\n const rawClose = infoWindow.close;\r\n infoWindow.close = () => {\r\n if (this.firstOpenPromise) {\r\n this.firstOpenPromise.then(() => rawClose.call(infoWindow));\r\n } else {\r\n rawClose.call(infoWindow);\r\n }\r\n };\r\n } else {\r\n this.map.openInfoWindow(infoWindow, point);\r\n }\r\n return infoWindow;\r\n }\r\n }\r\n\r\n getCanvasOverlay(child: any) {\r\n let canvasOverlay;\r\n if (this.enable3D) {\r\n const item = child.item;\r\n if (item) {\r\n var pStart = new BMapGL.Point(item.start.lng, item.start.lat);\r\n var pEnd = new BMapGL.Point(item.end.lng, item.end.lat);\r\n var bounds = new BMapGL.Bounds(new BMapGL.Point(pStart.lng, pEnd.lat), new BMapGL.Point(pEnd.lng, pStart.lat));\r\n canvasOverlay = new BMapGL.GroundOverlay(bounds, {\r\n type: 'canvas',\r\n url: item.canvas,\r\n opacity: 1,\r\n });\r\n }\r\n } else {\r\n const pointToPixel = (data) => {\r\n const point = new BMapGL.Point(data.lng, data.lat);\r\n return this.map.pointToPixel(point);\r\n };\r\n canvasOverlay = new BMapGL.CanvasLayer({\r\n paneName: 'markerShadow',\r\n update: function () {\r\n var ctx = this.canvas.getContext('2d');\r\n if (!ctx) {\r\n return;\r\n }\r\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\r\n child.update(ctx, pointToPixel);\r\n },\r\n });\r\n }\r\n return canvasOverlay;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.destroyed = true;\r\n if (this.view) {\r\n this.view.destroy();\r\n }\r\n if (this.map) {\r\n this.map.destroy();\r\n }\r\n }\r\n\r\n async mapLoaded(map: any) {\r\n if (this.cityName) {\r\n if (this.cityName === '温州') {\r\n this.cityName = 'wenzhou';\r\n }\r\n const json: any = await this.http.get('assets/echarts/map/json/' + this.cityName + '.json').toPromise();\r\n const polygonData = [];\r\n let encodeScale = json.UTF8Scale || 1024;\r\n json.features.forEach(({ geometry }) => {\r\n geometry.coordinates = (geometry.coordinates as any[]).forEach((coordinate, i) => {\r\n if (geometry.type === 'MultiPolygon') {\r\n const coordinates = (coordinate as any[]).map((points, j) => {\r\n if (json.UTF8Encoding) {\r\n points = this.decodePolygon(points, geometry.encodeOffsets[i][j], encodeScale);\r\n }\r\n return points;\r\n });\r\n polygonData.push(coordinates);\r\n } else {\r\n if (json.UTF8Encoding) {\r\n coordinate = this.decodePolygon(coordinate, geometry.encodeOffsets[i], encodeScale);\r\n }\r\n polygonData.push([coordinate]);\r\n }\r\n });\r\n });\r\n const data = [\r\n {\r\n geometry: {\r\n type: 'MultiPolygon',\r\n coordinates: polygonData,\r\n },\r\n },\r\n ];\r\n var layer = new mapvgl.PolygonLayer({\r\n lineColor: this.mapCityColor,\r\n lineWidth: this.strokesize || 2,\r\n fillColor: this.shadeColor,\r\n data,\r\n renderOrder: -2,\r\n });\r\n this.view.addLayer(layer);\r\n if (this.mapBackColor && !this.mapBackColor.match(/rgba\\(\\d+,\\d+,\\d+,0\\)/)) {\r\n var maskLayer = new mapvgl.MaskLayer({\r\n color: this.mapBackColor,\r\n data,\r\n renderOrder: -3,\r\n });\r\n this.view.addLayer(maskLayer);\r\n }\r\n }\r\n }\r\n\r\n decodePolygon(coordinate: string, encodeOffsets: number[], encodeScale: number) {\r\n const result = [];\r\n let prevX = encodeOffsets[0];\r\n let prevY = encodeOffsets[1];\r\n\r\n for (let i = 0; i < coordinate.length; i += 2) {\r\n var x = coordinate.charCodeAt(i) - 64;\r\n var y = coordinate.charCodeAt(i + 1) - 64;\r\n // ZigZag decoding\r\n x = (x >> 1) ^ -(x & 1);\r\n y = (y >> 1) ^ -(y & 1);\r\n // Delta deocding\r\n x += prevX;\r\n y += prevY;\r\n\r\n prevX = x;\r\n prevY = y;\r\n // Dequantize\r\n result.push([x / encodeScale, y / encodeScale]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async mapTypeChange(mapType: string) {\r\n switch (mapType) {\r\n case 'dark':\r\n if (!this.darkStyle) {\r\n this.darkStyle = await this.http.get('assets/echarts/map/json/custom_map.json').toPromise();\r\n }\r\n this.map.setMapType(BMAP_NORMAL_MAP);\r\n this.map.setMapStyleV2({ styleJson: this.darkStyle });\r\n break;\r\n case 'satellite':\r\n this.map.setMapType(BMAP_SATELLITE_MAP);\r\n break;\r\n case 'custom':\r\n if (this.uploadStyle) {\r\n const styleJson = await this.http.get(this.uploadStyle).toPromise();\r\n this.map.setMapType(BMAP_NORMAL_MAP);\r\n this.map.setMapStyleV2({ styleJson });\r\n }\r\n break;\r\n default:\r\n this.map.setMapType(BMAP_NORMAL_MAP);\r\n this.map.setMapStyleV2({ styleJson: null });\r\n }\r\n }\r\n}\r\n","import { Component, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { SFArrayWidgetSchema } from '@delon/form';\nimport { Data, Property, Widget } from 'bbj-widget-base';\nimport { CustomBaiduMapComponent } from '../custom-baidu-map.component';\ndeclare const BMapGL;\n\n@Component({\n selector: 'sc-wind-layer',\n templateUrl: './wind-layer.component.html',\n styleUrls: ['./wind-layer.component.less'],\n})\n@Widget('台风层', {\n group: 'component',\n image: '',\n icon: '',\n hidden: true,\n})\nexport class WindLayerComponent implements OnInit, OnChanges, OnDestroy {\n @Property('清晰度', { type: 'number' })\n sharpness = 1000;\n @Property('标记分组', {\n type: 'array',\n title: '标记分组',\n maxItems: 10,\n items: {\n type: 'object',\n properties: {\n group: {\n type: 'string',\n title: '分组',\n },\n color: {\n type: 'string',\n title: '颜色',\n ui: { widget: 'myColor' },\n },\n borderColor: {\n type: 'string',\n title: '线条颜色',\n ui: { widget: 'myColor' },\n },\n borderWidth: {\n type: 'number',\n title: '线条粗细',\n },\n shadowColor: {\n type: 'string',\n title: '阴影颜色',\n ui: { widget: 'myColor' },\n },\n image: {\n type: 'string',\n title: '中心图片',\n ui: { widget: 'myUpload' },\n },\n },\n },\n ui: { grid: { arraySpan: 24 }, spanControl: 24 } as SFArrayWidgetSchema,\n })\n groups: any = [\n {\n group: '3',\n color: 'rgba(62,194,35,0.4)',\n borderColor: '#60db91',\n borderWidth: 1,\n shadowColor: 'rgba(96,219,145,0.2)',\n },\n {\n group: '2',\n color: 'rgba(255,101,41,0.4)',\n borderColor: '#ff7b48',\n borderWidth: 1,\n shadowColor: 'rgba(255,166,51,0.2)',\n },\n {\n group: '1',\n color: 'rgba(243,68,68,0.4)',\n borderColor: '#ff3355',\n borderWidth: 1,\n shadowColor: 'rgba(255,51,85,0.2)',\n image: '/assets/img/screen/typhoon.png',\n },\n ];\n @Data({\n properties: {\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n r: { type: 'number', title: '半径' },\n group: { type: 'string', title: '分组' },\n },\n })\n data: any[] = [\n {\n lng: 121.3,\n lat: 27.4,\n group: '3',\n r: 160,\n },\n {\n lng: 119.5,\n lat: 29.97,\n group: '3',\n r: 160,\n },\n {\n lng: 120.52,\n lat: 33.93,\n group: '3',\n r: 75,\n },\n {\n lng: 121.3,\n lat: 27.4,\n group: '2',\n r: 80,\n },\n {\n lng: 119.5,\n lat: 29.97,\n group: '2',\n r: 80,\n },\n {\n lng: 120.52,\n lat: 33.93,\n group: '2',\n r: 50,\n },\n {\n lng: 121.3,\n lat: 27.4,\n group: '1',\n r: 40,\n },\n {\n lng: 119.5,\n lat: 29.97,\n group: '1',\n r: 40,\n },\n {\n lng: 120.52,\n lat: 33.93,\n group: '1',\n r: 25,\n },\n ];\n id: string;\n canvasOverlay: any;\n constructor(private parent: CustomBaiduMapComponent) {}\n\n ngOnInit(): void {}\n\n async ngOnChanges() {\n this.updateOverlay();\n // if ((this.parent as any).enable3D) {\n\n // } else {\n // this.parent.childInit({\n // id: this.id,\n // type: 'canvas',\n // update: this.updateCanvas,\n // });\n // }\n }\n\n async updateOverlay() {\n await this.parent.init$;\n this.remove();\n const canvas = this.getCanvas();\n this.addCanvasOverlay(canvas);\n }\n\n addCanvasOverlay(item: any) {\n if (item) {\n var pStart = new BMapGL.Point(item.start.lng, item.start.lat);\n var pEnd = new BMapGL.Point(item.end.lng, item.end.lat);\n var bounds = new BMapGL.Bounds(\n new BMapGL.Point(pStart.lng, pEnd.lat),\n new BMapGL.Point(pEnd.lng, pStart.lat),\n );\n this.canvasOverlay = new BMapGL.GroundOverlay(bounds, {\n type: 'canvas',\n url: item.canvas,\n opacity: 1,\n });\n this.parent.map.addOverlay(this.canvasOverlay);\n }\n // return canvasOverlay;\n }\n\n ngOnDestroy(): void {\n this.remove();\n // this.parent.deleteChild(this.id);\n }\n\n remove() {\n if (this.canvasOverlay) {\n this.parent.map.removeOverlay(this.canvasOverlay);\n this.canvasOverlay = null;\n }\n }\n\n getCanvas() {\n // const images = {};\n // if (this.groups?.length) {\n // for (const group of this.groups) {\n // if (group.image) {\n // images[group.image] = await this.loadImage(group.image);\n // }\n // }\n // }\n // console.log(this.data);\n if (this.data && this.data.length >= 3) {\n let startLng = 180;\n let startLat = 90;\n let endLng = -180;\n let endLat = -90;\n const data = this.data.map((record) => {\n const r = (+record.r * 180) / Math.PI / 6371.393;\n startLng = Math.min(startLng, +record.lng - r);\n startLat = Math.min(startLat, +record.lat - r);\n endLng = Math.max(endLng, +record.lng + r);\n endLat = Math.max(endLat, +record.lat + r);\n return { ...record, r };\n });\n const sharpness = this.sharpness || 1000;\n const multiple = Math.min(sharpness / (endLng - startLng), sharpness / (endLat - startLat));\n const c = document.createElement('canvas');\n c.width = Math.round((endLng - startLng) * multiple);\n c.height = Math.round((endLat - startLat) * multiple);\n const groups = {};\n data.forEach((record) => {\n const group = record.group;\n if (group) {\n let points: any[] = groups[group];\n if (!points) {\n points = [];\n groups[group] = points;\n }\n points.push({\n x: (+record.lng - startLng) * multiple,\n y: (endLat - +record.lat) * multiple,\n r: record.r * multiple,\n });\n }\n });\n this.groups.forEach((group) => {\n const points = groups[group.group];\n if (points?.length >= 3) {\n const ctx = c.getContext('2d');\n const p1 = points[0];\n const p2 = points[Math.floor(points.length / 2)];\n const p3 = points[points.length - 1];\n var gnt = ctx.createRadialGradient(p1.x, p1.y, 0, p1.x, p1.y, p1.r);\n // gnt.addColorStop(1, 'green');\n // gnt.addColorStop(0, 'green');\n gnt.addColorStop(1, group.shadowColor || 'green');\n gnt.addColorStop(0, 'rgba(0,0,0,0)');\n ctx.fillStyle = gnt;\n ctx.beginPath();\n ctx.arc(p1.x, p1.y, p1.r, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n const getTangency = (p1, p2) => {\n const l = Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n return { x: p2.x + (p2.r * (p1.y - p2.y)) / l, y: p2.y + (p2.r * (p2.x - p1.x)) / l };\n };\n ctx.beginPath();\n let start = Math.atan((p2.x - p1.x) / (p1.y - p2.y));\n ctx.arc(p1.x, p1.y, p1.r, start - Math.PI, start, false);\n let t = getTangency(p1, p2);\n // ctx.lineTo(t.x, t.y);\n let t2 = getTangency(p2, p3);\n ctx.quadraticCurveTo(t.x, t.y, t2.x, t2.y);\n // ctx.lineTo(t.x, t.y);\n start = Math.atan((p3.x - p2.x) / (p2.y - p3.y));\n ctx.arc(p3.x, p3.y, p3.r, start, start + Math.PI, true);\n t = getTangency(p3, p2);\n t2 = getTangency(p2, p1);\n ctx.quadraticCurveTo(t.x, t.y, t2.x, t2.y);\n // ctx.lineTo(t.x, t.y);\n ctx.closePath();\n ctx.fillStyle = group.color || 'green';\n ctx.fill();\n ctx.lineWidth = group.borderWidth || 1;\n ctx.beginPath();\n ctx.arc(p1.x, p1.y, p1.r, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.strokeStyle = group.borderColor || 'green';\n ctx.stroke();\n // if (group.image && images[group.image]) {\n // const imageSize = p1.r * 0.8;\n // ctx.drawImage(images[group.image], p1.x - imageSize, p1.y - imageSize, imageSize * 2, imageSize * 2);\n // }\n }\n });\n // const points = this.data.map((record) => {\n // return {\n // x: (+record.lng - startLng) * multiple,\n // y: (endLat - +record.lat) * multiple,\n // r: record.r * multiple,\n // };\n // });\n // c.toBlob((blob)=>{\n // FileSaver.saveAs(blob,'typhoon.png')\n // })\n\n return {\n start: {\n lng: startLng,\n lat: startLat,\n },\n end: {\n lng: endLng,\n lat: endLat,\n },\n canvas: c,\n };\n }\n }\n\n // updateCanvas = (ctx: CanvasRenderingContext2D, pointToPixel: Function) => {\n // if (this.data && this.data.length >= 3) {\n // const data = this.data.map((record) => {\n // const r = (+record.r * 180) / Math.PI / 6371.393;\n // return { lat: +record.lat, lng: +record.lng, r, group: record.group };\n // });\n\n // const groups = {};\n // data.forEach((record) => {\n // const group = record.group;\n // if (group) {\n // let points: any[] = groups[group];\n // if (!points) {\n // points = [];\n // groups[group] = points;\n // }\n // const pixel = pointToPixel(record);\n // const pixel2 = pointToPixel({ lat: record.lat, lng: record.lng + record.r });\n // points.push({\n // x: pixel.x,\n // y: pixel.y,\n // r: pixel2.x - pixel.x,\n // });\n // }\n // });\n // this.groups.forEach((group) => {\n // const points = groups[group.group];\n // if (points?.length >= 3) {\n // const p1 = points[0];\n // const p2 = points[Math.floor(points.length / 2)];\n // const p3 = points[points.length - 1];\n // var gnt = ctx.createRadialGradient(p1.x, p1.y, 0, p1.x, p1.y, p1.r);\n\n // gnt.addColorStop(1, group.shadowColor || 'green');\n // gnt.addColorStop(0, 'rgba(0,0,0,0)');\n // ctx.fillStyle = gnt;\n // ctx.beginPath();\n // ctx.arc(p1.x, p1.y, p1.r, 0, Math.PI * 2, true);\n // ctx.closePath();\n // ctx.fill();\n // const getTangency = (p1, p2) => {\n // const l = Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n // return { x: p2.x + (p2.r * (p1.y - p2.y)) / l, y: p2.y + (p2.r * (p2.x - p1.x)) / l };\n // };\n // ctx.beginPath();\n // let start = Math.atan((p2.x - p1.x) / (p1.y - p2.y));\n // ctx.arc(p1.x, p1.y, p1.r, start - Math.PI, start, false);\n // let t = getTangency(p1, p2);\n // let t2 = getTangency(p2, p3);\n // ctx.quadraticCurveTo(t.x, t.y, t2.x, t2.y);\n // start = Math.atan((p3.x - p2.x) / (p2.y - p3.y));\n // ctx.arc(p3.x, p3.y, p3.r, start, start + Math.PI, true);\n // t = getTangency(p3, p2);\n // t2 = getTangency(p2, p1);\n // ctx.quadraticCurveTo(t.x, t.y, t2.x, t2.y);\n // ctx.closePath();\n // ctx.fillStyle = group.color || 'green';\n // ctx.fill();\n // ctx.lineWidth = group.borderWidth || 1;\n // ctx.beginPath();\n // ctx.arc(p1.x, p1.y, p1.r, 0, Math.PI * 2, true);\n // ctx.closePath();\n // ctx.strokeStyle = group.borderColor || 'green';\n // ctx.stroke();\n // }\n // });\n // }\n // };\n\n // loadImage(url: string): Promise<HTMLElement> {\n // return new Promise((resolve, reject) => {\n // const image = new Image();\n // image.src = url;\n // image.onload = () => {\n // resolve(image);\n // };\n // image.onerror = (e) => {\n // resolve(null);\n // };\n // });\n // }\n}\n","import { Inject, forwardRef, NgZone, OnInit, OnChanges, OnDestroy, Directive, SimpleChanges } from '@angular/core';\r\nimport { CustomBaiduMapComponent } from './custom-baidu-map.component';\r\n\r\n@Directive()\r\nexport abstract class BaseLayer implements OnInit, OnDestroy, OnChanges {\r\n inited: boolean;\r\n layers = [];\r\n constructor(protected parent: CustomBaiduMapComponent, protected zone: NgZone) {}\r\n ngOnInit(): void {\r\n this.zone.runOutsideAngular(() => {\r\n this.updateLayers();\r\n });\r\n }\r\n\r\n ngOnChanges(changes:SimpleChanges) {\r\n if (this.inited) {\r\n this.zone.runOutsideAngular(() => {\r\n this.updateData();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeLayers();\r\n }\r\n\r\n async updateLayers() {\r\n await this.parent.init$;\r\n this.removeLayers();\r\n this.layers = this.createLayers();\r\n this.layers.forEach((layer) => {\r\n this.parent.addLayer(layer);\r\n });\r\n this.inited = true;\r\n this.updateData();\r\n }\r\n\r\n removeLayers() {\r\n if (this.layers.length) {\r\n this.layers.forEach((layer) => {\r\n this.parent.removeLayer(layer);\r\n });\r\n this.layers = [];\r\n }\r\n }\r\n\r\n abstract updateData(): void;\r\n\r\n abstract createLayers(): any[];\r\n}\r\n","import { v1 as uuid } from 'uuid';\r\nexport const getUUID = () => {\r\n return uuid().replace(/-/g, '');\r\n};\r\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { Data, DataOutput, Property, Widget, Event, DataInput } from 'bbj-widget-base';\nimport { ParentContainerComponent } from '../../parent-container/parent-container.component';\nimport { SFArrayWidgetSchema } from '@delon/form';\nimport { getFontStyle } from '../../shared/util/style.util';\nimport { CustomBaiduMapComponent } from '../custom-baidu-map.component';\nimport { BaseLayer } from '../base-layer';\nimport { FileUrlService } from '../../shared/service/file-url.service';\nimport { NzContextMenuService } from 'ng-zorro-antd/dropdown';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { getUUID } from '../../shared/util/base.util';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\ndeclare const mapvgl;\n\n@Component({\n selector: 'sc-baidu-marker-layer',\n templateUrl: './baidu-marker-layer.component.html',\n styleUrls: ['./baidu-marker-layer.component.less'],\n providers: [ScrollDispatcher], // 防止虚拟滚到导致浮层关闭\n})\n@Widget('标记层', {\n group: 'component',\n image: '',\n icon: '',\n hidden: true,\n})\nexport class BaiduMarkerLayerComponent extends BaseLayer implements OnInit, OnDestroy, OnChanges {\n @Property('', { min: 1, ui: { widget: 'myPicture', spanLabel: 0, spanControl: 24 } })\n iconUrl = 'assets/img/screen/marker.png';\n @Property('图标宽', { type: 'number' })\n iconWidth = 25;\n @Property('图标高', { type: 'number' })\n iconHeight = 38.25;\n @Property('图标偏移x', { type: 'number' })\n iconOffsetX = 0;\n @Property('图标偏移y', { type: 'number' })\n iconOffsetY = -19.125;\n // @Property('分组', {type: 'string'})\n // group = '';\n\n @Property('移至中心')\n toCenter: boolean = false;\n @Property('点聚合')\n enableMarkerClusterer: boolean = false;\n @Property('聚合最小直径', { type: 'number', ui: { visibleIf: { enableMarkerClusterer: [true] } } })\n clusterMinSize = 25;\n @Property('聚合最大直径', { type: 'number', ui: { visibleIf: { enableMarkerClusterer: [true] } } })\n clusterMaxSize = 40;\n @Property('聚合字体', { ui: { widget: 'myFont' } })\n clusterFont: any = {\n color: '#ffffff',\n size: 16,\n };\n @Property('聚合颜色', {\n ui: {\n widget: 'seriesColor',\n visibleIf: { enableMarkerClusterer: [true] },\n },\n })\n clusterGradient: string[];\n @Property('聚合最大级别', { type: 'number', ui: { visibleIf: { enableMarkerClusterer: [true] } } })\n clusterMaxZoom = 4;\n @Property('显示标签', { ui: { visibleIf: { enableMarkerClusterer: [false] } } })\n showLabel: boolean;\n @Property('标签显示缩放等级', { ui: { visibleIf: { showLabel: [true] } } })\n showLabelMinZoom: number;\n // @Property('标签底色', { ui: { widget: 'myColor', visibleIf: { showLabel: [true] } } })\n // labelBackground: string;\n @Property('标签字体', { ui: { widget: 'myFont', visibleIf: { showLabel: [true] } } })\n labelFont: any = {\n family: '',\n color: '#000000',\n weight: 'normal',\n size: 16,\n space: 0,\n lineHeight: 0,\n };\n @Property('标签偏移x', { ui: { widget: 'number', visibleIf: { showLabel: [true] } } })\n labelOffsetX: number;\n @Property('标签偏移y', { ui: { widget: 'number', visibleIf: { showLabel: [true] } } })\n labelOffsetY: number;\n @Property('选中放大')\n enlargeOnSelect: boolean;\n @Property('点击空白取消选中', { type: 'boolean', default: true })\n unselectOnClickBlank = true;\n @Property('标记分组', {\n type: 'array',\n title: '标记分组',\n maxItems: 10,\n items: {\n type: 'object',\n properties: {\n group: {\n type: 'string',\n title: '分组',\n },\n type: {\n title: '类型',\n type: 'string',\n enum: [\n {\n label: '图标',\n value: 'icon',\n },\n {\n label: '圆点',\n value: 'circle',\n },\n {\n label: '正方形',\n value: 'square',\n },\n {\n label: '波纹',\n value: 'wave',\n },\n {\n label: '扩散',\n value: 'bubble',\n },\n ],\n default: 'icon',\n },\n color: {\n type: 'string',\n title: '颜色',\n ui: { widget: 'myColor', visibleIf: { type: ['circle', 'square'] } },\n },\n size: {\n type: 'number',\n title: '尺寸',\n ui: { visibleIf: { type: ['circle', 'square', 'wave', 'bubble'] } },\n },\n imageUrl: {\n type: 'string',\n title: '图片',\n ui: {\n widget: 'myPicture',\n visibleIf: { type: ['icon'] },\n },\n },\n width: {\n type: 'number',\n title: '宽度',\n default: 19,\n ui: { visibleIf: { type: ['icon'] } },\n },\n height: {\n type: 'number',\n title: '高度',\n default: 25,\n ui: { visibleIf: { type: ['icon'] } },\n },\n XOffset: {\n type: 'number',\n title: 'X轴偏移',\n ui: { visibleIf: { type: ['icon'] } },\n },\n YOffset: {\n type: 'number',\n title: 'Y轴偏移',\n ui: { visibleIf: { type: ['icon'] } },\n },\n enableMarkerClusterer: {\n type: 'boolean',\n title: '是否聚合',\n ui: { visibleIf: { type: ['icon'] } },\n },\n },\n required: [],\n },\n ui: { grid: { arraySpan: 24 }, spanControl: 24 } as SFArrayWidgetSchema,\n })\n groups = [];\n @Data({\n properties: {\n id: { type: 'string', title: 'id' },\n address: { type: 'string', title: '地点' },\n information: { type: 'string', title: '信息' },\n group: { type: 'string', title: '标记分组' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n icon: { type: 'string', title: '图标' },\n },\n })\n _data: any[] = [\n {\n id: '1',\n address: '',\n information: '暂无信息',\n group: '',\n lng: '120.7',\n lat: '28',\n },\n ];\n // id: string;\n @DataOutput(['id', 'address', 'lng', 'lat'])\n @Event('选中值改变', {\n params: {\n properties: {\n id: { type: 'string', title: 'id' },\n address: { type: 'string', title: '地点' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n },\n },\n })\n makerClick = new EventEmitter();\n @DataInput('选中id')\n selectedId: string;\n @Event('点击', {\n params: {\n properties: {\n id: { type: 'string', title: 'id' },\n address: { type: 'string', title: '地点' },\n lng: { type: 'number', title: '经度' },\n lat: { type: 'number', title: '纬度' },\n },\n },\n })\n onClick = new EventEmitter();\n\n layers = [];\n inited: boolean;\n // defaultLayer: any;\n layerMap = {};\n clickData: any;\n clickTimeout: any;\n @ViewChild('menu')\n menu: any;\n subMarkers: any[];\n dataMap = {};\n groupData: {};\n lastSelect: any;\n currentSelectedId: string;\n textLayer: any;\n destroy$ = new Subject();\n constructor(\n protected parent: CustomBaiduMapComponent,\n protected zone: NgZone,\n private fileUrlService: FileUrlService,\n private nzContextMenuService: NzContextMenuService,\n ) {\n super(parent, zone);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n if (this.showLabel && this.showLabelMinZoom != null) {\n this.parent.zoomChange.pipe(takeUntil(this.destroy$)).subscribe((zoom) => {\n this.updateTextVisible(zoom);\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.inited) {\n if (changes._data) {\n this.zone.runOutsideAngular(() => {\n this.updateData();\n });\n }\n if (changes.selectedId) {\n if (this.selectedId != this.currentSelectedId) {\n this.select(this.selectedId, { move: true });\n }\n }\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n createLayers(): any[] {\n const layers = [];\n this.layerMap = {};\n const defaultLayer = this.createLayer();\n this.layerMap[''] = defaultLayer;\n layers.push(defaultLayer);\n if (this.groups?.length) {\n this.groups.forEach((group) => {\n if (group.group) {\n const layer = this.createLayer(group);\n this.layerMap[group.group] = layer;\n layers.push(layer);\n }\n });\n }\n if (!this.enableMarkerClusterer && this.showLabel) {\n const textOptions = {\n ...this.getTextOptions(this.labelFont),\n // color: '#fff',\n // fontFamily: 'Microsoft Yahei',\n // fontSize: 14,\n flat: false,\n collides: true,\n offset: [this.labelOffsetX || 0, this.labelOffsetY || 0],\n padding: [2, 2],\n margin: [0, 0],\n };\n this.textLayer = new mapvgl.TextLayer(textOptions);\n if (this.showLabelMinZoom != null) {\n this.parent.init$.then(() => {\n const zoom = this.parent.map.getZoom();\n this.updateTextVisible(zoom);\n });\n }\n layers.push(this.textLayer);\n }\n return layers;\n }\n\n createLayer(group?: any) {\n let layer: any;\n const type = group?.type;\n if (type === 'circle' || type === 'square') {\n const options = {\n shape: type,\n color: group?.color || 'rgba(50, 50, 200, 1)',\n size: group?.size || 10,\n };\n this.addPickEvent(options);\n layer = new mapvgl.PointLayer(options);\n } else if (type === 'bubble' || type === 'wave') {\n const options = {\n type,\n color: group?.color || 'rgba(255, 0, 0, 1)',\n size: group?.size || 10,\n duration: 1,\n trail: 1,\n };\n this.addPickEvent(options);\n layer = new mapvgl.CircleLayer(options);\n } else {\n const iconOptions = this.getIconOptions(group);\n if (this.enableMarkerClusterer || group?.enableMarkerClusterer) {\n const options: any = {\n iconOptions,\n textOptions: this.getTextOptions(this.clusterFont),\n minSize: this.clusterMinSize || 25,\n maxSize: this.clusterMaxSize || 40,\n };\n if (this.clusterGradient?.length) {\n const gradient: any = {};\n gradient[0] = this.clusterGradient[0];\n this.clusterGradient.slice(1).forEach((g, i) => {\n gradient[(i + 1) / this.clusterGradient.length] = g;\n });\n options.gradient = gradient;\n }\n if (this.clusterMaxZoom != null) {\n options.maxZoom = this.clusterMaxZoom;\n }\n this.addPickEvent(options);\n layer = new mapvgl.ClusterLayer(options);\n } else {\n this.addPickEvent(iconOptions);\n layer = new mapvgl.IconLayer(iconOptions);\n }\n }\n return layer;\n }\n\n updateTextVisible(zoom?: number) {\n if (this.textLayer) {\n if (zoom >= this.showLabelMinZoom) {\n this.textLayer.show();\n } else {\n this.textLayer.hide();\n }\n }\n }\n\n updateData() {\n this.dataMap = {};\n if (this.toCenter && this._data.length > 0) {\n let maxLng = -180;\n let minLng = 180;\n let maxLat = -90;\n let minLat = 90;\n this._data.forEach((res) => {\n maxLng = Math.max(maxLng, res.lng);\n minLng = Math.min(minLng, res.lng);\n maxLat = Math.max(maxLat, res.lat);\n minLat = Math.min(minLat, res.lat);\n });\n this.parent.setRectCenterAndZoom(minLng, maxLng, minLat, maxLat);\n }\n const groupData = {};\n this.groupData = groupData;\n const textData = [];\n const groups = Object.keys(this.layerMap);\n groups.forEach((group) => {\n groupData[group] = [];\n });\n // const defaultData = [];\n this._data.forEach((record) => {\n let groupName = record.group;\n if (groupName == null || this.layerMap[groupName] == null) {\n groupName = '';\n }\n let id = record.id_value || record.id;\n if (id == null || id == '') {\n id = getUUID();\n }\n const item: any = {\n geometry: {\n type: 'Point',\n coordinates: [record.lng, record.lat],\n },\n properties: {\n text: record.address,\n id,\n group: groupName,\n raw: record,\n },\n };\n // MapVGL的bug,ClusterLayer的iconOptions无效,只能通过properties设置\n\n const layer = this.layerMap[groupName];\n if (layer != null && layer instanceof mapvgl.ClusterLayer) {\n const options = layer.getOptions();\n if (options.iconOptions) {\n const { height, width, offset, icon } = options.iconOptions;\n item.properties = { height, width, offset, icon, ...item.properties };\n }\n }\n if (record.icon) {\n item.properties.icon = this.fileUrlService.getUrl(record.icon);\n }\n // if (this.selectedId && this.selectedId == id) {\n // this.updateSize(item, 1.5);\n // this.lastSelect = item;\n // }\n groupData[groupName].push(item);\n this.dataMap[item.properties.id] = item;\n if (this.textLayer) {\n textData.push(item);\n }\n });\n if (this.selectedId) {\n this.select(this.selectedId, { move: this.selectedId != this.currentSelectedId, resetLayer: false, force: true });\n }\n groups.forEach((group) => {\n const layer = this.layerMap[group];\n const data = groupData[group];\n layer.setData(data);\n });\n if (this.textLayer) {\n this.textLayer.setData(textData);\n }\n }\n\n getIconOptions(group: any) {\n let icon = this.iconUrl || 'assets/img/screen/marker.png';\n let height = this.iconHeight || 38.25;\n let width = this.iconWidth || 25;\n let offsetX = this.iconOffsetX == null ? 0 : this.iconOffsetX;\n let offsetY = this.iconOffsetY == null ? -height / 2 : this.iconOffsetY;\n if (group && group.imageUrl) {\n icon = this.fileUrlService.getUrl(group.imageUrl);\n width = group.width || width;\n height = group.height || height;\n offsetX = group.XOffset != null ? group.XOffset : 0;\n offsetY = group.YOffset != null ? group.YOffset : -height / 2;\n }\n const iconOptions: any = {\n icon,\n width,\n height,\n offset: [offsetX, offsetY],\n };\n return iconOptions;\n }\n\n getTextOptions(font: any) {\n const textOptions: any = {};\n if (font) {\n if (font.size) textOptions.fontSize = font.size;\n if (font.family) textOptions.fontFamily = font.family;\n if (font.color) textOptions.color = font.color;\n }\n return textOptions;\n }\n\n addPickEvent(options: any) {\n options.enablePicked = true;\n options.onClick = ({ dataItem }) => {\n // 每个图层都会触发一次click事件,如果每个图层都没有点中标记点,传出null\n if (dataItem) {\n this.clickData = dataItem;\n }\n if (this.unselectOnClickBlank !== false && this.clickTimeout == null) {\n this.clickTimeout = setTimeout(() => {\n if (this.clickData == null) {\n this.selectedId = null;\n this.select(null);\n }\n this.clickTimeout = null;\n this.clickData = null;\n this.subMarkers = null;\n });\n }\n if (dataItem) {\n if (dataItem.type === 'Feature') {\n const coordinates = dataItem.geometry.coordinates;\n this.parent.setCenterAndZoom(coordinates[0], coordinates[1], this.parent.map.getZoom() + 2);\n } else {\n const data = dataItem.properties.raw;\n if (data) {\n this.selectedId = dataItem.properties.id;\n this.select(dataItem.properties.id);\n this.zone.run(() => {\n this.onClick.emit({ ...data, id: data.id_value || data.id });\n });\n }\n }\n }\n };\n if (this.parent.showType === 'mouseover') {\n let infoWindow = null;\n let infoWindowData = null;\n options.onMousemove = ({ dataItem }) => {\n const data = dataItem != null ? dataItem.properties.raw : null;\n if (infoWindow != null && infoWindowData != data) {\n infoWindow.close();\n infoWindow = null;\n }\n if (data && data.information && infoWindow == null) {\n infoWindowData = data;\n infoWindow = this.parent.openInfoWindow(data, data.lng, data.lat);\n }\n };\n }\n }\n\n select(id: any, options: { move?: boolean; resetLayer?: boolean; force?: boolean } = {}) {\n if (id != this.currentSelectedId || options.force) {\n let item: any;\n if (id != null && id !== '') {\n item = this.dataMap[id];\n // 如果找不到数据,可能是数据还没加载,等数据加载了再执行\n if (item == null) {\n return;\n }\n }\n this.currentSelectedId = id;\n let lastSelectGroup: string;\n let currentSelectGroup: string;\n let selectedData: any;\n if (this.lastSelect) {\n lastSelectGroup = this.lastSelect.properties.group;\n this.updateSize(this.lastSelect, 1);\n this.lastSelect = null;\n }\n if (item) {\n currentSelectGroup = item.properties.group;\n this.updateSize(item, 1.5);\n this.lastSelect = item;\n selectedData = item.properties.raw;\n if (options.move) {\n const layer = this.layerMap[currentSelectGroup];\n let zoom = this.parent.map.getZoom();\n if (layer instanceof mapvgl.ClusterLayer && this.clusterMaxZoom != null && zoom <= this.clusterMaxZoom) {\n zoom = this.clusterMaxZoom + 2;\n }\n this.parent.setCenterAndZoom(selectedData.lng, selectedData.lat, zoom);\n }\n\n if (selectedData.information && this.parent.showType !== 'mouseover') {\n // 防止其他图层将信息窗口关闭\n setTimeout(() => {\n this.parent.openInfoWindow(selectedData, selectedData.lng, selectedData.lat);\n });\n }\n } else {\n selectedData = {};\n }\n if (options.resetLayer !== false) {\n if (currentSelectGroup != null) {\n this.resetLayerData(currentSelectGroup);\n }\n if (lastSelectGroup != null && lastSelectGroup !== currentSelectGroup) {\n this.resetLayerData(lastSelectGroup);\n }\n }\n // 如果选中的id找不到对应数据,可能是数据还没加载,\n if (id == null || item != null) {\n this.zone.run(() => {\n this.makerClick.emit({ ...selectedData, id: selectedData.id_value || selectedData.id });\n });\n }\n }\n }\n\n resetLayerData(group: string) {\n const layer = this.layerMap[group];\n const data = this.groupData[group];\n if (layer && data) {\n layer.setData(data);\n }\n }\n\n updateSize(item: any, scale: number) {\n if (item && this.enlargeOnSelect) {\n const layer = this.layerMap[item.properties.group];\n let options: any;\n\n if (layer instanceof mapvgl.ClusterLayer) {\n options = layer.getOptions().iconOptions;\n } else {\n options = layer.getOptions();\n }\n const { height, width, offset } = options;\n item.properties.height = height * scale;\n item.properties.width = width * scale;\n if (item.properties.offset) {\n item.properties.offset = [offset[0] * scale, offset[1] * scale];\n }\n }\n }\n}\n","import { Component, forwardRef, Inject, NgZone, OnChanges, OnDestroy, OnInit } from '@angular/core';\r\nimport { SFArrayWidgetSchema } from '@delon/form';\r\nimport { Data, Property, Widget } from 'bbj-widget-base';\r\nimport { BaseLayer } from '../base-layer';\r\nimport { CustomBaiduMapComponent } from '../custom-baidu-map.component';\r\n\r\ndeclare const mapvgl;\r\n\r\n@Component({\r\n selector: 'sc-baidu-polyline-layer',\r\n templateUrl: './baidu-polyline-layer.component.html',\r\n styleUrls: ['./baidu-polyline-layer.component.less'],\r\n})\r\n@Widget('折线层', {\r\n group: 'component',\r\n image: '',\r\n icon: '',\r\n hidden: true,\r\n})\r\nexport class BaiduPolylineLayerComponent extends BaseLayer implements OnInit, OnDestroy, OnChanges {\r\n @Property('线条宽度', {\r\n ui: { widget: 'myRange', min: 1, max: 40, step: 1 },\r\n })\r\n strokeWeight = 4;\r\n @Property('线条颜色', {\r\n type: 'string',\r\n ui: {\r\n widget: 'myColor',\r\n },\r\n })\r\n strokeColor = 'rgba(242,213,173,1)';\r\n @Property('线条类型', {\r\n ui: { widget: 'select' },\r\n enum: [\r\n { label: '实线', value: 'solid' },\r\n { label: '虚线', value: 'dashed' },\r\n ],\r\n })\r\n strokeStyle = 'solid';\r\n @Property('虚线间隔', { type: 'number', ui: { visibleIf: { strokeStyle: ['solid'] } } })\r\n dashInterval = 10;\r\n @Property('动画')\r\n animation: boolean;\r\n @Property('动画线段长度', {\r\n type: 'number',\r\n ui: { widget: 'number', visibleIf: { animation: [true] } },\r\n })\r\n interval = 0.1;\r\n @Property('动画循环时间', { type: 'number', ui: { widget: 'number', visibleIf: { animation: [true] } } })\r\n duration = 2;\r\n @Property('拖尾长度', { type: 'number', ui: { widget: 'number', visibleIf: { animation: [true] } } })\r\n trailLength = 0.5;\r\n @Property('图层', {\r\n type: 'array',\r\n maxItems: 10,\r\n items: {\r\n type: 'object',\r\n properties: {\r\n layer: {\r\n type: 'string',\r\n title: '图层',\r\n },\r\n color: {\r\n type: 'string',\r\n title: '颜色',\r\n ui: { widget: 'myColor' },\r\n },\r\n },\r\n required: [],\r\n },\r\n ui: { grid: { arraySpan: 24 }, spanControl: 24 } as SFArrayWidgetSchema,\r\n })\r\n layerOptions = [];\r\n @Data({\r\n properties: {\r\n layer: { type: 'string', title: '图层' },\r\n lng: { type: 'number', title: '经度' },\r\n lat: { type: 'number', title: '纬度' },\r\n group: { type: 'string', title: '线编号' },\r\n },\r\n })\r\n _data: any[] = [\r\n {\r\n group: 'x',\r\n lng: '120.7',\r\n lat: '28',\r\n },\r\n {\r\n group: 'x',\r\n lng: '120.71',\r\n lat: '28.01',\r\n },\r\n {\r\n group: 'x',\r\n lng: '120.79',\r\n lat: '28.1',\r\n },\r\n {\r\n group: 'y',\r\n lng: '120.72',\r\n lat: '28.02',\r\n },\r\n {\r\n group: 'y',\r\n lng: '120.73',\r\n lat: '28.03',\r\n },\r\n {\r\n group: 'y',\r\n lng: '120.81',\r\n lat: '28.12',\r\n },\r\n ];\r\n id: string;\r\n // layer: any;\r\n layerMap: any = {};\r\n\r\n constructor(protected parent: CustomBaiduMapComponent, protected zone: NgZone) {\r\n super(parent, zone);\r\n }\r\n\r\n // ngOnChanges() {\r\n // this.parent.childInit({\r\n // id: this.id,\r\n // strokeWeight: this.strokeWeight,\r\n // strokeColor: this.strokeColor,\r\n // strokeStyle: this.strokeStyle,\r\n // type: 'polyline',\r\n // item: this._data,\r\n // });\r\n // }\r\n\r\n // ngOnInit(): void {}\r\n\r\n // ngOnDestroy(): void {\r\n // this.parent.deleteChild(this.id);\r\n // }\r\n\r\n updateData(): void {\r\n const dataMap = {};\r\n\r\n const layerLineMap = {};\r\n this._data.forEach((record) => {\r\n let layer = record.layer;\r\n if (!this.layerMap[layer]) {\r\n layer = '';\r\n }\r\n let data = dataMap[layer];\r\n let lineMap = layerLineMap[layer];\r\n if (!data) {\r\n data = [];\r\n lineMap = {};\r\n dataMap[layer] = data;\r\n layerLineMap[layer] = lineMap;\r\n }\r\n let group = record.group;\r\n if (group == null) {\r\n group = '';\r\n }\r\n let line = lineMap[group];\r\n if (line == null) {\r\n line = {\r\n geometry: {\r\n type: 'LineString',\r\n coordinates: [],\r\n },\r\n };\r\n lineMap[group] = line;\r\n data.push(line);\r\n }\r\n\r\n line.geometry.coordinates.push([record.lng, record.lat]);\r\n });\r\n Object.keys(this.layerMap).forEach((key) => {\r\n const layer = this.layerMap[key];\r\n const data = dataMap[key] || [];\r\n layer.setData(data);\r\n });\r\n }\r\n\r\n createLayers(): any[] {\r\n const layers = [];\r\n this.layerMap = {};\r\n const defaultLayer = this.createLayer();\r\n this.layerMap[''] = defaultLayer;\r\n layers.push(defaultLayer);\r\n if (this.layerOptions?.length) {\r\n this.layerOptions.forEach((options) => {\r\n if (options.layer) {\r\n const layer = this.createLayer(options);\r\n this.layerMap[options.layer] = layer;\r\n layers.push(layer);\r\n }\r\n });\r\n }\r\n return layers;\r\n // const options: any = {\r\n // color: this.strokeColor,\r\n // width: this.strokeWeight,\r\n // lineCap: 'round',\r\n // animation: this.animation,\r\n // interval: this.interval,\r\n // duration: this.duration,\r\n // trailLength: this.trailLength,\r\n // style: 'arrow',\r\n // styleOptions: {\r\n // color: '#fff',\r\n // width: 10,\r\n // },\r\n // // blend: 'lighter'\r\n // };\r\n // if (this.strokeStyle === 'dashed') {\r\n // const dashInterval = this.dashInterval || 10;\r\n // options.dashArray = [dashInterval, dashInterval];\r\n // }\r\n // this.layer = new mapvgl.LineLayer(options);\r\n // return [this.layer];\r\n }\r\n\r\n createLayer(layerOptions?: any) {\r\n const options: any = {\r\n color: this.strokeColor,\r\n width: this.strokeWeight,\r\n lineCap: 'round',\r\n animation: this.animation,\r\n interval: this.interval,\r\n duration: this.duration,\r\n trailLength: this.trailLength,\r\n // style: 'arrow',\r\n // styleOptions: {\r\n // color: '#fff',\r\n // width: 10,\r\n // },\r\n blend: 'lighter'\r\n };\r\n if (layerOptions) {\r\n if (layerOptions.color) {\r\n options.color = layerOptions.color;\r\n }\r\n }\r\n if (this.strokeStyle === 'dashed') {\r\n const dashInterval = this.dashInterval || 10;\r\n options.dashArray = [dashInterval, dashInterval];\r\n }\r\n const layer = new mapvgl.LineLayer(options);\r\n return layer;\r\n }\r\n}\r\n","import { Component, NgZone, OnInit } from '@angular/core';\nimport { Data, Property, Widget } from 'bbj-widget-base';\nimport { BaseLayer } from '../base-layer';\nimport { CustomBaiduMapComponent } from '../custom-baidu-map.component';\n\ndeclare const mapvgl;\nconst EARTH_RADIUS = 6371.393;\n\n@Component({\n selector: 'sc-typhoon-area-layer',\n templateUrl: './typhoon-area-layer.component.html',\n styleUrls: ['./typhoon-area-layer.component.less'],\n})\n@Widget('风圈', {\n group: 'component',\n hidden: true,\n})\nexport class TyphoonAreaLayerComponent extends BaseLayer implements OnInit {\n @Property('描边颜色', { ui: { widget: 'myColor' } })\n lineColor = 'rgba(238,160,29,0.8)';\n @Property('描边宽度', { type: 'number' })\n lineWidth = 2;\n @Property('填充颜色', { ui: { widget: 'myColor' } })\n fillColor = 'rgba(238,160,29,0.3)';\n @Data({\n properties: {\n lng: { type: 'number', title: '中心经度' },\n lat: { type: 'number', title: '中心纬度' },\n nw: { type: 'number', title: '西北半径' },\n ne: { type: 'number', title: '东北半径' },\n sw: { type: 'number', title: '西南半径' },\n se: { type: 'number', title: '东南半径' },\n },\n })\n data: any[] = [\n {\n lng: 144.7,\n lat: 38.9,\n nw: 50,\n ne: 100,\n sw: 150,\n se: 200,\n },\n ];\n layer: any;\n constructor(protected parent: CustomBaiduMapComponent, protected zone: NgZone) {\n super(parent, zone);\n }\n\n createLayers(): any[] {\n this.layer = new mapvgl.PolygonLayer({\n lineColor: this.lineColor,\n lineWidth: this.lineWidth,\n fillColor: this.fillColor,\n renderOrder: -1,\n });\n return [this.layer];\n }\n\n updateData(): void {\n const data = [];\n this.data.forEach((r) => {\n var kk = this.getTF([+r.lng, +r.lat], +r.ne, +r.se, +r.sw, +r.nw);\n data.push({\n geometry: {\n type: 'Polygon',\n coordinates: [kk],\n },\n });\n });\n this.layer.setData(data);\n }\n\n getTF(lat, ne, se, sw, nw) {\n // 求出方位半径方向上弧形经纬度\n const getPoints = (center, cradius, startAngle) => {\n // l=EARTH_RADIUS*dy/180*Math.PI\n const radius = (cradius * 180) / EARTH_RADIUS / Math.PI;\n // let radius = cradius / 90;\n let pointNum = 90;\n let endAngle = startAngle + Math.PI / 2;\n let points = [];\n for (var i = 0; i <= pointNum; i++) {\n const angle = startAngle + ((endAngle - startAngle) * i) / pointNum;\n const x = center[0] + (radius * Math.cos(angle)) / Math.abs(Math.cos((center[1] * Math.PI) / 180));\n const y = center[1] + radius * Math.sin(angle);\n points.push([x, y]);\n }\n return points;\n };\n\n let r7Ne = getPoints(lat, ne, 0);\n let r7Nw = getPoints(lat, nw, Math.PI / 2);\n let r7Sw = getPoints(lat, sw, Math.PI);\n let r7Se = getPoints(lat, se, (Math.PI * 3) / 2);\n\n return [...r7Ne, ...r7Nw, ...r7Sw, ...r7Se];\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CustomBaiduMapComponent } from './custom-baidu-map.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { WindLayerComponent } from './wind-layer/wind-layer.component';\nimport { BaiduMarkerLayerComponent } from './baidu-marker-layer/baidu-marker-layer.component';\nimport { BaiduPolylineLayerComponent } from './baidu-polyline-layer/baidu-polyline-layer.component';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { FormsModule } from '@angular/forms';\nimport { TyphoonAreaLayerComponent } from './typhoon-area-layer/typhoon-area-layer.component';\n\n@NgModule({\n declarations: [\n CustomBaiduMapComponent,\n BaiduMarkerLayerComponent,\n BaiduPolylineLayerComponent,\n WindLayerComponent,\n TyphoonAreaLayerComponent,\n ],\n imports: [\n CommonModule,\n WidgetBaseModule,\n NzDropDownModule,\n NzNoAnimationModule,\n ScrollingModule,\n NzRadioModule,\n FormsModule,\n ],\n})\nexport class CustomBaiduMapModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(CustomBaiduMapComponent, { scaleContent: false });\n widgetService.register(BaiduMarkerLayerComponent);\n widgetService.register(BaiduPolylineLayerComponent);\n widgetService.register(WindLayerComponent);\n widgetService.register(TyphoonAreaLayerComponent);\n }\n}\n","export const icons = [\r\n 'icondingwei1',\r\n 'iconxialakuang',\r\n 'icontianjiazu',\r\n 'iconguanlianshuxing',\r\n 'iconbianzu401',\r\n 'iconanzhuang',\r\n 'iconbaojing',\r\n 'iconbuguifan',\r\n 'iconbianzu621',\r\n 'iconbumen',\r\n 'iconbianzu6',\r\n 'iconbianzu3311',\r\n 'icondaohang',\r\n 'iconbianzu111',\r\n 'iconditu2',\r\n 'iconfuzeren',\r\n 'iconfuzhi1',\r\n 'icongengduo1',\r\n 'iconbuguifanjiashi',\r\n 'iconfadianji',\r\n 'iconbianzu33xiawu42347',\r\n 'iconche',\r\n 'iconguanli',\r\n 'icondukaqi',\r\n 'iconhulian1',\r\n 'iconhoutai',\r\n 'icondianhua2',\r\n 'iconliangqizuozhanjianting',\r\n 'iconguanggao',\r\n 'iconkongqijinghua',\r\n 'iconjuleledaohang',\r\n 'iconluxiang1',\r\n 'iconchouti1',\r\n 'icongerenxinxilan',\r\n 'iconqiqiu',\r\n 'iconpihuating',\r\n 'iconkulian',\r\n 'iconhulianxiawu35716',\r\n 'iconguiji',\r\n 'iconrenyuan1',\r\n 'iconnongye',\r\n 'iconremen',\r\n 'iconshajunshebei',\r\n 'iconnengyuan1',\r\n 'iconshezhixiawu20722',\r\n 'iconshujuyuan',\r\n 'iconxiangpiting',\r\n 'iconlajitong1',\r\n 'iconjiaocheng',\r\n 'icontuichu2',\r\n 'iconweifanggaizao',\r\n 'iconxiaodudu',\r\n 'iconxiaodu1',\r\n 'iconriqi',\r\n 'iconxiaofang',\r\n 'iconwurenji',\r\n 'icontanzhaodengshijian',\r\n 'iconquanxian',\r\n 'iconxiaodu2',\r\n 'iconbumenxiawu14836',\r\n 'iconqiche',\r\n 'iconwulianwang',\r\n 'iconxiaoqu',\r\n 'iconxingzhuangjiehe1',\r\n 'iconxunjian1',\r\n 'iconyangan',\r\n 'iconxinxixiugai',\r\n 'iconyangan1',\r\n 'iconxinshuai',\r\n 'iconzhihang1',\r\n 'iconxiaolian',\r\n 'iconxieya',\r\n 'iconLEDTrackLight-02',\r\n 'iconzhaomingdeng',\r\n 'iconzhangpeng',\r\n 'iconyouhuiquanquanmian',\r\n 'iconicon_gouwu1',\r\n 'iconLedCleanEnergy',\r\n 'iconicon_diannao1',\r\n 'iconled2',\r\n 'iconzhihang2',\r\n 'iconzhineng',\r\n 'iconzhihang',\r\n 'iconjindu',\r\n 'iconhoutui',\r\n 'iconguanbi1',\r\n 'iconhulian',\r\n 'iconkefu',\r\n 'iconkuaidi',\r\n 'iconlianjie',\r\n 'iconkefurexian',\r\n 'iconliuchengjiedian',\r\n 'iconmengjiangnan',\r\n 'iconmoxing',\r\n 'iconqunyou',\r\n 'iconrenyuanguanli',\r\n 'iconqingchuhuancun3x1',\r\n 'iconrenyuanjiegou',\r\n 'iconrongyu',\r\n 'iconshangpin',\r\n 'iconsaomiaohongbao',\r\n 'iconsaoyisao',\r\n 'iconshebei',\r\n 'iconshenghuo',\r\n 'iconshexiang',\r\n 'icontianjia',\r\n 'icontuichubeifen2',\r\n 'icontishi',\r\n 'iconshexiangtou',\r\n 'iconshijiandefuben',\r\n 'iconsoucha',\r\n 'iconxiuxi1',\r\n 'iconxuanze',\r\n 'iconyoutui',\r\n 'iconyonghu',\r\n 'iconzhuanyi',\r\n 'iconicon_diannao',\r\n 'iconwenduji',\r\n 'iconicon_dengdaicaiji',\r\n 'iconzhihuinongye',\r\n 'iconsousuo1',\r\n 'iconicon_neirongjilu',\r\n 'iconicon_ppt',\r\n 'iconshuidi',\r\n 'iconicon_word',\r\n 'iconicon_txt',\r\n 'iconwenjiansoucha',\r\n 'iconwodedianzan1',\r\n 'iconyanganjiankong',\r\n 'iconzhinenglajitong',\r\n 'iconwuliu',\r\n 'iconGroup2',\r\n 'iconicon_gouwu',\r\n 'iconxunjian',\r\n 'iconyouhuiquan',\r\n 'iconyinhangka',\r\n 'iconwodepinglun1',\r\n 'iconGroup2beifen2',\r\n 'iconicon_zhuye',\r\n 'iconwangluo',\r\n 'iconbanbenhao1',\r\n 'iconbianzu11',\r\n 'iconbianzu22',\r\n 'iconbianzu12',\r\n 'iconbianzu13',\r\n 'iconchukou',\r\n 'iconbianzu361',\r\n 'icondaima',\r\n 'iconbianzu39',\r\n 'icondajian',\r\n 'icondiannao',\r\n 'icondenglu',\r\n 'iconbianzu381',\r\n 'iconfangan',\r\n 'icongengxin',\r\n 'icongenghuantouxiang1',\r\n 'icongouwuche',\r\n 'iconguangbo',\r\n 'iconcaijian',\r\n 'iconbaocun',\r\n 'iconbianji',\r\n 'iconbeijing',\r\n 'icondian',\r\n 'iconbukejian',\r\n 'iconfuzhi',\r\n 'iconkejian',\r\n 'iconfangwen',\r\n 'iconguanbi',\r\n 'iconjia',\r\n 'iconlajitong2',\r\n 'iconshangyibu',\r\n 'iconren',\r\n 'iconshangchuan',\r\n 'iconsshanchu',\r\n 'iconshijian',\r\n 'iconsousuo',\r\n 'iconsuo',\r\n 'iconsuoding',\r\n 'iconmokuai',\r\n 'icontexiao',\r\n 'icontubiao',\r\n 'iconwenzi',\r\n 'iconwenjianjia',\r\n 'icontianjiaxuanxiang',\r\n 'iconxiala',\r\n 'iconkaisuo',\r\n 'iconxiayibu',\r\n 'icontupian',\r\n 'iconsxingzhuang',\r\n 'iconxiuxi',\r\n 'iconzhinanzhen',\r\n 'iconyulan',\r\n 'iconstuichu',\r\n 'iconyinle',\r\n 'iconyun',\r\n 'iconzhinanzhen',\r\n];\r\n","import { Component, EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { DataOutput, Property, Widget } from 'bbj-widget-base';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { Observable, Observer } from 'rxjs';\nimport { NzUploadChangeParam, NzUploadFile } from 'ng-zorro-antd/upload';\n\n@Component({\n selector: 'sc-upload',\n templateUrl: './upload.component.html',\n styleUrls: ['./upload.component.less'],\n})\n@Widget('文件上传', {\n group: 'component',\n image: 'assets/img/screen/file-upload.png',\n icon: 'icontubiao',\n})\nexport class UploadComponent implements OnInit, OnChanges {\n @Property('上传样式', {\n type: 'string',\n ui: {\n widget: 'select',\n },\n enum: [\n { label: '经典', value: 'classics' },\n { label: '头像', value: 'portrait' },\n { label: '拖拽', value: 'drag' },\n ],\n })\n style = 'classics';\n listType = '';\n class: any = {};\n showUploadList = true;\n loading = false;\n avatarUrl?: string;\n type = '';\n @DataOutput('值')\n valueChange = new EventEmitter<any>();\n constructor(private msg: NzMessageService) {}\n handleChange(info: NzUploadChangeParam) {\n const status = info.file.status;\n if (status === 'done') {\n this.msg.success(`${info.file.name} 上传成功`);\n this.valueChange.emit(info.file.response);\n if (this.style === 'portrait') {\n this.getBase64(info.file.originFileObj, (img: string) => {\n this.loading = false;\n this.avatarUrl = img;\n });\n }\n } else if (status === 'error') {\n this.msg.error(`${info.file.name} 上传失败`);\n this.loading = false;\n } else if (status === 'uploading') {\n this.loading = true;\n }\n }\n private getBase64(img: File, callback: (img: string) => void): void {\n const reader = new FileReader();\n reader.addEventListener('load', () => callback(reader.result.toString()));\n reader.readAsDataURL(img);\n }\n ngOnInit(): void {}\n ngOnChanges(changes: SimpleChanges): void {\n switch (this.style) {\n case 'portrait':\n this.listType = 'picture-card';\n this.showUploadList = false;\n this.class.width = '128px';\n this.class.height = '128px';\n this.type = '';\n break;\n case 'drag':\n this.type = 'drag';\n this.listType = '';\n this.showUploadList = true;\n this.class.width = '';\n this.class.height = '';\n break;\n default:\n this.type = '';\n this.listType = 'text';\n this.showUploadList = true;\n this.class.width = '';\n this.class.height = '';\n break;\n }\n }\n beforeUpload = (file: NzUploadFile, _fileList: NzUploadFile[]) => {\n if (this.style !== 'portrait') {\n return null;\n }\n return new Observable((observer: Observer<boolean>) => {\n const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';\n if (!isJpgOrPng) {\n this.msg.error('只能上传图片');\n observer.complete();\n return;\n }\n const isLt2M = file.size / 1024 / 1024 < 2;\n if (!isLt2M) {\n this.msg.error('图片要小于2M');\n observer.complete();\n return;\n }\n observer.next(isJpgOrPng && isLt2M);\n observer.complete();\n });\n };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UploadComponent } from './upload.component';\nimport {WidgetBaseModule, WidgetService} from 'bbj-widget-base';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzUploadModule } from 'ng-zorro-antd/upload';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\n\n\n\n@NgModule({\n declarations: [UploadComponent],\n imports: [CommonModule, WidgetBaseModule,NzIconModule,NzUploadModule,NzButtonModule],\n})\nexport class UploadModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(UploadComponent);\n }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { CustomExport, Data, DataSchema, Property, Widget } from 'bbj-widget-base';\nimport { SFArrayWidgetSchema, SFSchema, SFStringWidgetSchema, SFUISchema } from '@delon/form';\n\n@Component({\n selector: 'sc-cross-table',\n templateUrl: './cross-table.component.html',\n styleUrls: ['./cross-table.component.less'],\n})\n@Widget('交叉表格', { group: 'table', icon: 'icontubiao', image: '/assets/img/screen/cross-table.png' })\nexport class CrossTableComponent implements OnInit, OnChanges, CustomExport {\n @Property('条数/页', { ui: { widget: 'myRange', min: 1, max: 100, step: 1 } })\n pageSize = 10;\n @Property('表头背景', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n theadBackground = '#fafafa';\n @Property('表头字体', { ui: { widget: 'myFont' } })\n headFont: any = { family: '', color: '#222222', weight: 'normal', size: 12, space: 0, lineHeight: 2 };\n @Property('内容对齐', {\n type: 'string',\n ui: {\n widget: 'select',\n },\n enum: [\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n { label: '居中', value: 'center' },\n ],\n })\n contentAlign = 'center';\n @Property('表格背景', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n tbodyBackground = '#fafafa';\n @Property('显示边框', {\n type: 'boolean',\n ui: {\n checkedChildren: '开',\n unCheckedChildren: '关',\n },\n })\n showBorder = false;\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', color: '#222222', weight: 'normal', size: 12, space: 0, lineHeight: 2 };\n // @Property('字段交叉', {\n // type: 'array',\n // maxItems: 1,\n // items: {\n // type: 'object',\n // properties: {\n // key: {\n // type: 'string',\n // title: '绑定字段',\n // },\n // value: {\n // type: 'string',\n // title: '绑定值',\n // }\n // },\n // required: ['key', 'value'],\n // },\n // ui: {grid: {arraySpan: 24}, spanControl: 24} as SFArrayWidgetSchema,\n // })\n // cross = [{key: 'x', value: 'y', mergeField: 's'}];\n @Property('交叉字段', {\n cross: {\n type: 'string',\n ui: {} as SFStringWidgetSchema,\n },\n required: [''],\n })\n cross = 'x';\n @Property('显示分页', {\n type: 'boolean',\n ui: {\n checkedChildren: '开',\n unCheckedChildren: '关',\n },\n })\n needPage = false;\n @Property('绑定值', {\n crossVal: {\n type: 'string',\n ui: {} as SFStringWidgetSchema,\n },\n required: [''],\n })\n crossVal = 'y';\n @Data({})\n _data: any[] = [\n { x: '一月', y: 10, s: '收入' },\n { x: '二月', y: 20, s: '收入' },\n { x: '三月', y: 25, s: '收入' },\n { x: '四月', y: 35, s: '收入' },\n { x: '五月', y: 27, s: '收入' },\n { x: '六月', y: 28, s: '收入' },\n { x: '一月', y: 18, s: '支出' },\n { x: '二月', y: 28, s: '支出' },\n { x: '三月', y: 32, s: '支出' },\n { x: '四月', y: 48, s: '支出' },\n { x: '五月', y: 20, s: '支出' },\n { x: '六月', y: 17, s: '支出' },\n ];\n @DataSchema('_data')\n schema: SFSchema;\n widthConfig = [];\n rows: any = [];\n heads: any = [];\n ths: any[] = [];\n headStyle: any;\n bodyStyle: any;\n\n groups: any = {};\n data: any[][] = [];\n\n constructor() {}\n\n ngOnInit(): void {\n this.headStyle = {\n family: this.headFont.family,\n color: this.headFont.color,\n weight: this.headFont.weight,\n fontSize: this.headFont.size + 'px',\n space: this.headFont.space,\n lineHeight: this.headFont.lineHeight,\n background: this.theadBackground,\n };\n this.bodyStyle = {\n family: this.font.family,\n color: this.font.color,\n weight: this.font.weight,\n fontSize: this.font.size + 'px',\n space: this.font.space,\n lineHeight: this.font.lineHeight,\n background: this.tbodyBackground,\n };\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data || changes.schema) {\n this.data = [];\n this.groups = {};\n this.heads = [];\n this.ths = [];\n this.widthConfig = [];\n if (this.schema?.properties) {\n Object.keys(this.schema.properties).forEach((key) => {\n const property = this.schema.properties[key];\n if (this.cross !== key && this.crossVal !== key && !(property.ui as SFUISchema)?.hidden) {\n this.heads.push(key);\n this.ths.push(property.title);\n this.widthConfig.push(100 + 'px');\n }\n });\n } else {\n /**\n * 取数据源的key 不包含交叉字段\n */\n if (this._data[0] == null) {\n return;\n }\n Object.keys(this._data[0]).forEach((key) => {\n if (this.cross !== key && this.crossVal !== key && !this.heads.includes(key)) {\n this.heads.push(key);\n this.ths.push(key);\n this.widthConfig.push(100 + 'px');\n }\n });\n }\n\n /**\n * 循环数据源 根据字段名 取出表格前半段值 并进行分组 groups 为 map\n */\n this._data.forEach((data) => {\n const group: any = [];\n this.heads.forEach((head) => {\n group.push(data[head]);\n });\n if (this.groups[group] == null) {\n this.groups[group] = [];\n }\n if (!this.ths.includes(data[this.cross])) {\n this.ths.push(data[this.cross]);\n this.widthConfig.push(100 + 'px');\n }\n this.groups[group].push({ title: data[this.cross], value: data[this.crossVal] });\n });\n this.assemble();\n }\n }\n\n assemble() {\n if (this.groups === null || this.groups === 'undefined') {\n return;\n }\n this.rows = [];\n Object.keys(this.groups).forEach((group) => {\n let row = [];\n const arr = group.split(',');\n for (let i = 0; i < arr.length; i++) {\n row.push({ title: this.ths[i], value: arr[i] });\n }\n let totalval = 0;\n this.groups[group].forEach((t: any) => {\n row.push(t);\n totalval = totalval + t.value;\n });\n if (row.length > 0 && row.length < this.ths.length) {\n const nrow = [];\n for (const head of this.ths) {\n let val = '';\n row.forEach((td) => {\n if (td.title === head) {\n val = td.value;\n }\n });\n nrow.push({ title: head, value: val });\n }\n row = nrow;\n }\n row.push({ title: '合计', value: Number(totalval).toFixed(2) });\n this.rows.push(row);\n });\n this.data = this.rows;\n\n this.ths.push('合计');\n this.widthConfig.push(100 + 'px');\n }\n exportWord() {\n let html = `<table>\n <thead>\n <tr>\n ${this.ths.map((head) => `<th>${head}</th>`).join('')}\n </tr>\n </thead>\n <tbody>\n ${this.data\n .map(\n (row) =>\n `<tr>\n ${row.map((td) => `<td>${td.value}</td>`).join('')}\n </tr>`,\n )\n .join('')}\n </tbody>\n</table><br/>`;\n console.log(html);\n return html;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CrossTableComponent } from './cross-table.component';\nimport {WidgetBaseModule, WidgetService} from 'bbj-widget-base';\nimport {NzTableModule} from 'ng-zorro-antd/table';\n\n\n\n\n@NgModule({\n declarations: [CrossTableComponent],\n imports: [CommonModule, WidgetBaseModule, NzTableModule],\n})\nexport class CrossTableModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(CrossTableComponent);\n }\n}\n","import { Component, OnInit, ElementRef, OnChanges, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Widget, Property, Data, DataSchema, DataOutput, CustomExport, Sheet, Event } from 'bbj-widget-base';\nimport { SFArrayWidgetSchema, SFSchema } from '@delon/form';\nimport { isNum } from '@delon/util';\n\n@Component({\n selector: 'sc-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.less'],\n})\n@Widget('表格', { group: 'table', icon: 'icontubiao', image: '/assets/img/screen/custom-table.png' })\nexport class TableComponent implements OnInit, OnChanges, CustomExport {\n @Property('条数/页', { ui: { widget: 'myRange', min: 1, max: 100, step: 1 } })\n pageSize = 10;\n @Property('表头背景', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n theadBackground = '#fafafa';\n @Property('表头字体', { ui: { widget: 'myFont' } })\n headFont: any = { family: '', color: '#222222', weight: 'normal', size: 12, space: 0, lineHeight: 2 };\n @Property('内容对齐', {\n type: 'string',\n ui: {\n widget: 'select',\n },\n enum: [\n { label: '左对齐', value: 'left' },\n { label: '右对齐', value: 'right' },\n { label: '居中', value: 'center' },\n ],\n })\n contentAlign = 'center';\n @Property('表格背景', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n tbodyBackground = '#FFFFFF';\n\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = { family: '', color: '#222222', weight: 'normal', size: 12, space: 0, lineHeight: 2 };\n @Property('是否自定义', {\n type: 'boolean',\n ui: {\n checkedChildren: '开',\n unCheckedChildren: '关',\n },\n })\n isCustom = false;\n @Property('显示边框', {\n type: 'boolean',\n ui: {\n checkedChildren: '开',\n unCheckedChildren: '关',\n },\n })\n showBorder = false;\n @Property('显示分页', {\n type: 'boolean',\n ui: {\n checkedChildren: '开',\n unCheckedChildren: '关',\n },\n })\n needPage = false;\n @Property('统计个数', {\n type: 'boolean',\n ui: {\n checkedChildren: '开',\n unCheckedChildren: '关',\n },\n })\n isCount = false;\n @Property('合计', { type: 'string', ui: { optionalHelp: '填写列名,逗号分隔' } })\n sumColumns: string;\n @Property('颜色分层', {\n type: 'array',\n maxItems: 99,\n items: {\n type: 'object',\n properties: {\n gte: {\n type: 'number',\n title: '大于',\n },\n lte: {\n type: 'number',\n title: '小于',\n minimum: 1,\n },\n color: {\n type: 'string',\n title: '颜色',\n ui: {\n widget: 'myColor',\n },\n },\n },\n required: ['gte', 'lte'],\n },\n ui: { grid: { arraySpan: 24 }, spanControl: 24 } as SFArrayWidgetSchema,\n })\n level = [];\n // @Property('字段交叉', {\n // type: 'array',\n // maxItems: 1,\n // items: {\n // type: 'object',\n // properties: {\n // key: {\n // type: 'string',\n // title: '绑定字段',\n // },\n // value: {\n // type: 'string',\n // title: '绑定值',\n // },\n // mergeField: {\n // type: 'string',\n // title: '合并字段',\n // }\n // },\n // required: [],\n // },\n // ui: {grid: {arraySpan: 24}, spanControl: 24} as SFArrayWidgetSchema,\n // })\n // cross = [];\n @Property('自定义列', {\n type: 'array',\n maxItems: 99,\n items: {\n type: 'object',\n properties: {\n group: {\n type: 'string',\n title: '分组名',\n },\n title: {\n type: 'string',\n title: '列名',\n },\n field: {\n type: 'string',\n title: 'bind',\n },\n width: {\n type: 'number',\n title: '宽度',\n },\n ismerge: {\n type: 'boolean',\n title: '是否合并',\n },\n needlevel: {\n type: 'boolean',\n title: '颜色分层',\n },\n showFilter: {\n type: 'boolean',\n title: '显示筛选',\n },\n },\n required: ['title', 'field'],\n },\n ui: { visibleIf: { isCustom: [true] }, grid: { arraySpan: 24 }, spanLabel: 24, spanControl: 24 },\n })\n customCol: any = [];\n // hasGroup = false;\n isCross = false;\n image: string;\n @Data({})\n _data: any[] = [\n { x: '一月', y: '10%', s: '收入' },\n { x: '二月', y: 20, s: '收入' },\n { x: '三月', y: 25, s: '收入' },\n { x: '四月', y: 35, s: '收入' },\n { x: '五月', y: 27, s: '收入' },\n { x: '六月', y: 28, s: '收入' },\n { x: '一月', y: 18, s: '支出' },\n { x: '二月', y: 28, s: '支出' },\n { x: '三月', y: 32, s: '支出' },\n { x: '四月', y: 48, s: '支出' },\n { x: '五月', y: 20, s: '支出' },\n { x: '六月', y: 17, s: '支出' },\n ];\n @DataSchema('_data')\n schema: SFSchema;\n\n @DataOutput('单元格内容')\n tdChange = new EventEmitter<any>();\n @DataOutput('行数据')\n trChange = new EventEmitter<any>();\n @DataOutput('列名')\n rowChange = new EventEmitter<any>();\n @Event('点击单元格', {\n params: {\n properties: {\n index: { type: 'string', title: '列名' },\n value: { type: 'string', title: '值' },\n data: { type: 'object', title: '行数据' },\n },\n },\n })\n tdClick = new EventEmitter<any>();\n // y: string;\n headStyle: any = {};\n bodyStyle: any = {};\n columns: any;\n groups: any;\n // rowSize = 1;\n widthConfig = [];\n rows = [];\n totalCount = [];\n needCount = false;\n\n dataSize: number;\n titleSize: number;\n searchValue = {};\n headers = [];\n filterValues: { [key: string]: any[] } = {};\n sumData = {};\n constructor(private ele: ElementRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.schema || changes.customCol) {\n this.updateHeader();\n this.updateData();\n } else if (changes._data) {\n if (!this.schema) {\n this.updateHeader();\n }\n this.updateData();\n }\n }\n\n ngOnInit() {\n // if (this.ele) {\n // const height = this.ele.nativeElement.offsetHeight - 110;\n // this.y = height > 0 ? height + 'px' : '0px';\n // }\n // console.log(this.groupBy(this._data,'x'));\n // console.log(this.countGroupRow);\n this.headStyle = {\n family: this.headFont.family,\n color: this.headFont.color,\n weight: this.headFont.weight,\n fontSize: this.headFont.size + 'px',\n space: this.headFont.space,\n lineHeight: this.headFont.lineHeight,\n background: this.theadBackground,\n };\n this.bodyStyle = {\n family: this.font.family,\n color: this.font.color,\n weight: this.font.weight,\n fontSize: this.font.size + 'px',\n space: this.font.space,\n lineHeight: this.font.lineHeight,\n };\n }\n\n updateHeader() {\n this.columns = [];\n this.widthConfig = [];\n if (this.isCustom && this.customCol[0]) {\n const hasGroup = this.customCol.some((data) => data.group != null && data.group !== '');\n this.groups = [];\n const subHeader = [];\n const groupMap = {};\n this.customCol.forEach((data) => {\n const grouped = !!data.group;\n const groupName = data.group || data.title;\n this.widthConfig.push((data.width || 100) + 'px');\n const column: any = {\n title: data.title,\n index: data.field,\n ismerge: data.ismerge,\n iscount: data.iscount,\n needlevel: data.needlevel,\n showFilter: data.showFilter,\n };\n\n let group = groupMap[groupName];\n if (group == null) {\n group = { title: groupName, row: 1, col: 0, columns: [] };\n groupMap[groupName] = group;\n this.groups.push(group);\n }\n group.columns.push(column);\n group.col++;\n if (grouped) {\n subHeader.push(column);\n } else {\n group.index = data.field;\n if (hasGroup) {\n group.row = 2;\n }\n }\n });\n this.headers = [this.groups, subHeader];\n } else {\n if (this.schema) {\n Object.keys(this.schema.properties).forEach((key) => {\n const property = this.schema.properties[key];\n if (property) {\n const column = { title: property.title || key, index: key, schema: property };\n this.columns.push(column);\n }\n });\n } else if (this._data && this._data[0]) {\n const data = this._data[0];\n Object.keys(data).forEach((key) => {\n const column = { title: key, index: key };\n this.widthConfig.push(100 + 'px');\n this.columns.push(column);\n });\n }\n this.headers = [this.columns];\n console.log('header', this.headers);\n }\n }\n\n updateData() {\n this.dataSize = this._data.length;\n if (this._data[0]) {\n this.titleSize = Object.keys(this._data[0]).length;\n }\n if (this.isCustom && this.customCol[0]) {\n this.updateFilterOptions();\n this.groupBy(this._data);\n this.count();\n }\n if (this.sumColumns) {\n this.sumData = {};\n this.sumColumns.split(',').forEach((column) => {\n let sum: number = this._data.reduce((p, c) => {\n const value = c[column];\n if (value && isNum(value)) {\n p += +value;\n }\n return p;\n }, 0);\n this.sumData[column] = +sum.toFixed(2);\n });\n }\n }\n\n /**\n * 更新筛选下拉框里的数据\n */\n updateFilterOptions() {\n if (this.groups) {\n this.groups.forEach((group) => {\n group.columns.forEach((column) => {\n if (column.showFilter) {\n const valueSet = new Set<any>();\n const target = group.columns.length == 1 ? group : column;\n target.filter = [];\n if (this._data) {\n this._data.forEach((row) => {\n const key = column.index;\n const value = row[key];\n const filterValue = this.filterValues[key];\n const checked = filterValue && filterValue.includes(value);\n if (checked || this.filterMatch(row, key)) {\n if (value != null && value != '' && !valueSet.has(value)) {\n valueSet.add(value);\n const item = { value, checked };\n target.filter.push(item);\n }\n }\n });\n }\n }\n });\n });\n }\n }\n\n filterMatch(record: any, exclude?: string): boolean {\n const keys = Object.keys(this.filterValues);\n for (const key of keys) {\n if (key !== exclude) {\n const filterValue = this.filterValues[key];\n const value = record[key];\n if (filterValue?.length && !filterValue.includes(value)) {\n return false;\n }\n }\n }\n return true;\n }\n\n groupBy(array) {\n this.rows = [];\n array.forEach((record) => {\n if (this.filterMatch(record)) {\n const row = [];\n for (const group of this.groups) {\n for (const column of group.columns) {\n const value = record[column.index];\n // if (column.showFilter) {\n // const filterValue = column.filterValue || group.filterValue;\n // if (filterValue?.length && !filterValue.includes(value)) {\n // return;\n // }\n // }\n let myColor = '';\n if (column.needlevel) {\n myColor = this.getColor(record[column.index]);\n }\n if (myColor == '') {\n myColor = this.tbodyBackground;\n }\n row.push({ rowspan: 1, value, index: column.index, color: myColor, data: record });\n }\n }\n this.rows.push(row);\n }\n });\n this.customCol.forEach((column, i) => {\n if (column.ismerge) {\n this.needPage = false;\n let lastTd = null;\n this.rows.forEach((row) => {\n const td = row[i];\n if (lastTd != null && lastTd.value === td.value) {\n lastTd.rowspan++;\n td.rowspan = 0;\n } else {\n lastTd = td;\n }\n });\n }\n });\n }\n\n getColor(value): string {\n // value=value.toString().replace('%','');\n const regExp: RegExp = /-?\\d+\\.?\\d*/;\n const result = regExp.exec(value);\n if (this.level.length > 0) {\n for (const t of this.level) {\n if (t.gte <= Number(result[0]) && Number(result[0]) < t.lte) {\n return t.color;\n }\n }\n }\n return '';\n }\n\n count() {\n const name = 'value';\n this._data.forEach((data) => {\n this.groups.forEach((group, i) => {\n group.columns.forEach((column, j) => {\n let item = {};\n let check = false;\n this.totalCount.forEach((ite) => {\n if (ite.filed === column.index) {\n item = ite;\n check = true;\n return;\n }\n });\n if (i === 0 && j === 0 && !check) {\n item = { filed: column.index, value: '合计' };\n }\n if (i !== 0 || j !== 0) {\n if (!check) {\n item = { filed: column.index };\n }\n if (column.iscount) {\n this.needCount = true;\n if (!item[name]) {\n item[name] = 0;\n }\n item[name] = Number(item[name]) + this.getDataValue(data, column.index);\n } else {\n item[name] = '';\n }\n }\n if (!check) {\n this.totalCount.push(item);\n }\n });\n });\n });\n }\n\n getDataValue(array, index) {\n let result = 0;\n array.forEach((data) => {\n if (data.index === index) {\n result = Number(data.value);\n return;\n }\n });\n return result;\n }\n\n onTdClick(td: any, i: number) {\n const { index, value, data } = td;\n this.tdChange.emit(value);\n this.rowChange.emit(this.customCol[i].title);\n this.tdClick.emit({ index, value, data });\n }\n\n onTdClickByGroup(data: any, column: any) {\n const index = column.index;\n const value = data[index];\n this.tdChange.emit(value);\n this.rowChange.emit(column.title);\n this.tdClick.emit({ index, value, data });\n }\n\n onTrClick(data: any) {\n // if (this.isCustom) {\n // data.forEach((a) => {\n // console.log('tr:td' + a.value);\n // });\n // }\n this.trChange.emit(data);\n }\n\n onCheck(column: any, values: any[]) {\n column.filterChecked = values;\n }\n\n filter(column: any) {\n this.filterValues[column.index] = column.filterChecked;\n // column.filterValue = column.filterChecked;\n this.updateData();\n column.filterVisible = false;\n }\n\n reset(column: any) {\n column.filterChecked = [];\n column.filter = column.filter.map((item) => ({\n value: item.value,\n }));\n this.filter(column);\n }\n\n export(): Sheet {\n const data = [];\n const merges = [];\n if (this.groups) {\n const row1 = [];\n const row2 = [];\n this.groups.forEach((group) => {\n const colIndex = row1.length;\n group.columns.forEach((column) => {\n row1.push(group.title);\n row2.push(column.title);\n });\n if (group.row > 1 || group.col > 1) {\n merges.push({ s: { r: 0, c: colIndex }, e: { r: group.row - 1, c: colIndex + group.col - 1 } });\n }\n });\n data.push(row1, row2);\n this._data.forEach((rowData) => {\n const rowIndex = data.length;\n const row = [];\n rowData.forEach((td, i) => {\n row.push(td.value);\n if (td.rowspan > 1) {\n merges.push({ s: { r: rowIndex, c: i }, e: { r: rowIndex + td.rowspan - 1, c: i } });\n }\n });\n data.push(row);\n });\n } else {\n const row1 = this.columns.map((column) => column.title);\n data.push(row1);\n this._data.forEach((rowData) => {\n const row = this.columns.map((column) => rowData[column.index]);\n data.push(row);\n });\n }\n return { data, merges };\n }\n\n exportWord() {\n const element = this.ele.nativeElement as HTMLElement;\n let html = '';\n const tables = element.querySelectorAll('table');\n if (tables.length === 1) {\n html += tables.item(0).outerHTML;\n } else if (tables.length > 1) {\n html += '<table>';\n tables.forEach((table) => {\n table = table.cloneNode(true) as HTMLTableElement;\n const measureRow = table.querySelector('.ant-table-measure-now');\n if (measureRow) {\n measureRow.parentElement.removeChild(measureRow);\n }\n html += table.innerHTML;\n });\n html += '</table><br/>';\n }\n return html;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableComponent } from './table.component';\nimport { NzTableModule } from 'ng-zorro-antd/table';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { FormsModule } from '@angular/forms';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\n\n@NgModule({\n declarations: [TableComponent],\n imports: [\n CommonModule,\n FormsModule,\n WidgetBaseModule,\n NzTableModule,\n NzPipesModule,\n NzSelectModule,\n NzIconModule,\n NzDropDownModule,\n NzCheckboxModule,\n NzButtonModule\n ],\n})\nexport class TableModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(TableComponent);\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { LazyService } from '@delon/util';\r\n\r\ndeclare const Highcharts;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HighChartsService {\r\n private loadHighChartsPromise: Promise<any>;\r\n private loadHighCharts3DPromise: Promise<any>;\r\n constructor(private lazy: LazyService) {}\r\n\r\n load() {\r\n if (typeof Highcharts !== 'undefined') {\r\n return Promise.resolve();\r\n }\r\n if (this.loadHighChartsPromise == null) {\r\n this.loadHighChartsPromise = this.lazy.loadScript('assets/js/highcharts/highcharts.js');\r\n }\r\n return this.loadHighChartsPromise;\r\n }\r\n\r\n async load3D() {\r\n await this.load();\r\n if (this.loadHighCharts3DPromise == null) {\r\n this.loadHighCharts3DPromise = this.lazy.loadScript('assets/js/highcharts/highcharts-3d.js');\r\n }\r\n return this.loadHighCharts3DPromise;\r\n }\r\n}\r\n","import { Component, ElementRef, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { LazyService } from '@delon/util';\nimport { FindValueSubscriber } from 'rxjs/internal/operators/find';\nimport { Data, Property, Widget } from 'bbj-widget-base';\nimport { HighChartsService } from '../shared/service/highcharts.service';\nimport { getFontStyle } from '../shared/util/style.util';\ndeclare var Highcharts: any;\n@Component({\n selector: 'sc-pie3d-chart',\n templateUrl: './pie3d-chart.component.html',\n styleUrls: ['./pie3d-chart.component.less'],\n})\n@Widget('3D饼图', {\n group: 'pieChart',\n image: 'assets/img/screen/pie3d.png',\n icon: 'icontubiao',\n})\nexport class Pie3dChartComponent implements OnInit, OnChanges {\n static initPluginPromise = null;\n\n @ViewChild('container', { static: true })\n container: ElementRef;\n @Property('标题', { type: 'string' })\n title = '';\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: '',\n };\n @Property('浮标', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n buoy = false;\n @Property('填充', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n colors = ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'];\n @Property('饼图厚度', { type: 'number' })\n thickness = 45;\n @Property('倾斜角度', { type: 'number' })\n angle = 60;\n @Property('图例开关', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n showLegend = true;\n @Property('图例间距', { type: 'number' })\n itemDistance = 80;\n @Property('高度系数', { type: 'number' })\n coefficient = 1;\n @Property('开始角度', { type: 'number' })\n startAngle = 90;\n @Property('图例水平', {\n ui: { widget: 'select' },\n enum: [\n { label: '居中', value: 'center' },\n { label: '居左', value: 'left' },\n { label: '居右', value: 'right' },\n ],\n })\n alignType = 'center';\n @Property('图例垂直', {\n ui: { widget: 'select' },\n enum: [\n { label: '居上', value: 'top' },\n { label: '居下', value: 'bottom' },\n { label: '居中', value: 'middle' },\n ],\n })\n verticalAlign = 'bottom';\n @Property('提示框字体', { ui: { widget: 'myFont' } })\n tooltipFont: any;\n @Data({\n properties: {\n x: { type: 'string', title: '类目' },\n y: { type: 'number', title: '值' },\n },\n })\n _data = [\n { x: '一月', y: 33 },\n { x: '二月', y: 31 },\n { x: '三月', y: 11 },\n { x: '四月', y: 11 },\n { x: '五月', y: 7 },\n { x: '六月', y: 20 },\n ];\n data: any[] = [];\n\n constructor(private highChartsService: HighChartsService) {}\n\n ngOnInit(): void {}\n\n async ngOnChanges(changes: SimpleChanges) {\n await this.initPlugin();\n this.reloadData();\n let each = Highcharts.each,\n round = Math.round,\n cos = Math.cos,\n sin = Math.sin,\n deg2rad = Math.PI / 180;\n Highcharts.wrap(Highcharts.seriesTypes.pie.prototype, 'translate', function (proceed) {\n proceed.apply(this, [].slice.call(arguments, 1));\n // Do not do this if the chart is not 3D\n if (!this.chart.is3d()) {\n return;\n }\n var series = this,\n chart = series.chart,\n options = chart.options,\n seriesOptions = series.options,\n depth = seriesOptions.depth || 0,\n options3d = options.chart.options3d,\n alpha = options3d.alpha,\n beta = options3d.beta,\n z = seriesOptions.stacking ? (seriesOptions.stack || 0) * depth : series._i * depth;\n z += depth / 2;\n if (seriesOptions.grouping !== false) {\n z = 0;\n }\n each(series.data, function (point) {\n var shapeArgs = point.shapeArgs,\n angle;\n point.shapeType = 'arc3d';\n var ran = point.options.h;\n shapeArgs.z = z;\n shapeArgs.depth = depth * 0.75 + ran;\n shapeArgs.alpha = alpha;\n shapeArgs.beta = beta;\n shapeArgs.center = series.center;\n shapeArgs.ran = ran;\n angle = (shapeArgs.end + shapeArgs.start) / 2;\n point.slicedTranslation = {\n translateX: round(cos(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad)),\n translateY: round(sin(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad)),\n };\n });\n });\n (function (H) {\n H.wrap(Highcharts.SVGRenderer.prototype, 'arc3dPath', function (proceed) {\n // Run original proceed method\n var ret = proceed.apply(this, [].slice.call(arguments, 1));\n ret.zTop = (ret.zOut + 0.5) / 100;\n return ret;\n });\n })(Highcharts);\n\n let sum = this._data.reduce((sum, data) => sum + Number(data.y), 0);\n this._data.sort((a, b) => {\n return b.y - a.y;\n });\n const data = [];\n this._data.forEach((record) => {\n // const x=record.x;\n // const s=record.s;\n // const y=record.y;\n const { x, y } = record;\n let obj: any;\n if (sum === 0) {\n obj = { name: x, y: 1, h: (100 / this._data.length) * (this.coefficient || 1) };\n } else {\n obj = { name: x, y: Number(y), h: (Number(y) / sum) * 100 * (this.coefficient || 1) };\n }\n\n data.push(obj);\n });\n let pointFormat = '{series.name}: <b>{point.percentage:.1f}%</b>';\n let labelFormat = '<span style=\"{color}\">{name} :{y}</span>';\n let format = '<span style=\"color:{point.color}\">{point.y}<br/>{point.name}';\n if (sum === 0) {\n pointFormat = '{series.name}: <b>0%</b>';\n labelFormat = '<span style=\"{color}\">{name} :0</span>';\n format = '<span style=\"color:{point.color}\">0<br/>{point.name}';\n }\n const options = {\n legend: {\n itemStyle: {\n color: this.font.color,\n fontSize: this.font.size + 'px',\n fontWeight: this.font.weight,\n fontFamily: this.font.family,\n },\n verticalAlign: this.verticalAlign,\n align: this.alignType,\n itemDistance: this.itemDistance,\n labelFormat,\n },\n chart: {\n type: 'pie',\n animation: false,\n events: {\n load: function () {\n var each = Highcharts.each,\n points = this.series[0].points;\n each(points, function (p, i) {\n p.graphic.attr({\n translateY: -p.shapeArgs.ran,\n });\n p.graphic.side1.attr({\n translateY: -p.shapeArgs.ran,\n });\n p.graphic.side2.attr({\n translateY: -p.shapeArgs.ran,\n });\n });\n },\n },\n options3d: {\n enabled: true,\n alpha: this.angle,\n beta: 0,\n },\n },\n title: {\n text: this.title,\n style: {\n color: this.font.color,\n fontSize: this.font.size + 'px',\n fontWeight: this.font.weight,\n fontFamily: this.font.family,\n },\n },\n tooltip: {\n pointFormat,\n style: getFontStyle(this.tooltipFont),\n },\n plotOptions: {\n pie: {\n showInLegend: this.showLegend,\n allowPointSelect: false,\n cursor: 'pointer',\n depth: this.thickness,\n point: {\n events: {\n legendItemClick: function () {\n return false;\n },\n },\n },\n dataLabels: {\n style: getFontStyle(this.font),\n enabled: this.buoy,\n format,\n // formatter,\n },\n },\n },\n colors: this.colors,\n series: [\n {\n type: 'pie',\n name: this.title,\n startAngle: this.startAngle,\n data,\n },\n ],\n };\n let chart = Highcharts.chart(this.container.nativeElement, options);\n }\n reloadData() {}\n\n initPlugin() {\n return this.highChartsService.load3D();\n }\n\n // async _initPlugin() {\n // await this.lazy.loadScript('assets/js/highcharts/highcharts.js');\n // await this.lazy.loadScript('assets/js/highcharts/highcharts-3d.js');\n // // await this.lazy.loadScript('https://code.highcharts.com.cn/highcharts/modules/exporting.js');\n // // await this.lazy.loadScript('https://img.hcharts.cn/highcharts-plugins/highcharts-zh_CN.js');\n // // await this.lazy.loadScript('https://code.highcharts.com.cn/highcharts/themes/dark-unica.js');\n // }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Pie3dChartComponent } from './pie3d-chart.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n\n\n@NgModule({\n declarations: [Pie3dChartComponent],\n imports: [CommonModule, WidgetBaseModule],\n})\nexport class Pie3dChartModule { \n constructor(widgetService: WidgetService) {\n widgetService.register(Pie3dChartComponent);\n }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Data, Property, Widget } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-multi-title-gauge',\n templateUrl: './multi-title-gauge.component.html',\n styleUrls: ['./multi-title-gauge.component.less']\n})\n@Widget('多标题仪表盘', {\n group: 'otherChart',\n image: 'assets/img/screen/multiTitleGauge.png', \n icon: 'icontubiao',\n})\nexport class MultiTitleGaugeComponent implements OnInit, OnChanges {\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n\n @Property('字体', { ui: { widget: 'myFont' } })\n detailFont: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 14,\n space: 0,\n lineHeight: 12,\n };\n @Property('百分号', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n percent = false;\n @Property('类别颜色', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n visibleIf: { colorSwitch: [true] }\n },\n })\n colors = ['#058DC7', '#50B432', '#ED561B', '#DDDF00',\n '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'];\n @Property('起始角度', {\n ui: { widget: 'myRange', min: 90, max: 360, step: 1 },\n })\n startAngle = 225;\n @Property('结束角度', {\n ui: { widget: 'myRange', min: -90, max: 90, step: 1 },\n })\n endAngle = -45;\n @Property('标签', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n label = false;\n @Property('最大值', {\n ui: { widget: 'number' },\n })\n max = 100;\n @Property('最小值', {\n ui: { widget: 'number' },\n })\n min = 0;\n @Property('指针长度', {\n ui: { widget: 'number' },\n })\n pointerLength = 80;\n @Property('环宽', {\n ui: { widget: 'number' },\n })\n width = 12;\n @Property('显示指针', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n showPointer = true;\n @Property('显示刻度', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n showScale = true;\n image: string;\n chartOption: any = {};\n @Data({\n properties: {\n name: { type: 'string', title: '文字' },\n value: { type: 'number', title: '值' },\n },\n })\n _data = [\n { name: '速度', value: 48 },\n { name: '温度', value: 20 }\n ];\n\n constructor() { }\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n const style = {\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n };\n\n // const color = [];\n // const color1 = [];\n // let seriesColor;\n // if (this.seriesColor && this.seriesColor.value) {\n // seriesColor = this.seriesColor.value;\n // } else {\n // seriesColor = this.seriesColor;\n // }\n // for (let i = 0; i < seriesColor.length; i++) {\n // color.push({\n // type: 'linear',\n // x: 0,\n // y: 0,\n // x2: 1,\n // y2: 0,\n // global: false,\n // colorStops: [\n // { offset: 0, color: seriesColor[i][0] },\n // { offset: 1, color: seriesColor[i][1] },\n // ],\n // });\n // }\n // let count = 1;\n // if (seriesColor.length > 1) {\n // count = 1 / seriesColor.length;\n // for (let i = 0; i < seriesColor.length; i++) {\n // color1.push([count * (i + 1), color[i]]);\n // }\n // }\n if(!this.showPointer){\n this.pointerLength=0;\n }\n this.chartOption = {\n series: [{\n type: 'gauge',\n anchor: {\n show: this.showPointer,\n showAbove: true,\n size: 18,\n itemStyle: {\n color: '#FAC858'\n }\n },\n pointer: {\n icon: 'path://M2.9,0.7L2.9,0.7c1.4,0,2.6,1.2,2.6,2.6v115c0,1.4-1.2,2.6-2.6,2.6l0,0c-1.4,0-2.6-1.2-2.6-2.6V3.3C0.3,1.9,1.4,0.7,2.9,0.7z',\n width: 8,\n length: this.pointerLength + '%',\n offsetCenter: [0, '8%']\n },\n progress: {\n show: true,\n overlap: true,\n roundCap: true,\n width:this.width,\n },\n axisLine: {\n roundCap: true,\n lineStyle: {\n width: this.width,\n }\n },\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n splitLine: {\n show: this.showScale,\n },\n axisTick: {\n show: this.showScale,\n },\n axisLabel: {\n show: this.showScale,\n color: '#fff'\n // distance: 50\n },\n data: [],\n color: this.colors,\n title: {\n show: this.label,\n fontSize: this.font.size,\n color: this.font.color,\n },\n detail: {\n formatter: this.percent ? '' + '{value}' + '%' : '{value}',\n width: 40,\n height: this.detailFont.size,\n fontSize: this.detailFont.size,\n color: this.detailFont.color,\n backgroundColor: 'auto',\n borderRadius: 3,\n show:this.label\n },\n max: this.max,\n min: this.min,\n }]\n };\n // console.log(JSON.stringify(this.chartOption));\n }\n this.reloadData();\n }\n\n ngOnInit(): void {\n }\n reloadData() {\n let datas = [];\n if (this._data) {\n let count = this._data.length + 1;\n let numa = 200 / count;\n let numb = numa - 100;\n this._data.forEach((a, index) => {\n let obj = {\n value: a.value,\n name: a.name,\n title: {\n offsetCenter: [(numb + (index * numa)) + '%', '30%']\n },\n detail: {\n offsetCenter: [(numb + (index * numa)) + '%', '50%']\n }\n }\n datas.push(obj);\n })\n }\n this.chartOption.series[0].data = datas;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MultiTitleGaugeComponent } from './multi-title-gauge.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { NgxEchartsModule } from 'ngx-echarts';\n\n\n\n@NgModule({\n declarations: [MultiTitleGaugeComponent],\n imports: [\n CommonModule, WidgetBaseModule, NgxEchartsModule\n ]\n})\nexport class MultiTitleGaugeModule { \n constructor(widgetService: WidgetService) {\n widgetService.register(MultiTitleGaugeComponent);\n }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Property, Widget, Data } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-gauge-progress',\n templateUrl: './gauge-progress.component.html',\n styleUrls: ['./gauge-progress.component.less'],\n})\n@Widget('进度条仪表盘', {\n group: 'otherChart',\n image: 'assets/img/screen/gauge-progress.png',\n icon: 'icontubiao',\n})\nexport class GaugeProgressComponent implements OnInit, OnChanges {\n @Property('数值字体', { ui: { widget: 'myFont' } })\n numfont: any = {family: 'Microsoft YaHei', color: '#ffffff', weight: 'normal', size: 21, space: 0, lineHeight: '20'};\n\n\n @Property('可视个数', { type: 'number' })\n slidesPerView = 1;\n\n @Property('间距', { type: 'number' })\n spaceBetween = 0;\n\n @Property('左右按钮', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n navigation = true;\n\n @Property('按钮偏移', { type: 'number' })\n navigationMoveVal = -60;\n\n @Property('左图标', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n }\n })\n navigationLeftIcon = null;\n\n @Property('右图标', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n }\n })\n navigationRightIcon = null;\n\n @Property('显示模式', {\n ui: { widget: 'select' },\n enum: [\n { label: '图标卡片', value: 'card' },\n ],\n })\n showType = 'card';\n\n @Property('卡片背景', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n },\n })\n cardBgImg = null;\n navigationBtnConfig = {\n prevEl: '.swiper-navigation-prev',\n nextEl: '.swiper-navigation-next'\n }\n //========================================\n @Property('表盘颜色', {\n ui: {\n widget: 'seriesColor',\n type: 'gradual',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n seriesColor: any = { gradient: false, value: [['#6D7597', '#6D7597']] };\n\n @Property('表盘宽度', {\n ui: { widget: 'myRange', min: 0, max: 100, step: 1 },\n })\n width = 10;\n @Property('起始角度', {\n ui: { widget: 'myRange', min: 90, max: 360, step: 1 },\n })\n startAngle = 210;\n @Property('结束角度', {\n ui: { widget: 'myRange', min: -90, max: 90, step: 1 },\n })\n endAngle = -30;\n\n @Property('显示标题', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n label = true;\n\n @Property('标题字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 18,\n space: 0,\n lineHeight: 18,\n };\n @Property('标题位移', {\n ui: { widget: 'number' },\n })\n labelOffset = 50;\n @Property('标题宽度', {\n ui: { widget: 'number' },\n })\n labelWidth = null;\n\n @Property('显示数值', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n labelVal = true;\n\n @Property('数值字体', { ui: { widget: 'myFont' } })\n numFont: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 38,\n space: 0,\n lineHeight: 38,\n };\n\n @Property('百分号', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n percent = false;\n\n @Property('数值位移', {\n ui: { widget: 'number' },\n })\n labelValOffset = -10;\n\n @Property('最大值', {\n ui: { widget: 'number' },\n })\n max = 100;\n @Property('最小值', {\n ui: { widget: 'number' },\n })\n min = 0;\n\n\n @Property('进度颜色', {\n ui: {\n widget: 'seriesColor',\n type: 'gradual'\n },\n })\n progressColor = { gradient: true, value: [['#2505F0', '#f00']] };\n\n @Property('进度阴影', {\n ui: {\n widget: 'myColor',\n example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null]\n },\n })\n progressShadow = null;\n\n\n\n image: string;\n constructor() { }\n chartOption: any = {};\n @Data({\n properties: {\n name: { type: 'string', title: '文字' },\n value: { type: 'number', title: '值' },\n },\n })\n _data = [{ name: '标题', value: 50 }];\n\n data=[];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes._data) {\n if(this._data.length<=this.slidesPerView){\n this.navigation=false;\n }\n this._data.forEach((e:any)=>{\n let sourceData=[];\n sourceData.push(e);\n let chartOption = {\n series: [\n {\n // name: this.title,\n type: 'gauge',\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n progress: {\n show: e.value && Number(e.value) > 0 ? true : false,\n overlap: false,\n roundCap: true,\n clip: false,\n itemStyle: {\n borderWidth: 1,\n color: this.getColor(this.progressColor, 'progress'),\n shadowColor: this.progressShadow,\n shadowBlur: 5\n }\n },\n detail: {\n show: this.labelVal,\n formatter: this.percent ? '' + ((e.value / this.max) * 100).toFixed(2) + '%' : '{value}',\n color: this.numFont.color,\n fontFamily: this.numFont.family,\n fontWeight: this.numFont.weight,\n fontSize: this.numFont.size,\n lineHeight: this.numFont.lineHeight,\n offsetCenter: [0, `${this.labelValOffset}%`],\n },\n data: sourceData,\n title: {\n show: this.label,\n color: this.font.color,\n fontFamily: this.font.family,\n fontWeight: this.font.weight,\n fontSize: this.font.size,\n lineHeight: this.font.lineHeight,\n offsetCenter: [0, `${this.labelOffset}%`],\n overflow: 'breakAll',\n width: this.labelWidth\n },\n axisLine: {\n roundCap: true,\n lineStyle: {\n width: this.width,\n color: this.getColor(this.seriesColor)\n },\n },\n max: this.max,\n min: this.min,\n axisLabel: {\n show: false\n },\n splitLine: {\n show: false\n },\n axisTick: {\n show: false\n },\n pointer: {\n show: false\n },\n },\n ],\n };\n this.data.push(chartOption);\n })\n // console.log(this._data[0].value,this._data[0].value && Number(this._data[0].value) !== 0 ? true : false)\n \n // console.log(JSON.stringify(this.chartOption));\n }\n }\n ngOnInit() { }\n getColor(colorBox, type?: string) {\n const color = [];\n const color1 = [];\n const colorInfo = colorBox && colorBox.value ? colorBox.value : colorBox;\n colorInfo.forEach(item => {\n color.push({\n type: 'linear',\n x: 0,\n y: 0,\n x2: 1,\n y2: 0,\n global: false,\n colorStops: [\n { offset: 0, color: item[0] },\n { offset: 1, color: item[1] },\n ],\n });\n });\n let count = 1;\n if (colorInfo.length > 1) {\n count = 1 / colorInfo.length;\n for (let i = 0; i < colorInfo.length; i++) {\n color1.push([count * (i + 1), color[i]]);\n }\n }\n return type === 'progress' ? color[0] : count < 1 ? color1 : [[1, color[0]]];\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { GaugeProgressComponent } from './gauge-progress.component';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\r\nimport { SwiperModule } from 'swiper/angular';\r\n\r\n@NgModule({\r\n declarations: [GaugeProgressComponent],\r\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule,SwiperModule],\r\n})\r\nexport class GaugeProgressModule {\r\n constructor(widgetService: WidgetService) {\r\n widgetService.register(GaugeProgressComponent);\r\n }\r\n}\r\n","import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Data, Property, Widget } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-bulletin-board',\n templateUrl: './bulletin-board.component.html',\n styleUrls: ['./bulletin-board.component.less']\n})\n@Widget('布告栏', {group: 'component', icon: 'icontubiao', image: '/assets/img/screen/bulletin-board.png'})\nexport class BulletinBoardComponent implements OnInit,OnChanges {\n @Property('标题', {type:'string'})\n title='';\n @Property('标题字体', { ui: { widget: 'myFont' } })\n titleFont: any = { family: '', color: '#ffffff', weight: 'normal', size: 20, space: 0, lineHeight: 40 };\n @Property('小标题字', { ui: { widget: 'myFont' } })\n subtitleFont: any = { family: '', color: '#ffffff', weight: 'normal', size: 20, space: 0, lineHeight: 40 };\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#FFFFFF',\n weight: 'normal',\n size: 12,\n space: 0,\n lineHeight: 12,\n };\n @Property('边框颜色', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n borderColor = '';\n @Property('渐变开始', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n startColor = '#D0021B';\n @Property('渐变结束', {\n ui: {\n widget: 'myColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#ffffff'],\n },\n })\n endColor = '#F5A623';\n @Property('边框粗细',{\n type:'number'\n })\n borderWidth=5;\n @Property('分隔符',{\n type:'string'\n })\n separate=';';\n @Property('内容边距',{\n type:'number'\n })\n marginSize=';';\n @Data({\n properties: {\n title: { type: 'string', title: '小标题' },\n content: { type: 'string', title: '内容' },\n },\n })\n _data = [\n { title: '单位单位单位', content: '【带班领导】 张三 1300000000;【值班联系】 李四 1300000000 ' },\n { title: '单位单位单位', content: '【带班领导】 张三 1300000000;【值班联系】 李四 1300000000 ' },\n { title: '单位单位单位', content: '【带班领导】 张三 1300000000;【值班联系】 李四 1300000000 ' },\n { title: '单位单位单位', content: '【带班领导】 张三 1300000000;【值班联系】 李四 1300000000 ' },\n ];\n contentArr: any = [];\n titleStyle: any;\n textStyle: any;\n subtitleStyle: any;\n boxStyle: any;\n constructor() { }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(this._data&&this._data.length>0){\n this._data.forEach(a=>{\n let obj={title:'',content:[]};\n let sp=this.separate;\n if(!sp||sp===''){\n sp=';';\n }\n obj.title=a.title;\n obj.content=a.content.split(sp);\n this.contentArr.push(obj);\n })\n }\n }\n\n ngOnInit(): void {\n this.titleStyle = {\n fontSize: this.titleFont.size + 'px',\n fontFamily: this.titleFont.family,\n color: this.titleFont.color,\n fontWeight: this.titleFont.weight,\n letterSpacing: this.titleFont.space + 'px',\n lineHeight: this.titleFont.lineHeight + 'px',\n // backgroundColor: this.headBackground,\n };\n this.subtitleStyle = {\n fontSize: this.subtitleFont.size + 'px',\n fontFamily: this.subtitleFont.family,\n color: this.subtitleFont.color,\n fontWeight: this.subtitleFont.weight,\n letterSpacing: this.subtitleFont.space + 'px',\n lineHeight: this.subtitleFont.lineHeight + 'px',\n borderLeft: this.borderWidth+'px'+' solid '+this.borderColor,\n background:'-webkit-linear-gradient(left,'+this.startColor+','+this.endColor+')',\n };\n this.textStyle = {\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n };\n this.boxStyle={\n margin: this.marginSize+'px 0px',\n }\n \n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BulletinBoardComponent } from './bulletin-board.component';\nimport { WidgetService } from 'bbj-widget-base';\n\n\n\n@NgModule({\n declarations: [\n BulletinBoardComponent\n ],\n imports: [\n CommonModule\n ]\n})\nexport class BulletinBoardModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(BulletinBoardComponent);\n }\n }\n","import { Component, ElementRef, OnInit, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { Property, Widget, DataOutput, Data } from 'bbj-widget-base';\nimport SwiperCore, {\n Navigation,\n Pagination,\n Scrollbar,\n A11y,\n Virtual,\n Zoom,\n Autoplay,\n Thumbs,\n Controller\n} from 'swiper/core';\nimport { areAllEquivalent } from '@angular/compiler/src/output/output_ast';\n\n// install Swiper components\nSwiperCore.use([\n Navigation,\n Pagination,\n Scrollbar,\n A11y,\n Virtual,\n Zoom,\n Autoplay,\n Thumbs,\n Controller\n]);\n@Component({\n selector: 'sc-item-swiper',\n templateUrl: './item-swiper.component.html',\n styleUrls: ['./item-swiper.component.less']\n})\n\n@Widget('轮播', { group: 'component', image: 'assets/img/screen/item-swiper.png', icon: 'iconmokuai' })\nexport class ItemSwiperComponent implements OnInit, OnChanges {\n\n @Property('标题字体', { ui: { widget: 'myFont' } })\n font: any = { family: 'Microsoft YaHei', color: '#ffffff', weight: 'normal', size: 20, space: 0, lineHeight: '66' };\n\n @Property('数值字体', { ui: { widget: 'myFont' } })\n numfont: any = { family: 'Microsoft YaHei', color: '#ffffff', weight: 'normal', size: 21, space: 0, lineHeight: '25' };\n @Property('分组字体', { ui: { widget: 'myFont' } })\n titlefont: any = { family: 'Microsoft YaHei', color: '#ffffff', weight: 'normal', size: 21, space: 0, lineHeight: '25' };\n @Property('可视个数', { type: 'number' })\n slidesPerView = 3;\n @Property('选项高度')\n selectHeight:number=180;\n @Property('分组高度', { type: 'number' })\n gourpHeight = 0;\n @Property('值高度', { type: 'number' })\n valueBottom=0;\n @Property('间距', { type: 'number' })\n spaceBetween = 10;\n\n @Property('左右按钮', {\n ui: { widget: 'boolean', checkedChildren: '开', unCheckedChildren: '关' },\n })\n navigation = true;\n\n @Property('按钮偏移', { type: 'number' })\n navigationMoveVal = -60;\n\n @Property('左图标', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n }\n })\n navigationLeftIcon = null;\n\n @Property('右图标', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n }\n })\n navigationRightIcon = null;\n\n @Property('显示模式', {\n ui: { widget: 'select' },\n enum: [\n { label: '图标卡片', value: 'card' },\n ],\n })\n showType = 'card';\n\n @Property('卡片背景', {\n type: 'string',\n ui: {\n widget: 'myUpload',\n },\n })\n cardBgImg = null;\n @Property('图片高度')\n height:number=180;\n @Property('图片宽度')\n width:number=180;\n @Property('是否分组')\n isgroup:boolean=false;\n @Property('图片分类', {\n type: 'array',\n title: '图片分类',\n maxItems: 10,\n items: {\n type: 'object',\n properties: {\n imageUrl: {\n type: 'string',\n title: '图片',\n ui: {\n widget: 'myPicture',\n },\n },\n },\n required: [],\n },\n ui: {visibleIf: { isgroup: [false] }, grid: { arraySpan: 24 }, spanControl: 24 },\n })\n images:any=[\n {imageUrl:'assets/img/screen/picture9.png'},\n {imageUrl:'assets/img/screen/picture9.png'},\n {imageUrl:'assets/img/screen/picture9.png'},\n {imageUrl:'assets/img/screen/picture9.png'},\n {imageUrl:'assets/img/screen/picture9.png'},\n {imageUrl:'assets/img/screen/picture9.png'},\n ]\n @Property('新增分组', {\n type: 'array',\n title: '新增分组',\n maxItems: 10,\n items: {\n type: 'object',\n properties: {\n groupName: {\n type: 'string',\n title: '组名'\n },\n imageUrl: {\n type: 'string',\n title: '图片',\n ui: {\n widget: 'myPicture',\n },\n },\n },\n required: [],\n },\n ui: {visibleIf: { isgroup: [true] }, grid: { arraySpan: 24 }, spanControl: 24 },\n })\n groups = [\n {groupName:'1',imageUrl:'assets/img/screen/picture9.png'},\n {groupName:'2',imageUrl:'assets/img/screen/picture9.png'},\n {groupName:'3',imageUrl:'assets/img/screen/picture9.png'},\n {groupName:'4',imageUrl:'assets/img/screen/picture9.png'},\n {groupName:'5',imageUrl:'assets/img/screen/picture9.png'},\n {groupName:'6',imageUrl:'assets/img/screen/picture9.png'},];\n groupfont:any={};\n @Data({\n properties: {\n label: { title: '标题', type: 'string' },\n value: { title: '值', type: 'string' },\n group: { title: '分组', type: 'string' }\n },\n })\n _data: any[] = [\n { label: '测试1', value: '1000',group:'1' },\n { label: '测试2', value: '1000' ,group:'2'},\n { label: '测试3', value: '1000' ,group:'3' },\n { label: '测试4', value: '1000' ,group:'4' },\n { label: '测试5', value: '1000' ,group:'5' },\n { label: '测试6', value: '1000' ,group:'6' },\n ];\n @DataOutput('值')\n valueChange = new EventEmitter<any>();\n\n navigationBtnConfig = {\n prevEl: '.swiper-navigation-prev',\n nextEl: '.swiper-navigation-next'\n }\n\n data: any = [];\n items: any = {};\n showNavigation=true;\n constructor(private ele: ElementRef) { }\n\n ngOnInit(): void {\n if(this.isgroup){\n this.groupfont={\n fontSize: this.titlefont.size + 'px',\n fontFamily: this.titlefont.family,\n color: this.titlefont.color,\n fontWeight: this.titlefont.weight,\n letterSpacing: this.titlefont.space + 'px',\n lineHeight: this.titlefont.lineHeight + 'px',\n top:this.gourpHeight+'px',\n }\n }\n \n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.items={};\n this.data=[];\n if (changes.numfont) {\n this.numfont = {\n fontSize: this.numfont.size + 'px',\n fontFamily: this.numfont.family,\n color: this.numfont.color,\n fontWeight: this.numfont.weight,\n letterSpacing: this.numfont.space + 'px',\n lineHeight: this.numfont.lineHeight + 'px',\n }\n }\n if (changes.font) {\n this.font = {\n fontSize: this.font.size + 'px',\n fontFamily: this.font.family,\n color: this.font.color,\n fontWeight: this.font.weight,\n letterSpacing: this.font.space + 'px',\n lineHeight: this.font.lineHeight + 'px',\n \n }\n }\n if (this._data && this._data[0]&&!this.isgroup) {\n this._data.forEach((t,i)=>{\n let img='';\n if(this.images){\n img=this.images[i]?.imageUrl||this.images[this.images.length-1].imageUrl;\n t.imgstyle={\n height:(this.height || 30) +'px',\n width:(this.width|| 30) + 'px' \n }\n }\n t.img=img;\n this.data.push(t);\n })\n }\n if (this._data && this._data[0]&&this.isgroup) {\n this._data.forEach((t: any) => {\n let groupName = t.group || ' ';\n if(!this.items[groupName]){\n this.items[groupName]={};\n }\n let a = this.items[groupName];\n if(!a.field){\n a.field=[];\n }\n let arr = a.field\n arr.push({ label: t.label, value: t.value });\n })\n if (this.groups && this.groups.length > 0) {\n this.groups.forEach(e => {\n let a = this.items[e.groupName];\n if(!a){\n return;\n }\n a.img = e.imageUrl||'';\n a.imgstyle={\n height:(this.height || 30) +'px',\n width:(this.width|| 30) + 'px' \n }\n });\n }\n Object.keys(this.items).forEach(key => {\n let map = this.items[key];\n map['group'] = key;\n this.data.push(map);\n })\n\n }\n if(!this.data||!this.data[0]){\n this.showNavigation=false;\n }else{\n this.showNavigation=this.navigation;\n }\n console.log(this.data);\n }\n onSwiper(swiper) {\n\n }\n onSlideChange() {\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ItemSwiperComponent } from './item-swiper.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { SwiperModule } from 'swiper/angular';\nimport { NzSpaceModule } from 'ng-zorro-antd/space';\n\n\n@NgModule({\n declarations: [\n ItemSwiperComponent\n ],\n imports: [\n CommonModule,\n WidgetBaseModule,\n NzSpaceModule,\n SwiperModule\n ]\n})\nexport class ItemSwiperModule { \n constructor(widgetService: WidgetService) {\n widgetService.register(ItemSwiperComponent);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n OnChanges,\n OnInit,\n Optional,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { CustomExport, Data, DataOutput, Widget, WIDGET_CONFIG } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-temporary-data',\n templateUrl: './temporary-data.component.html',\n styleUrls: ['./temporary-data.component.less'],\n})\n@Widget('临时数据')\nexport class TemporaryDataComponent implements OnInit, OnChanges, CustomExport {\n @Data({})\n data: any[] = [];\n\n @DataOutput('数据')\n dataChange = new EventEmitter<any>();\n\n edit: boolean;\n\n constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\n\n ngOnInit(): void {\n if (!this.edit) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data) {\n this.dataChange.emit(this.data);\n }\n }\n\n exportWord() {\n return null;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TemporaryDataComponent } from './temporary-data.component';\nimport { WidgetService } from 'bbj-widget-base';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\n@NgModule({\n declarations: [TemporaryDataComponent],\n imports: [CommonModule, NzIconModule],\n})\nexport class TemporaryDataModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(TemporaryDataComponent);\n }\n}\n","import { AfterViewInit, Component, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { Property, Widget } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-line-light-flow',\n templateUrl: './line-light-flow.component.html',\n styleUrls: ['./line-light-flow.component.css'],\n})\n@Widget('光线特效', {\n group: 'mipAnim',\n})\nexport class LineLightFlowComponent implements OnInit, AfterViewInit {\n @Property('线条颜色', {\n ui: {\n widget: 'myColor',\n },\n })\n lineColor = '#004CB3';\n @Property('线条阴影', {\n ui: {\n widget: 'myColor',\n },\n })\n lineshadowColor = 'rgba(0, 193, 220, 1)';\n\n @Property('高亮颜色', {\n ui: {\n widget: 'myColor',\n },\n })\n lineHightLightColor = '#8ED6FF';\n\n @Property('中间间距', {\n type: 'number'\n })\n distance = 10;\n @Property('上边距', {\n type: 'number'\n })\n topDistance = 0;\n\n @ViewChild('lineCanvas') lineCanvas: ElementRef;\n opt: any;\n\n @ViewChild('canvasBox') canvasBox: ElementRef;\n resizeTimeout: any;\n constructor() {\n\n }\n\n @HostListener('window:resize')\n resize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n this.resizeTimeout = setTimeout(() => {\n this.reload();\n this.resizeTimeout = null;\n }, 100);\n }\n ngAfterViewInit(): void {\n this.reload();\n }\n\n reload() {\n this.opt = {};\n this.opt.currentIndex = 1;\n this.opt.canvas = this.lineCanvas.nativeElement;\n this.initOpt();\n this._initCanvas(this.opt.canvas, this.opt.width, this.opt.height);\n this._createPattern(this.opt.canvas);\n this.draw(0);\n\n }\n\n ngOnInit(): void {\n // this.opt = {};\n // this.opt.currentIndex = 1;\n // this.opt.canvas = this.lineCanvas.nativeElement;\n\n // this.initOpt();\n // this._initCanvas(this.opt.canvas, this.opt.width, this.opt.height);\n // this._createPattern(this.opt.canvas);\n // this.draw(0);\n }\n\n initOpt() {\n const d = this.distance || 100;\n const innerW = this.canvasBox.nativeElement.offsetWidth;\n // const d = Math.round(innerW * (Number(this.distance) || 10) / 100); // 间距\n console.log(innerW, innerW * (Number(this.distance)) / 100, '间距', d)\n this.opt = {\n ...this.opt,\n animating: true,\n distance: d,\n width: innerW,\n tabHeight: 40,\n height: 60,\n curDisX: 0,\n currentIndex: 0,\n avgSpeed: this.calcAVGSpeed(d * 2),\n tabWidthList: [\n Math.round(innerW / 2) - d / 2,\n Math.round(innerW / 2) + d / 2,\n ]\n };\n }\n // 计算速度\n calcAVGSpeed(a) {\n const [j, k, l] = [0.85, 10, 4];\n let b = (l * j * a + k * (1 - j) * a) / (k * l * 20);\n return (b = Math.max(Math.abs(b), 2.5) * Math.sign(b)), b;\n }\n // 获取当前速度\n getCurSpeed(a, b) {\n const [j, k, l] = [0.85, 10, 4];\n const c = Math.abs(a) > Math.abs(j * b) ? l * this.opt.avgSpeed : k * this.opt.avgSpeed;\n return c;\n }\n // 生成曲线\n _calCurve(a, b, c, d, e, f) {\n // console.log(a + f,b,c-f,d,c,d);\n e.bezierCurveTo(a + f, b, c - f, d, c, d);\n }\n\n // 初始化画布\n _initCanvas(canvas, width, height) {\n const devicePixelRatio = window.devicePixelRatio;\n const canvasObj = canvas.getContext('2d');\n canvas.width = width * devicePixelRatio;\n canvas.height = height * devicePixelRatio;\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n canvasObj.scale(devicePixelRatio, devicePixelRatio);\n }\n\n // 创建遮盖蒙版\n _createPattern(a) {\n const [b, c, d] = [140, 23, 1];\n let e = document.createElement('canvas');\n (e.width = b), (e.height = c), (e.style.width = b / d + 'px'), (e.style.height = c / d + 'px');\n const f = e.getContext('2d');\n // 缩放 宽高 100%\n f.scale(d, d);\n f.lineWidth = 0.4;\n for (let g = 3, h = 0.8, j = 1; 2 > j; j++) {\n // 设置或返回用于笔触的颜色、渐变或模式\n f.strokeStyle = 'RGBA(0, 0, 0,0)';\n // 开始一条路径\n f.beginPath();\n // 把路径移动到画布中的指定点,不创建线条\n f.moveTo(0, j * g);\n // 添加一个新点,然后在画布中创建从该点到最后指定点的线条\n f.lineTo(b, j * g);\n // 绘制已定义的路径\n f.stroke();\n // 创建从当前点回到起始点的路径\n f.closePath();\n if (10 < j) { h -= 0.1; }\n }\n const i = a.getContext('2d').createPattern(e, 'repeat-x');\n (this.opt.pattern = i), (e = null);\n }\n\n\n // 高亮\n _drawHightlight(a) {\n // a = 0\n const opt = this.opt;\n const b = opt.canvas.getContext('2d');\n const d = 0.3;\n // clearRect 在给定的矩形内清除指定的像素,这里清完了\n b.clearRect(0, 0, 2 * opt.width, 2 * opt.height);\n b.shadowColor = this.lineshadowColor;\n b.shadowBlur = 5;\n b.strokeStyle = this.lineColor;\n b.lineWidth = 0.8;\n b.fillStyle = 'none';\n this._draw(b, false);\n // 这里绘制了外围边框线条\n // return false;\n const e = b.createLinearGradient(0, 0, opt.width, opt.height);\n const f = a - d;\n e.addColorStop(Math.min(1, Math.max(0, 0 + f)), 'rgba(0,0,0,0)');\n e.addColorStop(Math.min(1, Math.max(0, 0 + f + 0.1)), this.lineHightLightColor);\n e.addColorStop(Math.min(1, 0 + f + d), this.lineHightLightColor);\n e.addColorStop(Math.min(1, 0 + f + d + 0.1), 'rgba(0,0,0,0)');\n e.addColorStop(1, 'rgba(0,0,0,0)');\n b.lineWidth = 1.5;\n b.strokeStyle = e;\n b.fillStyle = opt.pattern;\n this._draw(b, true);\n }\n\n draw(a) {\n // console.log(a);\n this._drawHightlight(a);\n // return false;\n\n this.opt.timer = requestAnimationFrame(() => {\n // console.log(a);\n this.draw((a + 0.005) % 1.6);\n });\n }\n\n _draw(canvasObj, trueorfalse) {\n const opt = this.opt;\n const tableHeight = opt.tabHeight;\n const [f, g, i, j, k] = [0, 110, 40, 0.5, 2.5];\n let l = 0;\n if (\n (canvasObj.beginPath(),\n canvasObj.moveTo(-50, -15),\n canvasObj.lineTo(-50, j),\n opt.animating)\n ) {\n const m = this.getCurSpeed(opt.curDisX, opt.distance);\n l = Math.min(Math.abs(opt.distance), Math.abs(opt.curDisX + m)) * Math.sign(m);\n }\n if (\n (canvasObj.lineTo(\n f + opt.tabWidthList[0] + l - g / 2,\n k + j\n ),\n this._calCurve(\n f + opt.tabWidthList[0] + l - g / 2,\n k + j,\n f + opt.tabWidthList[0] + l + g / 2,\n tableHeight + j,\n canvasObj,\n i\n ),\n opt.animating)\n ) {\n const o =\n opt.tabWidthList[opt.nextIndex + 1] -\n opt.tabWidthList[opt.nextIndex];\n canvasObj.lineTo(\n f + opt.tabWidthList[0] + o + l - g / 2,\n tableHeight + j\n ),\n this._calCurve(\n f + opt.tabWidthList[0] + o + l - g / 2,\n tableHeight + j,\n f + opt.tabWidthList[0] + o + l + g / 2,\n k + j,\n canvasObj,\n i\n );\n } else {\n // lineTO添加一个新点 宽度长度\n canvasObj.lineTo(\n f + opt.tabWidthList[1] + l - g / 2,\n tableHeight + j\n );\n this._calCurve(\n f + opt.tabWidthList[1] + l - g / 2,\n tableHeight + j,\n f + opt.tabWidthList[1] + l + g / 2,\n k + j,\n canvasObj,\n i\n );\n }\n\n canvasObj.lineTo(opt.width + 10, j);\n canvasObj.lineTo(opt.width + 10, -15);\n canvasObj.closePath();\n canvasObj.stroke();\n if (trueorfalse) { canvasObj.fill(); }\n if (opt.animating && trueorfalse) { opt.curDisX = l; }\n if (Math.abs(l) >= Math.abs(opt.distance)) { opt.animating = false; }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { LineLightFlowComponent } from './line-light-flow.component';\n\n\n\n@NgModule({\n declarations: [\n LineLightFlowComponent\n ],\n imports: [\n CommonModule,\n WidgetBaseModule\n ]\n})\nexport class LineLightFlowModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(LineLightFlowComponent);\n }\n }\n","import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Data, Method, Param, Property, Widget } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-iframe',\n templateUrl: './iframe.component.html',\n styleUrls: ['./iframe.component.less'],\n})\n@Widget('iframe')\nexport class IframeComponent implements OnInit, OnChanges {\n @Property('url')\n url: string;\n\n @Data({ properties: { url: { type: 'string', title: 'url' } } })\n data: any[];\n edit: boolean;\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data) {\n if (this.data.length && this.data[0].url) {\n this.url = this.data[0].url;\n }\n }\n }\n\n ngOnInit(): void {}\n\n @Method('设置url')\n setUrl(@Param('url') url: string) {\n this.url = url;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IframeComponent } from './iframe.component';\nimport { NzPipesModule } from 'ng-zorro-antd/pipes';\nimport { WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [IframeComponent],\n imports: [CommonModule, NzPipesModule],\n})\nexport class IframeModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(IframeComponent);\n }\n}\n","import { Component, HostBinding, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { DataInput, Property, Widget, Data } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-video-grid',\n templateUrl: './video-grid.component.html',\n styleUrls: ['./video-grid.component.less'],\n})\n@Widget('视频宫格')\nexport class VideoGridComponent implements OnInit, OnChanges {\n @Property('宫格数', {\n enum: [\n { label: '四宫格', value: 4 },\n { label: '九宫格', value: 9 },\n ],\n })\n size = 4;\n @Property('间隔', { type: 'number' })\n gutter = 4;\n @Property('切换按钮')\n showToggle: boolean;\n @Property('视频类型', { enum: ['flv', 'hls', 'iframe'] })\n type = 'flv';\n @Property('是否有声音')\n hasAudio: boolean;\n @DataInput('视频地址')\n src: string;\n @Data({\n properties: {\n src: { title: '视频地址', type: 'string' },\n },\n })\n data: any = [];\n height: string;\n cellSize: string;\n videos = [];\n margin: number;\n selectedIndex = 0;\n\n constructor() {}\n\n ngOnInit(): void {\n this.updateSize();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.size) {\n this.updateSize();\n }\n if (changes.gutter) {\n this.updateGutter();\n }\n if (changes.src) {\n this.addSrc(this.src);\n }\n if (changes.data) {\n if (this.data?.length) {\n this.data.forEach((r, i) => {\n const video = this.videos[i];\n if (video) {\n video.src = r.src;\n }\n });\n }\n }\n }\n\n updateSize() {\n if (this.size !== this.videos.length) {\n if (this.size > this.videos.length) {\n for (let i = this.videos.length; i < this.size; i++) {\n this.videos.push({});\n }\n } else {\n this.videos = this.videos.slice(0, this.size);\n }\n if (this.size === 9) {\n this.cellSize = '33.33%';\n } else {\n this.cellSize = '50%';\n }\n this.validIndex();\n }\n }\n\n updateGutter() {\n if (this.gutter) {\n this.margin = -this.gutter;\n this.height = `calc(100% + ${this.gutter * 2}px)`;\n }\n }\n\n validIndex() {\n if (this.selectedIndex >= this.videos.length) {\n this.selectedIndex = 0;\n }\n }\n\n addSrc(src: string) {\n if (src) {\n const video = this.videos[this.selectedIndex];\n if (video) {\n video.src = src;\n }\n this.selectedIndex++;\n this.validIndex();\n }\n }\n\n toggle() {\n this.size = this.size === 4 ? 9 : 4;\n this.updateSize();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VideoGridComponent } from './video-grid.component';\nimport { WidgetService } from 'bbj-widget-base';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { VideoPlayerModule } from '../shared/component/video-player/video-player.module';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\n@NgModule({\n declarations: [VideoGridComponent],\n imports: [CommonModule, VideoPlayerModule, NzGridModule,NzIconModule],\n})\nexport class VideoGridModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(VideoGridComponent);\n }\n}\n","import { Component, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { Widget, Data, Property } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-scatter3d',\n templateUrl: './scatter3d.component.html',\n styleUrls: ['./scatter3d.component.less'],\n})\n@Widget('3D散点图', {\n group: 'otherChart',\n image: 'assets/img/screen/bubble.png',\n icon: 'icontubiao',\n})\nexport class Scatter3dComponent implements OnInit, OnChanges {\n @Property('最小值', { type: 'number' })\n min = 0;\n @Property('最大值', { type: 'number' })\n max = 10;\n @Property('最小尺寸', { type: 'number' })\n symbolSizeMin = 10;\n @Property('最大尺寸', { type: 'number' })\n symbolSizeMax = 20;\n @Property('颜色', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n visualMapColor = [\n '#313695',\n '#4575b4',\n '#74add1',\n '#abd9e9',\n '#e0f3f8',\n '#ffffbf',\n '#fee090',\n '#fdae61',\n '#f46d43',\n '#d73027',\n '#a50026',\n ];\n @Property('最小不透明度', { type: 'number', minimum: 0, maximum: 1 })\n colorAlphaMin = 0.5;\n @Property('最大不透明度', { type: 'number', minimum: 0, maximum: 1 })\n colorAlphaMax = 1;\n @Property('高度', { type: 'number' })\n boxHeight = 100;\n @Property('宽度', { type: 'number' })\n boxWidth = 100;\n @Property('深度', { type: 'number' })\n boxDepth = 100;\n\n @Data({\n properties: {\n x: { type: 'number', title: 'x' },\n y: { type: 'number', title: 'y' },\n z: { type: 'number', title: 'z' },\n value: { type: 'number', title: '值' },\n },\n })\n data = [\n { x: 0, y: 0, z: 0, value: 1 },\n { x: 0, y: 0, z: 1, value: 2 },\n { x: 0, y: 1, z: 0, value: 3 },\n { x: 0, y: 1, z: 1, value: 4 },\n { x: 1, y: 0, z: 0, value: 5 },\n { x: 1, y: 0, z: 1, value: 6 },\n { x: 1, y: 1, z: 0, value: 7 },\n { x: 1, y: 1, z: 1, value: 8 },\n ];\n options: any;\n constructor() {}\n\n ngOnInit(): void {\n this.reset();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.reset();\n }\n\n reset() {\n const data = this.data ? this.data.map((item) => [item.x, item.y, item.z, item.value]) : [];\n this.options = {\n visualMap: {\n show: false,\n min: this.min,\n max: this.max,\n inRange: {\n symbolSize: [this.symbolSizeMin, this.symbolSizeMax],\n color: this.visualMapColor,\n colorAlpha: [this.colorAlphaMin, this.colorAlphaMax],\n },\n },\n xAxis3D: {\n type: 'value',\n },\n yAxis3D: {\n type: 'value',\n },\n zAxis3D: {\n type: 'value',\n },\n grid3D: {\n axisLine: {\n lineStyle: { color: '#fff' },\n },\n axisPointer: {\n lineStyle: { color: '#fff' },\n },\n viewControl: {\n // autoRotate: true\n },\n boxHeight: this.boxHeight ?? 100,\n boxWidth: this.boxWidth ?? 100,\n boxDepth: this.boxDepth ?? 100,\n },\n series: [\n {\n type: 'scatter3D',\n data,\n },\n ],\n };\n console.log(this.options);\n }\n\n onChartClick(event) {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Scatter3dComponent } from './scatter3d.component';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [Scatter3dComponent],\n imports: [CommonModule, WidgetBaseModule, NgxEchartsModule],\n})\nexport class Scatter3dModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(Scatter3dComponent);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ImageModule } from './image/image.module';\nimport { BasicLineChartModule } from './basic-line-chart/basic-line-chart.module';\nimport { ButtonModule } from './button/button.module';\nimport { TimerModule } from './timer/timer.module';\nimport { NumberFlopModule } from './number-flop/number-flop.module';\nimport { VoteModule } from './vote/vote.module';\nimport { SelectModule } from './select/select.module';\nimport { FormsModule } from '@angular/forms';\nimport { SearchModule } from './search/search.module';\nimport { WeatherModule } from './weather/weather.module';\nimport { RadioModule } from './radio/radio.module';\nimport { CheckboxModule } from './checkbox/checkbox.module';\nimport { RateModule } from './rate/rate.module';\nimport { GeneralTextModule } from './general-text/general-text.module';\nimport { MarqueeModule } from './marquee/marquee.module';\nimport { WordartModule } from './wordart/wordart.module';\nimport { IconfontModule } from './iconfont/iconfont.module';\nimport { AudioModule } from './audio/audio.module';\nimport { BasicBarChartModule } from './basic-bar-chart/basic-bar-chart.module';\nimport { BasicPieChartModule } from './basic-pie-chart/basic-pie-chart.module';\nimport { BarChartThreeDModule } from './bar-chart-three-d/bar-chart-three-d.module';\nimport { ShapeModule } from './shape/shape.module';\nimport { LineBarChartModule } from './line-bar-chart/line-bar-chart.module';\nimport { BubbleChartModule } from './bubble-chart/bubble-chart.module';\nimport { RadarChartModule } from './radar-chart/radar-chart.module';\nimport { FunnelChartModule } from './funnel-chart/funnel-chart.module';\nimport { BackgroundModule } from './background/background.module';\nimport { GaugeModule } from './gauge/gauge.module';\nimport { PercentPieChartModule } from './percent-pie-chart/percent-pie-chart.module';\nimport { TreeRingChartModule } from './tree-ring-chart/tree-ring-chart.module';\nimport { LiquidFillModule } from './liquid-fill/liquid-fill.module';\nimport { ShufflingListModule } from './shuffling-list/shuffling-list.module';\n// import {DropDownDetailListModule} from './drop-down-detail-list/drop-down-detail-list.module';\n// import {DynamicListModule} from './dynamic-list/dynamic-list.module';\nimport { BasicPlanimetricMapModule } from './basic-planimetric-map/basic-planimetric-map.module';\nimport { BreathingBubbleLayerModule } from './breathing-bubble-layer/breathing-bubble-layer.module';\nimport { PlanimetricMap2dModule } from './planimetric-map2d/planimetric-map2d.module';\nimport { ParentContainerModule } from './parent-container/parent-container.module';\nimport { PlanimetricMap3dModule } from './planimetric-map3d/planimetric-map3d.module';\nimport { MipAnimComponent } from './mip-anim/mip-anim.component';\nimport { MipAnimModule } from './mip-anim/mip-anim.module';\nimport { TreeControlModule } from './tree-control/tree-control.module';\nimport { VisualMapChartModule } from './visual-map-chart/visual-map-chart.module';\nimport { DatePickerModule } from './date-picker/date-picker.module';\nimport { TimePickerModule } from './time-picker/time-picker.module';\nimport { CustomBaiduMapModule } from './custom-baidu-map/custom-baidu-map.module';\nimport { WidgetService } from 'bbj-widget-base';\nimport { ImageComponent } from './image/image.component';\nimport { icons } from './iconfont/icon';\nimport { IconfontComponent } from './iconfont/iconfont.component';\nimport { GeneralTextComponent } from './general-text/general-text.component';\nimport { WordartComponent } from './wordart/wordart.component';\nimport { AudioComponent } from './audio/audio.component';\nimport { BasicLineChartComponent } from './basic-line-chart/basic-line-chart.component';\nimport { BarChartThreeDComponent } from './bar-chart-three-d/bar-chart-three-d.component';\nimport { ShapeComponent } from './shape/shape.component';\nimport { LineBarChartComponent } from './line-bar-chart/line-bar-chart.component';\nimport { BackgroundComponent } from './background/background.component';\nimport { BasicPieChartComponent } from './basic-pie-chart/basic-pie-chart.component';\nimport { BasicBarChartComponent } from './basic-bar-chart/basic-bar-chart.component';\nimport { ButtonComponent } from './button/button.component';\nimport { SelectComponent } from './select/select.component';\nimport { UploadModule } from './upload/upload.module';\nimport { TreeControlComponent } from './tree-control/tree-control.component';\nimport { CrossTableModule } from './cross-table/cross-table.module';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { TableModule } from './table/table.module';\nimport { Pie3dChartModule } from './pie3d-chart/pie3d-chart.module';\nimport { MultiTitleGaugeModule } from './multi-title-gauge/multi-title-gauge.module';\nimport { GaugeProgressModule } from './gauge-progress/gauge.module';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { BulletinBoardModule } from './bulletin-board/bulletin-board.module';\n// import {MyBaiduMapModule} from './my-baidu-map/my-baidu-map.module';\n// import {DataMapModule} from './data-map/data-map.module';\nimport { ItemSwiperModule } from './item-swiper/item-swiper.module';\nimport { TemporaryDataModule } from './temporary-data/temporary-data.module';\nimport { LineLightFlowModule } from './line-light-flow/line-light-flow.module';\nimport { IframeModule } from './iframe/iframe.module';\nimport { VideoGridModule } from './video-grid/video-grid.module';\nimport { Scatter3dModule } from './scatter3d/scatter3d.module';\n@NgModule({\n imports: [\n FormsModule,\n ImageModule,\n BasicLineChartModule,\n BasicPieChartModule,\n BasicBarChartModule,\n LineBarChartModule,\n BarChartThreeDModule,\n BubbleChartModule,\n RadarChartModule,\n FunnelChartModule,\n PercentPieChartModule,\n TreeRingChartModule,\n GaugeModule,\n LiquidFillModule,\n ButtonModule,\n TimerModule,\n NumberFlopModule,\n VoteModule,\n SelectModule,\n SearchModule,\n WeatherModule,\n RadioModule,\n CheckboxModule,\n RateModule,\n GeneralTextModule,\n MarqueeModule,\n WordartModule,\n IconfontModule,\n TableModule,\n AudioModule,\n ShapeModule,\n BackgroundModule,\n ShufflingListModule,\n BasicPlanimetricMapModule,\n BreathingBubbleLayerModule,\n PlanimetricMap2dModule,\n ParentContainerModule,\n PlanimetricMap3dModule,\n MipAnimModule,\n TreeControlModule,\n VisualMapChartModule,\n DatePickerModule,\n TimePickerModule,\n CustomBaiduMapModule,\n UploadModule,\n CrossTableModule,\n Pie3dChartModule,\n MultiTitleGaugeModule,\n GaugeProgressModule,\n ItemSwiperModule,\n BulletinBoardModule,\n TemporaryDataModule,\n LineLightFlowModule,\n IframeModule,\n VideoGridModule,\n Scatter3dModule,\n // DropDownDetailListModule,\n // DynamicListModule,\n // MyBaiduMapModule,\n // DataMapModule\n ],\n exports: [],\n declarations: [],\n})\nexport class ScreenWidgetModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(ButtonComponent, { size: { width: 60, height: 30 } });\n widgetService.register(SelectComponent, {\n size: { width: 200, height: 36 },\n option: {\n borderColor: '#3285ff',\n background: 'rgba(50,133,255,0.2)',\n dropdownBackgroundColor: '#3285ff',\n selectDropDownColor: '#fff',\n selectHoverColor: '#fff',\n selectHoverBackgroundColor: '#3285ff',\n font: { color: '#ffffff' },\n dropdownBg: 'rgba(50,133,255,0.2)',\n dropdownBorderColor: '#3285ff',\n },\n });\n for (let i = 1; i <= 82; i++) {\n widgetService.register(ImageComponent, {\n option: { image: `assets/img/screen/picture${i}.png` },\n });\n }\n icons.forEach((icon) => {\n widgetService.register(IconfontComponent, {\n option: { icon },\n });\n });\n widgetService.register(\n GeneralTextComponent,\n {\n className: 'big-title title',\n title: '大标题',\n option: {\n title: '大标题',\n font: { family: '', color: '#ffffff', weight: 'normal', size: 36, space: 0, lineHeight: 50 },\n },\n },\n {\n className: 'normal-title title',\n title: '标题',\n option: {\n title: '标题',\n font: { family: '', color: '#ffffff', weight: 'normal', size: 32, space: 0, lineHeight: 45 },\n },\n },\n {\n className: 'subtitle title',\n title: '副标题',\n option: {\n title: '副标题',\n font: { family: '', color: '#ffffff', weight: 'normal', size: 24, space: 0, lineHeight: 33 },\n },\n },\n {\n className: 'small-title title',\n title: '小标题',\n option: {\n title: '小标题',\n font: { family: '', color: '#ffffff', weight: 'normal', size: 16, space: 0, lineHeight: 22 },\n },\n },\n {\n className: 'content title',\n title: '正文内容',\n option: {\n title: '正文内容',\n font: { family: '', color: '#ffffff', weight: 'normal', size: 13, space: 0, lineHeight: 18 },\n },\n },\n );\n widgetService.register(\n WordartComponent,\n {\n className: 'wordart1 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n font: { family: 'cursive', color: '#3285FF', weight: 'normal', size: 24, space: 0, lineHeight: '' },\n },\n },\n {\n className: 'wordart2 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n },\n {\n className: 'wordart3 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n backgroundImage: '-webkit-linear-gradient(-90deg, #09FFDD 14%, #0055FF 100%)',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n },\n {\n className: 'wordart4 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n backgroundImage: '-webkit-linear-gradient(-90deg, #F76B1C 14%, #FAD961 100%)',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n },\n {\n className: 'wordart5 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n backgroundImage: '-webkit-linear-gradient(-90deg, #B4EC51 14%, #429321 100%)',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n },\n {\n className: 'wordart6 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n backgroundImage: '-webkit-linear-gradient(-90deg, #3023AE 14%, #FE55FF 100%)',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n },\n );\n widgetService.register(\n AudioComponent,\n {\n title: '我的视频一号',\n option: {\n type: 'video',\n src: 'https://xiche.oss-cn-beijing.aliyuncs.com/video/20180417154421.mp4',\n },\n },\n {\n title: '我的视频二号',\n option: {\n type: 'audio',\n src: 'https://xiche.oss-cn-beijing.aliyuncs.com/video/20180417154421.mp4',\n },\n },\n );\n widgetService.register(\n BasicLineChartComponent,\n {\n option: {\n type: 'basic',\n font: { color: '#FFFFFF' },\n },\n image: 'assets/img/screen/basic-line-chart.png',\n },\n {\n title: '区域折线图',\n image: 'assets/img/screen/area-line-chart.png',\n option: {\n type: 'area',\n font: { color: '#FFFFFF' },\n },\n },\n {\n title: '基本曲线图',\n image: 'assets/img/screen/smooth-line-chart.png',\n group: 'smoothLineChart',\n option: {\n type: 'smooth',\n font: { color: '#FFFFFF' },\n },\n },\n {\n title: '区域曲线图',\n image: 'assets/img/screen/smooth-area-line-chart.png',\n group: 'smoothLineChart',\n option: {\n type: 'smooth-area',\n font: { color: '#FFFFFF' },\n },\n },\n {\n title: '阶梯线图',\n group: 'stepLineChart',\n option: {\n type: 'step',\n step: 'end',\n font: { color: '#FFFFFF' },\n },\n image: 'assets/img/screen/basic-line-chart.png',\n },\n );\n widgetService.register(\n BasicPieChartComponent,\n {\n option: {\n type: 'basic',\n },\n },\n {\n title: '环形饼图',\n image: 'assets/img/screen/pie-o.png',\n option: {\n type: 'ring',\n },\n },\n {\n title: '玫瑰饼图',\n image: 'assets/img/screen/rosePie.png',\n option: {\n type: 'rose',\n },\n },\n {\n title: '玫瑰环形饼图',\n image: 'assets/img/screen/roseRingPie.png',\n option: {\n type: 'roseRing',\n },\n },\n );\n widgetService.register(\n BasicBarChartComponent,\n {\n option: {\n font: { color: '#FFFFFF' },\n },\n },\n {\n title: '堆叠柱图',\n image: 'assets/img/screen/doubleBar.png',\n option: {\n type: 'double',\n font: { color: '#FFFFFF' },\n },\n },\n {\n title: '横向柱图',\n image: 'assets/img/screen/horiBar.png',\n option: {\n type: 'hori',\n font: { color: '#FFFFFF' },\n },\n },\n {\n title: '横向堆叠柱图',\n image: 'assets/img/screen/doubleHoriBar.png',\n option: {\n type: 'horiD',\n font: { color: '#FFFFFF' },\n },\n },\n {\n title: '双向柱图',\n image: 'assets/img/screen/doubleColorBar.png',\n option: {\n type: 'dcolor',\n font: { color: '#FFFFFF' },\n },\n },\n );\n widgetService.register(\n BarChartThreeDComponent,\n {\n title: '3D柱图',\n image: 'assets/img/screen/3Dbar.png',\n option: {\n type: '3D',\n },\n },\n {\n title: '3D堆叠柱图',\n image: 'assets/img/screen/3DdoubleBar.png',\n option: {\n type: '3Ddouble',\n },\n },\n {\n title: '3D横向柱图',\n image: 'assets/img/screen/3DhoriBar.png',\n option: {\n type: 'hori',\n },\n },\n {\n title: '3D堆叠横向柱图',\n image: 'assets/img/screen/3DdoubleHoriBar.png',\n option: {\n type: 'horiD',\n },\n },\n );\n widgetService.register(TreeControlComponent, {\n option: {\n font: {\n color: '#ffffff',\n },\n },\n });\n widgetService.register(\n ShapeComponent,\n {\n title: '线条',\n image: 'assets/img/screen/shape01.png',\n option: {\n type: 'line',\n },\n },\n {\n title: '三角形',\n image: 'assets/img/screen/shape06.png',\n option: {\n type: 'triangle',\n },\n },\n {\n title: '矩形',\n image: 'assets/img/screen/shape03.png',\n option: {\n type: 'rect',\n },\n },\n {\n title: '圆角矩形',\n image: 'assets/img/screen/shape04.png',\n option: {\n type: 'rect',\n fillet: 16,\n },\n },\n {\n title: '平行四边形',\n image: 'assets/img/screen/shape09.png',\n option: {\n type: 'parallelogram',\n deviation: 30,\n },\n },\n {\n title: '梯形',\n image: 'assets/img/screen/shape10.png',\n option: {\n type: 'trapezoid',\n upper: 50,\n bottom: 100,\n },\n },\n {\n title: '五边形',\n image: 'assets/img/screen/shape08.png',\n option: {\n type: 'polygonplus',\n side: 5,\n },\n },\n {\n title: '五角星',\n image: 'assets/img/screen/shape07.png',\n option: {\n type: 'polyhedrosis',\n side: 5,\n },\n },\n {\n title: '圆形',\n image: 'assets/img/screen/shape05.png',\n option: {\n type: 'circle',\n },\n },\n {\n title: '箭头',\n image: 'assets/img/screen/shape11.png',\n option: {\n type: 'polygon',\n data: [\n {\n x: 20,\n y: 80,\n },\n {\n x: 100,\n y: 80,\n },\n {\n x: 100,\n y: 40,\n },\n {\n x: 180,\n y: 100,\n },\n {\n x: 100,\n y: 160,\n },\n {\n x: 100,\n y: 120,\n },\n {\n x: 20,\n y: 120,\n },\n ],\n },\n },\n );\n for (let i = 1; i <= 75; i++) {\n widgetService.register(BackgroundComponent, {\n option: {\n image: `assets/img/screen/moduleBg${i}.png`,\n type: 'background',\n },\n });\n }\n for (let i = 1; i <= 8; i++) {\n widgetService.register(BackgroundComponent, {\n option: {\n image: `assets/img/screen/border${i}.png`,\n type: 'background',\n },\n });\n }\n for (let i = 1; i <= 8; i++) {\n widgetService.register(BackgroundComponent, {\n option: {\n image: `assets/img/screen/bg${i}.png`,\n type: 'border',\n },\n });\n }\n ['assets/img/screen/mipAnim1.gif', 'assets/img/screen/mipAnim2.gif'].forEach((image) => {\n widgetService.register(MipAnimComponent, {\n option: { image },\n });\n });\n widgetService.register(DatePickerComponent, {\n option: {\n borderColor: '#3285ff',\n font: { color: '#3285ff' },\n background: 'rgba(50,133,255,0.2)',\n },\n });\n widgetService.register(CheckboxComponent, {\n option: { font: { color: '#ffffff' } },\n });\n }\n}\n","import { Component, OnInit, ElementRef } from '@angular/core';\nimport { Widget, Property, Data } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-announcement',\n templateUrl: './announcement.component.html',\n styleUrls: ['./announcement.component.less'],\n})\n@Widget('公告', { group: 'component', image: 'assets/img/screen/announcement.png', icon: 'iconmokuai' })\nexport class AnnouncementComponent implements OnInit {\n @Property('显示图标', { type: 'boolean' })\n headIconDisplay = true;\n @Property('内边距', { ui: { widget: 'myGrid' } })\n padding: any = {\n top: 30,\n right: 24,\n bottom: 30,\n left: 24,\n };\n @Property('字体', { ui: { widget: 'myFont' } })\n font: any = {\n family: '',\n color: '#333333',\n weight: 'normal',\n size: 13,\n space: 0,\n lineHeight: '',\n };\n @Property('图标', { ui: { hidden: true } })\n icon = 'sound';\n @Data({\n properties: {\n content: { type: 'string', title: '公告内容' },\n },\n })\n data = [\n {\n content:\n '陆十三,男,共产党员,村小组长。多年来,他始终怀着对党、对人民无比热爱的赤诚之心,热衷于社会公益慈善事业,尽心竭力地为人民群众做好事实事,通过自身捐款、社会筹款等多种途径融资,为贫困山区、失学儿童送去…',\n },\n ];\n constructor(private element: ElementRef) {}\n\n ngOnInit() {\n if (this.padding) {\n this.element.nativeElement.style.padding = `${this.padding.top}px ${this.padding.right}px ${this.padding.bottom}px ${this.padding.left}px`;\n this.element.nativeElement.style.fontSize = this.font.size + 'px';\n this.element.nativeElement.style.fontFamily = this.font.family;\n this.element.nativeElement.style.color = this.font.color;\n this.element.nativeElement.style.fontWeight = this.font.weight;\n this.element.nativeElement.style.letterSpacing = this.font.space + 'px';\n this.element.nativeElement.style.lineHeight = this.font.lineHeight + 'px';\n }\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport { AnnouncementComponent } from './announcement.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\n\n@NgModule({\n declarations: [\n AnnouncementComponent\n ],\n imports: [\n CommonModule,\n WidgetBaseModule\n ]\n})\nexport class AnnouncementModule {\n constructor(private widgetService:WidgetService){\n widgetService.register(AnnouncementComponent);\n }\n}\n","import { Component, OnInit, ViewChild, OnChanges, SimpleChanges, EventEmitter } from '@angular/core';\nimport { Widget, Property, Data, DataOutput } from 'bbj-widget-base';\nimport { CalendarOptions, FullCalendarComponent } from '@fullcalendar/angular';\nimport { deepCopy } from '@delon/util';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sc-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.less'],\n})\n@Widget('日历', { group: 'component', image: 'assets/img/screen/rili.png', icon: 'iconmokuai' })\nexport class CalendarComponent implements OnInit, OnChanges {\n @Property('是否自定义初始日期', { ui: { format: 'date', widget: 'checkbox', spanLabel: 0, spanControl: 24 } })\n isInitialDate = true;\n @Property('', { ui: { type: 'date', format: 'date', spanLabel: 0, spanControl: 24 } })\n initialDate = '2020-07-18';\n @Data({\n properties: {\n id: { type: 'string', title: 'id' },\n start: { type: 'string', title: '开始日期' },\n end: { type: 'string', title: '结束日期' },\n title: { type: 'string', title: '内容' },\n },\n })\n data: any[] = [\n { end: '2020-07-21 00:00:00', start: '2020-07-19 00:00:00', title: 'event 3' },\n { end: '2020-07-19 00:00:00', start: '2020-07-18 00:00:00', title: 'event 4' },\n { end: '2020-07-22', start: '2020-07-20', title: 'event 5' },\n ];\n @DataOutput(['id', 'title'])\n dataClick = new EventEmitter<any>();\n\n constructor(private router: Router) {}\n calendarOptions: CalendarOptions;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.data) {\n // const events = this.data.map((item) => ({\n // id: item.id,\n // start: item.start.indexOf(' 00:00:00') > -1 ? item.start.split(' ')[0] : item.start,\n // end: item.end.indexOf(' 00:00:00') > -1 ? item.end.split(' ')[0] : item.end,\n // title: item.title,\n // }));\n this.calendarOptions = {\n headerToolbar: {\n left: 'prev,next today',\n center: 'title',\n right: 'timeGridDay,timeGridWeek,dayGridMonth',\n },\n buttonText: {\n dayGridMonth: '月',\n timeGridWeek: '周',\n timeGridDay: '日',\n today: '今日',\n },\n timeZone: 'local',\n initialDate: this.isInitialDate ? this.initialDate : null,\n events: this.data,\n locale: 'zh',\n eventTimeFormat: {\n hour: 'numeric',\n minute: '2-digit',\n hour12: false,\n },\n slotLabelFormat: { hour: 'numeric', minute: '2-digit', hour12: false },\n eventClick: (info) => {\n info.jsEvent.preventDefault();\n this.dataClick.emit({ id: info.event.id, title: info.event.title });\n },\n };\n }\n }\n ngOnInit(): void {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { CalendarComponent } from './calendar.component';\nimport { FullCalendarModule } from '@fullcalendar/angular';\nimport dayGridPlugin from '@fullcalendar/daygrid'; // a plugin\nimport timeGridPlugin from '@fullcalendar/timegrid'; // a plugin\nimport interactionPlugin from '@fullcalendar/interaction'; // a plugin\n\n@NgModule({\n declarations: [CalendarComponent],\n imports: [CommonModule, WidgetBaseModule, FullCalendarModule],\n})\nexport class CalendarModule {\n constructor(widgetService: WidgetService) {\n FullCalendarModule.registerPlugins([\n dayGridPlugin,\n timeGridPlugin,\n interactionPlugin,\n ]);\n widgetService.register(CalendarComponent);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Property, Widget } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.less'],\n})\n@Widget('标签页', {\n group: 'component',\n children: [\n {\n title: '选项卡1',\n type: 'sc-tab',\n option: { title: 'Tab 1' },\n hidden: true,\n hideChild: true,\n },\n ],\n childTypes: ['sc-tab'],\n})\nexport class TabsComponent implements OnInit {\n @Property('页签样式', {\n enum: [\n { label: '线条', value: 'line' },\n { label: '卡片', value: 'card' },\n ],\n })\n type = 'line';\n @Property('尺寸', {\n enum: [\n { label: '大', value: 'large' },\n { label: '中', value: 'default' },\n { label: '小', value: 'small' },\n ],\n })\n size = 'default';\n @Property('页签位置', {\n enum: [\n { label: '上', value: 'top' },\n { label: '右', value: 'right' },\n { label: '下', value: 'bottom' },\n { label: '左', value: 'left' },\n ],\n })\n tabPosition = 'top';\n @Property('切换动画', { type: 'boolean', ui: { visibleIf: { tabPosition: ['top', 'bottom'] } } })\n animated = true;\n @Property('间隙')\n tabBarGutter: number;\n\n selectedIndex = 0;\n\n children: any[];\n\n constructor() {}\n\n ngOnInit(): void {}\n\n getContainer() {\n if (this.children) {\n const selectedChild = this.children[this.selectedIndex];\n if (selectedChild) {\n return selectedChild.id;\n }\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Property, Widget } from 'bbj-widget-base';\n\n@Component({\n selector: 'sc-tab',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.less'],\n})\n@Widget('选项卡', { hidden: true })\nexport class TabComponent implements OnInit {\n @Property('标题')\n title = 'New Tab';\n children: any[];\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TabsComponent } from './tabs.component';\nimport { WidgetBaseModule, WidgetService } from 'bbj-widget-base';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\nimport { TabComponent } from './tab/tab.component';\n\n@NgModule({\n declarations: [TabsComponent, TabComponent],\n imports: [CommonModule, WidgetBaseModule, NzTabsModule],\n})\nexport class TabsModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(TabsComponent);\n widgetService.register(TabComponent);\n }\n}\n","import {\n Component,\n ElementRef,\n EmbeddedViewRef,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { Data, Property, Widget } from 'bbj-widget-base';\n\nimport { isDate, format, min, parseISO } from 'date-fns';\nimport { getUUID } from '../shared/util/base.util';\n\n@Component({\n selector: 'sc-gantt',\n templateUrl: './gantt.component.html',\n styleUrls: ['./gantt.component.less'],\n})\n@Widget('甘特图', { group: 'component', image: 'assets/img/screen/gantt.png', icon: 'iconmokuai' })\nexport class GanttComponent implements OnInit, OnChanges {\n @ViewChild('fcEventContent', { static: true }) eventContent: TemplateRef<any>;\n private readonly contentRenderers = new Map<string, EmbeddedViewRef<any>>();\n @Property('头部名称', { type: 'string' })\n headerContent = '项目';\n @Property('项目字体', { ui: { widget: 'myFont' } })\n contentFont: any = { family: '', color: '', weight: 'normal', size: 12, space: 0, lineHeight: 40 };\n @Property('系列颜色', {\n ui: {\n widget: 'seriesColor',\n example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],\n },\n })\n lineColor = ['rgba(50,133,255,1)', 'rgba(123,113,192,1' + ')'];\n @Property('进度透明', { type: 'number', max: 1 })\n progressTransparency = 0.8;\n @Property('区域占比', { type: 'number' })\n areaRate = 20;\n @Property('进度条高度', { type: 'number' })\n progressHeight = 32;\n @Data({\n properties: {\n start: { type: 'string', title: '开始日期' },\n end: { type: 'string', title: '结束日期' },\n title: { type: 'string', title: '待办事项' },\n project: { type: 'string', title: '所属项目' },\n progress: { type: 'string', title: '进度' },\n },\n })\n data: any[] = [\n { start: '2020-11-10', end: '2020-11-15', title: '代办事件1', project: 'benbenjun', progress: '0.4' },\n { start: '2020-10-10', end: '2020-11-11', title: '代办事件2', project: 'benbenjun2', progress: '0.6' },\n { start: '2020-10-11', end: '2020-11-19', title: '代办事件3', project: 'benbenjun3', progress: '0.9' },\n ];\n calendarOptions: any;\n resources: any = [];\n events: any = [];\n\n initDate: any;\n\n constructor(private ele: ElementRef) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.init();\n }\n\n init() {\n if (this.contentFont) {\n this.ele.nativeElement.style.setProperty('--fontSize', this.contentFont.size + 'px');\n this.ele.nativeElement.style.setProperty('--color', this.contentFont.color);\n this.ele.nativeElement.style.setProperty('--weight', this.contentFont.weight);\n this.ele.nativeElement.style.setProperty('--family', this.contentFont.weight);\n this.ele.nativeElement.style.setProperty('--lineHeight', this.contentFont.lineHeight + 'px');\n this.ele.nativeElement.style.setProperty('--height', this.progressHeight + 'px');\n }\n\n // if (changes.data) {\n if (this.data == null || this.data.length < 1) {\n return;\n }\n const dateArr = [];\n let arrIndex = 0;\n this.data.forEach((d) => {\n let color = '';\n if (this.lineColor !== null && this.lineColor.length > 0) {\n if (arrIndex >= this.lineColor.length) {\n arrIndex = 0;\n }\n color = this.lineColor[arrIndex];\n }\n dateArr.push(parseISO(d.start));\n this.resources.push({ id: d.project, title: d.project, eventColor: 'rgb(0,210,253,0)' });\n this.events.push({\n id: getUUID(),\n resourceId: d.project,\n start: d.start,\n end: d.end,\n title: d.title,\n backColor: color,\n progress: d.progress,\n });\n arrIndex++;\n });\n this.calendarOptions = {\n timeZone: 'UTC',\n headerToolbar: {\n left: 'today prev,next',\n center: 'title',\n right: 'resourceTimelineDay,resourceTimelineTenDay,resourceTimelineMonth,resourceTimelineYear',\n },\n initialView: 'resourceTimelineMonth',\n scrollTime: '08:00',\n aspectRatio: 1.5,\n initialDate: this.initDate ? format(this.initDate, 'yyyy-MM-dd') : format(min(dateArr), 'yyyy-MM-dd'),\n views: {\n resourceTimelineDay: {\n buttonText: '小时',\n slotDuration: '00:15',\n },\n resourceTimelineTenDay: {\n type: 'resourceTimeline',\n duration: { days: 10 },\n buttonText: '未来10天',\n },\n resourceTimelineMonth: {\n buttonText: '月',\n // dayHeaders:false,\n // // columnFormat: 'dddd',\n // dayNames: ['1', '2', '3', '4', '5', '6', '7'],\n // dayNamesShort: ['1', '2', '3', '4', '5', '6', '7'],\n // dayHeaderFormat:{weekday:'long'},\n // dayHeaderContent: (data) => {\n // console.log(data);\n // },\n slotLabelFormat: [{ day: 'numeric' }, { weekday: 'long' }],\n },\n resourceTimelineYear: {\n buttonText: '年',\n slotLabelFormat: [{ month: 'long' }],\n // slotDuration: '48:00:00',\n slotLabelInterval: { month: 1 },\n },\n },\n buttonText: {\n today: '今日',\n },\n editable: false,\n resourceAreaHeaderContent: this.headerContent,\n locale: 'zh-cn',\n // dayHeaderFormat: {weekday: 'long'},\n resourceAreaWidth: this.areaRate + '%',\n resources: [],\n // visibleRange: {\n // start: '2020-03-22',\n // end: '2020-03-25'\n // },\n events: [],\n columnFormat: 'dddd',\n eventContent: (arg) => this.renderEventContent(arg),\n eventWillUnmount: (arg) => this.unrenderEvent(arg),\n };\n this.calendarOptions.resources = this.resources;\n this.calendarOptions.events = this.events;\n // }\n }\n\n renderEventContent(args) {\n let renderer = this.contentRenderers.get(args.event.id);\n const proColor =\n args.event.extendedProps.backColor.substr(0, args.event.extendedProps.backColor.lastIndexOf(',') + 1) +\n this.progressTransparency +\n ')';\n const data = {\n barStyle: {\n width: args.event.extendedProps.progress * 100 + '%',\n backgroundColor: args.event.extendedProps.backColor,\n },\n progressStyle: {\n backgroundColor: proColor,\n },\n title: args.event.title,\n progress: Number(args.event.extendedProps.progress) * 100 + '%',\n start: format(args.event.start, 'yyyy-MM-dd'),\n end: format(args.event.end, 'yyyy-MM-dd'),\n };\n // if (!renderer) {\n // Make a new renderer and save it so that we can destroy when the event is unmounted.\n renderer = this.eventContent.createEmbeddedView({ data });\n this.contentRenderers.set(args.event.id, renderer);\n // } else {\n // // Just update the existing renderer.\n // renderer.context.data = data;\n // renderer.markForCheck();\n // }\n renderer.detectChanges();\n return { domNodes: renderer.rootNodes };\n }\n\n unrenderEvent(arg) {\n const renderer = this.contentRenderers.get(arg.event.id);\n if (renderer) {\n renderer.destroy();\n }\n }\n\n // onChange(events) {\n //\n // }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {GanttComponent} from './gantt.component';\nimport {WidgetBaseModule, WidgetService} from 'bbj-widget-base';\nimport {FullCalendarModule} from '@fullcalendar/angular';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport timeGridPlugin from '@fullcalendar/timegrid';\nimport interactionPlugin from '@fullcalendar/interaction';\nimport resourceTimelinePlugin from '@fullcalendar/resource-timeline';\nimport {NzToolTipModule} from 'ng-zorro-antd/tooltip';\n// import {FormsModule} from '@angular/forms';\n// import {NzDatePickerModule} from 'ng-zorro-antd/date-picker';\n\n\n@NgModule({\n declarations: [GanttComponent],\n imports: [\n CommonModule,\n WidgetBaseModule,\n FullCalendarModule,\n NzToolTipModule,\n // FormsModule,\n // NzDatePickerModule,\n ],\n})\nexport class GanttModule {\n constructor(widgetService: WidgetService) {\n FullCalendarModule.registerPlugins([\n // register FullCalendar plugins\n dayGridPlugin,\n timeGridPlugin,\n interactionPlugin,\n resourceTimelinePlugin,\n ]);\n widgetService.register(GanttComponent);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ImageModule } from './image/image.module';\nimport { BasicLineChartModule } from './basic-line-chart/basic-line-chart.module';\nimport { ButtonModule } from './button/button.module';\nimport { TimerModule } from './timer/timer.module';\nimport { NumberFlopModule } from './number-flop/number-flop.module';\nimport { VoteModule } from './vote/vote.module';\nimport { SelectModule } from './select/select.module';\nimport { SearchModule } from './search/search.module';\nimport { WeatherModule } from './weather/weather.module';\nimport { RadioModule } from './radio/radio.module';\nimport { CheckboxModule } from './checkbox/checkbox.module';\nimport { RateModule } from './rate/rate.module';\nimport { GeneralTextModule } from './general-text/general-text.module';\nimport { MarqueeModule } from './marquee/marquee.module';\nimport { WordartModule } from './wordart/wordart.module';\nimport { IconfontModule } from './iconfont/iconfont.module';\nimport { AudioModule } from './audio/audio.module';\nimport { BasicBarChartModule } from './basic-bar-chart/basic-bar-chart.module';\nimport { BasicPieChartModule } from './basic-pie-chart/basic-pie-chart.module';\nimport { BarChartThreeDModule } from './bar-chart-three-d/bar-chart-three-d.module';\nimport { ShapeModule } from './shape/shape.module';\nimport { LineBarChartModule } from './line-bar-chart/line-bar-chart.module';\nimport { BubbleChartModule } from './bubble-chart/bubble-chart.module';\nimport { RadarChartModule } from './radar-chart/radar-chart.module';\nimport { FunnelChartModule } from './funnel-chart/funnel-chart.module';\nimport { BackgroundModule } from './background/background.module';\nimport { GaugeModule } from './gauge/gauge.module';\nimport { PercentPieChartModule } from './percent-pie-chart/percent-pie-chart.module';\nimport { TreeRingChartModule } from './tree-ring-chart/tree-ring-chart.module';\nimport { LiquidFillModule } from './liquid-fill/liquid-fill.module';\nimport { WidgetService } from 'bbj-widget-base';\nimport { BasicBarChartComponent } from './basic-bar-chart/basic-bar-chart.component';\nimport { ButtonComponent } from './button/button.component';\nimport { ImageComponent } from './image/image.component';\nimport { BasicLineChartComponent } from './basic-line-chart/basic-line-chart.component';\nimport { BasicPieChartComponent } from './basic-pie-chart/basic-pie-chart.component';\nimport { TreeRingChartComponent } from './tree-ring-chart/tree-ring-chart.component';\nimport { LineBarChartComponent } from './line-bar-chart/line-bar-chart.component';\nimport { BarChartThreeDComponent } from './bar-chart-three-d/bar-chart-three-d.component';\nimport { BubbleChartComponent } from './bubble-chart/bubble-chart.component';\nimport { RadarChartComponent } from './radar-chart/radar-chart.component';\nimport { FunnelChartComponent } from './funnel-chart/funnel-chart.component';\nimport { GaugeComponent } from './gauge/gauge.component';\nimport { TimerComponent } from './timer/timer.component';\nimport { NumberFlopComponent } from './number-flop/number-flop.component';\nimport { VoteComponent } from './vote/vote.component';\nimport { SelectComponent } from './select/select.component';\nimport { SearchComponent } from './search/search.component';\nimport { WeatherComponent } from './weather/weather.component';\nimport { RadioComponent } from './radio/radio.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { RateComponent } from './rate/rate.component';\nimport { GeneralTextComponent } from './general-text/general-text.component';\nimport { IconfontComponent } from './iconfont/iconfont.component';\nimport { WordartComponent } from './wordart/wordart.component';\nimport { MarqueeComponent } from './marquee/marquee.component';\nimport { AudioComponent } from './audio/audio.component';\nimport { PercentPieChartComponent } from './percent-pie-chart/percent-pie-chart.component';\nimport { LiquidFillComponent } from './liquid-fill/liquid-fill.component';\nimport { ShapeComponent } from './shape/shape.component';\nimport { BackgroundComponent } from './background/background.component';\nimport { AnnouncementComponent } from './announcement/announcement.component';\nimport { AnnouncementModule } from './announcement/announcement.module';\nimport { TableModule } from './table/table.module';\nimport { TableComponent } from './table/table.component';\nimport { BasicPlanimetricMapModule } from './basic-planimetric-map/basic-planimetric-map.module';\nimport { BreathingBubbleLayerModule } from './breathing-bubble-layer/breathing-bubble-layer.module';\nimport { PlanimetricMap2dModule } from './planimetric-map2d/planimetric-map2d.module';\nimport { ParentContainerModule } from './parent-container/parent-container.module';\nimport { BasicPlanimetricMapComponent } from './basic-planimetric-map/basic-planimetric-map.component';\nimport { PlanimetricMap3dModule } from './planimetric-map3d/planimetric-map3d.module';\nimport { PlanimetricMap3dComponent } from './planimetric-map3d/planimetric-map3d.component';\nimport { CalendarModule } from './calendar/calendar.module';\nimport { CalendarComponent } from './calendar/calendar.component';\nimport { VisualMapChartModule } from './visual-map-chart/visual-map-chart.module';\nimport { TimePickerModule } from './time-picker/time-picker.module';\nimport { DatePickerModule } from './date-picker/date-picker.module';\nimport { TreeControlModule } from './tree-control/tree-control.module';\nimport { CustomBaiduMapModule } from './custom-baidu-map/custom-baidu-map.module';\nimport { icons } from './iconfont/icon';\nimport { TreeControlComponent } from './tree-control/tree-control.component';\nimport { TabsModule } from './tabs/tabs.module';\nimport { MipAnimComponent } from './mip-anim/mip-anim.component';\nimport { MipAnimModule } from './mip-anim/mip-anim.module';\nimport { UploadModule } from './upload/upload.module';\nimport { CrossTableModule } from './cross-table/cross-table.module';\nimport { GanttModule } from './gantt/gantt.module';\nimport { Pie3dChartModule } from './pie3d-chart/pie3d-chart.module';\n\nimport { LineLightFlowModule } from './line-light-flow/line-light-flow.module';\nimport { TemporaryDataModule } from './temporary-data/temporary-data.module';\n\n@NgModule({\n imports: [\n ImageModule,\n BasicLineChartModule,\n BasicPieChartModule,\n BasicBarChartModule,\n LineBarChartModule,\n BarChartThreeDModule,\n BubbleChartModule,\n RadarChartModule,\n FunnelChartModule,\n PercentPieChartModule,\n TreeRingChartModule,\n GaugeModule,\n LiquidFillModule,\n ButtonModule,\n TimerModule,\n NumberFlopModule,\n VoteModule,\n SelectModule,\n SearchModule,\n WeatherModule,\n RadioModule,\n CheckboxModule,\n RateModule,\n GeneralTextModule,\n MarqueeModule,\n WordartModule,\n IconfontModule,\n AudioModule,\n ShapeModule,\n BackgroundModule,\n // BasicSmoothLineChartModule,\n AnnouncementModule,\n TableModule,\n BasicPlanimetricMapModule,\n BreathingBubbleLayerModule,\n PlanimetricMap2dModule,\n ParentContainerModule,\n PlanimetricMap3dModule,\n TreeControlModule,\n VisualMapChartModule,\n TimePickerModule,\n DatePickerModule,\n CustomBaiduMapModule,\n TabsModule,\n MipAnimModule,\n CalendarModule,\n UploadModule,\n CrossTableModule,\n GanttModule,\n Pie3dChartModule,\n LineLightFlowModule,\n TemporaryDataModule,\n ],\n exports: [],\n declarations: [],\n})\nexport class WorkbenchWidgetModule {\n constructor(widgetService: WidgetService) {\n widgetService.register(ButtonComponent, { option: {}, size: { width: 3, height: 3 } });\n widgetService.register(CalendarComponent, { option: {}, size: { width: 16, height: 12 } });\n for (let i = 1; i <= 82; i++) {\n widgetService.register(ImageComponent, {\n option: { image: `assets/img/screen/picture${i}.png`, hideHead: true },\n size: { width: 6, height: 6 },\n });\n }\n icons.forEach((icon) => {\n widgetService.register(IconfontComponent, {\n option: { type: 'iconfont', icon, hideHead: true },\n size: { width: 4, height: 4 },\n });\n });\n widgetService.register(TimerComponent, {\n option: { font: { color: '#595F7A' } },\n size: { width: 10, height: 4 },\n });\n widgetService.register(NumberFlopComponent, { size: { width: 12, height: 6 } });\n widgetService.register(VoteComponent, { size: { width: 6, height: 6 } });\n widgetService.register(SelectComponent, { size: { width: 6, height: 4 } });\n widgetService.register(SearchComponent, { size: { width: 6, height: 3 } });\n widgetService.register(WeatherComponent, {\n option: { tempFont: { color: '#595F7A' } },\n size: { width: 10, height: 6 },\n });\n widgetService.register(RadioComponent, {\n option: { font: { color: '#595F7A' } },\n size: { width: 6, height: 4 },\n });\n widgetService.register(RateComponent, {\n option: { font: { color: '#595F7A' } },\n size: { width: 6, height: 6 },\n });\n widgetService.register(\n GeneralTextComponent,\n {\n className: 'big-title title',\n title: '大标题',\n option: {\n title: '大标题',\n font: { family: '', color: '#333333', weight: 'normal', size: 36, space: 0, lineHeight: 50 },\n },\n size: { width: 5, height: 3 },\n },\n {\n className: 'normal-title title',\n title: '标题',\n option: {\n title: '标题',\n font: { family: '', color: '#333333', weight: 'normal', size: 32, space: 0, lineHeight: 45 },\n },\n size: { width: 5, height: 3 },\n },\n {\n className: 'subtitle title',\n title: '副标题',\n option: {\n title: '副标题',\n font: { family: '', color: '#333333', weight: 'normal', size: 24, space: 0, lineHeight: 33 },\n },\n size: { width: 5, height: 3 },\n },\n {\n className: 'small-title title',\n title: '小标题',\n option: {\n title: '小标题',\n font: { family: '', color: '#333333', weight: 'normal', size: 16, space: 0, lineHeight: 22 },\n },\n size: { width: 5, height: 3 },\n },\n {\n className: 'content title',\n title: '正文内容',\n option: {\n title: '正文内容',\n font: { family: '', color: '#333333', weight: 'normal', size: 13, space: 0, lineHeight: 18 },\n },\n size: { width: 5, height: 3 },\n },\n );\n widgetService.register(\n WordartComponent,\n {\n className: 'wordart1 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n font: { family: 'cursive', color: '#3285FF', weight: 'normal', size: 24, space: 0, lineHeight: '' },\n },\n size: { width: 7, height: 3 },\n },\n {\n className: 'wordart2 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n size: { width: 7, height: 3 },\n },\n {\n className: 'wordart3 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n backgroundImage: '-webkit-linear-gradient(-90deg, #09FFDD 14%, #0055FF 100%)',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n size: { width: 7, height: 3 },\n },\n {\n className: 'wordart4 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n backgroundImage: '-webkit-linear-gradient(-90deg, #F76B1C 14%, #FAD961 100%)',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n size: { width: 7, height: 3 },\n },\n {\n className: 'wordart5 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n backgroundImage: '-webkit-linear-gradient(-90deg, #B4EC51 14%, #429321 100%)',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n size: { width: 7, height: 3 },\n },\n {\n className: 'wordart6 wordart',\n title: '可视化数字大屏',\n option: {\n title: '可视化数字大屏',\n backgroundImage: '-webkit-linear-gradient(-90deg, #3023AE 14%, #FE55FF 100%)',\n font: { family: 'sans-serif', color: '#7ee5ce', weight: 'bold', size: 24, space: 0, lineHeight: '' },\n },\n size: { width: 7, height: 3 },\n },\n );\n widgetService.register(MarqueeComponent, {\n option: {\n font: { color: '#595F7A' },\n },\n size: { width: 7, height: 3 },\n });\n widgetService.register(\n AudioComponent,\n {\n title: '我的视频一号',\n option: {\n type: 'video',\n src: 'https://xiche.oss-cn-beijing.aliyuncs.com/video/20180417154421.mp4',\n },\n },\n {\n title: '我的视频二号',\n option: {\n type: 'audio',\n src: 'https://xiche.oss-cn-beijing.aliyuncs.com/video/20180417154421.mp4',\n },\n },\n );\n widgetService.register(\n BasicLineChartComponent,\n {\n option: {\n type: 'basic',\n },\n image: 'assets/img/screen/basic-line-chart.png',\n },\n {\n title: '区域折线图',\n image: 'assets/img/screen/area-line-chart.png',\n option: {\n type: 'area',\n },\n },\n {\n title: '基本曲线图',\n image: 'assets/img/screen/smooth-line-chart.png',\n group: 'smoothLineChart',\n option: {\n type: 'smooth',\n },\n },\n {\n title: '区域曲线图',\n image: 'assets/img/screen/smooth-area-line-chart.png',\n group: 'smoothLineChart',\n option: {\n type: 'smooth-area',\n },\n },\n {\n title: '阶梯线图',\n group: 'stepLineChart',\n option: {\n type: 'step',\n step: 'end',\n },\n image: 'assets/img/screen/basic-line-chart.png',\n },\n );\n widgetService.register(\n BasicPieChartComponent,\n {\n option: {\n type: 'basic',\n font: { color: '#595F7A' },\n },\n },\n {\n title: '环形饼图',\n image: 'assets/img/screen/pie-o.png',\n option: {\n type: 'ring',\n font: { color: '#595F7A' },\n },\n },\n {\n title: '玫瑰饼图',\n image: 'assets/img/screen/rosePie.png',\n option: {\n type: 'rose',\n font: { color: '#595F7A' },\n },\n },\n {\n title: '玫瑰环形饼图',\n image: 'assets/img/screen/roseRingPie.png',\n option: {\n type: 'roseRing',\n font: { color: '#595F7A' },\n },\n },\n );\n widgetService.register(PercentPieChartComponent, {\n option: {\n font: { color: '#595F7A' },\n },\n });\n widgetService.register(TreeRingChartComponent, {\n option: {\n font: { color: '#595F7A' },\n },\n });\n widgetService.register(\n BasicBarChartComponent,\n {},\n {\n title: '堆叠柱图',\n image: 'assets/img/screen/doubleBar.png',\n option: {\n type: 'double',\n },\n },\n {\n title: '横向柱图',\n image: 'assets/img/screen/horiBar.png',\n option: {\n type: 'hori',\n },\n },\n {\n title: '横向堆叠柱图',\n image: 'assets/img/screen/doubleHoriBar.png',\n option: {\n type: 'horiD',\n },\n },\n {\n title: '双向柱图',\n image: 'assets/img/screen/doubleColorBar.png',\n option: {\n type: 'dcolor',\n },\n },\n );\n widgetService.register(LineBarChartComponent, {\n title: '折线柱图',\n image: 'assets/img/screen/lineBar.png',\n option: {\n type: 'line',\n font: { color: '#595F7A' },\n },\n });\n widgetService.register(\n BarChartThreeDComponent,\n {\n title: '3D柱图',\n image: 'assets/img/screen/3Dbar.png',\n option: {\n type: '3D',\n font: { color: '#595F7A' },\n },\n },\n {\n title: '3D堆叠柱图',\n image: 'assets/img/screen/3DdoubleBar.png',\n option: {\n type: '3Ddouble',\n font: { color: '#595F7A' },\n },\n },\n {\n title: '3D横向柱图',\n image: 'assets/img/screen/3DhoriBar.png',\n option: {\n type: 'hori',\n font: { color: '#595F7A' },\n },\n },\n {\n title: '3D堆叠横向柱图',\n image: 'assets/img/screen/3DdoubleHoriBar.png',\n option: {\n type: 'horiD',\n font: { color: '#595F7A' },\n },\n },\n );\n widgetService.register(BubbleChartComponent, {\n title: '散点图',\n image: 'assets/img/screen/bubble.png',\n option: {\n type: 'bubble',\n font: { color: '#595F7A' },\n },\n });\n widgetService.register(RadarChartComponent, {\n title: '雷达图',\n image: 'assets/img/screen/radar.png',\n option: {\n type: 'radar',\n font: { color: '#595F7A' },\n },\n });\n widgetService.register(FunnelChartComponent, {\n title: '三角图',\n image: 'assets/img/screen/funnel.png',\n option: {\n type: 'funnel',\n font: { color: '#595F7A' },\n },\n });\n widgetService.register(GaugeComponent, {\n option: {\n font: { color: '#595F7A' },\n },\n });\n widgetService.register(LiquidFillComponent, {\n option: {\n font: { color: '#595F7A' },\n },\n });\n widgetService.register(\n ShapeComponent,\n {\n title: '线条',\n image: 'assets/img/screen/shape01.png',\n option: {\n type: 'line',\n },\n size: { width: 6, height: 7 },\n },\n {\n title: '三角形',\n image: 'assets/img/screen/shape06.png',\n option: {\n type: 'triangle',\n },\n size: { width: 6, height: 7 },\n },\n {\n title: '矩形',\n image: 'assets/img/screen/shape03.png',\n option: {\n type: 'rect',\n },\n size: { width: 6, height: 7 },\n },\n {\n title: '圆角矩形',\n image: 'assets/img/screen/shape04.png',\n option: {\n type: 'rect',\n fillet: 16,\n },\n size: { width: 6, height: 7 },\n },\n {\n title: '平行四边形',\n image: 'assets/img/screen/shape09.png',\n option: {\n type: 'parallelogram',\n bottom: 110,\n deviation: 30,\n },\n size: { width: 6, height: 7 },\n },\n {\n title: '梯形',\n image: 'assets/img/screen/shape10.png',\n option: {\n type: 'trapezoid',\n upper: 70,\n bottom: 100,\n deviation: 0,\n },\n size: { width: 6, height: 7 },\n },\n {\n title: '五边形',\n image: 'assets/img/screen/shape08.png',\n option: {\n type: 'polygonplus',\n side: 5,\n },\n size: { width: 6, height: 7 },\n },\n {\n title: '五角星',\n image: 'assets/img/screen/shape07.png',\n option: {\n type: 'polyhedrosis',\n side: 5,\n },\n size: { width: 6, height: 7 },\n },\n {\n title: '圆形',\n image: 'assets/img/screen/shape05.png',\n option: {\n type: 'circle',\n },\n size: { width: 6, height: 7 },\n },\n {\n title: '箭头',\n image: 'assets/img/screen/shape11.png',\n option: {\n type: 'polygon',\n data: [\n {\n x: 20,\n y: 80,\n },\n {\n x: 100,\n y: 80,\n },\n {\n x: 100,\n y: 40,\n },\n {\n x: 180,\n y: 100,\n },\n {\n x: 100,\n y: 160,\n },\n {\n x: 100,\n y: 120,\n },\n {\n x: 20,\n y: 120,\n },\n ],\n },\n },\n );\n for (let i = 1; i <= 75; i++) {\n widgetService.register(BackgroundComponent, {\n option: {\n image: `assets/img/screen/moduleBg${i}.png`,\n type: 'background',\n },\n size: { width: 10, height: 3 },\n });\n }\n for (let i = 1; i <= 8; i++) {\n widgetService.register(BackgroundComponent, {\n option: {\n image: `assets/img/screen/border${i}.png`,\n type: 'background',\n },\n size: { width: 10, height: 10 },\n });\n }\n for (let i = 1; i <= 8; i++) {\n widgetService.register(BackgroundComponent, {\n option: {\n image: `assets/img/screen/bg${i}.png`,\n type: 'border',\n },\n size: { width: 10, height: 10 },\n });\n }\n widgetService.register(AnnouncementComponent, { size: { width: 14, height: 6 } });\n widgetService.register(TableComponent, {\n option: {\n image: 'assets/img/screen/table.png',\n },\n });\n widgetService.register(BasicPlanimetricMapComponent, { size: { width: 12, height: 12 } });\n widgetService.register(PlanimetricMap3dComponent, { size: { width: 12, height: 12 } });\n ['assets/img/screen/mipAnim1.gif', 'assets/img/screen/mipAnim2.gif'].forEach((image) => {\n widgetService.register(MipAnimComponent, {\n option: { image },\n size: { height: 6, width: 6 },\n });\n });\n }\n}\n"]}