@visactor/vrender-components 0.17.0-alpha.7 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/cjs/axis/circle.d.ts +3 -3
  2. package/cjs/axis/circle.js +2 -2
  3. package/cjs/axis/circle.js.map +1 -1
  4. package/cjs/axis/grid/base.js +2 -2
  5. package/cjs/axis/grid/base.js.map +1 -1
  6. package/cjs/axis/grid/circle.d.ts +2 -1
  7. package/cjs/axis/grid/circle.js +2 -2
  8. package/cjs/axis/grid/circle.js.map +1 -1
  9. package/cjs/axis/grid/line.d.ts +2 -1
  10. package/cjs/axis/grid/line.js +2 -3
  11. package/cjs/axis/grid/line.js.map +1 -1
  12. package/cjs/axis/line.d.ts +2 -1
  13. package/cjs/axis/line.js +2 -2
  14. package/cjs/axis/line.js.map +1 -1
  15. package/cjs/axis/type.d.ts +5 -23
  16. package/cjs/axis/type.js.map +1 -1
  17. package/cjs/brush/brush.d.ts +2 -1
  18. package/cjs/brush/brush.js +3 -3
  19. package/cjs/brush/brush.js.map +1 -1
  20. package/cjs/checkbox/checkbox.d.ts +2 -1
  21. package/cjs/checkbox/checkbox.js +3 -3
  22. package/cjs/checkbox/checkbox.js.map +1 -1
  23. package/cjs/core/base.d.ts +4 -2
  24. package/cjs/core/base.js +4 -2
  25. package/cjs/core/base.js.map +1 -1
  26. package/cjs/core/type.d.ts +15 -0
  27. package/cjs/core/type.js.map +1 -1
  28. package/cjs/crosshair/circle.d.ts +2 -1
  29. package/cjs/crosshair/circle.js +2 -2
  30. package/cjs/crosshair/circle.js.map +1 -1
  31. package/cjs/crosshair/line.d.ts +2 -1
  32. package/cjs/crosshair/line.js +2 -2
  33. package/cjs/crosshair/line.js.map +1 -1
  34. package/cjs/crosshair/polygon.d.ts +2 -1
  35. package/cjs/crosshair/polygon.js +2 -2
  36. package/cjs/crosshair/polygon.js.map +1 -1
  37. package/cjs/crosshair/rect.d.ts +2 -1
  38. package/cjs/crosshair/rect.js +2 -2
  39. package/cjs/crosshair/rect.js.map +1 -1
  40. package/cjs/crosshair/sector.d.ts +2 -1
  41. package/cjs/crosshair/sector.js +2 -2
  42. package/cjs/crosshair/sector.js.map +1 -1
  43. package/cjs/data-zoom/data-zoom.d.ts +2 -1
  44. package/cjs/data-zoom/data-zoom.js +3 -3
  45. package/cjs/data-zoom/data-zoom.js.map +1 -1
  46. package/cjs/index.d.ts +1 -1
  47. package/cjs/index.js +1 -1
  48. package/cjs/index.js.map +1 -1
  49. package/cjs/indicator/indicator.js.map +1 -1
  50. package/cjs/indicator/type.d.ts +3 -5
  51. package/cjs/indicator/type.js.map +1 -1
  52. package/cjs/interface.d.ts +4 -0
  53. package/cjs/interface.js.map +1 -1
  54. package/cjs/label/arc.d.ts +2 -1
  55. package/cjs/label/arc.js +3 -3
  56. package/cjs/label/arc.js.map +1 -1
  57. package/cjs/label/area.d.ts +1 -1
  58. package/cjs/label/area.js +2 -2
  59. package/cjs/label/area.js.map +1 -1
  60. package/cjs/label/base.d.ts +3 -2
  61. package/cjs/label/base.js +15 -9
  62. package/cjs/label/base.js.map +1 -1
  63. package/cjs/label/dataLabel.d.ts +2 -1
  64. package/cjs/label/dataLabel.js +3 -2
  65. package/cjs/label/dataLabel.js.map +1 -1
  66. package/cjs/label/index.d.ts +1 -0
  67. package/cjs/label/index.js +2 -1
  68. package/cjs/label/index.js.map +1 -1
  69. package/cjs/label/line-data.d.ts +2 -1
  70. package/cjs/label/line-data.js +3 -2
  71. package/cjs/label/line-data.js.map +1 -1
  72. package/cjs/label/line.d.ts +3 -2
  73. package/cjs/label/line.js +6 -5
  74. package/cjs/label/line.js.map +1 -1
  75. package/cjs/label/polygon.d.ts +2 -1
  76. package/cjs/label/polygon.js +3 -2
  77. package/cjs/label/polygon.js.map +1 -1
  78. package/cjs/label/rect.d.ts +2 -1
  79. package/cjs/label/rect.js +2 -2
  80. package/cjs/label/rect.js.map +1 -1
  81. package/cjs/label/symbol.d.ts +2 -1
  82. package/cjs/label/symbol.js +3 -2
  83. package/cjs/label/symbol.js.map +1 -1
  84. package/cjs/label/type.d.ts +1 -0
  85. package/cjs/label/type.js.map +1 -1
  86. package/cjs/legend/color/color.d.ts +2 -1
  87. package/cjs/legend/color/color.js +2 -2
  88. package/cjs/legend/color/color.js.map +1 -1
  89. package/cjs/legend/discrete/discrete.d.ts +2 -1
  90. package/cjs/legend/discrete/discrete.js +15 -13
  91. package/cjs/legend/discrete/discrete.js.map +1 -1
  92. package/cjs/legend/discrete/type.d.ts +1 -0
  93. package/cjs/legend/discrete/type.js.map +1 -1
  94. package/cjs/legend/index.d.ts +1 -0
  95. package/cjs/legend/index.js +2 -1
  96. package/cjs/legend/index.js.map +1 -1
  97. package/cjs/legend/size/size.d.ts +2 -3
  98. package/cjs/legend/size/size.js +5 -14
  99. package/cjs/legend/size/size.js.map +1 -1
  100. package/cjs/legend/util.d.ts +2 -0
  101. package/cjs/legend/util.js +13 -0
  102. package/cjs/legend/util.js.map +1 -0
  103. package/cjs/link-path/link-path.d.ts +2 -1
  104. package/cjs/link-path/link-path.js +3 -3
  105. package/cjs/link-path/link-path.js.map +1 -1
  106. package/cjs/marker/area.d.ts +2 -1
  107. package/cjs/marker/area.js +3 -2
  108. package/cjs/marker/area.js.map +1 -1
  109. package/cjs/marker/line.d.ts +2 -1
  110. package/cjs/marker/line.js +3 -2
  111. package/cjs/marker/line.js.map +1 -1
  112. package/cjs/marker/point.d.ts +2 -1
  113. package/cjs/marker/point.js +3 -2
  114. package/cjs/marker/point.js.map +1 -1
  115. package/cjs/marker/type.d.ts +14 -14
  116. package/cjs/marker/type.js.map +1 -1
  117. package/cjs/pager/pager.d.ts +2 -1
  118. package/cjs/pager/pager.js +3 -3
  119. package/cjs/pager/pager.js.map +1 -1
  120. package/cjs/player/base-player.d.ts +2 -1
  121. package/cjs/player/base-player.js +3 -3
  122. package/cjs/player/base-player.js.map +1 -1
  123. package/cjs/player/controller/controller.d.ts +2 -1
  124. package/cjs/player/controller/controller.js +3 -3
  125. package/cjs/player/controller/controller.js.map +1 -1
  126. package/cjs/player/discrete-player.d.ts +2 -1
  127. package/cjs/player/discrete-player.js +3 -3
  128. package/cjs/player/discrete-player.js.map +1 -1
  129. package/cjs/poptip/poptip.d.ts +2 -1
  130. package/cjs/poptip/poptip.js +3 -3
  131. package/cjs/poptip/poptip.js.map +1 -1
  132. package/cjs/scrollbar/scrollbar.d.ts +2 -1
  133. package/cjs/scrollbar/scrollbar.js +3 -3
  134. package/cjs/scrollbar/scrollbar.js.map +1 -1
  135. package/cjs/segment/segment.d.ts +2 -1
  136. package/cjs/segment/segment.js +3 -2
  137. package/cjs/segment/segment.js.map +1 -1
  138. package/cjs/slider/slider.d.ts +2 -1
  139. package/cjs/slider/slider.js +8 -8
  140. package/cjs/slider/slider.js.map +1 -1
  141. package/cjs/tag/tag.d.ts +2 -1
  142. package/cjs/tag/tag.js +4 -3
  143. package/cjs/tag/tag.js.map +1 -1
  144. package/cjs/tag/type.d.ts +3 -5
  145. package/cjs/tag/type.js.map +1 -1
  146. package/cjs/title/title.d.ts +2 -1
  147. package/cjs/title/title.js +42 -41
  148. package/cjs/title/title.js.map +1 -1
  149. package/cjs/tooltip/tooltip.d.ts +2 -1
  150. package/cjs/tooltip/tooltip.js +3 -2
  151. package/cjs/tooltip/tooltip.js.map +1 -1
  152. package/cjs/tooltip/util.js +5 -5
  153. package/cjs/tooltip/util.js.map +1 -1
  154. package/cjs/util/label-smartInvert.d.ts +2 -2
  155. package/cjs/util/label-smartInvert.js +9 -5
  156. package/cjs/util/label-smartInvert.js.map +1 -1
  157. package/dist/index.js +9927 -10908
  158. package/dist/index.min.js +1 -1
  159. package/es/axis/circle.d.ts +3 -3
  160. package/es/axis/circle.js +2 -2
  161. package/es/axis/circle.js.map +1 -1
  162. package/es/axis/grid/base.js +2 -2
  163. package/es/axis/grid/base.js.map +1 -1
  164. package/es/axis/grid/circle.d.ts +2 -1
  165. package/es/axis/grid/circle.js +2 -2
  166. package/es/axis/grid/circle.js.map +1 -1
  167. package/es/axis/grid/line.d.ts +2 -1
  168. package/es/axis/grid/line.js +2 -2
  169. package/es/axis/grid/line.js.map +1 -1
  170. package/es/axis/line.d.ts +2 -1
  171. package/es/axis/line.js +2 -2
  172. package/es/axis/line.js.map +1 -1
  173. package/es/axis/type.d.ts +5 -23
  174. package/es/axis/type.js.map +1 -1
  175. package/es/brush/brush.d.ts +2 -1
  176. package/es/brush/brush.js +6 -6
  177. package/es/brush/brush.js.map +1 -1
  178. package/es/checkbox/checkbox.d.ts +2 -1
  179. package/es/checkbox/checkbox.js +3 -2
  180. package/es/checkbox/checkbox.js.map +1 -1
  181. package/es/core/base.d.ts +4 -2
  182. package/es/core/base.js +4 -2
  183. package/es/core/base.js.map +1 -1
  184. package/es/core/type.d.ts +15 -0
  185. package/es/core/type.js.map +1 -1
  186. package/es/crosshair/circle.d.ts +2 -1
  187. package/es/crosshair/circle.js +2 -2
  188. package/es/crosshair/circle.js.map +1 -1
  189. package/es/crosshair/line.d.ts +2 -1
  190. package/es/crosshair/line.js +2 -2
  191. package/es/crosshair/line.js.map +1 -1
  192. package/es/crosshair/polygon.d.ts +2 -1
  193. package/es/crosshair/polygon.js +2 -2
  194. package/es/crosshair/polygon.js.map +1 -1
  195. package/es/crosshair/rect.d.ts +2 -1
  196. package/es/crosshair/rect.js +2 -2
  197. package/es/crosshair/rect.js.map +1 -1
  198. package/es/crosshair/sector.d.ts +2 -1
  199. package/es/crosshair/sector.js +2 -2
  200. package/es/crosshair/sector.js.map +1 -1
  201. package/es/data-zoom/data-zoom.d.ts +2 -1
  202. package/es/data-zoom/data-zoom.js +3 -3
  203. package/es/data-zoom/data-zoom.js.map +1 -1
  204. package/es/index.d.ts +1 -1
  205. package/es/index.js +1 -1
  206. package/es/index.js.map +1 -1
  207. package/es/indicator/indicator.js.map +1 -1
  208. package/es/indicator/type.d.ts +3 -5
  209. package/es/indicator/type.js.map +1 -1
  210. package/es/interface.d.ts +4 -0
  211. package/es/interface.js.map +1 -1
  212. package/es/label/arc.d.ts +2 -1
  213. package/es/label/arc.js +3 -3
  214. package/es/label/arc.js.map +1 -1
  215. package/es/label/area.d.ts +1 -1
  216. package/es/label/area.js +2 -2
  217. package/es/label/area.js.map +1 -1
  218. package/es/label/base.d.ts +3 -2
  219. package/es/label/base.js +14 -9
  220. package/es/label/base.js.map +1 -1
  221. package/es/label/dataLabel.d.ts +2 -1
  222. package/es/label/dataLabel.js +3 -2
  223. package/es/label/dataLabel.js.map +1 -1
  224. package/es/label/index.d.ts +1 -0
  225. package/es/label/index.js +2 -0
  226. package/es/label/index.js.map +1 -1
  227. package/es/label/line-data.d.ts +2 -1
  228. package/es/label/line-data.js +3 -2
  229. package/es/label/line-data.js.map +1 -1
  230. package/es/label/line.d.ts +3 -2
  231. package/es/label/line.js +6 -5
  232. package/es/label/line.js.map +1 -1
  233. package/es/label/polygon.d.ts +2 -1
  234. package/es/label/polygon.js +3 -2
  235. package/es/label/polygon.js.map +1 -1
  236. package/es/label/rect.d.ts +2 -1
  237. package/es/label/rect.js +2 -2
  238. package/es/label/rect.js.map +1 -1
  239. package/es/label/symbol.d.ts +2 -1
  240. package/es/label/symbol.js +3 -2
  241. package/es/label/symbol.js.map +1 -1
  242. package/es/label/type.d.ts +1 -0
  243. package/es/label/type.js.map +1 -1
  244. package/es/legend/color/color.d.ts +2 -1
  245. package/es/legend/color/color.js +3 -3
  246. package/es/legend/color/color.js.map +1 -1
  247. package/es/legend/discrete/discrete.d.ts +2 -1
  248. package/es/legend/discrete/discrete.js +15 -13
  249. package/es/legend/discrete/discrete.js.map +1 -1
  250. package/es/legend/discrete/type.d.ts +1 -0
  251. package/es/legend/discrete/type.js.map +1 -1
  252. package/es/legend/index.d.ts +1 -0
  253. package/es/legend/index.js +2 -0
  254. package/es/legend/index.js.map +1 -1
  255. package/es/legend/size/size.d.ts +2 -3
  256. package/es/legend/size/size.js +4 -9
  257. package/es/legend/size/size.js.map +1 -1
  258. package/es/legend/util.d.ts +2 -0
  259. package/es/legend/util.js +7 -0
  260. package/es/legend/util.js.map +1 -0
  261. package/es/link-path/link-path.d.ts +2 -1
  262. package/es/link-path/link-path.js +3 -3
  263. package/es/link-path/link-path.js.map +1 -1
  264. package/es/marker/area.d.ts +2 -1
  265. package/es/marker/area.js +3 -2
  266. package/es/marker/area.js.map +1 -1
  267. package/es/marker/line.d.ts +2 -1
  268. package/es/marker/line.js +3 -2
  269. package/es/marker/line.js.map +1 -1
  270. package/es/marker/point.d.ts +2 -1
  271. package/es/marker/point.js +3 -2
  272. package/es/marker/point.js.map +1 -1
  273. package/es/marker/type.d.ts +14 -14
  274. package/es/marker/type.js.map +1 -1
  275. package/es/pager/pager.d.ts +2 -1
  276. package/es/pager/pager.js +3 -3
  277. package/es/pager/pager.js.map +1 -1
  278. package/es/player/base-player.d.ts +2 -1
  279. package/es/player/base-player.js +3 -3
  280. package/es/player/base-player.js.map +1 -1
  281. package/es/player/controller/controller.d.ts +2 -1
  282. package/es/player/controller/controller.js +3 -3
  283. package/es/player/controller/controller.js.map +1 -1
  284. package/es/player/discrete-player.d.ts +2 -1
  285. package/es/player/discrete-player.js +3 -2
  286. package/es/player/discrete-player.js.map +1 -1
  287. package/es/poptip/poptip.d.ts +2 -1
  288. package/es/poptip/poptip.js +3 -2
  289. package/es/poptip/poptip.js.map +1 -1
  290. package/es/scrollbar/scrollbar.d.ts +2 -1
  291. package/es/scrollbar/scrollbar.js +3 -3
  292. package/es/scrollbar/scrollbar.js.map +1 -1
  293. package/es/segment/segment.d.ts +2 -1
  294. package/es/segment/segment.js +3 -2
  295. package/es/segment/segment.js.map +1 -1
  296. package/es/slider/slider.d.ts +2 -1
  297. package/es/slider/slider.js +8 -8
  298. package/es/slider/slider.js.map +1 -1
  299. package/es/tag/tag.d.ts +2 -1
  300. package/es/tag/tag.js +4 -3
  301. package/es/tag/tag.js.map +1 -1
  302. package/es/tag/type.d.ts +3 -5
  303. package/es/tag/type.js.map +1 -1
  304. package/es/title/title.d.ts +2 -1
  305. package/es/title/title.js +42 -41
  306. package/es/title/title.js.map +1 -1
  307. package/es/tooltip/tooltip.d.ts +2 -1
  308. package/es/tooltip/tooltip.js +3 -2
  309. package/es/tooltip/tooltip.js.map +1 -1
  310. package/es/tooltip/util.js +5 -5
  311. package/es/tooltip/util.js.map +1 -1
  312. package/es/util/label-smartInvert.d.ts +2 -2
  313. package/es/util/label-smartInvert.js +9 -5
  314. package/es/util/label-smartInvert.js.map +1 -1
  315. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/legend/discrete/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n EasingType,\n IGroupGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type { BaseGraphicAttributes, Padding } from '../../core/type';\nimport type { PagerAttributes } from '../../pager';\nimport type { LegendBaseAttributes } from '../type';\n\nexport type LegendItemDatum = {\n /**\n * 该条数据的唯一标识,可用于动画或者查找\n */\n id?: string;\n /** 显示文本 */\n label: string;\n /** 显示数据 */\n value?: string | number;\n /** 图例项前的 shape 形状定义 */\n shape: {\n symbolType?: string;\n fill?: string;\n stroke?: string;\n };\n [key: string]: any;\n};\n\nexport type StyleCallback<T> = (\n item: LegendItemDatum,\n isSelected: boolean,\n index: number,\n allItems: LegendItemDatum[]\n) => T;\n\nexport type formatterCallback = (text: string | number, item: LegendItemDatum, index: number) => any;\n\nexport type LegendItem = {\n /**\n * 是否展示图例项\n * @default true\n */\n visible?: boolean;\n /**\n * 图例项的列间距 水平间距\n */\n spaceCol?: number;\n /**\n * 图例项的行间距 垂直间距\n */\n spaceRow?: number;\n /**\n * 图例项的最大宽度,默认为 null,由上层传入\n */\n maxWidth?: number;\n /**\n * 图例项的宽度, 默认自动计算\n */\n width?: number;\n /**\n * 图例的高度,默认自动计算\n */\n height?: number;\n /**\n * 图例项自身的内边距\n */\n padding?: Padding;\n /**\n * 图例项背景配置\n */\n background?: {\n visible?: boolean;\n } & BaseGraphicAttributes<Partial<IGroupGraphicAttribute> | StyleCallback<Partial<IGroupGraphicAttribute>>>;\n /**\n * 图例项的 shape 图标的配置\n */\n shape?: {\n visible?: boolean;\n /** shape 同后面 label 的间距 */\n space?: number;\n } & BaseGraphicAttributes<Partial<ISymbolGraphicAttribute> | StyleCallback<Partial<ISymbolGraphicAttribute>>>;\n /**\n * 图例项的 label 文本配置\n */\n label?: {\n /**\n * 图例项 label 同后面 value 的间距\n */\n space?: number;\n /**\n * 格式化文本函数\n */\n formatMethod?: formatterCallback;\n } & BaseGraphicAttributes<Partial<ITextGraphicAttribute> | StyleCallback<Partial<ITextGraphicAttribute>>>;\n /**\n * 图例项 value 配置\n */\n value?: {\n /** value 同后面元素的间距 */\n space?: number;\n /**\n * 是否右对齐显示,仅当设置图例项宽度 itemWidth 时生效\n * 默认为 false,\n */\n alignRight?: boolean;\n /**\n * 格式化文本函数\n */\n formatMethod?: formatterCallback;\n } & BaseGraphicAttributes<Partial<ITextGraphicAttribute> | StyleCallback<Partial<ITextGraphicAttribute>>>;\n /**\n * 是否开启聚焦功能,默认关闭\n */\n focus?: boolean;\n /**\n * 聚焦按钮配置\n */\n focusIconStyle?: Partial<ISymbolGraphicAttribute>;\n};\n\nexport type DiscreteLegendAttrs = {\n /**\n * 是否开启选中交互\n */\n select?: boolean;\n /**\n * 是否开启 hover 交互\n */\n hover?: boolean;\n /**\n * 图例数据\n */\n items: LegendItemDatum[];\n /**\n * 默认选中的图例项\n */\n defaultSelected?: (string | number)[];\n /**\n * 单选/多选模式配置,默认 'multiple'。\n * - `single` 表示单选\n * - `multiple` 表示多选\n */\n selectMode?: 'single' | 'multiple';\n /**\n * 是否允许图例全部取消,多选模式下生效\n */\n allowAllCanceled?: boolean;\n /**\n * 图例项的顺序是否要逆序,默认为 false\n */\n reversed?: boolean;\n /**\n * 图例项相关的配置\n */\n item?: LegendItem;\n /**\n * 最大宽度,决定 layout : 'horizontal' 是否自动换行\n */\n maxWidth?: number;\n /**\n * 最大高度,决定是否分页\n */\n maxHeight?: number;\n /**\n * 最大行数,当且仅当 layout 为 'horizontal' 时生效\n */\n maxRow?: number;\n /**\n * 最大列数,当且仅当 layout 为 'vertical' 时生效\n */\n maxCol?: number;\n /**\n * 是否进行自动分页,默认为 true\n */\n autoPage?: boolean;\n /**\n * 翻页器配置\n */\n pager?: Omit<PagerAttributes, 'total'> & {\n /**\n * 翻页器同图例内容项之间的间距\n */\n space?: number;\n /**\n * 翻页是否开启动画\n */\n animation?: boolean;\n /**\n * 动画执行时间\n */\n animationDuration?: number;\n /**\n * 动画执行效果\n */\n animationEasing?: EasingType;\n };\n} & LegendBaseAttributes;\n"]}
1
+ {"version":3,"sources":["../src/legend/discrete/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n EasingType,\n IGroupGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type { BaseGraphicAttributes, Padding } from '../../core/type';\nimport type { PagerAttributes } from '../../pager';\nimport type { LegendBaseAttributes } from '../type';\n\nexport type LegendItemDatum = {\n /**\n * 该条数据的唯一标识,可用于动画或者查找\n */\n id?: string;\n /** 显示文本 */\n label: string;\n /** 显示数据 */\n value?: string | number;\n /** 图例项前的 shape 形状定义 */\n shape: {\n symbolType?: string;\n fill?: string;\n stroke?: string;\n };\n [key: string]: any;\n};\n\nexport type StyleCallback<T> = (\n item: LegendItemDatum,\n isSelected: boolean,\n index: number,\n allItems: LegendItemDatum[]\n) => T;\n\nexport type formatterCallback = (text: string | number, item: LegendItemDatum, index: number) => any;\n\nexport type LegendItem = {\n /**\n * 是否展示图例项\n * @default true\n */\n visible?: boolean;\n /**\n * 图例项的列间距 水平间距\n */\n spaceCol?: number;\n /**\n * 图例项的行间距 垂直间距\n */\n spaceRow?: number;\n /**\n * 图例项的最大宽度,默认为 null,由上层传入\n */\n maxWidth?: number;\n /**\n * 图例项的宽度, 默认自动计算\n */\n width?: number;\n /**\n * 图例的高度,默认自动计算\n */\n height?: number;\n /**\n * 图例项自身的内边距\n */\n padding?: Padding;\n /**\n * 图例项背景配置\n */\n background?: {\n visible?: boolean;\n } & BaseGraphicAttributes<Partial<IGroupGraphicAttribute> | StyleCallback<Partial<IGroupGraphicAttribute>>>;\n /**\n * 图例项的 shape 图标的配置\n */\n shape?: {\n visible?: boolean;\n /** shape 同后面 label 的间距 */\n space?: number;\n } & BaseGraphicAttributes<Partial<ISymbolGraphicAttribute> | StyleCallback<Partial<ISymbolGraphicAttribute>>>;\n /**\n * 图例项的 label 文本配置\n */\n label?: {\n /**\n * 图例项 label 同后面 value 的间距\n */\n space?: number;\n /**\n * 格式化文本函数\n */\n formatMethod?: formatterCallback;\n } & BaseGraphicAttributes<Partial<ITextGraphicAttribute> | StyleCallback<Partial<ITextGraphicAttribute>>>;\n /**\n * 图例项 value 配置\n */\n value?: {\n /** value 同后面元素的间距 */\n space?: number;\n /**\n * 是否右对齐显示,仅当设置图例项宽度 itemWidth 时生效\n * 默认为 false,\n */\n alignRight?: boolean;\n /**\n * 格式化文本函数\n */\n formatMethod?: formatterCallback;\n } & BaseGraphicAttributes<Partial<ITextGraphicAttribute> | StyleCallback<Partial<ITextGraphicAttribute>>>;\n /**\n * 是否开启聚焦功能,默认关闭\n */\n focus?: boolean;\n /**\n * 聚焦按钮配置\n */\n focusIconStyle?: Partial<ISymbolGraphicAttribute>;\n};\n\nexport type DiscreteLegendAttrs = {\n /**\n * 是否开启选中交互\n */\n select?: boolean;\n /**\n * 是否开启 hover 交互\n */\n hover?: boolean;\n /**\n * 图例数据\n */\n items: LegendItemDatum[];\n /**\n * 默认选中的图例项\n */\n defaultSelected?: (string | number)[];\n /**\n * 单选/多选模式配置,默认 'multiple'。\n * - `single` 表示单选\n * - `multiple` 表示多选\n */\n selectMode?: 'single' | 'multiple';\n /**\n * 是否允许图例全部取消,多选模式下生效\n */\n allowAllCanceled?: boolean;\n /**\n * 图例项的顺序是否要逆序,默认为 false\n */\n reversed?: boolean;\n /**\n * 图例项相关的配置\n */\n item?: LegendItem;\n /**\n * 最大宽度,决定 layout : 'horizontal' 是否自动换行\n */\n maxWidth?: number;\n /**\n * 最大高度,决定是否分页\n */\n maxHeight?: number;\n /**\n * 最大行数,当且仅当 layout 为 'horizontal' 时生效\n */\n maxRow?: number;\n /**\n * 最大列数,当且仅当 layout 为 'vertical' 时生效\n */\n maxCol?: number;\n /**\n * 是否进行自动分页,默认为 true\n */\n autoPage?: boolean;\n /**\n * 翻页器配置\n */\n pager?: Omit<PagerAttributes, 'total'> & {\n /**\n * 翻页器同图例内容项之间的间距\n */\n space?: number;\n /**\n * 翻页是否开启动画\n */\n animation?: boolean;\n /**\n * 动画执行时间\n */\n animationDuration?: number;\n /**\n * 动画执行效果\n */\n animationEasing?: EasingType;\n /**\n * 分页器的显示位置,默认 'middle'\n * @default 'middle'\n */\n position?: 'start' | 'middle' | 'end';\n };\n} & LegendBaseAttributes;\n"]}
@@ -6,3 +6,4 @@ export * from './size/size';
6
6
  export * from './size/type';
7
7
  export * from './type';
8
8
  export * from './constant';
9
+ export * from './util';
@@ -13,4 +13,6 @@ export * from "./size/type";
13
13
  export * from "./type";
14
14
 
15
15
  export * from "./constant";
16
+
17
+ export * from "./util";
16
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/legend/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC","file":"index.js","sourcesContent":["export * from './discrete/discrete';\nexport * from './discrete/type';\nexport * from './color/color';\nexport * from './color/type';\nexport * from './size/size';\nexport * from './size/type';\nexport * from './type';\nexport * from './constant';\n"]}
1
+ {"version":3,"sources":["../src/legend/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC","file":"index.js","sourcesContent":["export * from './discrete/discrete';\nexport * from './discrete/type';\nexport * from './color/color';\nexport * from './color/type';\nexport * from './size/size';\nexport * from './size/type';\nexport * from './type';\nexport * from './constant';\nexport * from './util';\n"]}
@@ -1,7 +1,6 @@
1
1
  import { LegendBase } from '../base';
2
- import type { OrientType } from '../../interface';
2
+ import type { ComponentOptions } from '../../interface';
3
3
  import type { SizeLegendAttributes } from './type';
4
- export declare function getSizeHandlerPath(align?: OrientType): string;
5
4
  export declare class SizeContinuousLegend extends LegendBase<SizeLegendAttributes> {
6
5
  name: string;
7
6
  static defaultAttributes: {
@@ -26,7 +25,7 @@ export declare class SizeContinuousLegend extends LegendBase<SizeLegendAttribute
26
25
  };
27
26
  };
28
27
  private _slider;
29
- constructor(attributes: SizeLegendAttributes);
28
+ constructor(attributes: SizeLegendAttributes, options?: ComponentOptions);
30
29
  setSelected(value: number[]): void;
31
30
  protected _renderContent(): void;
32
31
  protected _bindEvents(): void;
@@ -8,17 +8,12 @@ import { Slider } from "../../slider";
8
8
 
9
9
  import { DEFAULT_TITLE_SPACE } from "../constant";
10
10
 
11
- export function getSizeHandlerPath(align = "bottom") {
12
- let centerX = 0;
13
- return "top" === align ? `\n M${centerX},-6L${centerX - 3.5},-2.5\n v5\n h7\n v-5\n Z\n` : "left" === align ? (centerX = 1,
14
- `\n M${centerX - 6},0L${centerX - 6 + 2.5},-3.5\n h5\n v7\n h-5\n Z\n`) : "right" === align ? (centerX = -1,
15
- `\n M${centerX + 6},0L${centerX + 6 - 2.5},-3.5\n h-5\n v7\n h5\n Z\n `) : `\n M${centerX},6L${centerX - 3.5},2.5\n v-5\n h7\n v5\n Z\n`;
16
- }
11
+ import { getSizeHandlerPath } from "../util";
17
12
 
18
13
  export class SizeContinuousLegend extends LegendBase {
19
- constructor(attributes) {
20
- super(merge({}, SizeContinuousLegend.defaultAttributes, attributes)), this.name = "sizeLegend",
21
- this._onSliderChange = e => {
14
+ constructor(attributes, options) {
15
+ super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, SizeContinuousLegend.defaultAttributes, attributes)),
16
+ this.name = "sizeLegend", this._onSliderChange = e => {
22
17
  this.dispatchEvent(e);
23
18
  };
24
19
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/legend/size/size.ts"],"names":[],"mappings":"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","file":"size.js","sourcesContent":["/**\n * @description 连续尺寸图例\n */\nimport type { FederatedPointerEvent, INode } from '@visactor/vrender-core';\nimport { createGroup, createPath } from '@visactor/vrender-core';\nimport { merge, get } from '@visactor/vutils';\nimport { LegendBase } from '../base';\nimport { Slider } from '../../slider';\nimport { DEFAULT_TITLE_SPACE } from '../constant';\nimport type { OrientType } from '../../interface';\nimport type { SizeLegendAttributes } from './type';\n\nexport function getSizeHandlerPath(align: OrientType = 'bottom') {\n let centerX = 0;\n const centerY = 0;\n const upperHalf = 3.5;\n const leftHalf = 2.5;\n const arrowY = 6;\n\n if (align === 'top') {\n return `\n M${centerX},${centerY - arrowY}L${centerX - upperHalf},${centerY - leftHalf}\n v${2 * leftHalf}\n h${2 * upperHalf}\n v${-2 * leftHalf}\n Z\n`;\n }\n\n if (align === 'left') {\n centerX = 1;\n return `\n M${centerX - arrowY},${centerY}L${centerX - arrowY + leftHalf},${centerY - upperHalf}\n h${2 * leftHalf}\n v${2 * upperHalf}\n h${-2 * leftHalf}\n Z\n`;\n }\n\n if (align === 'right') {\n centerX = -1;\n\n return `\n M${centerX + arrowY},${centerY}L${centerX + arrowY - leftHalf},${centerY - upperHalf}\n h${-2 * leftHalf}\n v${2 * upperHalf}\n h${2 * leftHalf}\n Z\n `;\n }\n\n return `\n M${centerX},${centerY + arrowY}L${centerX - upperHalf},${centerY + leftHalf}\n v${-2 * leftHalf}\n h${2 * upperHalf}\n v${2 * leftHalf}\n Z\n`;\n}\n\nexport class SizeContinuousLegend extends LegendBase<SizeLegendAttributes> {\n name = 'sizeLegend';\n\n static defaultAttributes = {\n layout: 'horizontal',\n title: {\n align: 'start',\n space: DEFAULT_TITLE_SPACE,\n textStyle: {\n fontSize: 12,\n fontWeight: 'bold',\n fill: 'rgba(46, 47, 50, 1)'\n }\n },\n handlerSize: 10,\n handlerStyle: {\n lineWidth: 1,\n stroke: '#ccc',\n fill: '#fff'\n },\n sizeBackground: {\n fill: 'rgba(20,20,20,0.1)'\n }\n };\n\n private _slider!: Slider;\n\n constructor(attributes: SizeLegendAttributes) {\n super(merge({}, SizeContinuousLegend.defaultAttributes, attributes));\n }\n\n setSelected(value: number[]) {\n if (!this._slider) {\n return;\n }\n this._slider.setValue(value);\n }\n\n protected _renderContent(): void {\n const {\n slidable,\n layout,\n align,\n min,\n max,\n value,\n railWidth,\n railHeight,\n showHandler = true,\n handlerSize,\n handlerStyle,\n railStyle,\n trackStyle,\n startText,\n endText,\n handlerText,\n showTooltip,\n tooltip,\n sizeBackground,\n disableTriggerEvent\n } = this.attribute as SizeLegendAttributes;\n const isHorizontal = layout === 'horizontal';\n\n const mainContainer = createGroup({\n x: 0,\n y: 0\n });\n this._innerView.add(mainContainer);\n\n const slider = new Slider({\n x: 0,\n y: 0,\n zIndex: 1,\n range: {\n draggableTrack: true\n },\n slidable,\n layout,\n align,\n min,\n max,\n value,\n railWidth,\n railHeight,\n showHandler,\n handlerSize,\n handlerStyle: {\n symbolType: getSizeHandlerPath(align),\n ...handlerStyle\n },\n railStyle,\n trackStyle,\n startText,\n endText,\n handlerText,\n showTooltip,\n tooltip,\n disableTriggerEvent\n });\n mainContainer.add(slider as unknown as INode);\n\n // 绘制 size 背景\n let start = 0;\n let path;\n const backgroundHeight = 12; // 目前暂不开放配置\n if (layout === 'horizontal') {\n if (align === 'top') {\n path = `M0,0L${railWidth},0L${railWidth},${backgroundHeight}Z`;\n start = railHeight;\n } else {\n path = `M0,${backgroundHeight}L${railWidth},${backgroundHeight}L${railWidth},0Z`;\n slider.setAttribute('y', backgroundHeight);\n }\n } else {\n if (align === 'left') {\n path = `M${railWidth},0L${railWidth},0L${\n railWidth + backgroundHeight\n },${railHeight}L${railWidth},${railHeight}Z`;\n } else {\n path = `M0,${railHeight}L${backgroundHeight},${railHeight}L${backgroundHeight},0Z`;\n slider.setAttribute('x', backgroundHeight);\n }\n }\n const background = createPath({\n x: 0,\n y: start,\n path,\n ...sizeBackground,\n zIndex: 0\n });\n mainContainer.add(background);\n\n // 做下位置调整\n const titleSpace = this._title\n ? this._title.AABBBounds.height() + get(this.attribute, 'title.space', DEFAULT_TITLE_SPACE)\n : 0;\n\n mainContainer.translate(0 - mainContainer.AABBBounds.x1, titleSpace - mainContainer.AABBBounds.y1);\n\n this._slider = slider;\n }\n\n protected _bindEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n if (this._slider) {\n this._slider.addEventListener('change', this._onSliderChange as EventListenerOrEventListenerObject);\n }\n }\n\n private _onSliderChange = (e: FederatedPointerEvent) => {\n this.dispatchEvent(e);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/legend/size/size.ts"],"names":[],"mappings":"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","file":"size.js","sourcesContent":["/**\n * @description 连续尺寸图例\n */\nimport type { FederatedPointerEvent, INode } from '@visactor/vrender-core';\nimport { createGroup, createPath } from '@visactor/vrender-core';\nimport { merge, get } from '@visactor/vutils';\nimport { LegendBase } from '../base';\nimport { Slider } from '../../slider';\nimport { DEFAULT_TITLE_SPACE } from '../constant';\nimport type { ComponentOptions } from '../../interface';\nimport type { SizeLegendAttributes } from './type';\nimport { getSizeHandlerPath } from '../util';\n\nexport class SizeContinuousLegend extends LegendBase<SizeLegendAttributes> {\n name = 'sizeLegend';\n\n static defaultAttributes = {\n layout: 'horizontal',\n title: {\n align: 'start',\n space: DEFAULT_TITLE_SPACE,\n textStyle: {\n fontSize: 12,\n fontWeight: 'bold',\n fill: 'rgba(46, 47, 50, 1)'\n }\n },\n handlerSize: 10,\n handlerStyle: {\n lineWidth: 1,\n stroke: '#ccc',\n fill: '#fff'\n },\n sizeBackground: {\n fill: 'rgba(20,20,20,0.1)'\n }\n };\n\n private _slider!: Slider;\n\n constructor(attributes: SizeLegendAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, SizeContinuousLegend.defaultAttributes, attributes));\n }\n\n setSelected(value: number[]) {\n if (!this._slider) {\n return;\n }\n this._slider.setValue(value);\n }\n\n protected _renderContent(): void {\n const {\n slidable,\n layout,\n align,\n min,\n max,\n value,\n railWidth,\n railHeight,\n showHandler = true,\n handlerSize,\n handlerStyle,\n railStyle,\n trackStyle,\n startText,\n endText,\n handlerText,\n showTooltip,\n tooltip,\n sizeBackground,\n disableTriggerEvent\n } = this.attribute as SizeLegendAttributes;\n const isHorizontal = layout === 'horizontal';\n\n const mainContainer = createGroup({\n x: 0,\n y: 0\n });\n this._innerView.add(mainContainer);\n\n const slider = new Slider({\n x: 0,\n y: 0,\n zIndex: 1,\n range: {\n draggableTrack: true\n },\n slidable,\n layout,\n align,\n min,\n max,\n value,\n railWidth,\n railHeight,\n showHandler,\n handlerSize,\n handlerStyle: {\n symbolType: getSizeHandlerPath(align),\n ...handlerStyle\n },\n railStyle,\n trackStyle,\n startText,\n endText,\n handlerText,\n showTooltip,\n tooltip,\n disableTriggerEvent\n });\n mainContainer.add(slider as unknown as INode);\n\n // 绘制 size 背景\n let start = 0;\n let path;\n const backgroundHeight = 12; // 目前暂不开放配置\n if (layout === 'horizontal') {\n if (align === 'top') {\n path = `M0,0L${railWidth},0L${railWidth},${backgroundHeight}Z`;\n start = railHeight;\n } else {\n path = `M0,${backgroundHeight}L${railWidth},${backgroundHeight}L${railWidth},0Z`;\n slider.setAttribute('y', backgroundHeight);\n }\n } else {\n if (align === 'left') {\n path = `M${railWidth},0L${railWidth},0L${\n railWidth + backgroundHeight\n },${railHeight}L${railWidth},${railHeight}Z`;\n } else {\n path = `M0,${railHeight}L${backgroundHeight},${railHeight}L${backgroundHeight},0Z`;\n slider.setAttribute('x', backgroundHeight);\n }\n }\n const background = createPath({\n x: 0,\n y: start,\n path,\n ...sizeBackground,\n zIndex: 0\n });\n mainContainer.add(background);\n\n // 做下位置调整\n const titleSpace = this._title\n ? this._title.AABBBounds.height() + get(this.attribute, 'title.space', DEFAULT_TITLE_SPACE)\n : 0;\n\n mainContainer.translate(0 - mainContainer.AABBBounds.x1, titleSpace - mainContainer.AABBBounds.y1);\n\n this._slider = slider;\n }\n\n protected _bindEvents(): void {\n if (this.attribute.disableTriggerEvent) {\n return;\n }\n if (this._slider) {\n this._slider.addEventListener('change', this._onSliderChange as EventListenerOrEventListenerObject);\n }\n }\n\n private _onSliderChange = (e: FederatedPointerEvent) => {\n this.dispatchEvent(e);\n };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type { OrientType } from '../interface';
2
+ export declare function getSizeHandlerPath(align?: OrientType): string;
@@ -0,0 +1,7 @@
1
+ export function getSizeHandlerPath(align = "bottom") {
2
+ let centerX = 0;
3
+ return "top" === align ? `\n M${centerX},-6L${centerX - 3.5},-2.5\n v5\n h7\n v-5\n Z\n` : "left" === align ? (centerX = 1,
4
+ `\n M${centerX - 6},0L${centerX - 6 + 2.5},-3.5\n h5\n v7\n h-5\n Z\n`) : "right" === align ? (centerX = -1,
5
+ `\n M${centerX + 6},0L${centerX + 6 - 2.5},-3.5\n h-5\n v7\n h5\n Z\n `) : `\n M${centerX},6L${centerX - 3.5},2.5\n v-5\n h7\n v5\n Z\n`;
6
+ }
7
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/legend/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,QAAoB,QAAQ;IAC7D,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,MAAM,GAAG,CAAC,CAAC;IAEjB,IAAI,KAAK,KAAK,KAAK,EAAE;QACnB,OAAO;OACJ,OAAO,IAAI,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,SAAS,IAAI,OAAO,GAAG,QAAQ;OACxE,CAAC,GAAG,QAAQ;OACZ,CAAC,GAAG,SAAS;OACb,CAAC,CAAC,GAAG,QAAQ;;CAEnB,CAAC;KACC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE;QACpB,OAAO,GAAG,CAAC,CAAC;QACZ,OAAO;OACJ,OAAO,GAAG,MAAM,IAAI,OAAO,IAAI,OAAO,GAAG,MAAM,GAAG,QAAQ,IAAI,OAAO,GAAG,SAAS;OACjF,CAAC,GAAG,QAAQ;OACZ,CAAC,GAAG,SAAS;OACb,CAAC,CAAC,GAAG,QAAQ;;CAEnB,CAAC;KACC;IAED,IAAI,KAAK,KAAK,OAAO,EAAE;QACrB,OAAO,GAAG,CAAC,CAAC,CAAC;QAEb,OAAO;OACJ,OAAO,GAAG,MAAM,IAAI,OAAO,IAAI,OAAO,GAAG,MAAM,GAAG,QAAQ,IAAI,OAAO,GAAG,SAAS;OACjF,CAAC,CAAC,GAAG,QAAQ;OACb,CAAC,GAAG,SAAS;OACb,CAAC,GAAG,QAAQ;;GAEhB,CAAC;KACD;IAED,OAAO;OACF,OAAO,IAAI,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,SAAS,IAAI,OAAO,GAAG,QAAQ;OACxE,CAAC,CAAC,GAAG,QAAQ;OACb,CAAC,GAAG,SAAS;OACb,CAAC,GAAG,QAAQ;;CAElB,CAAC;AACF,CAAC","file":"util.js","sourcesContent":["import type { OrientType } from '../interface';\n\nexport function getSizeHandlerPath(align: OrientType = 'bottom') {\n let centerX = 0;\n const centerY = 0;\n const upperHalf = 3.5;\n const leftHalf = 2.5;\n const arrowY = 6;\n\n if (align === 'top') {\n return `\n M${centerX},${centerY - arrowY}L${centerX - upperHalf},${centerY - leftHalf}\n v${2 * leftHalf}\n h${2 * upperHalf}\n v${-2 * leftHalf}\n Z\n`;\n }\n\n if (align === 'left') {\n centerX = 1;\n return `\n M${centerX - arrowY},${centerY}L${centerX - arrowY + leftHalf},${centerY - upperHalf}\n h${2 * leftHalf}\n v${2 * upperHalf}\n h${-2 * leftHalf}\n Z\n`;\n }\n\n if (align === 'right') {\n centerX = -1;\n\n return `\n M${centerX + arrowY},${centerY}L${centerX + arrowY - leftHalf},${centerY - upperHalf}\n h${-2 * leftHalf}\n v${2 * upperHalf}\n h${2 * leftHalf}\n Z\n `;\n }\n\n return `\n M${centerX},${centerY + arrowY}L${centerX - upperHalf},${centerY + leftHalf}\n v${-2 * leftHalf}\n h${2 * upperHalf}\n v${2 * leftHalf}\n Z\n`;\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { AbstractComponent } from '../core/base';
2
2
  import type { LinkPathAttributes } from './type';
3
+ import type { ComponentOptions } from '../interface';
3
4
  export declare const getHorizontalPath: (options: LinkPathAttributes, ratio?: number) => string;
4
5
  export declare const getVerticalPath: (options: LinkPathAttributes, ratio?: number) => string;
5
6
  export declare class LinkPath extends AbstractComponent<Required<LinkPathAttributes>> {
@@ -10,6 +11,6 @@ export declare class LinkPath extends AbstractComponent<Required<LinkPathAttribu
10
11
  private _container;
11
12
  private _backPath?;
12
13
  private _frontPath?;
13
- constructor(attributes: LinkPathAttributes);
14
+ constructor(attributes: LinkPathAttributes, options?: ComponentOptions);
14
15
  protected render(): void;
15
16
  }
@@ -28,8 +28,8 @@ export const getVerticalPath = (options, ratio) => {
28
28
  };
29
29
 
30
30
  export class LinkPath extends AbstractComponent {
31
- constructor(attributes) {
32
- super(merge({}, LinkPath.defaultAttributes, attributes));
31
+ constructor(attributes, options) {
32
+ super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, LinkPath.defaultAttributes, attributes));
33
33
  }
34
34
  render() {
35
35
  const {direction: direction = "horizontal"} = this.attribute, parsePath = "vertical" === direction ? getVerticalPath : getHorizontalPath, isRatioShow = "number" == typeof this.attribute.ratio && this.attribute.ratio >= 0 && this.attribute.ratio <= 1, groupAttrKeys = [ "direction", "x0", "x1", "y0", "y1", "thickness", "round", "ratio", "align", "isSmooth", "backgroudStyle" ], commonStyle = {};
@@ -56,4 +56,4 @@ LinkPath.defaultAttributes = {
56
56
  direction: "horizontal",
57
57
  align: "start"
58
58
  };
59
- //# sourceMappingURL=link-path.js.map
59
+ //# sourceMappingURL=link-path.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/link-path/link-path.ts"],"names":[],"mappings":"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","file":"link-path.js","sourcesContent":["/**\n * @description 桑基图Link组件,也适用于其他有宽度的连边展示\n * @author 康晓婷\n */\nimport type { IGroup, IPath } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { LinkPathAttributes } from './type';\n\nexport const getHorizontalPath = (options: LinkPathAttributes, ratio?: number) => {\n let x0 = options.x0;\n let x1 = options.x1;\n const thickness = typeof ratio === 'number' ? options.thickness * ratio : options.thickness;\n let y00 = options.y0 - options.thickness / 2;\n let y10 = options.y1 - options.thickness / 2;\n\n if (options.align === 'center') {\n y00 = options.y0 - thickness / 2;\n y10 = options.y1 - thickness / 2;\n } else if (options.align === 'end') {\n y00 = options.y0 + options.thickness / 2 - thickness;\n y10 = options.y1 + options.thickness / 2 - thickness;\n }\n\n let midX = (x0 + x1) / 2;\n let y01 = y00 + thickness;\n let y11 = y10 + thickness;\n\n if (options.round) {\n x0 = Math.round(x0);\n x1 = Math.round(x1);\n y00 = Math.round(y00);\n y10 = Math.round(y10);\n y01 = Math.round(y01);\n y11 = Math.round(y11);\n midX = Math.round(midX);\n }\n\n const hasLength = Math.abs(x1 - x0) > 1e-6;\n const endArrowPath =\n options.endArrow && hasLength\n ? `L${x1},${y10 - thickness / 2}L${x1 + thickness},${(y10 + y11) / 2}L${x1},${y11 + thickness / 2}`\n : '';\n const startArrowPath =\n options.startArrow && hasLength\n ? `L${x0},${y01 + thickness / 2}L${x0 - thickness},${(y00 + y01) / 2}L${x0},${y00 - thickness / 2}`\n : '';\n\n if (options.isSmooth === false) {\n return `M${x0},${y00}L${x1},${y10}${endArrowPath}L${x1},${y11}L${x0},${y01}${startArrowPath}Z`;\n }\n\n return `M${x0},${y00}\n C${midX},${y00},${midX},${y10},${x1},${y10}\n ${endArrowPath}\n L${x1},${y11}\n C${midX},${y11},${midX},${y01},${x0},${y01}\n ${startArrowPath}\n Z`;\n};\n\nexport const getVerticalPath = (options: LinkPathAttributes, ratio?: number) => {\n let y0 = options.y0;\n let y1 = options.y1;\n let x00 = options.x0 - options.thickness / 2;\n let x10 = options.x1 - options.thickness / 2;\n const thickness = typeof ratio === 'number' ? options.thickness * ratio : options.thickness;\n\n if (options.align === 'center') {\n x00 = options.x0 - thickness / 2;\n x10 = options.x1 - thickness / 2;\n } else if (options.align === 'end') {\n x00 = options.x0 + options.thickness / 2 - thickness;\n x10 = options.x1 + options.thickness / 2 - thickness;\n }\n\n let midY = (y0 + y1) / 2;\n let x01 = x00 + thickness;\n let x11 = x10 + thickness;\n\n if (options.round) {\n y0 = Math.round(y0);\n y1 = Math.round(y1);\n x00 = Math.round(x00);\n x10 = Math.round(x10);\n x01 = Math.round(x01);\n x11 = Math.round(x11);\n midY = Math.round(midY);\n }\n\n const hasLength = Math.abs(y1 - y0) > 1e-6;\n const endArrowPath =\n options.endArrow && hasLength\n ? `L${x10 - thickness / 2},${y1}L${(x10 + x11) / 2},${y1 + thickness}L${x11 + thickness / 2},${y1}`\n : '';\n const startArrowPath =\n options.startArrow && hasLength\n ? `L${x01 + thickness / 2},${y0}L${(x01 + x00) / 2},${y0 - thickness}L${x00 - thickness / 2},${y0}`\n : '';\n\n if (options.isSmooth === false) {\n return `M${x00},${y0}L${x10},${y1}${endArrowPath}L${x11},${y1}L${x01},${y0}${startArrowPath}Z`;\n }\n return `M${x00},${y0}\n C${x00},${midY},${x10},${midY},${x10},${y1}\n ${endArrowPath}\n L${x11},${y1}\n C${x11},${midY},${x01},${midY},${x01},${y0}\n ${startArrowPath}\n Z`;\n};\n\nexport class LinkPath extends AbstractComponent<Required<LinkPathAttributes>> {\n static defaultAttributes = {\n direction: 'horizontal',\n align: 'start'\n };\n\n private _container!: IGroup;\n\n private _backPath?: IPath;\n private _frontPath?: IPath;\n\n constructor(attributes: LinkPathAttributes) {\n super(merge({}, LinkPath.defaultAttributes, attributes));\n }\n\n protected render() {\n const { direction = 'horizontal' } = this.attribute as LinkPathAttributes;\n const parsePath = direction === 'vertical' ? getVerticalPath : getHorizontalPath;\n const isRatioShow =\n typeof this.attribute.ratio === 'number' && this.attribute.ratio >= 0 && this.attribute.ratio <= 1;\n const groupAttrKeys = [\n 'direction',\n 'x0',\n 'x1',\n 'y0',\n 'y1',\n 'thickness',\n 'round',\n 'ratio',\n 'align',\n 'isSmooth',\n 'backgroudStyle'\n ];\n const commonStyle: any = {};\n Object.keys(this.attribute).forEach(key => {\n if (!groupAttrKeys.includes(key)) {\n commonStyle[key] = (this.attribute as any)[key];\n }\n });\n\n if (isRatioShow) {\n const background = this.createOrUpdateChild(\n 'sankey-link-background',\n Object.assign({}, commonStyle, this.attribute.backgroudStyle, {\n path: parsePath(this.attribute as LinkPathAttributes, 1),\n visible: true,\n pickable: false,\n zIndex: -1\n }),\n 'path'\n ) as IPath;\n this._backPath = background;\n } else if (this._backPath) {\n this._backPath.setAttribute('visible', false);\n }\n\n const front = this.createOrUpdateChild(\n 'sankey-link-front',\n Object.assign({}, commonStyle, {\n path: parsePath(this.attribute as LinkPathAttributes, isRatioShow ? this.attribute.ratio : 1),\n pickable: false\n }),\n 'path'\n ) as IPath;\n this._frontPath = front;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/link-path/link-path.ts"],"names":[],"mappings":"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","file":"link-path.js","sourcesContent":["/**\n * @description 桑基图Link组件,也适用于其他有宽度的连边展示\n * @author 康晓婷\n */\nimport type { IGroup, IPath } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport type { LinkPathAttributes } from './type';\nimport type { ComponentOptions } from '../interface';\n\nexport const getHorizontalPath = (options: LinkPathAttributes, ratio?: number) => {\n let x0 = options.x0;\n let x1 = options.x1;\n const thickness = typeof ratio === 'number' ? options.thickness * ratio : options.thickness;\n let y00 = options.y0 - options.thickness / 2;\n let y10 = options.y1 - options.thickness / 2;\n\n if (options.align === 'center') {\n y00 = options.y0 - thickness / 2;\n y10 = options.y1 - thickness / 2;\n } else if (options.align === 'end') {\n y00 = options.y0 + options.thickness / 2 - thickness;\n y10 = options.y1 + options.thickness / 2 - thickness;\n }\n\n let midX = (x0 + x1) / 2;\n let y01 = y00 + thickness;\n let y11 = y10 + thickness;\n\n if (options.round) {\n x0 = Math.round(x0);\n x1 = Math.round(x1);\n y00 = Math.round(y00);\n y10 = Math.round(y10);\n y01 = Math.round(y01);\n y11 = Math.round(y11);\n midX = Math.round(midX);\n }\n\n const hasLength = Math.abs(x1 - x0) > 1e-6;\n const endArrowPath =\n options.endArrow && hasLength\n ? `L${x1},${y10 - thickness / 2}L${x1 + thickness},${(y10 + y11) / 2}L${x1},${y11 + thickness / 2}`\n : '';\n const startArrowPath =\n options.startArrow && hasLength\n ? `L${x0},${y01 + thickness / 2}L${x0 - thickness},${(y00 + y01) / 2}L${x0},${y00 - thickness / 2}`\n : '';\n\n if (options.isSmooth === false) {\n return `M${x0},${y00}L${x1},${y10}${endArrowPath}L${x1},${y11}L${x0},${y01}${startArrowPath}Z`;\n }\n\n return `M${x0},${y00}\n C${midX},${y00},${midX},${y10},${x1},${y10}\n ${endArrowPath}\n L${x1},${y11}\n C${midX},${y11},${midX},${y01},${x0},${y01}\n ${startArrowPath}\n Z`;\n};\n\nexport const getVerticalPath = (options: LinkPathAttributes, ratio?: number) => {\n let y0 = options.y0;\n let y1 = options.y1;\n let x00 = options.x0 - options.thickness / 2;\n let x10 = options.x1 - options.thickness / 2;\n const thickness = typeof ratio === 'number' ? options.thickness * ratio : options.thickness;\n\n if (options.align === 'center') {\n x00 = options.x0 - thickness / 2;\n x10 = options.x1 - thickness / 2;\n } else if (options.align === 'end') {\n x00 = options.x0 + options.thickness / 2 - thickness;\n x10 = options.x1 + options.thickness / 2 - thickness;\n }\n\n let midY = (y0 + y1) / 2;\n let x01 = x00 + thickness;\n let x11 = x10 + thickness;\n\n if (options.round) {\n y0 = Math.round(y0);\n y1 = Math.round(y1);\n x00 = Math.round(x00);\n x10 = Math.round(x10);\n x01 = Math.round(x01);\n x11 = Math.round(x11);\n midY = Math.round(midY);\n }\n\n const hasLength = Math.abs(y1 - y0) > 1e-6;\n const endArrowPath =\n options.endArrow && hasLength\n ? `L${x10 - thickness / 2},${y1}L${(x10 + x11) / 2},${y1 + thickness}L${x11 + thickness / 2},${y1}`\n : '';\n const startArrowPath =\n options.startArrow && hasLength\n ? `L${x01 + thickness / 2},${y0}L${(x01 + x00) / 2},${y0 - thickness}L${x00 - thickness / 2},${y0}`\n : '';\n\n if (options.isSmooth === false) {\n return `M${x00},${y0}L${x10},${y1}${endArrowPath}L${x11},${y1}L${x01},${y0}${startArrowPath}Z`;\n }\n return `M${x00},${y0}\n C${x00},${midY},${x10},${midY},${x10},${y1}\n ${endArrowPath}\n L${x11},${y1}\n C${x11},${midY},${x01},${midY},${x01},${y0}\n ${startArrowPath}\n Z`;\n};\n\nexport class LinkPath extends AbstractComponent<Required<LinkPathAttributes>> {\n static defaultAttributes = {\n direction: 'horizontal',\n align: 'start'\n };\n\n private _container!: IGroup;\n\n private _backPath?: IPath;\n private _frontPath?: IPath;\n\n constructor(attributes: LinkPathAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, LinkPath.defaultAttributes, attributes));\n }\n\n protected render() {\n const { direction = 'horizontal' } = this.attribute as LinkPathAttributes;\n const parsePath = direction === 'vertical' ? getVerticalPath : getHorizontalPath;\n const isRatioShow =\n typeof this.attribute.ratio === 'number' && this.attribute.ratio >= 0 && this.attribute.ratio <= 1;\n const groupAttrKeys = [\n 'direction',\n 'x0',\n 'x1',\n 'y0',\n 'y1',\n 'thickness',\n 'round',\n 'ratio',\n 'align',\n 'isSmooth',\n 'backgroudStyle'\n ];\n const commonStyle: any = {};\n Object.keys(this.attribute).forEach(key => {\n if (!groupAttrKeys.includes(key)) {\n commonStyle[key] = (this.attribute as any)[key];\n }\n });\n\n if (isRatioShow) {\n const background = this.createOrUpdateChild(\n 'sankey-link-background',\n Object.assign({}, commonStyle, this.attribute.backgroudStyle, {\n path: parsePath(this.attribute as LinkPathAttributes, 1),\n visible: true,\n pickable: false,\n zIndex: -1\n }),\n 'path'\n ) as IPath;\n this._backPath = background;\n } else if (this._backPath) {\n this._backPath.setAttribute('visible', false);\n }\n\n const front = this.createOrUpdateChild(\n 'sankey-link-front',\n Object.assign({}, commonStyle, {\n path: parsePath(this.attribute as LinkPathAttributes, isRatioShow ? this.attribute.ratio : 1),\n pickable: false\n }),\n 'path'\n ) as IPath;\n this._frontPath = front;\n }\n}\n"]}
@@ -2,6 +2,7 @@ import type { IGroup, IPolygon } from '@visactor/vrender-core';
2
2
  import { Tag } from '../tag';
3
3
  import { Marker } from './base';
4
4
  import type { MarkAreaAttrs } from './type';
5
+ import type { ComponentOptions } from '../interface';
5
6
  export declare class MarkArea extends Marker<MarkAreaAttrs> {
6
7
  name: string;
7
8
  static defaultAttributes: {
@@ -31,7 +32,7 @@ export declare class MarkArea extends Marker<MarkAreaAttrs> {
31
32
  private _area;
32
33
  getArea(): IPolygon;
33
34
  getLabel(): Tag;
34
- constructor(attributes: MarkAreaAttrs);
35
+ constructor(attributes: MarkAreaAttrs, options?: ComponentOptions);
35
36
  private _getPositionByDirection;
36
37
  protected setLabelPos(): void;
37
38
  protected initMarker(container: IGroup): void;
package/es/marker/area.js CHANGED
@@ -17,8 +17,9 @@ export class MarkArea extends Marker {
17
17
  getLabel() {
18
18
  return this._label;
19
19
  }
20
- constructor(attributes) {
21
- super(merge({}, MarkArea.defaultAttributes, attributes)), this.name = "markArea";
20
+ constructor(attributes, options) {
21
+ super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, MarkArea.defaultAttributes, attributes)),
22
+ this.name = "markArea";
22
23
  }
23
24
  _getPositionByDirection(area, direction) {
24
25
  const {x1: x1, x2: x2, y1: y1, y2: y2} = this._area.AABBBounds;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marker/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["import type { IGroup, INode, IPolygon } from '@visactor/vrender-core';\nimport { createPolygon } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_AREA_TEXT_STYLE_MAP, DEFAULT_MARK_AREA_THEME } from './config';\nimport type { MarkAreaAttrs } from './type';\nimport { limitShapeInBounds } from '../util/limit-shape';\n\nexport class MarkArea extends Marker<MarkAreaAttrs> {\n name = 'markArea';\n static defaultAttributes = DEFAULT_MARK_AREA_THEME;\n private _area!: IPolygon;\n getArea() {\n return this._area;\n }\n\n getLabel() {\n return this._label;\n }\n\n constructor(attributes: MarkAreaAttrs) {\n super(merge({}, MarkArea.defaultAttributes, attributes));\n }\n\n private _getPositionByDirection(area: IPolygon, direction: string) {\n const { x1, x2, y1, y2 } = this._area.AABBBounds;\n\n if (direction.includes('left') || direction.includes('Left')) {\n return {\n x: x1,\n y: (y1 + y2) / 2\n };\n }\n if (direction.includes('right') || direction.includes('Right')) {\n return {\n x: x2,\n y: (y1 + y2) / 2\n };\n }\n if (direction.includes('top') || direction.includes('Top')) {\n return {\n x: (x1 + x2) / 2,\n y: y1\n };\n }\n if (direction.includes('bottom') || direction.includes('Bottom')) {\n return {\n x: (x1 + x2) / 2,\n y: y2\n };\n }\n\n return {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n };\n }\n\n protected setLabelPos() {\n if (this._label && this._area) {\n const { label } = this.attribute as MarkAreaAttrs;\n const labelPosition = label?.position ?? 'middle';\n const labelPoint = this._getPositionByDirection(this._area, labelPosition);\n this._label.setAttributes({\n ...labelPoint,\n textStyle: {\n ...DEFAULT_MARK_AREA_TEXT_STYLE_MAP[labelPosition],\n ...label.textStyle\n }\n });\n\n if (this.attribute.limitRect && label?.confine) {\n const { x, y, width, height } = this.attribute.limitRect;\n limitShapeInBounds(this._label, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n }\n }\n }\n\n protected initMarker(container: IGroup) {\n const { points, label, areaStyle } = this.attribute as MarkAreaAttrs;\n const area = createPolygon({\n points: points,\n ...areaStyle\n });\n area.name = 'mark-area-area';\n this._area = area;\n container.add(area);\n\n const markLabel = new Tag({\n ...label\n });\n markLabel.name = 'mark-area-label';\n this._label = markLabel;\n container.add(markLabel as unknown as INode);\n this.setLabelPos();\n }\n\n protected updateMarker() {\n const { points, label, areaStyle } = this.attribute as MarkAreaAttrs;\n this._area?.setAttributes({\n points: points,\n ...areaStyle\n });\n this._label?.setAttributes({\n dx: 0,\n dy: 0, // 需要进行复位\n ...label\n });\n this.setLabelPos();\n }\n\n protected isValidPoints() {\n const { points } = this.attribute as MarkAreaAttrs;\n if (!points || points.length < 3) {\n return false;\n }\n return true;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/marker/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["import type { IGroup, INode, IPolygon } from '@visactor/vrender-core';\nimport { createPolygon } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport type { TagAttributes } from '../tag';\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_AREA_TEXT_STYLE_MAP, DEFAULT_MARK_AREA_THEME } from './config';\nimport type { MarkAreaAttrs } from './type';\nimport { limitShapeInBounds } from '../util/limit-shape';\nimport type { ComponentOptions } from '../interface';\n\nexport class MarkArea extends Marker<MarkAreaAttrs> {\n name = 'markArea';\n static defaultAttributes = DEFAULT_MARK_AREA_THEME;\n private _area!: IPolygon;\n getArea() {\n return this._area;\n }\n\n getLabel() {\n return this._label;\n }\n\n constructor(attributes: MarkAreaAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkArea.defaultAttributes, attributes));\n }\n\n private _getPositionByDirection(area: IPolygon, direction: string) {\n const { x1, x2, y1, y2 } = this._area.AABBBounds;\n\n if (direction.includes('left') || direction.includes('Left')) {\n return {\n x: x1,\n y: (y1 + y2) / 2\n };\n }\n if (direction.includes('right') || direction.includes('Right')) {\n return {\n x: x2,\n y: (y1 + y2) / 2\n };\n }\n if (direction.includes('top') || direction.includes('Top')) {\n return {\n x: (x1 + x2) / 2,\n y: y1\n };\n }\n if (direction.includes('bottom') || direction.includes('Bottom')) {\n return {\n x: (x1 + x2) / 2,\n y: y2\n };\n }\n\n return {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n };\n }\n\n protected setLabelPos() {\n if (this._label && this._area) {\n const { label } = this.attribute as MarkAreaAttrs;\n const labelPosition = label?.position ?? 'middle';\n const labelPoint = this._getPositionByDirection(this._area, labelPosition);\n this._label.setAttributes({\n ...labelPoint,\n textStyle: {\n ...DEFAULT_MARK_AREA_TEXT_STYLE_MAP[labelPosition],\n ...label.textStyle\n }\n });\n\n if (this.attribute.limitRect && label?.confine) {\n const { x, y, width, height } = this.attribute.limitRect;\n limitShapeInBounds(this._label, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n }\n }\n }\n\n protected initMarker(container: IGroup) {\n const { points, label, areaStyle } = this.attribute as MarkAreaAttrs;\n const area = createPolygon({\n points: points,\n ...areaStyle\n });\n area.name = 'mark-area-area';\n this._area = area;\n container.add(area);\n\n const markLabel = new Tag({\n ...(label as TagAttributes)\n });\n markLabel.name = 'mark-area-label';\n this._label = markLabel;\n container.add(markLabel as unknown as INode);\n this.setLabelPos();\n }\n\n protected updateMarker() {\n const { points, label, areaStyle } = this.attribute as MarkAreaAttrs;\n this._area?.setAttributes({\n points: points,\n ...areaStyle\n });\n this._label?.setAttributes({\n dx: 0,\n dy: 0, // 需要进行复位\n ...(label as TagAttributes)\n });\n this.setLabelPos();\n }\n\n protected isValidPoints() {\n const { points } = this.attribute as MarkAreaAttrs;\n if (!points || points.length < 3) {\n return false;\n }\n return true;\n }\n}\n"]}
@@ -3,13 +3,14 @@ import { Segment } from '../segment';
3
3
  import { Tag } from '../tag';
4
4
  import { Marker } from './base';
5
5
  import type { MarkLineAttrs } from './type';
6
+ import type { ComponentOptions } from '../interface';
6
7
  export declare class MarkLine extends Marker<MarkLineAttrs> {
7
8
  name: string;
8
9
  static defaultAttributes: Partial<MarkLineAttrs>;
9
10
  private _line;
10
11
  getLine(): Segment;
11
12
  getLabel(): Tag;
12
- constructor(attributes: MarkLineAttrs);
13
+ constructor(attributes: MarkLineAttrs, options?: ComponentOptions);
13
14
  protected setLabelPos(): void;
14
15
  protected initMarker(container: IGroup): void;
15
16
  protected updateMarker(): void;
package/es/marker/line.js CHANGED
@@ -17,8 +17,9 @@ export class MarkLine extends Marker {
17
17
  getLabel() {
18
18
  return this._label;
19
19
  }
20
- constructor(attributes) {
21
- super(merge({}, MarkLine.defaultAttributes, attributes)), this.name = "markLine";
20
+ constructor(attributes, options) {
21
+ super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, MarkLine.defaultAttributes, attributes)),
22
+ this.name = "markLine";
22
23
  }
23
24
  setLabelPos() {
24
25
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marker/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import type { IGroup, INode } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport { Segment } from '../segment';\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_LINE_THEME, DEFAULT_MARK_LINE_TEXT_STYLE_MAP } from './config';\nimport type { MarkLineAttrs } from './type';\nimport { limitShapeInBounds } from '../util/limit-shape';\nimport type { Point } from '../core/type';\n\nexport class MarkLine extends Marker<MarkLineAttrs> {\n name = 'markLine';\n static defaultAttributes: Partial<MarkLineAttrs> = DEFAULT_MARK_LINE_THEME;\n\n private _line!: Segment;\n getLine() {\n return this._line;\n }\n getLabel() {\n return this._label;\n }\n\n constructor(attributes: MarkLineAttrs) {\n super(merge({}, MarkLine.defaultAttributes, attributes));\n }\n\n protected setLabelPos() {\n const { label = {}, limitRect } = this.attribute as MarkLineAttrs;\n const { position = 'end', refX = 0, refY = 0, confine } = label;\n const points = this._line.getMainSegmentPoints();\n const labelAngle = this._line.getEndAngle() ?? 0;\n const labelOffsetX = refX * Math.cos(labelAngle) + refY * Math.cos(labelAngle - Math.PI / 2);\n const labelOffsetY = refX * Math.sin(labelAngle) + refY * Math.sin(labelAngle - Math.PI / 2);\n let labelPoint: Point;\n if (position.includes('start') || position.includes('Start')) {\n labelPoint = {\n x: points[0].x + labelOffsetX,\n y: points[0].y + labelOffsetY\n };\n } else if (position.includes('middle') || position.includes('Middle')) {\n labelPoint = {\n x: (points[0].x + points[points.length - 1].x) / 2 + labelOffsetX,\n y: (points[0].y + points[points.length - 1].y) / 2 + labelOffsetY\n };\n } else {\n labelPoint = {\n x: points[points.length - 1].x + labelOffsetX,\n y: points[points.length - 1].y + labelOffsetY\n };\n }\n this._label.setAttributes({\n ...labelPoint,\n angle: label.autoRotate ? labelAngle + (label?.refAngle ?? 0) : 0,\n textStyle: {\n ...DEFAULT_MARK_LINE_TEXT_STYLE_MAP[position],\n ...label.textStyle\n }\n });\n if (limitRect && confine) {\n const { x, y, width, height } = limitRect;\n limitShapeInBounds(this._label, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n }\n }\n\n protected initMarker(container: IGroup) {\n const { points, startSymbol, endSymbol, label, lineStyle, mainSegmentIndex, multiSegment } = this\n .attribute as MarkLineAttrs;\n const line = new Segment({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n mainSegmentIndex,\n multiSegment,\n pickable: false // 组件容器本身不参与拾取\n });\n line.name = 'mark-line-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n const markLabel = new Tag({\n ...label\n });\n markLabel.name = 'mark-line-label';\n this._label = markLabel;\n container.add(markLabel as unknown as INode);\n this.setLabelPos();\n }\n\n protected updateMarker() {\n const { points, startSymbol, endSymbol, label, lineStyle, mainSegmentIndex, multiSegment } = this\n .attribute as MarkLineAttrs;\n\n this._line?.setAttributes({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n mainSegmentIndex,\n multiSegment\n });\n\n this._label?.setAttributes({\n dx: 0,\n dy: 0, // 需要进行复位\n ...label\n });\n\n this.setLabelPos();\n }\n\n protected isValidPoints() {\n const { points } = this.attribute as MarkLineAttrs;\n if (!points || points.length < 2) {\n return false;\n }\n return true;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/marker/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import type { IGroup, INode } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport { Segment } from '../segment';\nimport type { TagAttributes } from '../tag';\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_LINE_THEME, DEFAULT_MARK_LINE_TEXT_STYLE_MAP } from './config';\nimport type { MarkLineAttrs } from './type';\nimport { limitShapeInBounds } from '../util/limit-shape';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\n\nexport class MarkLine extends Marker<MarkLineAttrs> {\n name = 'markLine';\n static defaultAttributes: Partial<MarkLineAttrs> = DEFAULT_MARK_LINE_THEME;\n\n private _line!: Segment;\n getLine() {\n return this._line;\n }\n getLabel() {\n return this._label;\n }\n\n constructor(attributes: MarkLineAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkLine.defaultAttributes, attributes));\n }\n\n protected setLabelPos() {\n const { label = {}, limitRect } = this.attribute as MarkLineAttrs;\n const { position = 'end', refX = 0, refY = 0, confine } = label;\n const points = this._line.getMainSegmentPoints();\n const labelAngle = this._line.getEndAngle() ?? 0;\n const labelOffsetX = refX * Math.cos(labelAngle) + refY * Math.cos(labelAngle - Math.PI / 2);\n const labelOffsetY = refX * Math.sin(labelAngle) + refY * Math.sin(labelAngle - Math.PI / 2);\n let labelPoint;\n if (position.includes('start') || position.includes('Start')) {\n labelPoint = {\n x: points[0].x + labelOffsetX,\n y: points[0].y + labelOffsetY\n };\n } else if (position.includes('middle') || position.includes('Middle')) {\n labelPoint = {\n x: (points[0].x + points[points.length - 1].x) / 2 + labelOffsetX,\n y: (points[0].y + points[points.length - 1].y) / 2 + labelOffsetY\n };\n } else {\n labelPoint = {\n x: points[points.length - 1].x + labelOffsetX,\n y: points[points.length - 1].y + labelOffsetY\n };\n }\n this._label.setAttributes({\n ...labelPoint,\n angle: label.autoRotate ? labelAngle + (label?.refAngle ?? 0) : 0,\n textStyle: {\n ...DEFAULT_MARK_LINE_TEXT_STYLE_MAP[position],\n ...label.textStyle\n }\n });\n if (limitRect && confine) {\n const { x, y, width, height } = limitRect;\n limitShapeInBounds(this._label, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n }\n }\n\n protected initMarker(container: IGroup) {\n const { points, startSymbol, endSymbol, label, lineStyle, mainSegmentIndex, multiSegment } = this\n .attribute as MarkLineAttrs;\n const line = new Segment({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n mainSegmentIndex,\n multiSegment,\n pickable: false // 组件容器本身不参与拾取\n });\n line.name = 'mark-line-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n const markLabel = new Tag({\n ...(label as TagAttributes)\n });\n markLabel.name = 'mark-line-label';\n this._label = markLabel;\n container.add(markLabel as unknown as INode);\n this.setLabelPos();\n }\n\n protected updateMarker() {\n const { points, startSymbol, endSymbol, label, lineStyle, mainSegmentIndex, multiSegment } = this\n .attribute as MarkLineAttrs;\n\n this._line?.setAttributes({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n mainSegmentIndex,\n multiSegment\n });\n\n this._label?.setAttributes({\n dx: 0,\n dy: 0, // 需要进行复位\n ...(label as TagAttributes)\n });\n\n this.setLabelPos();\n }\n\n protected isValidPoints() {\n const { points } = this.attribute as MarkLineAttrs;\n if (!points || points.length < 2) {\n return false;\n }\n return true;\n }\n}\n"]}
@@ -4,6 +4,7 @@ import { Marker } from './base';
4
4
  import type { IItemContent, IItemLine, MarkPointAttrs } from './type';
5
5
  import { IMarkPointItemPosition } from './type';
6
6
  import type { Point } from '../core/type';
7
+ import type { ComponentOptions } from '../interface';
7
8
  export declare class MarkPoint extends Marker<MarkPointAttrs> {
8
9
  name: string;
9
10
  static defaultAttributes: {
@@ -65,7 +66,7 @@ export declare class MarkPoint extends Marker<MarkPointAttrs> {
65
66
  private _item;
66
67
  private _line?;
67
68
  private _decorativeLine;
68
- constructor(attributes: MarkPointAttrs);
69
+ constructor(attributes: MarkPointAttrs, options?: ComponentOptions);
69
70
  protected setLabelPos(): void;
70
71
  protected setItemAttributes(item: ISymbol | Tag | IImage | IRichText, itemContent: IItemContent, itemPosition: Point, itemType: 'symbol' | 'text' | 'image' | 'richText' | 'custom'): void;
71
72
  protected getItemDx(item: ISymbol | Tag | IImage | IRichText, position: keyof typeof IMarkPointItemPosition, style?: IImageGraphicAttribute | IRichTextGraphicAttribute): number;
@@ -13,8 +13,9 @@ import { DEFAULT_MARK_POINT_TEXT_STYLE_MAP, DEFAULT_MARK_POINT_THEME } from "./c
13
13
  import { IMarkPointItemPosition } from "./type";
14
14
 
15
15
  export class MarkPoint extends Marker {
16
- constructor(attributes) {
17
- super(merge({}, MarkPoint.defaultAttributes, attributes)), this.name = "markPoint";
16
+ constructor(attributes, options) {
17
+ super((null == options ? void 0 : options.skipDefault) ? attributes : merge({}, MarkPoint.defaultAttributes, attributes)),
18
+ this.name = "markPoint";
18
19
  }
19
20
  setLabelPos() {}
20
21
  setItemAttributes(item, itemContent, itemPosition, itemType) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marker/point.ts"],"names":[],"mappings":"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","file":"point.js","sourcesContent":["import type {\n IGroup,\n IImage,\n INode,\n ISymbol,\n IImageGraphicAttribute,\n IRichText,\n IRichTextGraphicAttribute,\n ILine,\n ILineGraphicAttribute\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { createRichText, createSymbol, createImage, createLine } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { merge } from '@visactor/vutils';\nimport { Segment } from '../segment';\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_POINT_TEXT_STYLE_MAP, DEFAULT_MARK_POINT_THEME } from './config';\nimport type { IItemContent, IItemLine, MarkPointAttrs } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport { IMarkPointItemPosition } from './type';\nimport type { Point } from '../core/type';\n\nexport class MarkPoint extends Marker<MarkPointAttrs> {\n name = 'markPoint';\n static defaultAttributes = DEFAULT_MARK_POINT_THEME;\n\n private _item!: ISymbol | Tag | IImage | IRichText;\n\n private _line?: Segment;\n\n private _decorativeLine!: ILine;\n\n constructor(attributes: MarkPointAttrs) {\n super(merge({}, MarkPoint.defaultAttributes, attributes));\n }\n\n protected setLabelPos() {\n //do nothing\n }\n\n protected setItemAttributes(\n item: ISymbol | Tag | IImage | IRichText,\n itemContent: IItemContent,\n itemPosition: Point,\n itemType: 'symbol' | 'text' | 'image' | 'richText' | 'custom'\n ) {\n if (!item) {\n return;\n }\n const {\n autoRotate = true,\n refX = 0,\n refY = 0,\n refAngle = 0,\n textStyle,\n richTextStyle,\n imageStyle,\n position = IMarkPointItemPosition.middle\n } = itemContent;\n const itemAngle = this._line?.getEndAngle() || 0;\n const itemOffsetX = refX * Math.cos(itemAngle) + refY * Math.cos(itemAngle - Math.PI / 2);\n const itemOffsetY = refX * Math.sin(itemAngle) + refY * Math.sin(itemAngle - Math.PI / 2);\n if (itemType === 'text') {\n item.setAttributes({\n ...textStyle,\n textStyle: {\n ...DEFAULT_MARK_POINT_TEXT_STYLE_MAP[itemContent?.position || 'end'],\n ...textStyle?.textStyle\n }\n });\n } else if (itemType === 'richText') {\n item.setAttributes({\n dx: this.getItemDx(item, position, richTextStyle) + (richTextStyle?.dx || 0),\n dy: this.getItemDy(item, position, richTextStyle) + (richTextStyle?.dy || 0)\n });\n } else if (itemType === 'image') {\n item.setAttributes({\n dx: this.getItemDx(item, position, imageStyle) + (imageStyle?.dx || 0),\n dy: this.getItemDy(item, position, imageStyle) + (imageStyle?.dy || 0)\n });\n }\n item.setAttributes({\n x: itemPosition.x + (itemOffsetX || 0),\n y: itemPosition.y + (itemOffsetY || 0),\n angle: autoRotate && itemAngle + refAngle\n });\n\n // if (this.attribute.limitRect && this.attribute.itemContent?.confine) {\n // const { x, y, width, height } = this.attribute.limitRect;\n // limitShapeInBounds(item, {\n // x1: x,\n // y1: y,\n // x2: x + width,\n // y2: y + height\n // });\n // }\n }\n\n protected getItemDx(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const width = (item as IGroup)?.AABBBounds?.width() ?? (style?.width || 0);\n if (position.includes('inside')) {\n return -width;\n }\n if (position === 'insideTop') {\n return 0;\n }\n return 0;\n }\n\n protected getItemDy(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const height = (item as IGroup)?.AABBBounds?.height() ?? (style?.height || 0);\n if (position.includes('top') || position.includes('Top')) {\n return -height;\n }\n if (position.includes('middle') || position.includes('Middle')) {\n return -height / 2;\n }\n return 0;\n }\n\n protected initItem(itemContent: IItemContent, itemPosition: Point) {\n const { type = 'text', symbolStyle, richTextStyle, imageStyle, renderCustomCallback } = itemContent;\n let item: ISymbol | Tag | IImage | IRichText | IGroup;\n if (type === 'symbol') {\n item = createSymbol({\n ...itemPosition,\n ...symbolStyle\n });\n } else if (type === 'text') {\n item = new Tag({\n ...itemPosition\n });\n } else if (type === 'richText') {\n item = createRichText({\n ...itemPosition,\n ...richTextStyle\n });\n } else if (type === 'image') {\n item = createImage({\n ...itemPosition,\n ...imageStyle\n });\n } else if (type === 'custom' && renderCustomCallback) {\n item = renderCustomCallback();\n }\n this.setItemAttributes(item, itemContent, itemPosition, type);\n return item;\n }\n\n protected getItemLineAttr(itemLine: IItemLine, position: Point, itemPosition: Point) {\n let points: Point[] = [];\n const { type = 'type-s' } = itemLine;\n if (type === 'type-do') {\n points = [\n position,\n {\n x: (position.x + itemPosition.x) / 2,\n y: itemPosition.y\n },\n itemPosition\n ];\n } else if (type === 'type-po') {\n points = [\n position,\n {\n x: itemPosition.x,\n y: position.y\n },\n itemPosition\n ];\n } else if (type === 'type-op') {\n points = [\n position,\n {\n x: position.x,\n y: itemPosition.y\n },\n itemPosition\n ];\n } else {\n points = [position, itemPosition];\n }\n return points;\n }\n\n protected setItemLineAttr(itemLine: IItemLine, position: Point, itemPosition: Point, visible: boolean) {\n const { startSymbol, endSymbol, lineStyle } = itemLine;\n const points = this.getItemLineAttr(itemLine, position, itemPosition);\n this._line?.setAttributes({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n visible\n });\n }\n\n protected getDecorativeLineAttr(itemLine: IItemLine, itemPosition: Point) {\n const decorativeLength = itemLine?.decorativeLine?.length || 10;\n const itemAngle = this._line.getEndAngle() || 0;\n const startPointOffsetX = (decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const startPointOffsetY = (decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n const endPointOffsetX = (-decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const endPointOffsetY = (-decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n return {\n startPointOffsetX,\n startPointOffsetY,\n endPointOffsetX,\n endPointOffsetY\n };\n }\n\n protected setDecorativeLineAttr(itemLine: IItemLine, itemPosition: Point, visible: boolean) {\n const { lineStyle } = itemLine;\n const { startPointOffsetX, startPointOffsetY, endPointOffsetX, endPointOffsetY } = this.getDecorativeLineAttr(\n itemLine,\n itemPosition\n );\n this._decorativeLine?.setAttributes({\n points: [\n {\n x: itemPosition.x + startPointOffsetX,\n y: itemPosition.y + startPointOffsetY\n },\n {\n x: itemPosition.x + endPointOffsetX,\n y: itemPosition.y + endPointOffsetY\n }\n ] as IPointLike[],\n ...(lineStyle as Partial<ILineGraphicAttribute>),\n visible\n });\n }\n\n protected initMarker(container: IGroup) {\n const { position, itemLine, itemContent } = this.attribute as MarkPointAttrs;\n const itemPosition = {\n x: position.x + (itemContent?.offsetX || 0),\n y: position.y + (itemContent?.offsetY || 0)\n };\n\n const line = new Segment({\n points: [],\n pickable: false // 组件容器本身不参与拾取\n });\n line.name = 'mark-point-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n const decorativeLine = createLine({\n points: []\n });\n decorativeLine.name = 'mark-point-decorativeLine';\n this._decorativeLine = decorativeLine;\n container.add(decorativeLine as unknown as INode);\n\n this.setItemLineAttr(itemLine, position, itemPosition, itemLine?.visible);\n this.setDecorativeLineAttr(itemLine, itemPosition, itemLine?.decorativeLine?.visible);\n\n const item = this.initItem(itemContent as any, itemPosition);\n this._item = item;\n container.add(item as unknown as INode);\n }\n\n protected updateMarker() {\n const { position, itemLine, itemContent } = this.attribute as MarkPointAttrs;\n const { type = 'text' } = itemContent;\n const itemPosition = {\n x: position.x + (itemContent?.offsetX || 0),\n y: position.y + (itemContent?.offsetY || 0)\n };\n this.setItemLineAttr(itemLine, position, itemPosition, itemLine?.visible);\n this.setDecorativeLineAttr(itemLine, itemPosition, itemLine?.decorativeLine?.visible);\n this.setItemAttributes(this._item, itemContent, itemPosition, type);\n }\n\n protected isValidPoints() {\n return true;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/marker/point.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAG/F,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,iCAAiC,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAIhD,MAAM,OAAO,SAAU,SAAQ,MAAsB;IAUnD,YAAY,UAA0B,EAAE,OAA0B;QAChE,KAAK,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;QAVhG,SAAI,GAAG,WAAW,CAAC;IAWnB,CAAC;IAES,WAAW;IAErB,CAAC;IAES,iBAAiB,CACzB,IAAwC,EACxC,WAAyB,EACzB,YAAmB,EACnB,QAA6D;;QAE7D,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,MAAM,EACJ,UAAU,GAAG,IAAI,EACjB,IAAI,GAAG,CAAC,EACR,IAAI,GAAG,CAAC,EACR,QAAQ,GAAG,CAAC,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,QAAQ,GAAG,sBAAsB,CAAC,MAAM,EACzC,GAAG,WAAW,CAAC;QAChB,MAAM,SAAS,GAAG,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE,KAAI,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1F,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1F,IAAI,QAAQ,KAAK,MAAM,EAAE;YACvB,IAAI,CAAC,aAAa,iCACZ,SAA2B,KAC/B,SAAS,kCACJ,iCAAiC,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,KAAI,KAAK,CAAC,GACjE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,KAEzB,CAAC;SACJ;aAAM,IAAI,QAAQ,KAAK,UAAU,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC;gBACjB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,KAAI,CAAC,CAAC;gBAC5E,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,KAAI,CAAC,CAAC;aAC7E,CAAC,CAAC;SACJ;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;YAC/B,IAAI,CAAC,aAAa,CAAC;gBACjB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,EAAE,KAAI,CAAC,CAAC;gBACtE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,EAAE,KAAI,CAAC,CAAC;aACvE,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,aAAa,CAAC;YACjB,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC;YACtC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC;YACtC,KAAK,EAAE,UAAU,IAAI,SAAS,GAAG,QAAQ;SAC1C,CAAC,CAAC;IAWL,CAAC;IAES,SAAS,CACjB,IAAwC,EACxC,QAA6C,EAC7C,KAA0D;;QAE1D,MAAM,KAAK,GAAG,MAAA,MAAC,IAAe,aAAf,IAAI,uBAAJ,IAAI,CAAa,UAAU,0CAAE,KAAK,EAAE,mCAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,CAAC,CAAC,CAAC;QAC3E,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC;SACf;QACD,IAAI,QAAQ,KAAK,WAAW,EAAE;YAC5B,OAAO,CAAC,CAAC;SACV;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAES,SAAS,CACjB,IAAwC,EACxC,QAA6C,EAC7C,KAA0D;;QAE1D,MAAM,MAAM,GAAG,MAAA,MAAC,IAAe,aAAf,IAAI,uBAAJ,IAAI,CAAa,UAAU,0CAAE,MAAM,EAAE,mCAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,KAAI,CAAC,CAAC,CAAC;QAC9E,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACxD,OAAO,CAAC,MAAM,CAAC;SAChB;QACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC9D,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SACpB;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAES,QAAQ,CAAC,WAAyB,EAAE,YAAmB;QAC/D,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,WAAW,CAAC;QACpG,IAAI,IAAiD,CAAC;QACtD,IAAI,IAAI,KAAK,QAAQ,EAAE;YACrB,IAAI,GAAG,YAAY,iCACd,YAAY,GACZ,WAAW,EACd,CAAC;SACJ;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YAC1B,IAAI,GAAG,IAAI,GAAG,mBACT,YAAY,EACf,CAAC;SACJ;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE;YAC9B,IAAI,GAAG,cAAc,iCAChB,YAAY,GACZ,aAAa,EAChB,CAAC;SACJ;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE;YAC3B,IAAI,GAAG,WAAW,iCACb,YAAY,GACZ,UAAU,EACb,CAAC;SACJ;aAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,oBAAoB,EAAE;YACpD,IAAI,GAAG,oBAAoB,EAAE,CAAC;SAC/B;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAES,eAAe,CAAC,QAAmB,EAAE,QAAe,EAAE,YAAmB;QACjF,IAAI,MAAM,GAAY,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;QACrC,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,MAAM,GAAG;gBACP,QAAQ;gBACR;oBACE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;oBACpC,CAAC,EAAE,YAAY,CAAC,CAAC;iBAClB;gBACD,YAAY;aACb,CAAC;SACH;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE;YAC7B,MAAM,GAAG;gBACP,QAAQ;gBACR;oBACE,CAAC,EAAE,YAAY,CAAC,CAAC;oBACjB,CAAC,EAAE,QAAQ,CAAC,CAAC;iBACd;gBACD,YAAY;aACb,CAAC;SACH;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE;YAC7B,MAAM,GAAG;gBACP,QAAQ;gBACR;oBACE,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACb,CAAC,EAAE,YAAY,CAAC,CAAC;iBAClB;gBACD,YAAY;aACb,CAAC;SACH;aAAM;YACL,MAAM,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;SACnC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,eAAe,CAAC,QAAmB,EAAE,QAAe,EAAE,YAAmB,EAAE,OAAgB;;QACnG,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtE,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,CAAC;YACxB,MAAM;YACN,WAAW;YACX,SAAS;YACT,SAAS;YACT,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAES,qBAAqB,CAAC,QAAmB,EAAE,YAAmB;;QACtE,MAAM,gBAAgB,GAAG,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,0CAAE,MAAM,KAAI,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,iBAAiB,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrF,MAAM,iBAAiB,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrF,MAAM,eAAe,GAAG,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACpF,MAAM,eAAe,GAAG,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACpF,OAAO;YACL,iBAAiB;YACjB,iBAAiB;YACjB,eAAe;YACf,eAAe;SAChB,CAAC;IACJ,CAAC;IAES,qBAAqB,CAAC,QAAmB,EAAE,YAAmB,EAAE,OAAgB;;QACxF,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;QAC/B,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAC3G,QAAQ,EACR,YAAY,CACb,CAAC;QACF,MAAA,IAAI,CAAC,eAAe,0CAAE,aAAa,+BACjC,MAAM,EAAE;gBACN;oBACE,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,iBAAiB;oBACrC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,iBAAiB;iBACtC;gBACD;oBACE,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,eAAe;oBACnC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,eAAe;iBACpC;aACc,IACb,SAA4C,KAChD,OAAO,IACP,CAAC;IACL,CAAC;IAES,UAAU,CAAC,SAAiB;;QACpC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAA2B,CAAC;QAC7E,MAAM,YAAY,GAAG;YACnB,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,KAAI,CAAC,CAAC;YAC3C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,KAAI,CAAC,CAAC;SAC5C,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC;YACvB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,SAAS,CAAC,GAAG,CAAC,IAAwB,CAAC,CAAC;QAExC,MAAM,cAAc,GAAG,UAAU,CAAC;YAChC,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QACH,cAAc,CAAC,IAAI,GAAG,2BAA2B,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,SAAS,CAAC,GAAG,CAAC,cAAkC,CAAC,CAAC;QAElD,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,0CAAE,OAAO,CAAC,CAAC;QAEtF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAkB,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,SAAS,CAAC,GAAG,CAAC,IAAwB,CAAC,CAAC;IAC1C,CAAC;IAES,YAAY;;QACpB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAA2B,CAAC;QAC7E,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,WAAW,CAAC;QACtC,MAAM,YAAY,GAAG;YACnB,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,KAAI,CAAC,CAAC;YAC3C,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,KAAI,CAAC,CAAC;SAC5C,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,0CAAE,OAAO,CAAC,CAAC;QACtF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAES,aAAa;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;;AAtQM,2BAAiB,GAAG,wBAAwB,CAAC","file":"point.js","sourcesContent":["import type {\n IGroup,\n IImage,\n INode,\n ISymbol,\n IImageGraphicAttribute,\n IRichText,\n IRichTextGraphicAttribute,\n ILine,\n ILineGraphicAttribute\n} from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { createRichText, createSymbol, createImage, createLine } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { merge } from '@visactor/vutils';\nimport { Segment } from '../segment';\nimport type { TagAttributes } from '../tag';\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_POINT_TEXT_STYLE_MAP, DEFAULT_MARK_POINT_THEME } from './config';\nimport type { IItemContent, IItemLine, MarkPointAttrs } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport { IMarkPointItemPosition } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\n\nexport class MarkPoint extends Marker<MarkPointAttrs> {\n name = 'markPoint';\n static defaultAttributes = DEFAULT_MARK_POINT_THEME;\n\n private _item!: ISymbol | Tag | IImage | IRichText;\n\n private _line?: Segment;\n\n private _decorativeLine!: ILine;\n\n constructor(attributes: MarkPointAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkPoint.defaultAttributes, attributes));\n }\n\n protected setLabelPos() {\n //do nothing\n }\n\n protected setItemAttributes(\n item: ISymbol | Tag | IImage | IRichText,\n itemContent: IItemContent,\n itemPosition: Point,\n itemType: 'symbol' | 'text' | 'image' | 'richText' | 'custom'\n ) {\n if (!item) {\n return;\n }\n const {\n autoRotate = true,\n refX = 0,\n refY = 0,\n refAngle = 0,\n textStyle,\n richTextStyle,\n imageStyle,\n position = IMarkPointItemPosition.middle\n } = itemContent;\n const itemAngle = this._line?.getEndAngle() || 0;\n const itemOffsetX = refX * Math.cos(itemAngle) + refY * Math.cos(itemAngle - Math.PI / 2);\n const itemOffsetY = refX * Math.sin(itemAngle) + refY * Math.sin(itemAngle - Math.PI / 2);\n if (itemType === 'text') {\n item.setAttributes({\n ...(textStyle as TagAttributes),\n textStyle: {\n ...DEFAULT_MARK_POINT_TEXT_STYLE_MAP[itemContent?.position || 'end'],\n ...textStyle?.textStyle\n }\n });\n } else if (itemType === 'richText') {\n item.setAttributes({\n dx: this.getItemDx(item, position, richTextStyle) + (richTextStyle?.dx || 0),\n dy: this.getItemDy(item, position, richTextStyle) + (richTextStyle?.dy || 0)\n });\n } else if (itemType === 'image') {\n item.setAttributes({\n dx: this.getItemDx(item, position, imageStyle) + (imageStyle?.dx || 0),\n dy: this.getItemDy(item, position, imageStyle) + (imageStyle?.dy || 0)\n });\n }\n item.setAttributes({\n x: itemPosition.x + (itemOffsetX || 0),\n y: itemPosition.y + (itemOffsetY || 0),\n angle: autoRotate && itemAngle + refAngle\n });\n\n // if (this.attribute.limitRect && this.attribute.itemContent?.confine) {\n // const { x, y, width, height } = this.attribute.limitRect;\n // limitShapeInBounds(item, {\n // x1: x,\n // y1: y,\n // x2: x + width,\n // y2: y + height\n // });\n // }\n }\n\n protected getItemDx(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const width = (item as IGroup)?.AABBBounds?.width() ?? (style?.width || 0);\n if (position.includes('inside')) {\n return -width;\n }\n if (position === 'insideTop') {\n return 0;\n }\n return 0;\n }\n\n protected getItemDy(\n item: ISymbol | Tag | IImage | IRichText,\n position: keyof typeof IMarkPointItemPosition,\n style?: IImageGraphicAttribute | IRichTextGraphicAttribute\n ) {\n const height = (item as IGroup)?.AABBBounds?.height() ?? (style?.height || 0);\n if (position.includes('top') || position.includes('Top')) {\n return -height;\n }\n if (position.includes('middle') || position.includes('Middle')) {\n return -height / 2;\n }\n return 0;\n }\n\n protected initItem(itemContent: IItemContent, itemPosition: Point) {\n const { type = 'text', symbolStyle, richTextStyle, imageStyle, renderCustomCallback } = itemContent;\n let item: ISymbol | Tag | IImage | IRichText | IGroup;\n if (type === 'symbol') {\n item = createSymbol({\n ...itemPosition,\n ...symbolStyle\n });\n } else if (type === 'text') {\n item = new Tag({\n ...itemPosition\n });\n } else if (type === 'richText') {\n item = createRichText({\n ...itemPosition,\n ...richTextStyle\n });\n } else if (type === 'image') {\n item = createImage({\n ...itemPosition,\n ...imageStyle\n });\n } else if (type === 'custom' && renderCustomCallback) {\n item = renderCustomCallback();\n }\n this.setItemAttributes(item, itemContent, itemPosition, type);\n return item;\n }\n\n protected getItemLineAttr(itemLine: IItemLine, position: Point, itemPosition: Point) {\n let points: Point[] = [];\n const { type = 'type-s' } = itemLine;\n if (type === 'type-do') {\n points = [\n position,\n {\n x: (position.x + itemPosition.x) / 2,\n y: itemPosition.y\n },\n itemPosition\n ];\n } else if (type === 'type-po') {\n points = [\n position,\n {\n x: itemPosition.x,\n y: position.y\n },\n itemPosition\n ];\n } else if (type === 'type-op') {\n points = [\n position,\n {\n x: position.x,\n y: itemPosition.y\n },\n itemPosition\n ];\n } else {\n points = [position, itemPosition];\n }\n return points;\n }\n\n protected setItemLineAttr(itemLine: IItemLine, position: Point, itemPosition: Point, visible: boolean) {\n const { startSymbol, endSymbol, lineStyle } = itemLine;\n const points = this.getItemLineAttr(itemLine, position, itemPosition);\n this._line?.setAttributes({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n visible\n });\n }\n\n protected getDecorativeLineAttr(itemLine: IItemLine, itemPosition: Point) {\n const decorativeLength = itemLine?.decorativeLine?.length || 10;\n const itemAngle = this._line.getEndAngle() || 0;\n const startPointOffsetX = (decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const startPointOffsetY = (decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n const endPointOffsetX = (-decorativeLength / 2) * Math.cos(itemAngle - Math.PI / 2);\n const endPointOffsetY = (-decorativeLength / 2) * Math.sin(itemAngle - Math.PI / 2);\n return {\n startPointOffsetX,\n startPointOffsetY,\n endPointOffsetX,\n endPointOffsetY\n };\n }\n\n protected setDecorativeLineAttr(itemLine: IItemLine, itemPosition: Point, visible: boolean) {\n const { lineStyle } = itemLine;\n const { startPointOffsetX, startPointOffsetY, endPointOffsetX, endPointOffsetY } = this.getDecorativeLineAttr(\n itemLine,\n itemPosition\n );\n this._decorativeLine?.setAttributes({\n points: [\n {\n x: itemPosition.x + startPointOffsetX,\n y: itemPosition.y + startPointOffsetY\n },\n {\n x: itemPosition.x + endPointOffsetX,\n y: itemPosition.y + endPointOffsetY\n }\n ] as IPointLike[],\n ...(lineStyle as Partial<ILineGraphicAttribute>),\n visible\n });\n }\n\n protected initMarker(container: IGroup) {\n const { position, itemLine, itemContent } = this.attribute as MarkPointAttrs;\n const itemPosition = {\n x: position.x + (itemContent?.offsetX || 0),\n y: position.y + (itemContent?.offsetY || 0)\n };\n\n const line = new Segment({\n points: [],\n pickable: false // 组件容器本身不参与拾取\n });\n line.name = 'mark-point-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n const decorativeLine = createLine({\n points: []\n });\n decorativeLine.name = 'mark-point-decorativeLine';\n this._decorativeLine = decorativeLine;\n container.add(decorativeLine as unknown as INode);\n\n this.setItemLineAttr(itemLine, position, itemPosition, itemLine?.visible);\n this.setDecorativeLineAttr(itemLine, itemPosition, itemLine?.decorativeLine?.visible);\n\n const item = this.initItem(itemContent as any, itemPosition);\n this._item = item;\n container.add(item as unknown as INode);\n }\n\n protected updateMarker() {\n const { position, itemLine, itemContent } = this.attribute as MarkPointAttrs;\n const { type = 'text' } = itemContent;\n const itemPosition = {\n x: position.x + (itemContent?.offsetX || 0),\n y: position.y + (itemContent?.offsetY || 0)\n };\n this.setItemLineAttr(itemLine, position, itemPosition, itemLine?.visible);\n this.setDecorativeLineAttr(itemLine, itemPosition, itemLine?.decorativeLine?.visible);\n this.setItemAttributes(this._item, itemContent, itemPosition, type);\n }\n\n protected isValidPoints() {\n return true;\n }\n}\n"]}
@@ -37,16 +37,16 @@ export type IMarkBackgroundAttributes = {
37
37
  autoHeight?: boolean;
38
38
  autoWidth?: boolean;
39
39
  } & Partial<SymbolAttributes>;
40
- export interface IMarkLabel extends Omit<TagAttributes, 'x' | 'y' | 'panel'> {
40
+ export type IMarkLabel = Omit<TagAttributes, 'x' | 'y' | 'panel'> & {
41
41
  panel?: IMarkBackgroundAttributes;
42
- }
43
- export interface IMarkRef {
42
+ };
43
+ export type IMarkRef = {
44
44
  autoRotate?: boolean;
45
45
  refX?: number;
46
46
  refY?: number;
47
47
  refAngle?: number;
48
- }
49
- export interface MarkerAttrs extends IGroupGraphicAttribute {
48
+ };
49
+ export type MarkerAttrs = IGroupGraphicAttribute & {
50
50
  type?: 'line' | 'area' | 'point';
51
51
  interactive?: boolean;
52
52
  visible?: boolean;
@@ -57,16 +57,16 @@ export interface MarkerAttrs extends IGroupGraphicAttribute {
57
57
  width: number;
58
58
  height: number;
59
59
  };
60
- }
61
- export interface MarkLineAttrs extends MarkerAttrs, SegmentAttributes {
60
+ };
61
+ export type MarkLineAttrs = MarkerAttrs & SegmentAttributes & {
62
62
  type?: 'line';
63
63
  points: Point[] | Point[][];
64
64
  label?: {
65
65
  position?: keyof typeof IMarkLineLabelPosition;
66
66
  confine?: boolean;
67
67
  } & IMarkRef & IMarkLabel;
68
- }
69
- export interface MarkAreaAttrs extends MarkerAttrs {
68
+ };
69
+ export type MarkAreaAttrs = MarkerAttrs & {
70
70
  type?: 'area';
71
71
  points: Point[];
72
72
  label?: {
@@ -74,8 +74,8 @@ export interface MarkAreaAttrs extends MarkerAttrs {
74
74
  confine?: boolean;
75
75
  } & IMarkLabel;
76
76
  areaStyle?: IPolygonAttribute;
77
- }
78
- export interface IItemContent extends IMarkRef {
77
+ };
78
+ export type IItemContent = IMarkRef & {
79
79
  type?: 'symbol' | 'text' | 'image' | 'richText' | 'custom';
80
80
  position?: keyof typeof IMarkPointItemPosition;
81
81
  offsetX?: number;
@@ -85,7 +85,7 @@ export interface IItemContent extends IMarkRef {
85
85
  textStyle?: IMarkLabel;
86
86
  richTextStyle?: IRichTextGraphicAttribute;
87
87
  renderCustomCallback?: () => IGroup;
88
- }
88
+ };
89
89
  export type IItemLine = {
90
90
  type?: 'type-s' | 'type-do' | 'type-po' | 'type-op';
91
91
  visible?: boolean;
@@ -94,8 +94,8 @@ export type IItemLine = {
94
94
  length?: number;
95
95
  };
96
96
  } & Omit<SegmentAttributes, 'points'>;
97
- export interface MarkPointAttrs extends Omit<MarkerAttrs, 'labelStyle'> {
97
+ export type MarkPointAttrs = Omit<MarkerAttrs, 'labelStyle'> & {
98
98
  position: Point;
99
99
  itemLine?: IItemLine;
100
100
  itemContent?: IItemContent;
101
- }
101
+ };